Name: series-workflowr4h2n Phase: Succeeded StartedAt: 2026-07-14 06:18:43 +0000 UTC FinishedAt: 2026-07-14 11:00:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[0] Phase: Succeeded StartedAt: 2026-07-14 06:18:43 +0000 UTC FinishedAt: 2026-07-14 06:38:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 06:18:43 +0000 UTC FinishedAt: 2026-07-14 06:38:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "9a3a07d06e7d74f4aecc51396c771149336ac55d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "9a3a07d06e7d74f4aecc51396c771149336ac55d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_max_stack_depth_subprog", "check_max_stack_depth" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWRkZWU2YzQ5YTYyNmQzMGVmNTE0NDVjZWZlMDhhOTc1ZTVmNDRlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDA2OjM3OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMDNlMjIwMmNjYTEzZDUuLjNmNmM4YjhmYzA0ZDA4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MjU4LDEwICYjNDM7NTI1OCw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcbiBcdFx0aWYgKHZlcmlmaWVyX2J1Z19pZihzaWR4IFx1MDAzYyAwLCBlbnYsIFwmIzM0O2NhbGxlZSBub3QgZm91bmQgYXQgaW5zbiAlZFwmIzM0OywgbmV4dF9pbnNuKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0aWYgKHN1YnByb2dbc2lkeF0uaXNfYXN5bmNfY2IpIHtcbi1cdFx0XHRpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7XG4tXHRcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtzdWJwcm9nIGhhcyB0YWlsX2NhbGwgYW5kIGFzeW5jIGNiXCYjMzQ7KTtcbi1cdFx0XHRcdHJldHVybiAtRUZBVUxUO1xuLVx0XHRcdH1cbiBcdFx0XHQvKiBhc3luYyBjYWxsYmFja3MgZG9uJiMzOTt0IGluY3JlYXNlIGJwZiBwcm9nIHN0YWNrIHNpemUgdW5sZXNzIGNhbGxlZCBkaXJlY3RseSAqL1xuIFx0XHRcdGlmICghYnBmX3BzZXVkb19jYWxsKGluc24gJiM0MzsgaSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbkBAIC01MzAyLDggJiM0Mzs1Mjk4LDggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxuIFx0ICovXG4gXHRpZiAodGFpbF9jYWxsX3JlYWNoYWJsZSkge1xuIFx0XHRmb3IgKHRtcCA9IGlkeDsgdG1wIFx1MDAzZT0gMDsgdG1wID0gZGluZm9bdG1wXS5jYWxsZXIpIHtcbi1cdFx0XHRpZiAoc3VicHJvZ1t0bXBdLmlzX2V4Y2VwdGlvbl9jYikge1xuLVx0XHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0O2Nhbm5vdCB0YWlsIGNhbGwgd2l0aGluIGV4Y2VwdGlvbiBjYlxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChzdWJwcm9nW3RtcF0uaXNfY2IpIHtcbiYjNDM7XHRcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7Y2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gY2FsbGJhY2tcXG5cJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuIFx0XHRcdGlmIChzdWJwcm9nW3RtcF0uc3RhY2tfYXJnX2NudCkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbmluZGV4IGE1YTIyNmQwMTA0Y2QyLi42ZmJmNGMzN2UyMzRjYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2Uuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3RhaWxjYWxsX3NsZWVwYWJsZS5za2VsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjay5za2VsLmhcJiMzNDtcbiBcbiAvKiB0ZXN0X3RhaWxjYWxsXzEgY2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYnkgcGF0Y2hpbmcgbXVsdGlwbGUgbG9jYXRpb25zXG4gICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtXHUwMDNlam1wLCBqbXAtXHUwMDNlbm9wXG5AQCAtMTkwMSw2ICYjNDM7MTkwMiwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX3NsZWVwYWJsZSh2b2lkKVxuIFx0dGFpbGNhbGxfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRSVU5fVEVTVFModGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RhaWxjYWxsXzFcJiMzNDspKVxuQEAgLTE5NjcsNCAmIzQzOzE5NzMsNSBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfbGVhZigpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlXCYjMzQ7KSlcbiBcdFx0dGVzdF90YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UoKTtcbiYjNDM7XHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZGZlOWM0OWNmZWIxZGVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbkBAIC0wLDAgJiM0MzsxLDYyIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JwZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX3Rlc3RfdXRpbHMuaFwmIzM0O1xuJiM0MztcbiYjNDM7aW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpO1xuJiM0MztcbiYjNDM7c3RydWN0IHtcbiYjNDM7XHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1BST0dfQVJSQVkpO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X191aW50KGtleV9zaXplLCBzaXplb2YoX191MzIpKTtcbiYjNDM7XHRfX2FycmF5KHZhbHVlcywgdm9pZCAodm9pZCkpO1xuJiM0Mzt9IGptcF90YWJsZSBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspID0ge1xuJiM0MztcdC52YWx1ZXMgPSB7XG4mIzQzO1x0XHRbMF0gPSAodm9pZCAqKSBcdTAwMjZjbGFzc2lmaWVyXzAsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBfX25vaW5saW5lXG4mIzQzO2ludCBzdWJwcm9nX3RhaWwwKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHRicGZfdGFpbF9jYWxsX3N0YXRpYyhza2IsIFx1MDAyNmptcF90YWJsZSwgMSk7XG4mIzQzO1x0YmFycmllcl92YXIocmV0KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX2F1eGlsaWFyeVxuJiM0MztTRUMoXCYjMzQ7dGNcJiMzNDspXG4mIzQzO2ludCBjbGFzc2lmaWVyXzAoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gc3VicHJvZ190YWlsMChza2IpO1xuJiM0MztcdF9fc2luayhyZXQpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgX19ub2lubGluZVxuJiM0MztpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBzdWJwcm9nX3RhaWwwKCpjYl9jdHgpO1xuJiM0MztcdGJhcnJpZXJfdmFyKHJldCk7XG4mIzQzO1x0cmV0dXJuIHJldCA/IDEgOiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBjYWxsYmFjayBpbnZvbHZpbmcgc3VicHJvZyB3aXRoIHRhaWwgY2FsbCBpcyByZWplY3RlZCAqL1xuJiM0MztTRUMoXCYjMzQ7dGNcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1wmIzM0OylcbiYjNDM7aW50IHRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0Y2xvYmJlcl9yZWdzX3N0YWNrKCk7XG4mIzQzO1xuJiM0MztcdGJwZl9sb29wKDEsIGNhbGxiYWNrX2xvb3AsIFx1MDAyNnNrYiwgMCk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoYXIgX19saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZGRlZTZjNDlhNjI2ZDMwZWY1MTQ0NWNlZmUwOGE5NzVlNWY0NGU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMDY6Mzc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMDNlMjIwMmNjYTEzZDUuLjNmNmM4YjhmYzA0ZDA4IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC01MjU4LDEwICYjNDM7NTI1OCw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCwKIAkJaWYgKHZlcmlmaWVyX2J1Z19pZihzaWR4ICZsdDsgMCwgZW52LCAmIzM0O2NhbGxlZSBub3QgZm91bmQgYXQgaW5zbiAlZCYjMzQ7LCBuZXh0X2luc24pKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWlmIChzdWJwcm9nW3NpZHhdLmlzX2FzeW5jX2NiKSB7Ci0JCQlpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7Ci0JCQkJdmVyaWZpZXJfYnVnKGVudiwgJiMzNDtzdWJwcm9nIGhhcyB0YWlsX2NhbGwgYW5kIGFzeW5jIGNiJiMzNDspOwotCQkJCXJldHVybiAtRUZBVUxUOwotCQkJfQogCQkJLyogYXN5bmMgY2FsbGJhY2tzIGRvbiYjMzk7dCBpbmNyZWFzZSBicGYgcHJvZyBzdGFjayBzaXplIHVubGVzcyBjYWxsZWQgZGlyZWN0bHkgKi8KIAkJCWlmICghYnBmX3BzZXVkb19jYWxsKGluc24gJiM0MzsgaSkpCiAJCQkJY29udGludWU7CkBAIC01MzAyLDggJiM0Mzs1Mjk4LDggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LAogCSAqLwogCWlmICh0YWlsX2NhbGxfcmVhY2hhYmxlKSB7CiAJCWZvciAodG1wID0gaWR4OyB0bXAgJmd0Oz0gMDsgdG1wID0gZGluZm9bdG1wXS5jYWxsZXIpIHsKLQkJCWlmIChzdWJwcm9nW3RtcF0uaXNfZXhjZXB0aW9uX2NiKSB7Ci0JCQkJdmVyYm9zZShlbnYsICYjMzQ7Y2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gZXhjZXB0aW9uIGNiXG4mIzM0Oyk7CiYjNDM7CQkJaWYgKHN1YnByb2dbdG1wXS5pc19jYikgewomIzQzOwkJCQl2ZXJib3NlKGVudiwgJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xuJiMzNDspOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQogCQkJaWYgKHN1YnByb2dbdG1wXS5zdGFja19hcmdfY250KSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jCmluZGV4IGE1YTIyNmQwMTA0Y2QyLi42ZmJmNGMzN2UyMzRjYyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2NncnBfc3RvcmFnZS5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suc2tlbC5oJiMzNDsKIAogLyogdGVzdF90YWlsY2FsbF8xIGNoZWNrcyBiYXNpYyBmdW5jdGlvbmFsaXR5IGJ5IHBhdGNoaW5nIG11bHRpcGxlIGxvY2F0aW9ucwogICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtJmd0O2ptcCwgam1wLSZndDtub3AKQEAgLTE5MDEsNiAmIzQzOzE5MDIsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9zbGVlcGFibGUodm9pZCkKIAl0YWlsY2FsbF9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2sodm9pZCkKJiM0Mzt7CiYjNDM7CVJVTl9URVNUUyh0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpCiB7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0YWlsY2FsbF8xJiMzNDspKQpAQCAtMTk2Nyw0ICYjNDM7MTk3Myw1IEBAIHZvaWQgdGVzdF90YWlsY2FsbHModm9pZCkKIAkJdGVzdF90YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9sZWFmKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UmIzM0OykpCiAJCXRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7CiYjNDM7CXRlc3RfdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjaygpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmRmZTljNDljZmViMWRlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYwpAQCAtMCwwICYjNDM7MSw2MiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX3Rlc3RfdXRpbHMuaCYjMzQ7CiYjNDM7CiYjNDM7aW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpOwomIzQzOwomIzQzO3N0cnVjdCB7CiYjNDM7CV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfUFJPR19BUlJBWSk7CiYjNDM7CV9fdWludChtYXhfZW50cmllcywgMSk7CiYjNDM7CV9fdWludChrZXlfc2l6ZSwgc2l6ZW9mKF9fdTMyKSk7CiYjNDM7CV9fYXJyYXkodmFsdWVzLCB2b2lkICh2b2lkKSk7CiYjNDM7fSBqbXBfdGFibGUgU0VDKCYjMzQ7Lm1hcHMmIzM0OykgPSB7CiYjNDM7CS52YWx1ZXMgPSB7CiYjNDM7CQlbMF0gPSAodm9pZCAqKSAmYW1wO2NsYXNzaWZpZXJfMCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBfX25vaW5saW5lCiYjNDM7aW50IHN1YnByb2dfdGFpbDAoc3RydWN0IF9fc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CWJwZl90YWlsX2NhbGxfc3RhdGljKHNrYiwgJmFtcDtqbXBfdGFibGUsIDEpOwomIzQzOwliYXJyaWVyX3ZhcihyZXQpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztfX2F1eGlsaWFyeQomIzQzO1NFQygmIzM0O3RjJiMzNDspCiYjNDM7aW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBzdWJwcm9nX3RhaWwwKHNrYik7CiYjNDM7CV9fc2luayhyZXQpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIF9fbm9pbmxpbmUKJiM0MztpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBzdWJwcm9nX3RhaWwwKCpjYl9jdHgpOwomIzQzOwliYXJyaWVyX3ZhcihyZXQpOwomIzQzOwlyZXR1cm4gcmV0ID8gMSA6IDA7CiYjNDM7fQomIzQzOwomIzQzOy8qIGNhbGxiYWNrIGludm9sdmluZyBzdWJwcm9nIHdpdGggdGFpbCBjYWxsIGlzIHJlamVjdGVkICovCiYjNDM7U0VDKCYjMzQ7dGMmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFjayYjMzQ7KQomIzQzO2ludCB0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWNsb2JiZXJfcmVnc19zdGFjaygpOwomIzQzOwomIzQzOwlicGZfbG9vcCgxLCBjYWxsYmFja19sb29wLCAmYW1wO3NrYiwgMCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztjaGFyIF9fbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjMxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgaXQgbW9kaWZpZXMgdGhlIGBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZ2AgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIHJlbW92aW5nIGEgY291cGxlIG9mIGNoZWNrcyByZWxhdGVkIHRvIHdoZXRoZXIgYSBzdWJwcm9ncmFtIChgc3VicHJvZ1tzaWR4XWApIGhhcyBhIHRhaWwgY2FsbCBvciBpcyBhbiBhc3luY2hyb25vdXMgY2FsbGJhY2sgKGBoYXNfdGFpbF9jYWxsYCwgYGlzX2FzeW5jX2NiYCkuIFRoYXQgcGlxdWVzIG15IGludGVyZXN0IOKAkyB3aHkgYXJlIHRoZXkgcmVtb3ZpbmcgdGhvc2Ugc3BlY2lmaWMgY2hlY2tzPyBBcmUgdGhleSBzaW1wbGlmeWluZyB0aGUgbG9naWMsIG9yIGlzIHRoZXJlIGEgc3VidGxlIGNoYW5nZSBpbiBob3cgdGFpbCBjYWxscyBvciBjYWxsYmFja3MgYXJlIGhhbmRsZWQgdGhhdCBuZWNlc3NpdGF0ZXMgdGhpcz8KClRoZW4gdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgdGFpbF9jYWxsX3JlYWNoYWJsZWAgYmxvY2suIEl0IGxvb2tzIGxpa2UgYHN1YnByb2dbdG1wXS5pc19leGNlcHRpb25fY2JgIGlzIGJlaW5nIGNoYW5nZWQgdG8gYHN1YnByb2dbdG1wXS5pc19jYmAuIE5vdywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBhbiBleGNlcHRpb24gY2FsbGJhY2sgaXMgYmVpbmcgZ2VuZXJhbGl6ZWQgdG8gYSBnZW5lcmljIGNhbGxiYWNrLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dCBvZiBgdGFpbF9jYWxsX3JlYWNoYWJsZWAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBXaHkgYXJlIHRoZXkgYnJvYWRlbmluZyB0aGUgc2NvcGU/IElzIGl0IHRvIGFjY29tbW9kYXRlIGEgbmV3IGtpbmQgb2YgY2FsbGJhY2sgYmVoYXZpb3IsIG9yIGlzIGl0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBjbGVhbmVyIG9yIG1vcmUgZWZmaWNpZW50PwoKRmluYWxseSwgdGhlIHBhdGNoIGluY2x1ZGVzIGEgbmV3IHRlc3QgY2FzZSBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suY2AuIFRoYXQmIzM5O3MgZ29vZCDigJMgYSB0ZXN0IGNhc2UgZ2l2ZXMgbWUgc29tZSBpbnNpZ2h0IGludG8gdGhlIGludGVuZGVkIGJlaGF2aW9yLiBJdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgYHRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2tgLCB3aGljaCBtYWtlcyBtZSBzdXNwZWN0IHRoYXQgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgd2F5IHRhaWwgY2FsbHMgYXJlIHVzZWQgYmV0d2VlbiBCUEYgcHJvZ3JhbXMgd2l0aGluIGNhbGxiYWNrcy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHRoaXMgdGVzdCBjYXNlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW8gaXQmIzM5O3MgZGVzaWduZWQgdG8gY292ZXIgYW5kIGhvdyBpdCB2YWxpZGF0ZXMgdGhlIHBhdGNoJiMzOTtzIGNoYW5nZXMuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBUaGVuLCBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGlmIHRoZXNlIGNoYW5nZXMgYXJlIHNvdW5kLCBlZmZpY2llbnQsIGFuZCBhbGlnbmVkIHdpdGggdGhlIG92ZXJhbGwgZ29hbHMgb2YgdGhlIEJQRiBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTUxMzc9c3RydWN0IGJwZl9zdWJwcm9nX2NhbGxfZGVwdGhfaW5mbyB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUxNDYtICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTE0NzpzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpZHgsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTE0OC1cdFx0XHRcdFx0IHN0cnVjdCBicGZfc3VicHJvZ19jYWxsX2RlcHRoX2luZm8gKmRpbmZvLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MzQwPXN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzItXHRcdFx0cHJpdl9zdGFja19zdXBwb3J0ZWQgPSAhaSBcdTAwMjZcdTAwMjYgcHJpdl9zdGFja19tb2RlID09IFBSSVZfU1RBQ0tfQURBUFRJVkU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3MzpcdFx0XHRyZXQgPSBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhlbnYsIGksIGRpbmZvLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzQtXHRcdFx0XHRcdHByaXZfc3RhY2tfc3VwcG9ydGVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTY2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0YWlsIGNhbGxzIHdpdGhpbiBjYWxsYmFja3MuIEJlZm9yZSwgdGhlIHZlcmlmaWVyIGhhZCBhIHZlcnkgc3BlY2lmaWMgY2hlY2s6IGEgdGFpbCBjYWxsIHdhc24mIzM5O3QgYWxsb3dlZCB3aXRoaW4gYW4gZXhjZXB0aW9uIGNhbGxiYWNrIGFuZCBhbHNvIG5vdCBpbiBhIGFzeW5jIGNhbGxiYWNrLgoKTm93LCB0aGUgY29kZSBlbmZvcmNlcyBhIHN0cmljdGVyIHJ1bGU6IHRhaWwgY2FsbHMgYXJlIHByb2hpYml0ZWQgd2l0aGluICphbnkqIGNhbGxiYWNrLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQmIzM5O3MgYW4gZXhjZXB0aW9uIG9yIGFzeW5jIG9uZS4gVGhlIHNuaXBwZXQgSSBzZWUgc2hvd3MgdGhlIGNoYW5nZS4KCmBgYGMKCWlmICh0YWlsX2NhbGxfcmVhY2hhYmxlKSB7CgkJZm9yICh0bXAgPSBpZHg7IHRtcCAmZ3Q7PSAwOyB0bXAgPSBkaW5mb1t0bXBdLmNhbGxlcikgewoJCQlpZiAoc3VicHJvZ1t0bXBdLmlzX2NiKSB7CgkJCQl2ZXJib3NlKGVudiwgJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xuJiMzNDspOwoJCQkJcmV0dXJuIC1FSU5WQUw7CgkJCX0KYGBgCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoIHdpZGUtcmVhY2hpbmcgaW1wbGljYXRpb25zLCBnaXZlbiB0aGUgdmVyaWZpZXImIzM5O3MgY2VudHJhbCByb2xlIGluIHRoZSBCUEYgc3Vic3lzdGVtLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCBzb3J0cyBvZiBlZGdlIGNhc2VzIHJvYnVzdGx5LgoKSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBoZXJlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBpbnZlc3RpZ2F0ZSBhcmUgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCwgYW5kIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgLCBhcyB0aGUgZm9ybWVyIGlzIHRoZSBvbmUgYWN0dWFsbHkgbW9kaWZpZWQsIGFuZCB0aGUgbGF0dGVyIGlzIHRoZSBlbnRyeSBwb2ludC4KCkkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhpcyBiZWhhdmlvciBpcyBkZXBlbmRlbnQgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgdGhlIEJQRiB2ZXJpZmllciBpdHNlbGYgaXMgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbW9kaWZ5IGhvdyB0aGVzZSBydWxlcyBhcmUgYXBwbGllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk3MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipMb2NhdGluZyB0aGUgSGVhcnQgb2YgdGhlIE1hdHRlcjogYEJQRl9TWVNDQUxMYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZC4gVGhpcyBpcyBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIHdpdGhvdXQga25vd2luZyBpdHMgb3JpZ2luLCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBCUEYgY29kZSBvciBzeXN0ZW0gY2FsbHMgd2lsbCByZW1haW4gaW5jb21wbGV0ZS4gTXkgZXhwZXJ0aXNlIGFsbG93cyBtZSB0byBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGtleSBpZGVudGlmaWVyLCBsaWtlbHkgYSBtYWNybywgZW51bSwgb3Igc3ltYm9saWMgY29uc3RhbnQgY3J1Y2lhbCB0byBCUEYgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCYjMzk7cyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGRlZmluaXRpb24gdG8gY2xhcmlmeSBpdHMgcHVycG9zZSBhbmQgdmFsdWUuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciByZWFsbHkgZGlnZ2luZyBpbnRvIHRoaXMgYXJlYS4gV2hlcmUgaXMgdGhlIGRlZmluaXRpb24/IExldCYjMzk7cyBzdGFydCB0aGUgaHVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjYzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIEJQRiBTdGFjayBEZXB0aCBMaW1pdHMqKgoKT2theSwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIEJQRiBzdGFjayBkZXB0aCBsaW1pdHMsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBJJiMzOTttIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IHN3aXRjaCwgdGhlIGxpbmNocGluLiBFdmVyeXRoaW5nIHJlbGF0ZWQgdG8gQlBGIHN5c2NhbGxzIGhpbmdlcyBvbiB0aGlzLCBhbmQgZW5zdXJpbmcgaXQmIzM5O3MgcHJvcGVybHkgY29uZmlndXJlZCBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4KCk5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHN0YWNrIGRlcHRoIGlzIG1hbmFnZWQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGljYWwgY2hlY2tzLiBJJiMzOTttIHRoaW5raW5nLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBjaGVja3MgdGhlbXNlbHZlcyB3b3JrLiBJIG5lZWQgdG8gY29uc2lkZXIgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCBhbmQgYGNoZWNrX21heF9zdGFja19kZXB0aGAuIEkga25vdyB0aGVzZSBhcmUgcmVsYXRlZCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZW0gdG8gZGV0ZXJtaW5lIGlmIEkgbWlzc2VkIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbi4gV2hhdCBzcGVjaWZpY2FsbHkgZG8gdGhleSBjb3Zlcj8gSG93IGFyZSB0aGVzZSBsaW1pdHMgZW5mb3JjZWQ/IFdoYXQmIzM5O3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjaGVja3MgYXBwbGllZCB0byBzdWJwcm9ncmFtcyBhbmQgdGhlIGJyb2FkZXIsIG92ZXJhbGwgbGltaXQ/IEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgY29uc2lzdGVudCBhbmQgYWNjdXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX21heF9zdGFja19kZXB0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTEzNz1zdHJ1Y3QgYnBmX3N1YnByb2dfY2FsbF9kZXB0aF9pbmZvIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTE0Ni0gKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MTQ3OnN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MTQ4LVx0XHRcdFx0XHQgc3RydWN0IGJwZl9zdWJwcm9nX2NhbGxfZGVwdGhfaW5mbyAqZGluZm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMzktXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM0MDpzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNDEte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzcyLVx0XHRcdHByaXZfc3RhY2tfc3VwcG9ydGVkID0gIWkgXHUwMDI2XHUwMDI2IHByaXZfc3RhY2tfbW9kZSA9PSBQUklWX1NUQUNLX0FEQVBUSVZFO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjUzNzM6XHRcdFx0cmV0ID0gY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coZW52LCBpLCBkaW5mbyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc0LVx0XHRcdFx0XHRwcml2X3N0YWNrX3N1cHBvcnRlZCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDQyPWludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIzMS1cdGlmIChyZXQgPT0gMClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDIzMjpcdFx0cmV0ID0gY2hlY2tfbWF4X3N0YWNrX2RlcHRoKGVudik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5ODkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBTdGFjayBEZXB0aCBDaGVja3MqKgoKT2theSwgc28gYGNoZWNrX21heF9zdGFja19kZXB0aGAgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGJwZl9jaGVja2Ag4oCTIHRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gSXQmIzM5O3MgY2xlYXJseSBhIGZvY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHN0YWNrIGRlcHRoIGxpbWl0YXRpb25zIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4cGxvcmUgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyBvciBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgY2hlY2suIE5vdywgdGhlIHBhdGNoIGZvY3VzZXMgb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAqaXMqIHRoaXMgZmlsZSBjb21waWxlZCBjb25kaXRpb25hbGx5PyBBcmUgdGhlcmUgYCNpZmRlZmAgYmxvY2tzIG9yIGJ1aWxkIG9wdGlvbnMgdGhhdCB3b3VsZCBjYXVzZSB0aGlzIHNwZWNpZmljIHBhcnQgb2YgdGhlIGNvZGUgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSSBoYXZlIHRvIGFjY291bnQgZm9yIGJ1aWxkIHZhcmlhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZlcmlmaWVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxNgoJCQkJCQkJb3V0cHV0OiAxMDcKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgcG90ZW50aWFsbHkgcGVyZm9ybWFuY2UtY3JpdGljYWwsIHNpbmNlIEJQRiBzeXNjYWxscyBjYW4gYmUgYSBib3R0bGVuZWNrLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgLCBhbmQgSSBzZWUgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgc3VnZ2VzdHMgdGhpcyBpcyBhIGxvY2FsaXplZCBjaGFuZ2UsIGFsdGhvdWdoICYjMzQ7bG9jYWxpemVkJiMzNDsgaW4gdGhlIGtlcm5lbCBjYW4gc3RpbGwgaGF2ZSBicm9hZCBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gdGhlIHZlcmlmaWVyLiBJIG5lZWQgdG8ga2VlcCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGFuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBhdCB0aGUgZnJvbnQgb2YgbXkgbWluZC4KCk5vdywgd2hhdCYjMzk7cyBpdCBhY3R1YWxseSAqZG9pbmcqPyBBaCwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBzdGFjayBkZXB0aCBjaGVja2luZyBsb2dpYyAqd2l0aGluKiB0aGUgQlBGIHZlcmlmaWVyLiBUaGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgcmVzdHJpY3Rpb246IHJlamVjdGluZyB0YWlsIGNhbGxzIHdpdGhpbiAqYW55KiBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIGhvdyBwcm9ncmFtcyBhcmUgbG9hZGVkIGFuZCB2YWxpZGF0ZWQuIFRoaXMgY291bGQgYWZmZWN0IGEgYnVuY2ggb2YgZXhpc3RpbmcgcHJvZ3JhbXMsIGFuZCBwb3NzaWJseSBwZXJmb3JtYW5jZS4gVGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgZmxhZyBjb25maXJtcyB0aGF0IGl0IGlzIGxpa2VseSB0byBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZCwgd2hpY2ggc3VnZ2VzdHMgdGhlIG5lZWQgZm9yIGV4dHJhIHNjcnV0aW55IGhlcmUuIEkgc2VlIHRoZSBtYWluIGZvY3VzIGlzIGFyb3VuZCB0aGUgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCBhbmQgYGNoZWNrX21heF9zdGFja19kZXB0aGAgZnVuY3Rpb25zLiBPa2F5LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBleGFjdCB2ZXJpZmljYXRpb24gbG9naWMgYXJvdW5kIHRob3NlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nJiMzNDssCiAgICAmIzM0O2NoZWNrX21heF9zdGFja19kZXB0aCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIHN0YWNrIGRlcHRoIGNoZWNraW5nIGxvZ2ljIHRvIHJlamVjdCB0YWlsIGNhbGxzIHdpdGhpbiBhbnkgY2FsbGJhY2ssIG5vdCBqdXN0IGV4Y2VwdGlvbiBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgdGhhdCBhZmZlY3RzIHByb2dyYW0gbG9hZGluZyBhbmQgdmFsaWRhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM3OjM5LjM3OTUzNDQ2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDEwMjk2MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dcIixcbiAgICBcImNoZWNrX21heF9zdGFja19kZXB0aFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIncyBzdGFjayBkZXB0aCBjaGVja2luZyBsb2dpYyB0byByZWplY3QgdGFpbCBjYWxscyB3aXRoaW4gYW55IGNhbGxiYWNrLCBub3QganVzdCBleGNlcHRpb24gY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIHRoYXQgYWZmZWN0cyBwcm9ncmFtIGxvYWRpbmcgYW5kIHZhbGlkYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM3OjM5LjM3OTU0MDQyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ1MTA4MTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWRkZWU2YzQ5YTYyNmQzMGVmNTE0NDVjZWZlMDhhOTc1ZTVmNDRlNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNjozNzozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAwM2UyMjAyY2NhMTNkNS4uM2Y2YzhiOGZjMDRkMDggMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTUyNTgsMTAgKzUyNTgsNiBAQCBzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpZHgsXFxuIFxcdFxcdGlmICh2ZXJpZmllcl9idWdfaWYoc2lkeCBcXHUwMDNjIDAsIGVudiwgXFxcImNhbGxlZSBub3QgZm91bmQgYXQgaW5zbiAlZFxcXCIsIG5leHRfaW5zbikpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHRcXHRpZiAoc3VicHJvZ1tzaWR4XS5pc19hc3luY19jYikge1xcbi1cXHRcXHRcXHRpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7XFxuLVxcdFxcdFxcdFxcdHZlcmlmaWVyX2J1ZyhlbnYsIFxcXCJzdWJwcm9nIGhhcyB0YWlsX2NhbGwgYW5kIGFzeW5jIGNiXFxcIik7XFxuLVxcdFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi1cXHRcXHRcXHR9XFxuIFxcdFxcdFxcdC8qIGFzeW5jIGNhbGxiYWNrcyBkb24ndCBpbmNyZWFzZSBicGYgcHJvZyBzdGFjayBzaXplIHVubGVzcyBjYWxsZWQgZGlyZWN0bHkgKi9cXG4gXFx0XFx0XFx0aWYgKCFicGZfcHNldWRvX2NhbGwoaW5zbiArIGkpKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtNTMwMiw4ICs1Mjk4LDggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxcbiBcXHQgKi9cXG4gXFx0aWYgKHRhaWxfY2FsbF9yZWFjaGFibGUpIHtcXG4gXFx0XFx0Zm9yICh0bXAgPSBpZHg7IHRtcCBcXHUwMDNlPSAwOyB0bXAgPSBkaW5mb1t0bXBdLmNhbGxlcikge1xcbi1cXHRcXHRcXHRpZiAoc3VicHJvZ1t0bXBdLmlzX2V4Y2VwdGlvbl9jYikge1xcbi1cXHRcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbm5vdCB0YWlsIGNhbGwgd2l0aGluIGV4Y2VwdGlvbiBjYlxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGlmIChzdWJwcm9nW3RtcF0uaXNfY2IpIHtcXG4rXFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGlmIChzdWJwcm9nW3RtcF0uc3RhY2tfYXJnX2NudCkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXFxuaW5kZXggYTVhMjI2ZDAxMDRjZDIuLjZmYmY0YzM3ZTIzNGNjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcXG5AQCAtMTIsNiArMTIsNyBAQFxcbiAjaW5jbHVkZSBcXFwidGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2Uuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRhaWxjYWxsX3NsZWVwYWJsZS5za2VsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJ0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLnNrZWwuaFxcXCJcXG4gXFxuIC8qIHRlc3RfdGFpbGNhbGxfMSBjaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBieSBwYXRjaGluZyBtdWx0aXBsZSBsb2NhdGlvbnNcXG4gICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtXFx1MDAzZWptcCwgam1wLVxcdTAwM2Vub3BcXG5AQCAtMTkwMSw2ICsxOTAyLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfc2xlZXBhYmxlKHZvaWQpXFxuIFxcdHRhaWxjYWxsX3NsZWVwYWJsZV9fZGVzdHJveShza2VsKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKHZvaWQpXFxuK3tcXG4rXFx0UlVOX1RFU1RTKHRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2spO1xcbit9XFxuK1xcbiB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRhaWxjYWxsXzFcXFwiKSlcXG5AQCAtMTk2Nyw0ICsxOTczLDUgQEAgdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxcbiBcXHRcXHR0ZXN0X3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2xlYWYoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2JyaWRnZVxcXCIpKVxcbiBcXHRcXHR0ZXN0X3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2JyaWRnZSgpO1xcbitcXHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmRmZTljNDljZmViMWRlXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcXG5AQCAtMCwwICsxLDYyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9icGYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl90ZXN0X3V0aWxzLmhcXFwiXFxuK1xcbitpbnQgY2xhc3NpZmllcl8wKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYik7XFxuK1xcbitzdHJ1Y3Qge1xcbitcXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1BST0dfQVJSQVkpO1xcbitcXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xcbitcXHRfX3VpbnQoa2V5X3NpemUsIHNpemVvZihfX3UzMikpO1xcbitcXHRfX2FycmF5KHZhbHVlcywgdm9pZCAodm9pZCkpO1xcbit9IGptcF90YWJsZSBTRUMoXFxcIi5tYXBzXFxcIikgPSB7XFxuK1xcdC52YWx1ZXMgPSB7XFxuK1xcdFxcdFswXSA9ICh2b2lkICopIFxcdTAwMjZjbGFzc2lmaWVyXzAsXFxuK1xcdH0sXFxuK307XFxuK1xcbitzdGF0aWMgX19ub2lubGluZVxcbitpbnQgc3VicHJvZ190YWlsMChzdHJ1Y3QgX19za19idWZmICpza2IpXFxuK3tcXG4rXFx0aW50IHJldCA9IDA7XFxuK1xcbitcXHRicGZfdGFpbF9jYWxsX3N0YXRpYyhza2IsIFxcdTAwMjZqbXBfdGFibGUsIDEpO1xcbitcXHRiYXJyaWVyX3ZhcihyZXQpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitfX2F1eGlsaWFyeVxcbitTRUMoXFxcInRjXFxcIilcXG4raW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHN1YnByb2dfdGFpbDAoc2tiKTtcXG4rXFx0X19zaW5rKHJldCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgX19ub2lubGluZVxcbitpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHN1YnByb2dfdGFpbDAoKmNiX2N0eCk7XFxuK1xcdGJhcnJpZXJfdmFyKHJldCk7XFxuK1xcdHJldHVybiByZXQgPyAxIDogMDtcXG4rfVxcbitcXG4rLyogY2FsbGJhY2sgaW52b2x2aW5nIHN1YnByb2cgd2l0aCB0YWlsIGNhbGwgaXMgcmVqZWN0ZWQgKi9cXG4rU0VDKFxcXCJ0Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiY2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gY2FsbGJhY2tcXFwiKVxcbitpbnQgdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayhzdHJ1Y3QgX19za19idWZmICpza2IpXFxuK3tcXG4rXFx0Y2xvYmJlcl9yZWdzX3N0YWNrKCk7XFxuK1xcbitcXHRicGZfbG9vcCgxLCBjYWxsYmFja19sb29wLCBcXHUwMDI2c2tiLCAwKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK2NoYXIgX19saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzc6NDAuMTI1NjM5OTM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzY2NDE2NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nXCIsXG4gICAgXCJjaGVja19tYXhfc3RhY2tfZGVwdGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFkZGVlNmM0OWE2MjZkMzBlZjUxNDQ1Y2VmZTA4YTk3NWU1ZjQ0ZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNjozNzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMDNlMjIwMmNjYTEzZDUuLjNmNmM4YjhmYzA0ZDA4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MjU4LDEwICs1MjU4LDYgQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxuIFx0XHRpZiAodmVyaWZpZXJfYnVnX2lmKHNpZHggXHUwMDNjIDAsIGVudiwgXCJjYWxsZWUgbm90IGZvdW5kIGF0IGluc24gJWRcIiwgbmV4dF9pbnNuKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0aWYgKHN1YnByb2dbc2lkeF0uaXNfYXN5bmNfY2IpIHtcbi1cdFx0XHRpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7XG4tXHRcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcInN1YnByb2cgaGFzIHRhaWxfY2FsbCBhbmQgYXN5bmMgY2JcIik7XG4tXHRcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbi1cdFx0XHR9XG4gXHRcdFx0LyogYXN5bmMgY2FsbGJhY2tzIGRvbid0IGluY3JlYXNlIGJwZiBwcm9nIHN0YWNrIHNpemUgdW5sZXNzIGNhbGxlZCBkaXJlY3RseSAqL1xuIFx0XHRcdGlmICghYnBmX3BzZXVkb19jYWxsKGluc24gKyBpKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTUzMDIsOCArNTI5OCw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcbiBcdCAqL1xuIFx0aWYgKHRhaWxfY2FsbF9yZWFjaGFibGUpIHtcbiBcdFx0Zm9yICh0bXAgPSBpZHg7IHRtcCBcdTAwM2U9IDA7IHRtcCA9IGRpbmZvW3RtcF0uY2FsbGVyKSB7XG4tXHRcdFx0aWYgKHN1YnByb2dbdG1wXS5pc19leGNlcHRpb25fY2IpIHtcbi1cdFx0XHRcdHZlcmJvc2UoZW52LCBcImNhbm5vdCB0YWlsIGNhbGwgd2l0aGluIGV4Y2VwdGlvbiBjYlxcblwiKTtcbitcdFx0XHRpZiAoc3VicHJvZ1t0bXBdLmlzX2NiKSB7XG4rXHRcdFx0XHR2ZXJib3NlKGVudiwgXCJjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xcblwiKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAoc3VicHJvZ1t0bXBdLnN0YWNrX2FyZ19jbnQpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG5pbmRleCBhNWEyMjZkMDEwNGNkMi4uNmZiZjRjMzdlMjM0Y2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZS5za2VsLmhcIlxuICNpbmNsdWRlIFwidGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oXCJcbisjaW5jbHVkZSBcInRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suc2tlbC5oXCJcbiBcbiAvKiB0ZXN0X3RhaWxjYWxsXzEgY2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYnkgcGF0Y2hpbmcgbXVsdGlwbGUgbG9jYXRpb25zXG4gICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtXHUwMDNlam1wLCBqbXAtXHUwMDNlbm9wXG5AQCAtMTkwMSw2ICsxOTAyLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfc2xlZXBhYmxlKHZvaWQpXG4gXHR0YWlsY2FsbF9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayh2b2lkKVxuK3tcbitcdFJVTl9URVNUUyh0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidGFpbGNhbGxfMVwiKSlcbkBAIC0xOTY3LDQgKzE5NzMsNSBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfbGVhZigpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcIikpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7XG4rXHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZGZlOWM0OWNmZWIxZGVcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbkBAIC0wLDAgKzEsNjIgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JwZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuKyNpbmNsdWRlIFwiYnBmX3Rlc3RfdXRpbHMuaFwiXG4rXG4raW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpO1xuK1xuK3N0cnVjdCB7XG4rXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1BST0dfQVJSQVkpO1xuK1x0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbitcdF9fdWludChrZXlfc2l6ZSwgc2l6ZW9mKF9fdTMyKSk7XG4rXHRfX2FycmF5KHZhbHVlcywgdm9pZCAodm9pZCkpO1xuK30gam1wX3RhYmxlIFNFQyhcIi5tYXBzXCIpID0ge1xuK1x0LnZhbHVlcyA9IHtcbitcdFx0WzBdID0gKHZvaWQgKikgXHUwMDI2Y2xhc3NpZmllcl8wLFxuK1x0fSxcbit9O1xuK1xuK3N0YXRpYyBfX25vaW5saW5lXG4raW50IHN1YnByb2dfdGFpbDAoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuK3tcbitcdGludCByZXQgPSAwO1xuK1xuK1x0YnBmX3RhaWxfY2FsbF9zdGF0aWMoc2tiLCBcdTAwMjZqbXBfdGFibGUsIDEpO1xuK1x0YmFycmllcl92YXIocmV0KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK19fYXV4aWxpYXJ5XG4rU0VDKFwidGNcIilcbitpbnQgY2xhc3NpZmllcl8wKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbit7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gc3VicHJvZ190YWlsMChza2IpO1xuK1x0X19zaW5rKHJldCk7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIF9fbm9pbmxpbmVcbitpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IHN1YnByb2dfdGFpbDAoKmNiX2N0eCk7XG4rXHRiYXJyaWVyX3ZhcihyZXQpO1xuK1x0cmV0dXJuIHJldCA/IDEgOiAwO1xuK31cbitcbisvKiBjYWxsYmFjayBpbnZvbHZpbmcgc3VicHJvZyB3aXRoIHRhaWwgY2FsbCBpcyByZWplY3RlZCAqL1xuK1NFQyhcInRjXCIpXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gY2FsbGJhY2tcIilcbitpbnQgdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayhzdHJ1Y3QgX19za19idWZmICpza2IpXG4re1xuK1x0Y2xvYmJlcl9yZWdzX3N0YWNrKCk7XG4rXG4rXHRicGZfbG9vcCgxLCBjYWxsYmFja19sb29wLCBcdTAwMjZza2IsIDApO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK2NoYXIgX19saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo0MC4xMjU2NDE4MzRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQ2NjEwMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0IG1vZGlmaWVzIHRoZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHRoZSBwYXRjaCBpcyByZW1vdmluZyBhIGNvdXBsZSBvZiBjaGVja3MgcmVsYXRlZCB0byB3aGV0aGVyIGEgc3VicHJvZ3JhbSAoYHN1YnByb2dbc2lkeF1gKSBoYXMgYSB0YWlsIGNhbGwgb3IgaXMgYW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrIChgaGFzX3RhaWxfY2FsbGAsIGBpc19hc3luY19jYmApLiBUaGF0IHBpcXVlcyBteSBpbnRlcmVzdCDigJMgd2h5IGFyZSB0aGV5IHJlbW92aW5nIHRob3NlIHNwZWNpZmljIGNoZWNrcz8gQXJlIHRoZXkgc2ltcGxpZnlpbmcgdGhlIGxvZ2ljLCBvciBpcyB0aGVyZSBhIHN1YnRsZSBjaGFuZ2UgaW4gaG93IHRhaWwgY2FsbHMgb3IgY2FsbGJhY2tzIGFyZSBoYW5kbGVkIHRoYXQgbmVjZXNzaXRhdGVzIHRoaXM/XG5cblRoZW4gdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGB0YWlsX2NhbGxfcmVhY2hhYmxlYCBibG9jay4gSXQgbG9va3MgbGlrZSBgc3VicHJvZ1t0bXBdLmlzX2V4Y2VwdGlvbl9jYmAgaXMgYmVpbmcgY2hhbmdlZCB0byBgc3VicHJvZ1t0bXBdLmlzX2NiYC4gTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYW4gZXhjZXB0aW9uIGNhbGxiYWNrIGlzIGJlaW5nIGdlbmVyYWxpemVkIHRvIGEgZ2VuZXJpYyBjYWxsYmFjay4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dCBvZiBgdGFpbF9jYWxsX3JlYWNoYWJsZWAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBXaHkgYXJlIHRoZXkgYnJvYWRlbmluZyB0aGUgc2NvcGU/IElzIGl0IHRvIGFjY29tbW9kYXRlIGEgbmV3IGtpbmQgb2YgY2FsbGJhY2sgYmVoYXZpb3IsIG9yIGlzIGl0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBjbGVhbmVyIG9yIG1vcmUgZWZmaWNpZW50P1xuXG5GaW5hbGx5LCB0aGUgcGF0Y2ggaW5jbHVkZXMgYSBuZXcgdGVzdCBjYXNlIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjay5jYC4gVGhhdCdzIGdvb2Qg4oCTIGEgdGVzdCBjYXNlIGdpdmVzIG1lIHNvbWUgaW5zaWdodCBpbnRvIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGB0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrYCwgd2hpY2ggbWFrZXMgbWUgc3VzcGVjdCB0aGF0IHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIHdheSB0YWlsIGNhbGxzIGFyZSB1c2VkIGJldHdlZW4gQlBGIHByb2dyYW1zIHdpdGhpbiBjYWxsYmFja3MuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoaXMgdGVzdCBjYXNlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW8gaXQncyBkZXNpZ25lZCB0byBjb3ZlciBhbmQgaG93IGl0IHZhbGlkYXRlcyB0aGUgcGF0Y2gncyBjaGFuZ2VzLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBUaGVuLCBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGlmIHRoZXNlIGNoYW5nZXMgYXJlIHNvdW5kLCBlZmZpY2llbnQsIGFuZCBhbGlnbmVkIHdpdGggdGhlIG92ZXJhbGwgZ29hbHMgb2YgdGhlIEJQRiBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMzEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo0NS4yNzIyNTQ0OTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyMTEwNDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTEzNz1zdHJ1Y3QgYnBmX3N1YnByb2dfY2FsbF9kZXB0aF9pbmZvIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MTQ2LSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MTQ3OnN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTE0OC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGJwZl9zdWJwcm9nX2NhbGxfZGVwdGhfaW5mbyAqZGluZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM0MD1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzItXFx0XFx0XFx0cHJpdl9zdGFja19zdXBwb3J0ZWQgPSAhaSBcXHUwMDI2XFx1MDAyNiBwcml2X3N0YWNrX21vZGUgPT0gUFJJVl9TVEFDS19BREFQVElWRTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3MzpcXHRcXHRcXHRyZXQgPSBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhlbnYsIGksIGRpbmZvLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc0LVxcdFxcdFxcdFxcdFxcdHByaXZfc3RhY2tfc3VwcG9ydGVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzc6NDUuNDk0MzcyNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI3OTU3ODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIEJQRiB2ZXJpZmllcidzIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0YWlsIGNhbGxzIHdpdGhpbiBjYWxsYmFja3MuIEJlZm9yZSwgdGhlIHZlcmlmaWVyIGhhZCBhIHZlcnkgc3BlY2lmaWMgY2hlY2s6IGEgdGFpbCBjYWxsIHdhc24ndCBhbGxvd2VkIHdpdGhpbiBhbiBleGNlcHRpb24gY2FsbGJhY2sgYW5kIGFsc28gbm90IGluIGEgYXN5bmMgY2FsbGJhY2suXG5cbk5vdywgdGhlIGNvZGUgZW5mb3JjZXMgYSBzdHJpY3RlciBydWxlOiB0YWlsIGNhbGxzIGFyZSBwcm9oaWJpdGVkIHdpdGhpbiAqYW55KiBjYWxsYmFjaywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3MgYW4gZXhjZXB0aW9uIG9yIGFzeW5jIG9uZS4gVGhlIHNuaXBwZXQgSSBzZWUgc2hvd3MgdGhlIGNoYW5nZS5cblxuYGBgY1xuXHRpZiAodGFpbF9jYWxsX3JlYWNoYWJsZSkge1xuXHRcdGZvciAodG1wID0gaWR4OyB0bXAgXHUwMDNlPSAwOyB0bXAgPSBkaW5mb1t0bXBdLmNhbGxlcikge1xuXHRcdFx0aWYgKHN1YnByb2dbdG1wXS5pc19jYikge1xuXHRcdFx0XHR2ZXJib3NlKGVudiwgXCJjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xcblwiKTtcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cdFx0XHR9XG5gYGBcblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCB3aWRlLXJlYWNoaW5nIGltcGxpY2F0aW9ucywgZ2l2ZW4gdGhlIHZlcmlmaWVyJ3MgY2VudHJhbCByb2xlIGluIHRoZSBCUEYgc3Vic3lzdGVtLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCBzb3J0cyBvZiBlZGdlIGNhc2VzIHJvYnVzdGx5LlxuXG5JIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIGhlcmUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgLCBhbmQgYGNoZWNrX21heF9zdGFja19kZXB0aGAsIGFzIHRoZSBmb3JtZXIgaXMgdGhlIG9uZSBhY3R1YWxseSBtb2RpZmllZCwgYW5kIHRoZSBsYXR0ZXIgaXMgdGhlIGVudHJ5IHBvaW50LlxuXG5JIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoaXMgYmVoYXZpb3IgaXMgZGVwZW5kZW50IG9uIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucy4gSSBrbm93IHRoZSBCUEYgdmVyaWZpZXIgaXRzZWxmIGlzIGVuYWJsZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbW9kaWZ5IGhvdyB0aGVzZSBydWxlcyBhcmUgYXBwbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo1Mi4wMjIzMzI0NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NDM5MzUwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo1Mi4xNjk3ODUxN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzA2MTIxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipMb2NhdGluZyB0aGUgSGVhcnQgb2YgdGhlIE1hdHRlcjogYEJQRl9TWVNDQUxMYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgQlBGX1NZU0NBTExgIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCB3aXRob3V0IGtub3dpbmcgaXRzIG9yaWdpbiwgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgQlBGIGNvZGUgb3Igc3lzdGVtIGNhbGxzIHdpbGwgcmVtYWluIGluY29tcGxldGUuIE15IGV4cGVydGlzZSBhbGxvd3MgbWUgdG8gaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgYSBrZXkgaWRlbnRpZmllciwgbGlrZWx5IGEgbWFjcm8sIGVudW0sIG9yIHN5bWJvbGljIGNvbnN0YW50IGNydWNpYWwgdG8gQlBGIGludGVyYWN0aW9ucyB3aXRoIHRoZSBrZXJuZWwncyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgZGVmaW5pdGlvbiB0byBjbGFyaWZ5IGl0cyBwdXJwb3NlIGFuZCB2YWx1ZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBhcmVhLiBXaGVyZSBpcyB0aGUgZGVmaW5pdGlvbj8gTGV0J3Mgc3RhcnQgdGhlIGh1bnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozODowMC4xNDA0MDA1NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc2NTAyMjc4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzg6MDkuOTA1NDUxODY3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NDEwOTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIEJQRiBTdGFjayBEZXB0aCBMaW1pdHMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byBCUEYgc3RhY2sgZGVwdGggbGltaXRzLCBhbmQgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gSSdtIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgdGhlIHByaW1hcnkgc3dpdGNoLCB0aGUgbGluY2hwaW4uIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBCUEYgc3lzY2FsbHMgaGluZ2VzIG9uIHRoaXMsIGFuZCBlbnN1cmluZyBpdCdzIHByb3Blcmx5IGNvbmZpZ3VyZWQgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiBob3cgc3RhY2sgZGVwdGggaXMgbWFuYWdlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjcml0aWNhbCBjaGVja3MuIEknbSB0aGlua2luZywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgY2hlY2tzIHRoZW1zZWx2ZXMgd29yay4gSSBuZWVkIHRvIGNvbnNpZGVyIGBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZ2AgYW5kIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgLiBJIGtub3cgdGhlc2UgYXJlIHJlbGF0ZWQsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGVtIHRvIGRldGVybWluZSBpZiBJIG1pc3NlZCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24uIFdoYXQgc3BlY2lmaWNhbGx5IGRvIHRoZXkgY292ZXI/IEhvdyBhcmUgdGhlc2UgbGltaXRzIGVuZm9yY2VkPyBXaGF0J3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjaGVja3MgYXBwbGllZCB0byBzdWJwcm9ncmFtcyBhbmQgdGhlIGJyb2FkZXIsIG92ZXJhbGwgbGltaXQ/IEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgY29uc2lzdGVudCBhbmQgYWNjdXJhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozODoxMy42NDk1NjM4MzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDgxMTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19tYXhfc3RhY2tfZGVwdGhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz01MTM3PXN0cnVjdCBicGZfc3VicHJvZ19jYWxsX2RlcHRoX2luZm8ge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUxNDYtICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUxNDc6c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MTQ4LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX3N1YnByb2dfY2FsbF9kZXB0aF9pbmZvICpkaW5mbyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzM5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzQwOnN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNDEte1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzItXFx0XFx0XFx0cHJpdl9zdGFja19zdXBwb3J0ZWQgPSAhaSBcXHUwMDI2XFx1MDAyNiBwcml2X3N0YWNrX21vZGUgPT0gUFJJVl9TVEFDS19BREFQVElWRTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3MzpcXHRcXHRcXHRyZXQgPSBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhlbnYsIGksIGRpbmZvLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc0LVxcdFxcdFxcdFxcdFxcdHByaXZfc3RhY2tfc3VwcG9ydGVkKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDA0Mj1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIzMS1cXHRpZiAocmV0ID09IDApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjMyOlxcdFxcdHJldCA9IGNoZWNrX21heF9zdGFja19kZXB0aChlbnYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzg6MTMuODYwMzgxMTI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNTYwNjQwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFN0YWNrIERlcHRoIENoZWNrcyoqXG5cbk9rYXksIHNvIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBicGZfY2hlY2tgIOKAkyB0aGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuIEl0J3MgY2xlYXJseSBhIGZvY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHN0YWNrIGRlcHRoIGxpbWl0YXRpb25zIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhwbG9yZSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IHNldHRpbmdzIG9yIGZsYWdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBjaGVjay4gTm93LCB0aGUgcGF0Y2ggZm9jdXNlcyBvbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICppcyogdGhpcyBmaWxlIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHk/IEFyZSB0aGVyZSBgI2lmZGVmYCBibG9ja3Mgb3IgYnVpbGQgb3B0aW9ucyB0aGF0IHdvdWxkIGNhdXNlIHRoaXMgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkPyBJIGhhdmUgdG8gYWNjb3VudCBmb3IgYnVpbGQgdmFyaWF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk4OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM4OjIyLjIxNjQ0OTA4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MDQyMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZlcmlmaWVyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyArPSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM4OjIyLjM1NDQ5Njk4NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTc2MzQyNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHBvdGVudGlhbGx5IHBlcmZvcm1hbmNlLWNyaXRpY2FsLCBzaW5jZSBCUEYgc3lzY2FsbHMgY2FuIGJlIGEgYm90dGxlbmVjay4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCwgYW5kIEkgc2VlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgc3VnZ2VzdHMgdGhpcyBpcyBhIGxvY2FsaXplZCBjaGFuZ2UsIGFsdGhvdWdoIFwibG9jYWxpemVkXCIgaW4gdGhlIGtlcm5lbCBjYW4gc3RpbGwgaGF2ZSBicm9hZCBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gdGhlIHZlcmlmaWVyLiBJIG5lZWQgdG8ga2VlcCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGFuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBhdCB0aGUgZnJvbnQgb2YgbXkgbWluZC5cblxuTm93LCB3aGF0J3MgaXQgYWN0dWFsbHkgKmRvaW5nKj8gQWgsIGl0J3MgbW9kaWZ5aW5nIHRoZSBzdGFjayBkZXB0aCBjaGVja2luZyBsb2dpYyAqd2l0aGluKiB0aGUgQlBGIHZlcmlmaWVyLiBUaGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgcmVzdHJpY3Rpb246IHJlamVjdGluZyB0YWlsIGNhbGxzIHdpdGhpbiAqYW55KiBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29yZSBtb2RpZmljYXRpb24gdG8gaG93IHByb2dyYW1zIGFyZSBsb2FkZWQgYW5kIHZhbGlkYXRlZC4gVGhpcyBjb3VsZCBhZmZlY3QgYSBidW5jaCBvZiBleGlzdGluZyBwcm9ncmFtcywgYW5kIHBvc3NpYmx5IHBlcmZvcm1hbmNlLiBUaGUgXCJXb3J0aEZ1enppbmdcIiBmbGFnIGNvbmZpcm1zIHRoYXQgaXQgaXMgbGlrZWx5IHRvIGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zLiBUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCB3aGljaCBzdWdnZXN0cyB0aGUgbmVlZCBmb3IgZXh0cmEgc2NydXRpbnkgaGVyZS4gSSBzZWUgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIHRoZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGFuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBmdW5jdGlvbnMuIE9rYXksIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZXhhY3QgdmVyaWZpY2F0aW9uIGxvZ2ljIGFyb3VuZCB0aG9zZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTYsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM4OjI3LjUzMDg0MTg2NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODk1NTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZ1wiLFxuICAgIFwiY2hlY2tfbWF4X3N0YWNrX2RlcHRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllcidzIHN0YWNrIGRlcHRoIGNoZWNraW5nIGxvZ2ljIHRvIHJlamVjdCB0YWlsIGNhbGxzIHdpdGhpbiBhbnkgY2FsbGJhY2ssIG5vdCBqdXN0IGV4Y2VwdGlvbiBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgdGhhdCBhZmZlY3RzIHByb2dyYW0gbG9hZGluZyBhbmQgdmFsaWRhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nXCIsXG4gICAgXCJjaGVja19tYXhfc3RhY2tfZGVwdGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 06:18:43 +0000 UTC FinishedAt: 2026-07-14 06:38:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "9a3a07d06e7d74f4aecc51396c771149336ac55d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "9a3a07d06e7d74f4aecc51396c771149336ac55d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_max_stack_depth_subprog", "check_max_stack_depth" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWRkZWU2YzQ5YTYyNmQzMGVmNTE0NDVjZWZlMDhhOTc1ZTVmNDRlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDA2OjM3OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMDNlMjIwMmNjYTEzZDUuLjNmNmM4YjhmYzA0ZDA4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MjU4LDEwICYjNDM7NTI1OCw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcbiBcdFx0aWYgKHZlcmlmaWVyX2J1Z19pZihzaWR4IFx1MDAzYyAwLCBlbnYsIFwmIzM0O2NhbGxlZSBub3QgZm91bmQgYXQgaW5zbiAlZFwmIzM0OywgbmV4dF9pbnNuKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0aWYgKHN1YnByb2dbc2lkeF0uaXNfYXN5bmNfY2IpIHtcbi1cdFx0XHRpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7XG4tXHRcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtzdWJwcm9nIGhhcyB0YWlsX2NhbGwgYW5kIGFzeW5jIGNiXCYjMzQ7KTtcbi1cdFx0XHRcdHJldHVybiAtRUZBVUxUO1xuLVx0XHRcdH1cbiBcdFx0XHQvKiBhc3luYyBjYWxsYmFja3MgZG9uJiMzOTt0IGluY3JlYXNlIGJwZiBwcm9nIHN0YWNrIHNpemUgdW5sZXNzIGNhbGxlZCBkaXJlY3RseSAqL1xuIFx0XHRcdGlmICghYnBmX3BzZXVkb19jYWxsKGluc24gJiM0MzsgaSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbkBAIC01MzAyLDggJiM0Mzs1Mjk4LDggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxuIFx0ICovXG4gXHRpZiAodGFpbF9jYWxsX3JlYWNoYWJsZSkge1xuIFx0XHRmb3IgKHRtcCA9IGlkeDsgdG1wIFx1MDAzZT0gMDsgdG1wID0gZGluZm9bdG1wXS5jYWxsZXIpIHtcbi1cdFx0XHRpZiAoc3VicHJvZ1t0bXBdLmlzX2V4Y2VwdGlvbl9jYikge1xuLVx0XHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0O2Nhbm5vdCB0YWlsIGNhbGwgd2l0aGluIGV4Y2VwdGlvbiBjYlxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChzdWJwcm9nW3RtcF0uaXNfY2IpIHtcbiYjNDM7XHRcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7Y2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gY2FsbGJhY2tcXG5cJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuIFx0XHRcdGlmIChzdWJwcm9nW3RtcF0uc3RhY2tfYXJnX2NudCkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbmluZGV4IGE1YTIyNmQwMTA0Y2QyLi42ZmJmNGMzN2UyMzRjYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2Uuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3RhaWxjYWxsX3NsZWVwYWJsZS5za2VsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjay5za2VsLmhcJiMzNDtcbiBcbiAvKiB0ZXN0X3RhaWxjYWxsXzEgY2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYnkgcGF0Y2hpbmcgbXVsdGlwbGUgbG9jYXRpb25zXG4gICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtXHUwMDNlam1wLCBqbXAtXHUwMDNlbm9wXG5AQCAtMTkwMSw2ICYjNDM7MTkwMiwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX3NsZWVwYWJsZSh2b2lkKVxuIFx0dGFpbGNhbGxfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRSVU5fVEVTVFModGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RhaWxjYWxsXzFcJiMzNDspKVxuQEAgLTE5NjcsNCAmIzQzOzE5NzMsNSBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfbGVhZigpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlXCYjMzQ7KSlcbiBcdFx0dGVzdF90YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UoKTtcbiYjNDM7XHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZGZlOWM0OWNmZWIxZGVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbkBAIC0wLDAgJiM0MzsxLDYyIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JwZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX3Rlc3RfdXRpbHMuaFwmIzM0O1xuJiM0MztcbiYjNDM7aW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpO1xuJiM0MztcbiYjNDM7c3RydWN0IHtcbiYjNDM7XHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1BST0dfQVJSQVkpO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X191aW50KGtleV9zaXplLCBzaXplb2YoX191MzIpKTtcbiYjNDM7XHRfX2FycmF5KHZhbHVlcywgdm9pZCAodm9pZCkpO1xuJiM0Mzt9IGptcF90YWJsZSBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspID0ge1xuJiM0MztcdC52YWx1ZXMgPSB7XG4mIzQzO1x0XHRbMF0gPSAodm9pZCAqKSBcdTAwMjZjbGFzc2lmaWVyXzAsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBfX25vaW5saW5lXG4mIzQzO2ludCBzdWJwcm9nX3RhaWwwKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHRicGZfdGFpbF9jYWxsX3N0YXRpYyhza2IsIFx1MDAyNmptcF90YWJsZSwgMSk7XG4mIzQzO1x0YmFycmllcl92YXIocmV0KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX2F1eGlsaWFyeVxuJiM0MztTRUMoXCYjMzQ7dGNcJiMzNDspXG4mIzQzO2ludCBjbGFzc2lmaWVyXzAoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gc3VicHJvZ190YWlsMChza2IpO1xuJiM0MztcdF9fc2luayhyZXQpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgX19ub2lubGluZVxuJiM0MztpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBzdWJwcm9nX3RhaWwwKCpjYl9jdHgpO1xuJiM0MztcdGJhcnJpZXJfdmFyKHJldCk7XG4mIzQzO1x0cmV0dXJuIHJldCA/IDEgOiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBjYWxsYmFjayBpbnZvbHZpbmcgc3VicHJvZyB3aXRoIHRhaWwgY2FsbCBpcyByZWplY3RlZCAqL1xuJiM0MztTRUMoXCYjMzQ7dGNcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1wmIzM0OylcbiYjNDM7aW50IHRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0Y2xvYmJlcl9yZWdzX3N0YWNrKCk7XG4mIzQzO1xuJiM0MztcdGJwZl9sb29wKDEsIGNhbGxiYWNrX2xvb3AsIFx1MDAyNnNrYiwgMCk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoYXIgX19saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZGRlZTZjNDlhNjI2ZDMwZWY1MTQ0NWNlZmUwOGE5NzVlNWY0NGU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMDY6Mzc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMDNlMjIwMmNjYTEzZDUuLjNmNmM4YjhmYzA0ZDA4IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC01MjU4LDEwICYjNDM7NTI1OCw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCwKIAkJaWYgKHZlcmlmaWVyX2J1Z19pZihzaWR4ICZsdDsgMCwgZW52LCAmIzM0O2NhbGxlZSBub3QgZm91bmQgYXQgaW5zbiAlZCYjMzQ7LCBuZXh0X2luc24pKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWlmIChzdWJwcm9nW3NpZHhdLmlzX2FzeW5jX2NiKSB7Ci0JCQlpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7Ci0JCQkJdmVyaWZpZXJfYnVnKGVudiwgJiMzNDtzdWJwcm9nIGhhcyB0YWlsX2NhbGwgYW5kIGFzeW5jIGNiJiMzNDspOwotCQkJCXJldHVybiAtRUZBVUxUOwotCQkJfQogCQkJLyogYXN5bmMgY2FsbGJhY2tzIGRvbiYjMzk7dCBpbmNyZWFzZSBicGYgcHJvZyBzdGFjayBzaXplIHVubGVzcyBjYWxsZWQgZGlyZWN0bHkgKi8KIAkJCWlmICghYnBmX3BzZXVkb19jYWxsKGluc24gJiM0MzsgaSkpCiAJCQkJY29udGludWU7CkBAIC01MzAyLDggJiM0Mzs1Mjk4LDggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LAogCSAqLwogCWlmICh0YWlsX2NhbGxfcmVhY2hhYmxlKSB7CiAJCWZvciAodG1wID0gaWR4OyB0bXAgJmd0Oz0gMDsgdG1wID0gZGluZm9bdG1wXS5jYWxsZXIpIHsKLQkJCWlmIChzdWJwcm9nW3RtcF0uaXNfZXhjZXB0aW9uX2NiKSB7Ci0JCQkJdmVyYm9zZShlbnYsICYjMzQ7Y2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gZXhjZXB0aW9uIGNiXG4mIzM0Oyk7CiYjNDM7CQkJaWYgKHN1YnByb2dbdG1wXS5pc19jYikgewomIzQzOwkJCQl2ZXJib3NlKGVudiwgJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xuJiMzNDspOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQogCQkJaWYgKHN1YnByb2dbdG1wXS5zdGFja19hcmdfY250KSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jCmluZGV4IGE1YTIyNmQwMTA0Y2QyLi42ZmJmNGMzN2UyMzRjYyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2NncnBfc3RvcmFnZS5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suc2tlbC5oJiMzNDsKIAogLyogdGVzdF90YWlsY2FsbF8xIGNoZWNrcyBiYXNpYyBmdW5jdGlvbmFsaXR5IGJ5IHBhdGNoaW5nIG11bHRpcGxlIGxvY2F0aW9ucwogICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtJmd0O2ptcCwgam1wLSZndDtub3AKQEAgLTE5MDEsNiAmIzQzOzE5MDIsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9zbGVlcGFibGUodm9pZCkKIAl0YWlsY2FsbF9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2sodm9pZCkKJiM0Mzt7CiYjNDM7CVJVTl9URVNUUyh0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpCiB7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0YWlsY2FsbF8xJiMzNDspKQpAQCAtMTk2Nyw0ICYjNDM7MTk3Myw1IEBAIHZvaWQgdGVzdF90YWlsY2FsbHModm9pZCkKIAkJdGVzdF90YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9sZWFmKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UmIzM0OykpCiAJCXRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7CiYjNDM7CXRlc3RfdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjaygpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmRmZTljNDljZmViMWRlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYwpAQCAtMCwwICYjNDM7MSw2MiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX3Rlc3RfdXRpbHMuaCYjMzQ7CiYjNDM7CiYjNDM7aW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpOwomIzQzOwomIzQzO3N0cnVjdCB7CiYjNDM7CV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfUFJPR19BUlJBWSk7CiYjNDM7CV9fdWludChtYXhfZW50cmllcywgMSk7CiYjNDM7CV9fdWludChrZXlfc2l6ZSwgc2l6ZW9mKF9fdTMyKSk7CiYjNDM7CV9fYXJyYXkodmFsdWVzLCB2b2lkICh2b2lkKSk7CiYjNDM7fSBqbXBfdGFibGUgU0VDKCYjMzQ7Lm1hcHMmIzM0OykgPSB7CiYjNDM7CS52YWx1ZXMgPSB7CiYjNDM7CQlbMF0gPSAodm9pZCAqKSAmYW1wO2NsYXNzaWZpZXJfMCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBfX25vaW5saW5lCiYjNDM7aW50IHN1YnByb2dfdGFpbDAoc3RydWN0IF9fc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CWJwZl90YWlsX2NhbGxfc3RhdGljKHNrYiwgJmFtcDtqbXBfdGFibGUsIDEpOwomIzQzOwliYXJyaWVyX3ZhcihyZXQpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztfX2F1eGlsaWFyeQomIzQzO1NFQygmIzM0O3RjJiMzNDspCiYjNDM7aW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBzdWJwcm9nX3RhaWwwKHNrYik7CiYjNDM7CV9fc2luayhyZXQpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIF9fbm9pbmxpbmUKJiM0MztpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBzdWJwcm9nX3RhaWwwKCpjYl9jdHgpOwomIzQzOwliYXJyaWVyX3ZhcihyZXQpOwomIzQzOwlyZXR1cm4gcmV0ID8gMSA6IDA7CiYjNDM7fQomIzQzOwomIzQzOy8qIGNhbGxiYWNrIGludm9sdmluZyBzdWJwcm9nIHdpdGggdGFpbCBjYWxsIGlzIHJlamVjdGVkICovCiYjNDM7U0VDKCYjMzQ7dGMmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFjayYjMzQ7KQomIzQzO2ludCB0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWNsb2JiZXJfcmVnc19zdGFjaygpOwomIzQzOwomIzQzOwlicGZfbG9vcCgxLCBjYWxsYmFja19sb29wLCAmYW1wO3NrYiwgMCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztjaGFyIF9fbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjMxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgaXQgbW9kaWZpZXMgdGhlIGBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZ2AgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIHJlbW92aW5nIGEgY291cGxlIG9mIGNoZWNrcyByZWxhdGVkIHRvIHdoZXRoZXIgYSBzdWJwcm9ncmFtIChgc3VicHJvZ1tzaWR4XWApIGhhcyBhIHRhaWwgY2FsbCBvciBpcyBhbiBhc3luY2hyb25vdXMgY2FsbGJhY2sgKGBoYXNfdGFpbF9jYWxsYCwgYGlzX2FzeW5jX2NiYCkuIFRoYXQgcGlxdWVzIG15IGludGVyZXN0IOKAkyB3aHkgYXJlIHRoZXkgcmVtb3ZpbmcgdGhvc2Ugc3BlY2lmaWMgY2hlY2tzPyBBcmUgdGhleSBzaW1wbGlmeWluZyB0aGUgbG9naWMsIG9yIGlzIHRoZXJlIGEgc3VidGxlIGNoYW5nZSBpbiBob3cgdGFpbCBjYWxscyBvciBjYWxsYmFja3MgYXJlIGhhbmRsZWQgdGhhdCBuZWNlc3NpdGF0ZXMgdGhpcz8KClRoZW4gdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgdGFpbF9jYWxsX3JlYWNoYWJsZWAgYmxvY2suIEl0IGxvb2tzIGxpa2UgYHN1YnByb2dbdG1wXS5pc19leGNlcHRpb25fY2JgIGlzIGJlaW5nIGNoYW5nZWQgdG8gYHN1YnByb2dbdG1wXS5pc19jYmAuIE5vdywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBhbiBleGNlcHRpb24gY2FsbGJhY2sgaXMgYmVpbmcgZ2VuZXJhbGl6ZWQgdG8gYSBnZW5lcmljIGNhbGxiYWNrLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dCBvZiBgdGFpbF9jYWxsX3JlYWNoYWJsZWAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBXaHkgYXJlIHRoZXkgYnJvYWRlbmluZyB0aGUgc2NvcGU/IElzIGl0IHRvIGFjY29tbW9kYXRlIGEgbmV3IGtpbmQgb2YgY2FsbGJhY2sgYmVoYXZpb3IsIG9yIGlzIGl0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBjbGVhbmVyIG9yIG1vcmUgZWZmaWNpZW50PwoKRmluYWxseSwgdGhlIHBhdGNoIGluY2x1ZGVzIGEgbmV3IHRlc3QgY2FzZSBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suY2AuIFRoYXQmIzM5O3MgZ29vZCDigJMgYSB0ZXN0IGNhc2UgZ2l2ZXMgbWUgc29tZSBpbnNpZ2h0IGludG8gdGhlIGludGVuZGVkIGJlaGF2aW9yLiBJdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgYHRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2tgLCB3aGljaCBtYWtlcyBtZSBzdXNwZWN0IHRoYXQgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgd2F5IHRhaWwgY2FsbHMgYXJlIHVzZWQgYmV0d2VlbiBCUEYgcHJvZ3JhbXMgd2l0aGluIGNhbGxiYWNrcy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHRoaXMgdGVzdCBjYXNlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW8gaXQmIzM5O3MgZGVzaWduZWQgdG8gY292ZXIgYW5kIGhvdyBpdCB2YWxpZGF0ZXMgdGhlIHBhdGNoJiMzOTtzIGNoYW5nZXMuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBUaGVuLCBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGlmIHRoZXNlIGNoYW5nZXMgYXJlIHNvdW5kLCBlZmZpY2llbnQsIGFuZCBhbGlnbmVkIHdpdGggdGhlIG92ZXJhbGwgZ29hbHMgb2YgdGhlIEJQRiBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTUxMzc9c3RydWN0IGJwZl9zdWJwcm9nX2NhbGxfZGVwdGhfaW5mbyB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUxNDYtICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTE0NzpzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpZHgsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTE0OC1cdFx0XHRcdFx0IHN0cnVjdCBicGZfc3VicHJvZ19jYWxsX2RlcHRoX2luZm8gKmRpbmZvLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MzQwPXN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzItXHRcdFx0cHJpdl9zdGFja19zdXBwb3J0ZWQgPSAhaSBcdTAwMjZcdTAwMjYgcHJpdl9zdGFja19tb2RlID09IFBSSVZfU1RBQ0tfQURBUFRJVkU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3MzpcdFx0XHRyZXQgPSBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhlbnYsIGksIGRpbmZvLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzQtXHRcdFx0XHRcdHByaXZfc3RhY2tfc3VwcG9ydGVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTY2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0YWlsIGNhbGxzIHdpdGhpbiBjYWxsYmFja3MuIEJlZm9yZSwgdGhlIHZlcmlmaWVyIGhhZCBhIHZlcnkgc3BlY2lmaWMgY2hlY2s6IGEgdGFpbCBjYWxsIHdhc24mIzM5O3QgYWxsb3dlZCB3aXRoaW4gYW4gZXhjZXB0aW9uIGNhbGxiYWNrIGFuZCBhbHNvIG5vdCBpbiBhIGFzeW5jIGNhbGxiYWNrLgoKTm93LCB0aGUgY29kZSBlbmZvcmNlcyBhIHN0cmljdGVyIHJ1bGU6IHRhaWwgY2FsbHMgYXJlIHByb2hpYml0ZWQgd2l0aGluICphbnkqIGNhbGxiYWNrLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQmIzM5O3MgYW4gZXhjZXB0aW9uIG9yIGFzeW5jIG9uZS4gVGhlIHNuaXBwZXQgSSBzZWUgc2hvd3MgdGhlIGNoYW5nZS4KCmBgYGMKCWlmICh0YWlsX2NhbGxfcmVhY2hhYmxlKSB7CgkJZm9yICh0bXAgPSBpZHg7IHRtcCAmZ3Q7PSAwOyB0bXAgPSBkaW5mb1t0bXBdLmNhbGxlcikgewoJCQlpZiAoc3VicHJvZ1t0bXBdLmlzX2NiKSB7CgkJCQl2ZXJib3NlKGVudiwgJiMzNDtjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xuJiMzNDspOwoJCQkJcmV0dXJuIC1FSU5WQUw7CgkJCX0KYGBgCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoIHdpZGUtcmVhY2hpbmcgaW1wbGljYXRpb25zLCBnaXZlbiB0aGUgdmVyaWZpZXImIzM5O3MgY2VudHJhbCByb2xlIGluIHRoZSBCUEYgc3Vic3lzdGVtLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCBzb3J0cyBvZiBlZGdlIGNhc2VzIHJvYnVzdGx5LgoKSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBoZXJlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBpbnZlc3RpZ2F0ZSBhcmUgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCwgYW5kIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgLCBhcyB0aGUgZm9ybWVyIGlzIHRoZSBvbmUgYWN0dWFsbHkgbW9kaWZpZWQsIGFuZCB0aGUgbGF0dGVyIGlzIHRoZSBlbnRyeSBwb2ludC4KCkkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhpcyBiZWhhdmlvciBpcyBkZXBlbmRlbnQgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgdGhlIEJQRiB2ZXJpZmllciBpdHNlbGYgaXMgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbW9kaWZ5IGhvdyB0aGVzZSBydWxlcyBhcmUgYXBwbGllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk3MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipMb2NhdGluZyB0aGUgSGVhcnQgb2YgdGhlIE1hdHRlcjogYEJQRl9TWVNDQUxMYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZC4gVGhpcyBpcyBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIHdpdGhvdXQga25vd2luZyBpdHMgb3JpZ2luLCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBCUEYgY29kZSBvciBzeXN0ZW0gY2FsbHMgd2lsbCByZW1haW4gaW5jb21wbGV0ZS4gTXkgZXhwZXJ0aXNlIGFsbG93cyBtZSB0byBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGtleSBpZGVudGlmaWVyLCBsaWtlbHkgYSBtYWNybywgZW51bSwgb3Igc3ltYm9saWMgY29uc3RhbnQgY3J1Y2lhbCB0byBCUEYgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCYjMzk7cyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGRlZmluaXRpb24gdG8gY2xhcmlmeSBpdHMgcHVycG9zZSBhbmQgdmFsdWUuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciByZWFsbHkgZGlnZ2luZyBpbnRvIHRoaXMgYXJlYS4gV2hlcmUgaXMgdGhlIGRlZmluaXRpb24/IExldCYjMzk7cyBzdGFydCB0aGUgaHVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjYzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIEJQRiBTdGFjayBEZXB0aCBMaW1pdHMqKgoKT2theSwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIEJQRiBzdGFjayBkZXB0aCBsaW1pdHMsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBJJiMzOTttIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IHN3aXRjaCwgdGhlIGxpbmNocGluLiBFdmVyeXRoaW5nIHJlbGF0ZWQgdG8gQlBGIHN5c2NhbGxzIGhpbmdlcyBvbiB0aGlzLCBhbmQgZW5zdXJpbmcgaXQmIzM5O3MgcHJvcGVybHkgY29uZmlndXJlZCBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4KCk5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHN0YWNrIGRlcHRoIGlzIG1hbmFnZWQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGljYWwgY2hlY2tzLiBJJiMzOTttIHRoaW5raW5nLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBjaGVja3MgdGhlbXNlbHZlcyB3b3JrLiBJIG5lZWQgdG8gY29uc2lkZXIgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCBhbmQgYGNoZWNrX21heF9zdGFja19kZXB0aGAuIEkga25vdyB0aGVzZSBhcmUgcmVsYXRlZCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZW0gdG8gZGV0ZXJtaW5lIGlmIEkgbWlzc2VkIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbi4gV2hhdCBzcGVjaWZpY2FsbHkgZG8gdGhleSBjb3Zlcj8gSG93IGFyZSB0aGVzZSBsaW1pdHMgZW5mb3JjZWQ/IFdoYXQmIzM5O3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjaGVja3MgYXBwbGllZCB0byBzdWJwcm9ncmFtcyBhbmQgdGhlIGJyb2FkZXIsIG92ZXJhbGwgbGltaXQ/IEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgY29uc2lzdGVudCBhbmQgYWNjdXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX21heF9zdGFja19kZXB0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTEzNz1zdHJ1Y3QgYnBmX3N1YnByb2dfY2FsbF9kZXB0aF9pbmZvIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTE0Ni0gKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MTQ3OnN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MTQ4LVx0XHRcdFx0XHQgc3RydWN0IGJwZl9zdWJwcm9nX2NhbGxfZGVwdGhfaW5mbyAqZGluZm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMzktXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM0MDpzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNDEte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzcyLVx0XHRcdHByaXZfc3RhY2tfc3VwcG9ydGVkID0gIWkgXHUwMDI2XHUwMDI2IHByaXZfc3RhY2tfbW9kZSA9PSBQUklWX1NUQUNLX0FEQVBUSVZFO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjUzNzM6XHRcdFx0cmV0ID0gY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coZW52LCBpLCBkaW5mbyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc0LVx0XHRcdFx0XHRwcml2X3N0YWNrX3N1cHBvcnRlZCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDQyPWludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIzMS1cdGlmIChyZXQgPT0gMClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDIzMjpcdFx0cmV0ID0gY2hlY2tfbWF4X3N0YWNrX2RlcHRoKGVudik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5ODkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBTdGFjayBEZXB0aCBDaGVja3MqKgoKT2theSwgc28gYGNoZWNrX21heF9zdGFja19kZXB0aGAgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGJwZl9jaGVja2Ag4oCTIHRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gSXQmIzM5O3MgY2xlYXJseSBhIGZvY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHN0YWNrIGRlcHRoIGxpbWl0YXRpb25zIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4cGxvcmUgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyBvciBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgY2hlY2suIE5vdywgdGhlIHBhdGNoIGZvY3VzZXMgb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAqaXMqIHRoaXMgZmlsZSBjb21waWxlZCBjb25kaXRpb25hbGx5PyBBcmUgdGhlcmUgYCNpZmRlZmAgYmxvY2tzIG9yIGJ1aWxkIG9wdGlvbnMgdGhhdCB3b3VsZCBjYXVzZSB0aGlzIHNwZWNpZmljIHBhcnQgb2YgdGhlIGNvZGUgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSSBoYXZlIHRvIGFjY291bnQgZm9yIGJ1aWxkIHZhcmlhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZlcmlmaWVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxNgoJCQkJCQkJb3V0cHV0OiAxMDcKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgcG90ZW50aWFsbHkgcGVyZm9ybWFuY2UtY3JpdGljYWwsIHNpbmNlIEJQRiBzeXNjYWxscyBjYW4gYmUgYSBib3R0bGVuZWNrLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgLCBhbmQgSSBzZWUgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgc3VnZ2VzdHMgdGhpcyBpcyBhIGxvY2FsaXplZCBjaGFuZ2UsIGFsdGhvdWdoICYjMzQ7bG9jYWxpemVkJiMzNDsgaW4gdGhlIGtlcm5lbCBjYW4gc3RpbGwgaGF2ZSBicm9hZCBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gdGhlIHZlcmlmaWVyLiBJIG5lZWQgdG8ga2VlcCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGFuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBhdCB0aGUgZnJvbnQgb2YgbXkgbWluZC4KCk5vdywgd2hhdCYjMzk7cyBpdCBhY3R1YWxseSAqZG9pbmcqPyBBaCwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBzdGFjayBkZXB0aCBjaGVja2luZyBsb2dpYyAqd2l0aGluKiB0aGUgQlBGIHZlcmlmaWVyLiBUaGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgcmVzdHJpY3Rpb246IHJlamVjdGluZyB0YWlsIGNhbGxzIHdpdGhpbiAqYW55KiBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIGhvdyBwcm9ncmFtcyBhcmUgbG9hZGVkIGFuZCB2YWxpZGF0ZWQuIFRoaXMgY291bGQgYWZmZWN0IGEgYnVuY2ggb2YgZXhpc3RpbmcgcHJvZ3JhbXMsIGFuZCBwb3NzaWJseSBwZXJmb3JtYW5jZS4gVGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgZmxhZyBjb25maXJtcyB0aGF0IGl0IGlzIGxpa2VseSB0byBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZCwgd2hpY2ggc3VnZ2VzdHMgdGhlIG5lZWQgZm9yIGV4dHJhIHNjcnV0aW55IGhlcmUuIEkgc2VlIHRoZSBtYWluIGZvY3VzIGlzIGFyb3VuZCB0aGUgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCBhbmQgYGNoZWNrX21heF9zdGFja19kZXB0aGAgZnVuY3Rpb25zLiBPa2F5LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBleGFjdCB2ZXJpZmljYXRpb24gbG9naWMgYXJvdW5kIHRob3NlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2cmIzM0OywKICAgICYjMzQ7Y2hlY2tfbWF4X3N0YWNrX2RlcHRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nJiMzNDssCiAgICAmIzM0O2NoZWNrX21heF9zdGFja19kZXB0aCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIHN0YWNrIGRlcHRoIGNoZWNraW5nIGxvZ2ljIHRvIHJlamVjdCB0YWlsIGNhbGxzIHdpdGhpbiBhbnkgY2FsbGJhY2ssIG5vdCBqdXN0IGV4Y2VwdGlvbiBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgdGhhdCBhZmZlY3RzIHByb2dyYW0gbG9hZGluZyBhbmQgdmFsaWRhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM3OjM5LjM3OTUzNDQ2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDEwMjk2MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dcIixcbiAgICBcImNoZWNrX21heF9zdGFja19kZXB0aFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIncyBzdGFjayBkZXB0aCBjaGVja2luZyBsb2dpYyB0byByZWplY3QgdGFpbCBjYWxscyB3aXRoaW4gYW55IGNhbGxiYWNrLCBub3QganVzdCBleGNlcHRpb24gY2FsbGJhY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIHRoYXQgYWZmZWN0cyBwcm9ncmFtIGxvYWRpbmcgYW5kIHZhbGlkYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM3OjM5LjM3OTU0MDQyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ1MTA4MTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWRkZWU2YzQ5YTYyNmQzMGVmNTE0NDVjZWZlMDhhOTc1ZTVmNDRlNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNjozNzozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAwM2UyMjAyY2NhMTNkNS4uM2Y2YzhiOGZjMDRkMDggMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTUyNTgsMTAgKzUyNTgsNiBAQCBzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpZHgsXFxuIFxcdFxcdGlmICh2ZXJpZmllcl9idWdfaWYoc2lkeCBcXHUwMDNjIDAsIGVudiwgXFxcImNhbGxlZSBub3QgZm91bmQgYXQgaW5zbiAlZFxcXCIsIG5leHRfaW5zbikpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHRcXHRpZiAoc3VicHJvZ1tzaWR4XS5pc19hc3luY19jYikge1xcbi1cXHRcXHRcXHRpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7XFxuLVxcdFxcdFxcdFxcdHZlcmlmaWVyX2J1ZyhlbnYsIFxcXCJzdWJwcm9nIGhhcyB0YWlsX2NhbGwgYW5kIGFzeW5jIGNiXFxcIik7XFxuLVxcdFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi1cXHRcXHRcXHR9XFxuIFxcdFxcdFxcdC8qIGFzeW5jIGNhbGxiYWNrcyBkb24ndCBpbmNyZWFzZSBicGYgcHJvZyBzdGFjayBzaXplIHVubGVzcyBjYWxsZWQgZGlyZWN0bHkgKi9cXG4gXFx0XFx0XFx0aWYgKCFicGZfcHNldWRvX2NhbGwoaW5zbiArIGkpKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtNTMwMiw4ICs1Mjk4LDggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxcbiBcXHQgKi9cXG4gXFx0aWYgKHRhaWxfY2FsbF9yZWFjaGFibGUpIHtcXG4gXFx0XFx0Zm9yICh0bXAgPSBpZHg7IHRtcCBcXHUwMDNlPSAwOyB0bXAgPSBkaW5mb1t0bXBdLmNhbGxlcikge1xcbi1cXHRcXHRcXHRpZiAoc3VicHJvZ1t0bXBdLmlzX2V4Y2VwdGlvbl9jYikge1xcbi1cXHRcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbm5vdCB0YWlsIGNhbGwgd2l0aGluIGV4Y2VwdGlvbiBjYlxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGlmIChzdWJwcm9nW3RtcF0uaXNfY2IpIHtcXG4rXFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGlmIChzdWJwcm9nW3RtcF0uc3RhY2tfYXJnX2NudCkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXFxuaW5kZXggYTVhMjI2ZDAxMDRjZDIuLjZmYmY0YzM3ZTIzNGNjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcXG5AQCAtMTIsNiArMTIsNyBAQFxcbiAjaW5jbHVkZSBcXFwidGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2Uuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRhaWxjYWxsX3NsZWVwYWJsZS5za2VsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJ0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLnNrZWwuaFxcXCJcXG4gXFxuIC8qIHRlc3RfdGFpbGNhbGxfMSBjaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBieSBwYXRjaGluZyBtdWx0aXBsZSBsb2NhdGlvbnNcXG4gICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtXFx1MDAzZWptcCwgam1wLVxcdTAwM2Vub3BcXG5AQCAtMTkwMSw2ICsxOTAyLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfc2xlZXBhYmxlKHZvaWQpXFxuIFxcdHRhaWxjYWxsX3NsZWVwYWJsZV9fZGVzdHJveShza2VsKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKHZvaWQpXFxuK3tcXG4rXFx0UlVOX1RFU1RTKHRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2spO1xcbit9XFxuK1xcbiB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRhaWxjYWxsXzFcXFwiKSlcXG5AQCAtMTk2Nyw0ICsxOTczLDUgQEAgdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxcbiBcXHRcXHR0ZXN0X3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2xlYWYoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2JyaWRnZVxcXCIpKVxcbiBcXHRcXHR0ZXN0X3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2JyaWRnZSgpO1xcbitcXHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmRmZTljNDljZmViMWRlXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcXG5AQCAtMCwwICsxLDYyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9icGYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl90ZXN0X3V0aWxzLmhcXFwiXFxuK1xcbitpbnQgY2xhc3NpZmllcl8wKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYik7XFxuK1xcbitzdHJ1Y3Qge1xcbitcXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1BST0dfQVJSQVkpO1xcbitcXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xcbitcXHRfX3VpbnQoa2V5X3NpemUsIHNpemVvZihfX3UzMikpO1xcbitcXHRfX2FycmF5KHZhbHVlcywgdm9pZCAodm9pZCkpO1xcbit9IGptcF90YWJsZSBTRUMoXFxcIi5tYXBzXFxcIikgPSB7XFxuK1xcdC52YWx1ZXMgPSB7XFxuK1xcdFxcdFswXSA9ICh2b2lkICopIFxcdTAwMjZjbGFzc2lmaWVyXzAsXFxuK1xcdH0sXFxuK307XFxuK1xcbitzdGF0aWMgX19ub2lubGluZVxcbitpbnQgc3VicHJvZ190YWlsMChzdHJ1Y3QgX19za19idWZmICpza2IpXFxuK3tcXG4rXFx0aW50IHJldCA9IDA7XFxuK1xcbitcXHRicGZfdGFpbF9jYWxsX3N0YXRpYyhza2IsIFxcdTAwMjZqbXBfdGFibGUsIDEpO1xcbitcXHRiYXJyaWVyX3ZhcihyZXQpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitfX2F1eGlsaWFyeVxcbitTRUMoXFxcInRjXFxcIilcXG4raW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHN1YnByb2dfdGFpbDAoc2tiKTtcXG4rXFx0X19zaW5rKHJldCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgX19ub2lubGluZVxcbitpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHN1YnByb2dfdGFpbDAoKmNiX2N0eCk7XFxuK1xcdGJhcnJpZXJfdmFyKHJldCk7XFxuK1xcdHJldHVybiByZXQgPyAxIDogMDtcXG4rfVxcbitcXG4rLyogY2FsbGJhY2sgaW52b2x2aW5nIHN1YnByb2cgd2l0aCB0YWlsIGNhbGwgaXMgcmVqZWN0ZWQgKi9cXG4rU0VDKFxcXCJ0Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiY2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gY2FsbGJhY2tcXFwiKVxcbitpbnQgdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayhzdHJ1Y3QgX19za19idWZmICpza2IpXFxuK3tcXG4rXFx0Y2xvYmJlcl9yZWdzX3N0YWNrKCk7XFxuK1xcbitcXHRicGZfbG9vcCgxLCBjYWxsYmFja19sb29wLCBcXHUwMDI2c2tiLCAwKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK2NoYXIgX19saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzc6NDAuMTI1NjM5OTM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzY2NDE2NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nXCIsXG4gICAgXCJjaGVja19tYXhfc3RhY2tfZGVwdGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFkZGVlNmM0OWE2MjZkMzBlZjUxNDQ1Y2VmZTA4YTk3NWU1ZjQ0ZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNjozNzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMDNlMjIwMmNjYTEzZDUuLjNmNmM4YjhmYzA0ZDA4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MjU4LDEwICs1MjU4LDYgQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxuIFx0XHRpZiAodmVyaWZpZXJfYnVnX2lmKHNpZHggXHUwMDNjIDAsIGVudiwgXCJjYWxsZWUgbm90IGZvdW5kIGF0IGluc24gJWRcIiwgbmV4dF9pbnNuKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0aWYgKHN1YnByb2dbc2lkeF0uaXNfYXN5bmNfY2IpIHtcbi1cdFx0XHRpZiAoc3VicHJvZ1tzaWR4XS5oYXNfdGFpbF9jYWxsKSB7XG4tXHRcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcInN1YnByb2cgaGFzIHRhaWxfY2FsbCBhbmQgYXN5bmMgY2JcIik7XG4tXHRcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbi1cdFx0XHR9XG4gXHRcdFx0LyogYXN5bmMgY2FsbGJhY2tzIGRvbid0IGluY3JlYXNlIGJwZiBwcm9nIHN0YWNrIHNpemUgdW5sZXNzIGNhbGxlZCBkaXJlY3RseSAqL1xuIFx0XHRcdGlmICghYnBmX3BzZXVkb19jYWxsKGluc24gKyBpKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTUzMDIsOCArNTI5OCw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcbiBcdCAqL1xuIFx0aWYgKHRhaWxfY2FsbF9yZWFjaGFibGUpIHtcbiBcdFx0Zm9yICh0bXAgPSBpZHg7IHRtcCBcdTAwM2U9IDA7IHRtcCA9IGRpbmZvW3RtcF0uY2FsbGVyKSB7XG4tXHRcdFx0aWYgKHN1YnByb2dbdG1wXS5pc19leGNlcHRpb25fY2IpIHtcbi1cdFx0XHRcdHZlcmJvc2UoZW52LCBcImNhbm5vdCB0YWlsIGNhbGwgd2l0aGluIGV4Y2VwdGlvbiBjYlxcblwiKTtcbitcdFx0XHRpZiAoc3VicHJvZ1t0bXBdLmlzX2NiKSB7XG4rXHRcdFx0XHR2ZXJib3NlKGVudiwgXCJjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xcblwiKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAoc3VicHJvZ1t0bXBdLnN0YWNrX2FyZ19jbnQpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG5pbmRleCBhNWEyMjZkMDEwNGNkMi4uNmZiZjRjMzdlMjM0Y2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZS5za2VsLmhcIlxuICNpbmNsdWRlIFwidGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oXCJcbisjaW5jbHVkZSBcInRhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suc2tlbC5oXCJcbiBcbiAvKiB0ZXN0X3RhaWxjYWxsXzEgY2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYnkgcGF0Y2hpbmcgbXVsdGlwbGUgbG9jYXRpb25zXG4gICogaW4gYSBzaW5nbGUgcHJvZ3JhbSBmb3IgYSBzaW5nbGUgdGFpbCBjYWxsIHNsb3Qgd2l0aCBub3AtXHUwMDNlam1wLCBqbXAtXHUwMDNlbm9wXG5AQCAtMTkwMSw2ICsxOTAyLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfc2xlZXBhYmxlKHZvaWQpXG4gXHR0YWlsY2FsbF9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayh2b2lkKVxuK3tcbitcdFJVTl9URVNUUyh0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidGFpbGNhbGxfMVwiKSlcbkBAIC0xOTY3LDQgKzE5NzMsNSBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfbGVhZigpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcIikpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7XG4rXHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RhaWxjYWxsX2JwZjJicGZfY2FsbGJhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZGZlOWM0OWNmZWIxZGVcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrLmNcbkBAIC0wLDAgKzEsNjIgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JwZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuKyNpbmNsdWRlIFwiYnBmX3Rlc3RfdXRpbHMuaFwiXG4rXG4raW50IGNsYXNzaWZpZXJfMChzdHJ1Y3QgX19za19idWZmICpza2IpO1xuK1xuK3N0cnVjdCB7XG4rXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1BST0dfQVJSQVkpO1xuK1x0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbitcdF9fdWludChrZXlfc2l6ZSwgc2l6ZW9mKF9fdTMyKSk7XG4rXHRfX2FycmF5KHZhbHVlcywgdm9pZCAodm9pZCkpO1xuK30gam1wX3RhYmxlIFNFQyhcIi5tYXBzXCIpID0ge1xuK1x0LnZhbHVlcyA9IHtcbitcdFx0WzBdID0gKHZvaWQgKikgXHUwMDI2Y2xhc3NpZmllcl8wLFxuK1x0fSxcbit9O1xuK1xuK3N0YXRpYyBfX25vaW5saW5lXG4raW50IHN1YnByb2dfdGFpbDAoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuK3tcbitcdGludCByZXQgPSAwO1xuK1xuK1x0YnBmX3RhaWxfY2FsbF9zdGF0aWMoc2tiLCBcdTAwMjZqbXBfdGFibGUsIDEpO1xuK1x0YmFycmllcl92YXIocmV0KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK19fYXV4aWxpYXJ5XG4rU0VDKFwidGNcIilcbitpbnQgY2xhc3NpZmllcl8wKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbit7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gc3VicHJvZ190YWlsMChza2IpO1xuK1x0X19zaW5rKHJldCk7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIF9fbm9pbmxpbmVcbitpbnQgY2FsbGJhY2tfbG9vcChpbnQgaW5kZXgsIHZvaWQgKipjYl9jdHgpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IHN1YnByb2dfdGFpbDAoKmNiX2N0eCk7XG4rXHRiYXJyaWVyX3ZhcihyZXQpO1xuK1x0cmV0dXJuIHJldCA/IDEgOiAwO1xuK31cbitcbisvKiBjYWxsYmFjayBpbnZvbHZpbmcgc3VicHJvZyB3aXRoIHRhaWwgY2FsbCBpcyByZWplY3RlZCAqL1xuK1NFQyhcInRjXCIpXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHRhaWwgY2FsbCB3aXRoaW4gY2FsbGJhY2tcIilcbitpbnQgdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjayhzdHJ1Y3QgX19za19idWZmICpza2IpXG4re1xuK1x0Y2xvYmJlcl9yZWdzX3N0YWNrKCk7XG4rXG4rXHRicGZfbG9vcCgxLCBjYWxsYmFja19sb29wLCBcdTAwMjZza2IsIDApO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK2NoYXIgX19saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo0MC4xMjU2NDE4MzRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQ2NjEwMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0IG1vZGlmaWVzIHRoZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHRoZSBwYXRjaCBpcyByZW1vdmluZyBhIGNvdXBsZSBvZiBjaGVja3MgcmVsYXRlZCB0byB3aGV0aGVyIGEgc3VicHJvZ3JhbSAoYHN1YnByb2dbc2lkeF1gKSBoYXMgYSB0YWlsIGNhbGwgb3IgaXMgYW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrIChgaGFzX3RhaWxfY2FsbGAsIGBpc19hc3luY19jYmApLiBUaGF0IHBpcXVlcyBteSBpbnRlcmVzdCDigJMgd2h5IGFyZSB0aGV5IHJlbW92aW5nIHRob3NlIHNwZWNpZmljIGNoZWNrcz8gQXJlIHRoZXkgc2ltcGxpZnlpbmcgdGhlIGxvZ2ljLCBvciBpcyB0aGVyZSBhIHN1YnRsZSBjaGFuZ2UgaW4gaG93IHRhaWwgY2FsbHMgb3IgY2FsbGJhY2tzIGFyZSBoYW5kbGVkIHRoYXQgbmVjZXNzaXRhdGVzIHRoaXM/XG5cblRoZW4gdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGB0YWlsX2NhbGxfcmVhY2hhYmxlYCBibG9jay4gSXQgbG9va3MgbGlrZSBgc3VicHJvZ1t0bXBdLmlzX2V4Y2VwdGlvbl9jYmAgaXMgYmVpbmcgY2hhbmdlZCB0byBgc3VicHJvZ1t0bXBdLmlzX2NiYC4gTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYW4gZXhjZXB0aW9uIGNhbGxiYWNrIGlzIGJlaW5nIGdlbmVyYWxpemVkIHRvIGEgZ2VuZXJpYyBjYWxsYmFjay4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dCBvZiBgdGFpbF9jYWxsX3JlYWNoYWJsZWAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBXaHkgYXJlIHRoZXkgYnJvYWRlbmluZyB0aGUgc2NvcGU/IElzIGl0IHRvIGFjY29tbW9kYXRlIGEgbmV3IGtpbmQgb2YgY2FsbGJhY2sgYmVoYXZpb3IsIG9yIGlzIGl0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBjbGVhbmVyIG9yIG1vcmUgZWZmaWNpZW50P1xuXG5GaW5hbGx5LCB0aGUgcGF0Y2ggaW5jbHVkZXMgYSBuZXcgdGVzdCBjYXNlIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGFpbGNhbGxfYnBmMmJwZl9jYWxsYmFjay5jYC4gVGhhdCdzIGdvb2Qg4oCTIGEgdGVzdCBjYXNlIGdpdmVzIG1lIHNvbWUgaW5zaWdodCBpbnRvIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gSXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGB0YWlsY2FsbF9icGYyYnBmX2NhbGxiYWNrYCwgd2hpY2ggbWFrZXMgbWUgc3VzcGVjdCB0aGF0IHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIHdheSB0YWlsIGNhbGxzIGFyZSB1c2VkIGJldHdlZW4gQlBGIHByb2dyYW1zIHdpdGhpbiBjYWxsYmFja3MuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoaXMgdGVzdCBjYXNlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW8gaXQncyBkZXNpZ25lZCB0byBjb3ZlciBhbmQgaG93IGl0IHZhbGlkYXRlcyB0aGUgcGF0Y2gncyBjaGFuZ2VzLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBUaGVuLCBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGlmIHRoZXNlIGNoYW5nZXMgYXJlIHNvdW5kLCBlZmZpY2llbnQsIGFuZCBhbGlnbmVkIHdpdGggdGhlIG92ZXJhbGwgZ29hbHMgb2YgdGhlIEJQRiBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMzEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo0NS4yNzIyNTQ0OTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyMTEwNDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTEzNz1zdHJ1Y3QgYnBmX3N1YnByb2dfY2FsbF9kZXB0aF9pbmZvIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MTQ2LSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MTQ3OnN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2coc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGlkeCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTE0OC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGJwZl9zdWJwcm9nX2NhbGxfZGVwdGhfaW5mbyAqZGluZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM0MD1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzItXFx0XFx0XFx0cHJpdl9zdGFja19zdXBwb3J0ZWQgPSAhaSBcXHUwMDI2XFx1MDAyNiBwcml2X3N0YWNrX21vZGUgPT0gUFJJVl9TVEFDS19BREFQVElWRTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3MzpcXHRcXHRcXHRyZXQgPSBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhlbnYsIGksIGRpbmZvLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc0LVxcdFxcdFxcdFxcdFxcdHByaXZfc3RhY2tfc3VwcG9ydGVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzc6NDUuNDk0MzcyNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI3OTU3ODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIEJQRiB2ZXJpZmllcidzIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0YWlsIGNhbGxzIHdpdGhpbiBjYWxsYmFja3MuIEJlZm9yZSwgdGhlIHZlcmlmaWVyIGhhZCBhIHZlcnkgc3BlY2lmaWMgY2hlY2s6IGEgdGFpbCBjYWxsIHdhc24ndCBhbGxvd2VkIHdpdGhpbiBhbiBleGNlcHRpb24gY2FsbGJhY2sgYW5kIGFsc28gbm90IGluIGEgYXN5bmMgY2FsbGJhY2suXG5cbk5vdywgdGhlIGNvZGUgZW5mb3JjZXMgYSBzdHJpY3RlciBydWxlOiB0YWlsIGNhbGxzIGFyZSBwcm9oaWJpdGVkIHdpdGhpbiAqYW55KiBjYWxsYmFjaywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3MgYW4gZXhjZXB0aW9uIG9yIGFzeW5jIG9uZS4gVGhlIHNuaXBwZXQgSSBzZWUgc2hvd3MgdGhlIGNoYW5nZS5cblxuYGBgY1xuXHRpZiAodGFpbF9jYWxsX3JlYWNoYWJsZSkge1xuXHRcdGZvciAodG1wID0gaWR4OyB0bXAgXHUwMDNlPSAwOyB0bXAgPSBkaW5mb1t0bXBdLmNhbGxlcikge1xuXHRcdFx0aWYgKHN1YnByb2dbdG1wXS5pc19jYikge1xuXHRcdFx0XHR2ZXJib3NlKGVudiwgXCJjYW5ub3QgdGFpbCBjYWxsIHdpdGhpbiBjYWxsYmFja1xcblwiKTtcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cdFx0XHR9XG5gYGBcblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCB3aWRlLXJlYWNoaW5nIGltcGxpY2F0aW9ucywgZ2l2ZW4gdGhlIHZlcmlmaWVyJ3MgY2VudHJhbCByb2xlIGluIHRoZSBCUEYgc3Vic3lzdGVtLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCBzb3J0cyBvZiBlZGdlIGNhc2VzIHJvYnVzdGx5LlxuXG5JIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIGhlcmUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgLCBhbmQgYGNoZWNrX21heF9zdGFja19kZXB0aGAsIGFzIHRoZSBmb3JtZXIgaXMgdGhlIG9uZSBhY3R1YWxseSBtb2RpZmllZCwgYW5kIHRoZSBsYXR0ZXIgaXMgdGhlIGVudHJ5IHBvaW50LlxuXG5JIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoaXMgYmVoYXZpb3IgaXMgZGVwZW5kZW50IG9uIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucy4gSSBrbm93IHRoZSBCUEYgdmVyaWZpZXIgaXRzZWxmIGlzIGVuYWJsZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbW9kaWZ5IGhvdyB0aGVzZSBydWxlcyBhcmUgYXBwbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo1Mi4wMjIzMzI0NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NDM5MzUwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozNzo1Mi4xNjk3ODUxN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzA2MTIxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipMb2NhdGluZyB0aGUgSGVhcnQgb2YgdGhlIE1hdHRlcjogYEJQRl9TWVNDQUxMYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgQlBGX1NZU0NBTExgIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCB3aXRob3V0IGtub3dpbmcgaXRzIG9yaWdpbiwgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgQlBGIGNvZGUgb3Igc3lzdGVtIGNhbGxzIHdpbGwgcmVtYWluIGluY29tcGxldGUuIE15IGV4cGVydGlzZSBhbGxvd3MgbWUgdG8gaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgYSBrZXkgaWRlbnRpZmllciwgbGlrZWx5IGEgbWFjcm8sIGVudW0sIG9yIHN5bWJvbGljIGNvbnN0YW50IGNydWNpYWwgdG8gQlBGIGludGVyYWN0aW9ucyB3aXRoIHRoZSBrZXJuZWwncyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgZGVmaW5pdGlvbiB0byBjbGFyaWZ5IGl0cyBwdXJwb3NlIGFuZCB2YWx1ZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBhcmVhLiBXaGVyZSBpcyB0aGUgZGVmaW5pdGlvbj8gTGV0J3Mgc3RhcnQgdGhlIGh1bnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozODowMC4xNDA0MDA1NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc2NTAyMjc4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzg6MDkuOTA1NDUxODY3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NDEwOTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIEJQRiBTdGFjayBEZXB0aCBMaW1pdHMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byBCUEYgc3RhY2sgZGVwdGggbGltaXRzLCBhbmQgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gSSdtIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgdGhlIHByaW1hcnkgc3dpdGNoLCB0aGUgbGluY2hwaW4uIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBCUEYgc3lzY2FsbHMgaGluZ2VzIG9uIHRoaXMsIGFuZCBlbnN1cmluZyBpdCdzIHByb3Blcmx5IGNvbmZpZ3VyZWQgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiBob3cgc3RhY2sgZGVwdGggaXMgbWFuYWdlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjcml0aWNhbCBjaGVja3MuIEknbSB0aGlua2luZywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgY2hlY2tzIHRoZW1zZWx2ZXMgd29yay4gSSBuZWVkIHRvIGNvbnNpZGVyIGBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZ2AgYW5kIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgLiBJIGtub3cgdGhlc2UgYXJlIHJlbGF0ZWQsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGVtIHRvIGRldGVybWluZSBpZiBJIG1pc3NlZCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24uIFdoYXQgc3BlY2lmaWNhbGx5IGRvIHRoZXkgY292ZXI/IEhvdyBhcmUgdGhlc2UgbGltaXRzIGVuZm9yY2VkPyBXaGF0J3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjaGVja3MgYXBwbGllZCB0byBzdWJwcm9ncmFtcyBhbmQgdGhlIGJyb2FkZXIsIG92ZXJhbGwgbGltaXQ/IEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgY29uc2lzdGVudCBhbmQgYWNjdXJhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNjozODoxMy42NDk1NjM4MzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDgxMTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19tYXhfc3RhY2tfZGVwdGhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz01MTM3PXN0cnVjdCBicGZfc3VicHJvZ19jYWxsX2RlcHRoX2luZm8ge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUxNDYtICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUxNDc6c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaWR4LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MTQ4LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX3N1YnByb2dfY2FsbF9kZXB0aF9pbmZvICpkaW5mbyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzM5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzQwOnN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNDEte1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzItXFx0XFx0XFx0cHJpdl9zdGFja19zdXBwb3J0ZWQgPSAhaSBcXHUwMDI2XFx1MDAyNiBwcml2X3N0YWNrX21vZGUgPT0gUFJJVl9TVEFDS19BREFQVElWRTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3MzpcXHRcXHRcXHRyZXQgPSBjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZyhlbnYsIGksIGRpbmZvLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc0LVxcdFxcdFxcdFxcdFxcdHByaXZfc3RhY2tfc3VwcG9ydGVkKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDA0Mj1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIzMS1cXHRpZiAocmV0ID09IDApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjMyOlxcdFxcdHJldCA9IGNoZWNrX21heF9zdGFja19kZXB0aChlbnYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDY6Mzg6MTMuODYwMzgxMTI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNTYwNjQwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFN0YWNrIERlcHRoIENoZWNrcyoqXG5cbk9rYXksIHNvIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBicGZfY2hlY2tgIOKAkyB0aGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuIEl0J3MgY2xlYXJseSBhIGZvY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHN0YWNrIGRlcHRoIGxpbWl0YXRpb25zIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhwbG9yZSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IHNldHRpbmdzIG9yIGZsYWdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBjaGVjay4gTm93LCB0aGUgcGF0Y2ggZm9jdXNlcyBvbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICppcyogdGhpcyBmaWxlIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHk/IEFyZSB0aGVyZSBgI2lmZGVmYCBibG9ja3Mgb3IgYnVpbGQgb3B0aW9ucyB0aGF0IHdvdWxkIGNhdXNlIHRoaXMgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkPyBJIGhhdmUgdG8gYWNjb3VudCBmb3IgYnVpbGQgdmFyaWF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk4OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM4OjIyLjIxNjQ0OTA4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MDQyMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZlcmlmaWVyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyArPSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM4OjIyLjM1NDQ5Njk4NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTc2MzQyNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHBvdGVudGlhbGx5IHBlcmZvcm1hbmNlLWNyaXRpY2FsLCBzaW5jZSBCUEYgc3lzY2FsbHMgY2FuIGJlIGEgYm90dGxlbmVjay4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYGNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nYCwgYW5kIEkgc2VlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgc3VnZ2VzdHMgdGhpcyBpcyBhIGxvY2FsaXplZCBjaGFuZ2UsIGFsdGhvdWdoIFwibG9jYWxpemVkXCIgaW4gdGhlIGtlcm5lbCBjYW4gc3RpbGwgaGF2ZSBicm9hZCBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gdGhlIHZlcmlmaWVyLiBJIG5lZWQgdG8ga2VlcCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGFuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBhdCB0aGUgZnJvbnQgb2YgbXkgbWluZC5cblxuTm93LCB3aGF0J3MgaXQgYWN0dWFsbHkgKmRvaW5nKj8gQWgsIGl0J3MgbW9kaWZ5aW5nIHRoZSBzdGFjayBkZXB0aCBjaGVja2luZyBsb2dpYyAqd2l0aGluKiB0aGUgQlBGIHZlcmlmaWVyLiBUaGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgcmVzdHJpY3Rpb246IHJlamVjdGluZyB0YWlsIGNhbGxzIHdpdGhpbiAqYW55KiBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29yZSBtb2RpZmljYXRpb24gdG8gaG93IHByb2dyYW1zIGFyZSBsb2FkZWQgYW5kIHZhbGlkYXRlZC4gVGhpcyBjb3VsZCBhZmZlY3QgYSBidW5jaCBvZiBleGlzdGluZyBwcm9ncmFtcywgYW5kIHBvc3NpYmx5IHBlcmZvcm1hbmNlLiBUaGUgXCJXb3J0aEZ1enppbmdcIiBmbGFnIGNvbmZpcm1zIHRoYXQgaXQgaXMgbGlrZWx5IHRvIGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zLiBUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCB3aGljaCBzdWdnZXN0cyB0aGUgbmVlZCBmb3IgZXh0cmEgc2NydXRpbnkgaGVyZS4gSSBzZWUgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIHRoZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoX3N1YnByb2dgIGFuZCBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBmdW5jdGlvbnMuIE9rYXksIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZXhhY3QgdmVyaWZpY2F0aW9uIGxvZ2ljIGFyb3VuZCB0aG9zZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTYsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA2OjM4OjI3LjUzMDg0MTg2NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODk1NTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19tYXhfc3RhY2tfZGVwdGhfc3VicHJvZ1wiLFxuICAgIFwiY2hlY2tfbWF4X3N0YWNrX2RlcHRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllcidzIHN0YWNrIGRlcHRoIGNoZWNraW5nIGxvZ2ljIHRvIHJlamVjdCB0YWlsIGNhbGxzIHdpdGhpbiBhbnkgY2FsbGJhY2ssIG5vdCBqdXN0IGV4Y2VwdGlvbiBjYWxsYmFja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgdGhhdCBhZmZlY3RzIHByb2dyYW0gbG9hZGluZyBhbmQgdmFsaWRhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX21heF9zdGFja19kZXB0aF9zdWJwcm9nXCIsXG4gICAgXCJjaGVja19tYXhfc3RhY2tfZGVwdGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3Mgc3RhY2sgZGVwdGggY2hlY2tpbmcgbG9naWMgdG8gcmVqZWN0IHRhaWwgY2FsbHMgd2l0aGluIGFueSBjYWxsYmFjaywgbm90IGp1c3QgZXhjZXB0aW9uIGNhbGxiYWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciB0aGF0IGFmZmVjdHMgcHJvZ3JhbSBsb2FkaW5nIGFuZCB2YWxpZGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[1] Phase: Succeeded StartedAt: 2026-07-14 06:38:40 +0000 UTC FinishedAt: 2026-07-14 06:38:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 06:38:40 +0000 UTC FinishedAt: 2026-07-14 06:38:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2] Phase: Succeeded StartedAt: 2026-07-14 06:38:40 +0000 UTC FinishedAt: 2026-07-14 11:00:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 06:38:41 +0000 UTC FinishedAt: 2026-07-14 11:00:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 06:38:41 +0000 UTC FinishedAt: 2026-07-14 06:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 06:38:41 +0000 UTC FinishedAt: 2026-07-14 06:39:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr4h2n/series-workflowr4h2n-convert-artifact-1254106564/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 06:39:23 +0000 UTC FinishedAt: 2026-07-14 07:18:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 06:39:23 +0000 UTC FinishedAt: 2026-07-14 07:18:44 +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:*24a09d5f-7b73-43ef-87ed-cba3bab21fdb,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-workflowr4h2n/series-workflowr4h2n-convert-artifact-1254106564/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": "b21b2443-139d-4ae6-b9b9-ee8bed97361d", "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-workflowr4h2n/series-workflowr4h2n-build-action-907438338/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 06:39:23 +0000 UTC FinishedAt: 2026-07-14 07:18:34 +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:*24a09d5f-7b73-43ef-87ed-cba3bab21fdb,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-workflowr4h2n/series-workflowr4h2n-convert-artifact-1254106564/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": "b21b2443-139d-4ae6-b9b9-ee8bed97361d", "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-workflowr4h2n/series-workflowr4h2n-build-action-907438338/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 07:18:44 +0000 UTC FinishedAt: 2026-07-14 07:18:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 07:18:44 +0000 UTC FinishedAt: 2026-07-14 07:18:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 07:18:44 +0000 UTC FinishedAt: 2026-07-14 07:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 07:18:44 +0000 UTC FinishedAt: 2026-07-14 07:18:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr4h2n/series-workflowr4h2n-convert-artifact-313258819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 07:18:54 +0000 UTC FinishedAt: 2026-07-14 07:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 07:18:54 +0000 UTC FinishedAt: 2026-07-14 07:20:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b21b2443-139d-4ae6-b9b9-ee8bed97361d,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-workflowr4h2n/series-workflowr4h2n-build-action-907438338/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-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 07:20:56 +0000 UTC FinishedAt: 2026-07-14 07:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 07:20:56 +0000 UTC FinishedAt: 2026-07-14 07:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 07:20:56 +0000 UTC FinishedAt: 2026-07-14 07:55:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 07:20:56 +0000 UTC FinishedAt: 2026-07-14 07:55:49 +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:*24a09d5f-7b73-43ef-87ed-cba3bab21fdb,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-workflowr4h2n/series-workflowr4h2n-convert-artifact-313258819/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": "afd39a8e-ea00-4fc0-9898-b771372be5cb", "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-workflowr4h2n/series-workflowr4h2n-build-action-1667980791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 07:20:56 +0000 UTC FinishedAt: 2026-07-14 07:55:39 +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:*24a09d5f-7b73-43ef-87ed-cba3bab21fdb,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-workflowr4h2n/series-workflowr4h2n-convert-artifact-313258819/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": "afd39a8e-ea00-4fc0-9898-b771372be5cb", "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-workflowr4h2n/series-workflowr4h2n-build-action-1667980791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 07:55:49 +0000 UTC FinishedAt: 2026-07-14 07:55:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 07:55:49 +0000 UTC FinishedAt: 2026-07-14 07:55:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 07:55:49 +0000 UTC FinishedAt: 2026-07-14 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 07:55:49 +0000 UTC FinishedAt: 2026-07-14 07:57:46 +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:*afd39a8e-ea00-4fc0-9898-b771372be5cb,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-workflowr4h2n/series-workflowr4h2n-build-action-1667980791/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-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 11:00:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 11:00:38 +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"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"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:*b21b2443-139d-4ae6-b9b9-ee8bed97361d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*afd39a8e-ea00-4fc0-9898-b771372be5cb,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-workflowr4h2n/series-workflowr4h2n-build-action-907438338/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-workflowr4h2n/series-workflowr4h2n-build-action-1667980791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 07:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 07:58:01 +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"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"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-workflowr4h2n/series-workflowr4h2n-convert-artifact-215943516/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 07:57:56 +0000 UTC FinishedAt: 2026-07-14 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 07:58:06 +0000 UTC FinishedAt: 2026-07-14 11:00:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr4h2n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_max_stack_depth_subprog","check_max_stack_depth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9a3a07d06e7d74f4aecc51396c771149336ac55d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"2e7eaac6-0cf1-4082-8334-6ad4fadc3f2d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 07:58:06 +0000 UTC FinishedAt: 2026-07-14 11:00:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b21b2443-139d-4ae6-b9b9-ee8bed97361d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*afd39a8e-ea00-4fc0-9898-b771372be5cb,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-workflowr4h2n/series-workflowr4h2n-build-action-907438338/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-workflowr4h2n/series-workflowr4h2n-build-action-1667980791/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-workflowr4h2n/series-workflowr4h2n-convert-artifact-215943516/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,}