Name: series-workflowqs9rh Phase: Succeeded StartedAt: 2026-07-08 21:13:20 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[0] Phase: Succeeded StartedAt: 2026-07-08 21:13:20 +0000 UTC FinishedAt: 2026-07-08 21:30:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 21:13:20 +0000 UTC FinishedAt: 2026-07-08 21:30:31 +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": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "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": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "d01888d9-43ea-434e-9793-1495e9758847" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "__check_buffer_access", "check_tp_buffer_access", "check_buffer_access" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSB2YXJpYWJsZSBvZmZzZXRzIGFuZCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZThhZDNhMmU0YTg3NTRkYWMxYmM5YWVkZjU3NGJkNzllNWRlMzBlOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMjE6Mjg6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAyMWEzNjVkNDM2YTU5NS4uNmZlNGZjZjkzZTVmMDUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuJiM0MztcdFx0XHRcdCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSxcbiYjNDM7XHRcdFx0XHQgdTMyICphY2Nlc3NfZW5kKVxuIHtcbiYjNDM7XHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4mIzQzO1xuIFx0aWYgKG9mZiBcdTAwM2MgMCkge1xuIFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxcblwmIzM0OyxcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiYjNDM7XG4gXHRpZiAoIXRudW1faXNfY29uc3QocmVnLVx1MDAzZXZhcl9vZmYpKSB7XG4gXHRcdGNoYXIgdG5fYnVmWzQ4XTtcbiBcbkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuJiM0MztcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuJiM0MztcdGlmICh2YXJfb2ZmIFx1MDAzZT0gQlBGX01BWF9WQVJfT0ZGIHx8IHZhcl9vZmYgXHUwMDNjPSAtQlBGX01BWF9WQVJfT0ZGKSB7XG4mIzQzO1x0XHR2ZXJib3NlKGVudiwgXCYjMzQ7JXMgJXMgYnVmZmVyIG9mZnNldCAlbGxkIGlzIG5vdCBhbGxvd2VkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCB2YXJfb2ZmKTtcbiYjNDM7XHRcdHJldHVybiAtRUFDQ0VTO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3RhcnQgPSB2YXJfb2ZmICYjNDM7IG9mZjtcbiYjNDM7XHRpZiAoc3RhcnQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHZlcmJvc2UoZW52LFxuJiM0MztcdFx0XHRcJiMzNDslcyBpbnZhbGlkIG5lZ2F0aXZlICVzIGJ1ZmZlciBvZmZzZXQ6IG9mZj0lZCwgdmFyX29mZj0lbGxkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHZhcl9vZmYpO1xuJiM0MztcdFx0cmV0dXJuIC1FQUNDRVM7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoc2l6ZSBcdTAwM2MgMCkge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTtcbiYjNDM7XHRcdHJldHVybiAtRUFDQ0VTO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0KmFjY2Vzc19lbmQgPSAodTMyKXN0YXJ0ICYjNDM7ICh1MzIpc2l6ZTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNTM1MSwxNCAmIzQzOzUzNzgsMTQgQEAgc3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4gXHRcdFx0XHQgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuIHtcbiYjNDM7XHR1MzIgYWNjZXNzX2VuZDtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcJiMzNDt0cmFjZXBvaW50XCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuJiM0MztcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFwmIzM0O3RyYWNlcG9pbnRcJiMzNDssIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXHUwMDI2YWNjZXNzX2VuZCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgocmVnLVx1MDAzZXZhcl9vZmYudmFsdWUgJiM0Mzsgb2ZmICYjNDM7IHNpemUsXG4tXHRcdFx0XHRcdCAgICBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2Vzcyk7XG4mIzQzO1x0ZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTUzNzAsMTMgJiM0Mzs1Mzk3LDE0IEBAIHN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICB1MzIgKm1heF9hY2Nlc3MpXG4ge1xuIFx0Y29uc3QgY2hhciAqYnVmX2luZm8gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLVx1MDAzZXR5cGUpID8gXCYjMzQ7cmRvbmx5XCYjMzQ7IDogXCYjMzQ7cmR3clwmIzM0OztcbiYjNDM7XHR1MzIgYWNjZXNzX2VuZDtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcbiYjNDM7XHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHQqbWF4X2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSAmIzQzOyBvZmYgJiM0Mzsgc2l6ZSwgKm1heF9hY2Nlc3MpO1xuJiM0MztcdCptYXhfYWNjZXNzID0gbWF4KGFjY2Vzc19lbmQsICptYXhfYWNjZXNzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmNcbmluZGV4IDIxNmIwZGZhYzBmZTYxLi5lZmU0Y2FkNDdiMjgwYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jXG5AQCAtNCwxMiAmIzQzOzQsMzEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uYmQuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2JwZl91dGlsLmhcJiMzNDtcbiBcbi12b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxuJiM0MztzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX2luc24gKnByb2dyYW0sIHNpemVfdCBwcm9nX2xlbilcbiB7XG4tXHRfX3UzMiBkdXJhdGlvbiA9IDA7XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Byb2dfbG9hZF9vcHRzLCBvcHRzKTtcbiBcdGNoYXIgZXJyb3JbNDA5Nl07XG4tXHRpbnQgYnBmX2ZkID0gLTEsIHRwX2ZkID0gLTE7XG4mIzQzO1x0aW50IGJwZl9mZCwgdHBfZmQ7XG4mIzQzO1xuJiM0MztcdG9wdHMubG9nX2xldmVsID0gMjtcbiYjNDM7XHRvcHRzLmxvZ19idWYgPSBlcnJvcjtcbiYjNDM7XHRvcHRzLmxvZ19zaXplID0gc2l6ZW9mKGVycm9yKTtcbiYjNDM7XG4mIzQzO1x0YnBmX2ZkID0gYnBmX3Byb2dfbG9hZChCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBOVUxMLCBcJiMzNDtHUEwgdjJcJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICBwcm9ncmFtLCBwcm9nX2xlbiwgXHUwMDI2b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfR0UoYnBmX2ZkLCAwLCBcJiMzNDtwcm9nX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFwmIzM0O25iZF9zZW5kX3JlcXVlc3RcJiMzNDssIGJwZl9mZCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfTFQodHBfZmQsIDAsIG5hbWUpKVxuJiM0MztcdFx0Y2xvc2UodHBfZmQpO1xuJiM0MztcbiYjNDM7XHRjbG9zZShicGZfZmQpO1xuJiM0Mzt9XG4gXG4mIzQzO3ZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXG4mIzQzO3tcbiBcdGNvbnN0IHN0cnVjdCBicGZfaW5zbiBwcm9ncmFtW10gPSB7XG4gXHRcdC8qIHI2IGlzIG91ciB0cCBidWZmZXIgKi9cbiBcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG5AQCAtMTksMjUgJiM0MzszOCwxOCBAQCB2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxuIFx0XHRCUEZfRVhJVF9JTlNOKCksXG4gXHR9O1xuIFxuLVx0TElCQlBGX09QVFMoYnBmX3Byb2dfbG9hZF9vcHRzLCBvcHRzLFxuLVx0XHQubG9nX2xldmVsID0gMixcbi1cdFx0LmxvZ19idWYgPSBlcnJvcixcbi1cdFx0LmxvZ19zaXplID0gc2l6ZW9mKGVycm9yKSxcbi1cdCk7XG4tXG4tXHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0Oyxcbi1cdFx0XHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcbi1cdFx0XHQgICAgICAgXHUwMDI2b3B0cyk7XG4tXHRpZiAoQ0hFQ0soYnBmX2ZkIFx1MDAzYyAwLCBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgbG9hZFwmIzM0Oyxcbi1cdFx0ICBcJiMzNDtmYWlsZWQ6ICVkIGVycm5vICVkXFxuXCYjMzQ7LCBicGZfZmQsIGVycm5vKSlcbi1cdFx0cmV0dXJuO1xuLVxuLVx0dHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihcJiMzNDtuYmRfc2VuZF9yZXF1ZXN0XCYjMzQ7LCBicGZfZmQpO1xuLVx0aWYgKENIRUNLKHRwX2ZkIFx1MDAzZT0gMCwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIG9wZW5cJiMzNDssXG4tXHRcdCAgXCYjMzQ7ZXJyb25lb3VzbHkgc3VjY2VlZGVkXFxuXCYjMzQ7KSlcbi1cdFx0Z290byBvdXRfYnBmZmQ7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJwZl9pbnNuIG5lZ2F0aXZlX3Zhcl9vZmZfcHJvZ3JhbVtdID0ge1xuJiM0MztcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG4mIzQzO1x0XHQvKiBtYWtlIHZhcl9vZmYgbmVnYXRpdmUsIGJ1dCBrZWVwIHRoZSBlZmZlY3RpdmUgYWNjZXNzIG9mZnNldCBub24tbmVnYXRpdmUgKi9cbiYjNDM7XHRcdEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR182LCAtOCksXG4mIzQzO1x0XHQvKiBvbmUgYnl0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgbmJkX3JlcXVlc3Qgc3RydWN0ICovXG4mIzQzO1x0XHRCUEZfTERYX01FTShCUEZfQiwgQlBGX1JFR18wLCBCUEZfUkVHXzYsXG4mIzQzO1x0XHRcdCAgICBzaXplb2Yoc3RydWN0IG5iZF9yZXF1ZXN0KSAmIzQzOyA4KSxcbiYjNDM7XHRcdEJQRl9FWElUX0lOU04oKSxcbiYjNDM7XHR9O1xuIFxuLVx0Y2xvc2UodHBfZmQpO1xuLW91dF9icGZmZDpcbi1cdGNsb3NlKGJwZl9mZCk7XG4mIzQzO1x0Y2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoXCYjMzQ7bmJkX2ludmFsaWRcJiMzNDssIHByb2dyYW0sIEFSUkFZX1NJWkUocHJvZ3JhbSkpO1xuJiM0MztcdGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KFwmIzM0O25iZF9pbnZhbGlkX25lZ2F0aXZlX3Zhcl9vZmZcJiMzNDssXG4mIzQzO1x0XHRcdFx0bmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtLFxuJiM0MztcdFx0XHRcdEFSUkFZX1NJWkUobmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtKSk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuaW5kZXggMTRhMDE3MmUyMTQxZTguLjQwNTVhNjQ0M2JjMjBhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbkBAIC00Nyw0ICYjNDM7NDcsMjAgQEAgbDBfJT06XHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXG4gXHQ6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O3Jhd190cmFjZXBvaW50LndcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcJiMzNDspXG4mIzQzO19fZmFpbHVyZVxuJiM0MztfX21zZyhcJiMzNDtpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFwmIzM0OylcbiYjNDM7X19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRyNiA9ICoodTY0ICopKHIxICYjNDM7IDApO1x0XHRcdFx0XFxcbiYjNDM7XHRyNiAmIzQzOz0gLTg7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjAgPSAqKHU2NCAqKShyNiAmIzQzOyAwKTtcdFx0XHRcdFxcXG4mIzQzO1x0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcJiMzNDtcdDpcbiYjNDM7XHQ6XG4mIzQzO1x0OiBfX2Nsb2JiZXJfYWxsKTtcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSB2YXJpYWJsZSBvZmZzZXRzIGFuZCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlOGFkM2EyZTRhODc1NGRhYzFiYzlhZWRmNTc0YmQ3OWU1ZGUzMGU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAyMToyODo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyMWEzNjVkNDM2YTU5NS4uNmZlNGZjZjkzZTVmMDUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJCSBjb25zdCBjaGFyICpidWZfaW5mbywKIAkJCQkgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywKLQkJCQkgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpCiYjNDM7CQkJCSBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSwKJiM0MzsJCQkJIHUzMiAqYWNjZXNzX2VuZCkKIHsKJiM0MzsJczY0IHN0YXJ0LCB2YXJfb2ZmOwomIzQzOwogCWlmIChvZmYgJmx0OyAwKSB7CiAJCXZlcmJvc2UoZW52LAogCQkJJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxuJiMzNDssCiAJCQlyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpOwogCQlyZXR1cm4gLUVBQ0NFUzsKIAl9CiYjNDM7CiAJaWYgKCF0bnVtX2lzX2NvbnN0KHJlZy0mZ3Q7dmFyX29mZikpIHsKIAkJY2hhciB0bl9idWZbNDhdOwogCkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAomIzQzOwl2YXJfb2ZmID0gKHM2NClyZWctJmd0O3Zhcl9vZmYudmFsdWU7CiYjNDM7CWlmICh2YXJfb2ZmICZndDs9IEJQRl9NQVhfVkFSX09GRiB8fCB2YXJfb2ZmICZsdDs9IC1CUEZfTUFYX1ZBUl9PRkYpIHsKJiM0MzsJCXZlcmJvc2UoZW52LCAmIzM0OyVzICVzIGJ1ZmZlciBvZmZzZXQgJWxsZCBpcyBub3QgYWxsb3dlZFxuJiMzNDssCiYjNDM7CQkJcmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlzdGFydCA9IHZhcl9vZmYgJiM0Mzsgb2ZmOwomIzQzOwlpZiAoc3RhcnQgJmx0OyAwKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwKJiM0MzsJCQkmIzM0OyVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc2l6ZSAmbHQ7IDApIHsKJiM0MzsJCXZlcmJvc2UoZW52LCAmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTsKJiM0MzsJCXJldHVybiAtRUFDQ0VTOwomIzQzOwl9CiYjNDM7CiYjNDM7CSphY2Nlc3NfZW5kID0gKHUzMilzdGFydCAmIzQzOyAodTMyKXNpemU7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTUzNTEsMTQgJiM0Mzs1Mzc4LDE0IEBAIHN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJCSAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywKIAkJCQkgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKQogewomIzQzOwl1MzIgYWNjZXNzX2VuZDsKIAlpbnQgZXJyOwogCi0JZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgJiMzNDt0cmFjZXBvaW50JiMzNDssIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7CiYjNDM7CWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsICYjMzQ7dHJhY2Vwb2ludCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsICZhbXA7YWNjZXNzX2VuZCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWVudi0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDttYXhfdHBfYWNjZXNzID0gbWF4KHJlZy0mZ3Q7dmFyX29mZi52YWx1ZSAmIzQzOyBvZmYgJiM0Mzsgc2l6ZSwKLQkJCQkJICAgIGVudi0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDttYXhfdHBfYWNjZXNzKTsKJiM0MzsJZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC01MzcwLDEzICYjNDM7NTM5NywxNCBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCSAgICAgICB1MzIgKm1heF9hY2Nlc3MpCiB7CiAJY29uc3QgY2hhciAqYnVmX2luZm8gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLSZndDt0eXBlKSA/ICYjMzQ7cmRvbmx5JiMzNDsgOiAmIzM0O3Jkd3ImIzM0OzsKJiM0MzsJdTMyIGFjY2Vzc19lbmQ7CiAJaW50IGVycjsKIAotCWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpOwomIzQzOwllcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCAmYW1wO2FjY2Vzc19lbmQpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQkqbWF4X2FjY2VzcyA9IG1heChyZWctJmd0O3Zhcl9vZmYudmFsdWUgJiM0Mzsgb2ZmICYjNDM7IHNpemUsICptYXhfYWNjZXNzKTsKJiM0MzsJKm1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMKaW5kZXggMjE2YjBkZmFjMGZlNjEuLmVmZTRjYWQ0N2IyODBiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jCkBAIC00LDEyICYjNDM7NCwzMSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L25iZC5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfdXRpbC5oJiMzNDsKIAotdm9pZCB0ZXN0X3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQodm9pZCkKJiM0MztzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9pbnNuICpwcm9ncmFtLCBzaXplX3QgcHJvZ19sZW4pCiB7Ci0JX191MzIgZHVyYXRpb24gPSAwOwomIzQzOwlMSUJCUEZfT1BUUyhicGZfcHJvZ19sb2FkX29wdHMsIG9wdHMpOwogCWNoYXIgZXJyb3JbNDA5Nl07Ci0JaW50IGJwZl9mZCA9IC0xLCB0cF9mZCA9IC0xOwomIzQzOwlpbnQgYnBmX2ZkLCB0cF9mZDsKJiM0MzsKJiM0MzsJb3B0cy5sb2dfbGV2ZWwgPSAyOwomIzQzOwlvcHRzLmxvZ19idWYgPSBlcnJvcjsKJiM0MzsJb3B0cy5sb2dfc2l6ZSA9IHNpemVvZihlcnJvcik7CiYjNDM7CiYjNDM7CWJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgJiMzNDtHUEwgdjImIzM0OywKJiM0MzsJCQkgICAgICAgcHJvZ3JhbSwgcHJvZ19sZW4sICZhbXA7b3B0cyk7CiYjNDM7CWlmICghQVNTRVJUX0dFKGJwZl9mZCwgMCwgJiMzNDtwcm9nX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oJiMzNDtuYmRfc2VuZF9yZXF1ZXN0JiMzNDssIGJwZl9mZCk7CiYjNDM7CWlmICghQVNTRVJUX0xUKHRwX2ZkLCAwLCBuYW1lKSkKJiM0MzsJCWNsb3NlKHRwX2ZkKTsKJiM0MzsKJiM0MzsJY2xvc2UoYnBmX2ZkKTsKJiM0Mzt9CiAKJiM0Mzt2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKQomIzQzO3sKIAljb25zdCBzdHJ1Y3QgYnBmX2luc24gcHJvZ3JhbVtdID0gewogCQkvKiByNiBpcyBvdXIgdHAgYnVmZmVyICovCiAJCUJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR182LCBCUEZfUkVHXzEsIDApLApAQCAtMTksMjUgJiM0MzszOCwxOCBAQCB2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKQogCQlCUEZfRVhJVF9JTlNOKCksCiAJfTsKIAotCUxJQkJQRl9PUFRTKGJwZl9wcm9nX2xvYWRfb3B0cywgb3B0cywKLQkJLmxvZ19sZXZlbCA9IDIsCi0JCS5sb2dfYnVmID0gZXJyb3IsCi0JCS5sb2dfc2l6ZSA9IHNpemVvZihlcnJvciksCi0JKTsKLQotCWJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgJiMzNDtHUEwgdjImIzM0OywKLQkJCSAgICAgICBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pLAotCQkJICAgICAgICZhbXA7b3B0cyk7Ci0JaWYgKENIRUNLKGJwZl9mZCAmbHQ7IDAsICYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIGxvYWQmIzM0OywKLQkJICAmIzM0O2ZhaWxlZDogJWQgZXJybm8gJWRcbiYjMzQ7LCBicGZfZmQsIGVycm5vKSkKLQkJcmV0dXJuOwotCi0JdHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbigmIzM0O25iZF9zZW5kX3JlcXVlc3QmIzM0OywgYnBmX2ZkKTsKLQlpZiAoQ0hFQ0sodHBfZmQgJmd0Oz0gMCwgJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgb3BlbiYjMzQ7LAotCQkgICYjMzQ7ZXJyb25lb3VzbHkgc3VjY2VlZGVkXG4mIzM0OykpCi0JCWdvdG8gb3V0X2JwZmZkOwomIzQzOwljb25zdCBzdHJ1Y3QgYnBmX2luc24gbmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtW10gPSB7CiYjNDM7CQlCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfNiwgQlBGX1JFR18xLCAwKSwKJiM0MzsJCS8qIG1ha2UgdmFyX29mZiBuZWdhdGl2ZSwgYnV0IGtlZXAgdGhlIGVmZmVjdGl2ZSBhY2Nlc3Mgb2Zmc2V0IG5vbi1uZWdhdGl2ZSAqLwomIzQzOwkJQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHXzYsIC04KSwKJiM0MzsJCS8qIG9uZSBieXRlIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBuYmRfcmVxdWVzdCBzdHJ1Y3QgKi8KJiM0MzsJCUJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNiwKJiM0MzsJCQkgICAgc2l6ZW9mKHN0cnVjdCBuYmRfcmVxdWVzdCkgJiM0MzsgOCksCiYjNDM7CQlCUEZfRVhJVF9JTlNOKCksCiYjNDM7CX07CiAKLQljbG9zZSh0cF9mZCk7Ci1vdXRfYnBmZmQ6Ci0JY2xvc2UoYnBmX2ZkKTsKJiM0MzsJY2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoJiMzNDtuYmRfaW52YWxpZCYjMzQ7LCBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pKTsKJiM0MzsJY2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoJiMzNDtuYmRfaW52YWxpZF9uZWdhdGl2ZV92YXJfb2ZmJiMzNDssCiYjNDM7CQkJCW5lZ2F0aXZlX3Zhcl9vZmZfcHJvZ3JhbSwKJiM0MzsJCQkJQVJSQVlfU0laRShuZWdhdGl2ZV92YXJfb2ZmX3Byb2dyYW0pKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYwppbmRleCAxNGEwMTcyZTIxNDFlOC4uNDA1NWE2NDQzYmMyMGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmMKQEAgLTQ3LDQgJiM0Mzs0NywyMCBAQCBsMF8lPToJLyogc2hpZnQgdGhlIGJ1ZmZlciBwb2ludGVyIHRvIGEgdmFyaWFibGUgbG9jYXRpb24gKi9cCiAJOiBfX2Nsb2JiZXJfYWxsKTsKIH0KIAomIzQzO1NFQygmIzM0O3Jhd190cmFjZXBvaW50LncmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXQmIzM0OykKJiM0MztfX2ZhaWx1cmUKJiM0MztfX21zZygmIzM0O2ludmFsaWQgbmVnYXRpdmUgdHJhY2Vwb2ludCBidWZmZXIgb2Zmc2V0JiMzNDspCiYjNDM7X19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQkJXAomIzQzOwlyNiA9ICoodTY0ICopKHIxICYjNDM7IDApOwkJCQlcCiYjNDM7CXI2ICYjNDM7PSAtODsJCQkJCVwKJiM0MzsJcjAgPSAqKHU2NCAqKShyNiAmIzQzOyAwKTsJCQkJXAomIzQzOwlleGl0OwkJCQkJCVwKJiM0MzsmIzM0Owk6CiYjNDM7CToKJiM0MzsJOiBfX2Nsb2JiZXJfYWxsKTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIHRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjaGFuZ2VzIHdpdGhpbiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzYWZldHkgb2YgQlBGIHByb2dyYW1zIGJ5IHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgY2hlY2tzIGFyb3VuZCBgdmFyX29mZmAgLSBzcGVjaWZpY2FsbHksIGVuc3VyaW5nIGl0JiMzOTtzIHdpdGhpbiBzZW5zaWJsZSBib3VuZHMgKG5vdCBuZWdhdGl2ZSBvciBleGNlc3NpdmVseSBsYXJnZSkgYW5kIHRoZW4gY2FsY3VsYXRpbmcgYGFjY2Vzc19lbmRgIHNhZmVseS4gVGhlIGdvYWwgaGVyZSBpcyB0byBtaXRpZ2F0ZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiBsb2dpYyBJJiMzOTtkIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgZnV6emluZzsgdGhlc2UgYnVmZmVyIGFjY2VzcyBjaGVja3MgYXJlIGEgcHJpbWUgdGFyZ2V0LiBBbnkgc3VidGxlIGZsYXdzIGhlcmUgY291bGQgbGVhZCB0byBleHBsb2l0YWJsZSBpc3N1ZXMuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBJdCBzZWVtcyBsaWtlIHRoZSBjb2RlIG5vdyBleHBsaWNpdGx5IHZhbGlkYXRlcyB0aGUgb2Zmc2V0LiBJdCBzdGFydHMgYnkgY2hlY2tpbmcgaWYgdGhlIG9mZnNldCBpc24mIzM5O3QgYSBjb25zdGFudCwgYW5kLCBpZiBpdCBpcywgbWFrZXMgc29tZSBib3VuZHMgY2hlY2tzLCB0aGVuIGNhbGN1bGF0ZXMgdGhlIGBzdGFydGAgYW5kIGBhY2Nlc3NfZW5kYCB3aXRoIGNoZWNrcy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIHNlY3VyaXR5IGVuaGFuY2VtZW50LiBUaGUgY29kZSBub3cgcHJldmVudHMgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgbGFyZ2Ugb2Zmc2V0cy4gSXQgZW5zdXJlcyB0aGF0IHRoZSBjYWxjdWxhdGVkIGFjY2VzcyByYW5nZSBzdGF5cyB3aXRoaW4gZGVmaW5lZCBib3VuZGFyaWVzLCBwcmV2ZW50aW5nIGFjY2VzcyBiZXlvbmQgdGhlIGJ1ZmZlciYjMzk7cyBib3VuZHMuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVuIGFuZCBob3cgdGhlc2UgY2hlY2tzIGFyZSBhY3R1YWxseSAqdXNlZCouIFNvLCB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcgaXMgZXNzZW50aWFsLCBJIGtub3cgdGhlIEJQRiB2ZXJpZmllciBpcyBlbmFibGVkIHRocm91Z2ggdGhhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgc3RydWN0dXJlLiBPa2F5LCBzbyBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCBjYWxsIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBMb29rcyBsaWtlIGl0IGlzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgQlBGIHByb2dyYW0gdmVyaWZpY2F0aW9uIHByb2Nlc3MuIFdhaXQsIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRpbWUgdG8gdmVyaWZ5IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHdpdGggZ3JlcHBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTUyNzI9c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzI2OnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0Olx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzg1LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM5Mz1zdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NDAzOlx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXHUwMDI2YWNjZXNzX2VuZCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkwOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCdWZmZXIgQWNjZXNzIEZ1bmN0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aHJlZSBmdW5jdGlvbnMgbGlzdGVkOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlcyB3aXRoaW4gdGhpcyBjb250ZXh0LiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGV5IGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdmVyaWZ5aW5nIGFjY2VzcyB0byBtZW1vcnkgYnVmZmVycywgYSBjcml0aWNhbCBhc3BlY3Qgb2Ygc3lzdGVtIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkuCgpNeSBuZXh0IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgIGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0JiMzOTtzIGEga2V5IGF0dHJpYnV0ZSB0byB1bmRlcnN0YW5kLiBCZWluZyBzdGF0aWMgd291bGQgaW5mbHVlbmNlIGl0cyBzY29wZSwgaG93IGl0JiMzOTtzIGxpbmtlZCwgYW5kIHBvdGVudGlhbGx5IHdoZXJlIGl0IGNhbiBiZSBjYWxsZWQgZnJvbS4gSXTigJlzIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IGl04oCZcyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhpcyBiZWZvcmUgSSBjYW4gZGVsdmUgZGVlcGVyIGludG8gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBsaXN0ZWQgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTUyNzI9c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzI2OnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0Olx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzg1LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM5Mi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzkzOnN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTQwMzpcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsIFx1MDAyNmFjY2Vzc19lbmQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDQtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MDk4PXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjMzMzpcdFx0ZXJyID0gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgZmFsc2UsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjMzNC1cdFx0XHRcdFx0ICBtYXhfYWNjZXNzKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Njc2MT1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MDktXHRcdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2ODEwOlx0XHRyZXR1cm4gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIDAsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgxMS1cdFx0XHRcdFx0ICAgYWNjZXNzX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFN5emthbGxlciYjMzk7cyBDb3ZlcmFnZSBvZiBTdGF0aWMgRnVuY3Rpb25zKioKCk9rYXksIHNvIHRoZSBpc3N1ZSBvZiB0aGVzZSBmdW5jdGlvbnMgYmVpbmcgc3RhdGljIGluaXRpYWxseSBzZWVtZWQgbGlrZSBhIHByb2JsZW0uIEJ1dCwgYWZ0ZXIgYSBtb21lbnQmIzM5O3MgY29uc2lkZXJhdGlvbiwgSSByZWFsaXplIHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBhY3R1YWxseSBoaW5kZXIgYHN5emthbGxlcmAmIzM5O3MgZWZmZWN0aXZlbmVzcy4gVGhlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudCB3aXRoaW4gdGhlIGtlcm5lbCBpbWFnZSBpdHNlbGYsIHNvIHRoZXkgYXJlLCBpbiBmYWN0LCBhdmFpbGFibGUgZm9yIHRhcmdldGluZy4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgcHJvdmlkZSB0aGVtIGRpcmVjdGx5LgoKVGhlbiBJIHJlY2FsbGVkIHRoYXQgYHN5emthbGxlcmAgbGV2ZXJhZ2VzIGBrY292YCwgd2hpY2ggb3BlcmF0ZXMgYXQgdGhlIGxldmVsIG9mIGJhc2ljIGJsb2NrcyB0byB0cmFjayBjb2RlIGNvdmVyYWdlLiBGdW5jdGlvbiBuYW1lcyBhcmUgcmVzb2x2ZWQgdmlhIGRlYnVnIGluZm9ybWF0aW9uLiBUaGVyZWZvcmUsIGJlaW5nIHN0YXRpYyBzaG91bGRuJiMzOTt0IHByZXZlbnQgdGhlaXIgZXhlY3V0aW9uIHRyYWNraW5nLiBUaGF0JiMzOTtzIGdvb2QuCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGlzIGFzcGVjdC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIGEga2V5IGNvbmZpZ3VyYXRpb24gdG8gaW52ZXN0aWdhdGUuIElzIHRoYXQgdGhlIG9ubHkgb25lPwoKVGhlIHNwZWNpZmljIHRlc3QgY2FzZSB3ZSYjMzk7cmUgY29uc2lkZXJpbmcsIGByYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmNgLCB1dGlsaXplcyBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAuIE15IGZvY3VzIHNob3VsZCBzaGlmdCB0b3dhcmRzIGRldGVybWluaW5nIHdoaWNoIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljYWxseSBlbmFibGUgdGhpcyBwcm9ncmFtIHR5cGUuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBob3cgYnJvYWRseSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoaXMgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3Q9MTg9ZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBmb290bm90ZXMuXG4tLVxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0My0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0MztcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxNDQ6fCBgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgYCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGByYXdfdHAudyYjNDM7YGAgWyNyYXd0cF1fICAgICAgICAgIHwgICAgICAgICAgIHxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xNDUtJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLSYjNDM7XG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD00NT1CUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQsIHJhd190cmFjZXBvaW50LFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00Ni1cdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDo0NzpCUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIHJhd190cmFjZXBvaW50X3dyaXRhYmxlLFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00OC1cdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg2LSAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjM4NzogKlx0XHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4OC0gKlxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTA4NzpcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFQsXG4tLVxua2VybmVsL2JwZi9idGYuYz02MjE2PXN0YXRpYyBpbnQgYnRmX3ZhbGlkYXRlX3Byb2dfY3R4X3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNjI3My1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvYnRmLmM6NjI3NDpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvYnRmLmMtNjI3NS1cdFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yODcxPXN0YXRpYyBib29sIGlzX3BlcmZtb25fcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSBwcm9nX3R5cGUpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjg3Ny1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI4Nzg6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yODc5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDM1Mj1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzNzgtXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzc5Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM4MC1cdFx0aWYgKHN0cm5jcHlfZnJvbV91c2VyKGJ1ZiwgdXNlcl90cF9uYW1lLCBzaXplb2YoYnVmKSAtIDEpIFx1MDAzYyAwKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzcyMz1zdGF0aWMgYm9vbCBpc190cmFjaW5nX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MjktXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTc3MzA6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MzEtXHRcdHJldHVybiB0cnVlO1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg2LSAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjM4NzogKlx0XHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4OC0gKlxuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTA4NzpcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFQsXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI2LVx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cdFx0PSBcJiMzNDtjZ3JvdXBfc3lzY3RsXCYjMzQ7LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoyMjc6XHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cdD0gXCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGVcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIyOC1cdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BUXVx0XHQ9IFwmIzM0O2Nncm91cF9zb2Nrb3B0XCYjMzQ7LFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9NzExMz1zdGF0aWMgc3RydWN0IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzEtXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQsICAgICAgICAgIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXCYjMzQ7IH0sXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjcxMzI6XHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXCYjMzQ7IH0sXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzMtXHR7IEJQRl9QUk9HX1RZUEVfU0NIRURfQUNULCAgICAgICAgICAgICAgIFwmIzM0O19fc2tfYnVmZlwmIzM0OyB9LFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9NzE1Mz1zdGF0aWMgYm9vbCBuZWVkX2Z1bmNfYXJnX3R5cGVfZml4dXAoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MjA4LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MjA5Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MjEwLVx0XHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jPTEwMz1zdGF0aWMgaW50IHByb2JlX3Byb2dfbG9hZChlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3Ny1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jOjE3ODpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3OS1cdGNhc2UgQlBGX1BST0dfVFlQRV9MV1RfU0VHNkxPQ0FMOlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYz03PXN0YXRpYyB2b2lkIGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jLTE3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jOjE4Olx0YnBmX2ZkID0gYnBmX3Byb2dfbG9hZChCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBOVUxMLCBcJiMzNDtHUEwgdjJcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMTktXHRcdFx0ICAgICAgIHByb2dyYW0sIHByb2dfbGVuLCBcdTAwMjZvcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYz04PXZvaWQgc2VyaWFsX3Rlc3RfcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYzoyNzpcdGludCBicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTI4LVx0XHRcdFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzI2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEJQRiBQcm9ncmFtIFR5cGUgQXZhaWxhYmlsaXR5KioKCk9rYXksIHNvIEkgaW5pdGlhbGx5IHRob3VnaHQgYENPTkZJR19CUEZfU1lTQ0FMTGAgd291bGQgYmUgdGhlIGRldGVybWluaW5nIGZhY3RvciBoZXJlLiBCdXQgaGFuZyBvbiwgaXQganVzdCBjbGlja2VkIHRoYXQgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgIGlzIHRpZWQgdG8gYENPTkZJR19CUEZfRVZFTlRTYC4gVGhhdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbiBJIG5lZWQgdG8gdmVyaWZ5LiBMZXQgbWUganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciBtYXliZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCDigJMgdGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlIGF2YWlsYWJpbGl0eSBvZiBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeSwgYW5kIHRob3NlIGZpbGVzIHNob3VsZCBwcm92aWRlIHRoZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MjczLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9idGYuYzo2Mjc0Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxua2VybmVsL2JwZi9idGYuYy02Mjc1LVx0XHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yODc3LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mjg3ODpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM3OC1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzNzk6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVx0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoYnVmLCB1c2VyX3RwX25hbWUsIHNpemVvZihidWYpIC0gMSkgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3NzIzPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzcyOS1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMDpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzczMS1cdFx0cmV0dXJuIHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTgzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gUmF3IFRyYWNlcG9pbnQgV3JpdGVhYmxlIEhhbmRsaW5nKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAgaXMgaGFuZGxlZC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGp1bXAgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciwgc28gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGFuZCBhc3NvY2lhdGVkIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhhdCBmaWxlIGZvciBhbnkgY29kZSBzZWN0aW9ucyByZWxhdGVkIHRvIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciB0aGUgZnVuY3Rpb24gY2FsbHMsIGRhdGEgc3RydWN0dXJlcywgYW5kIGFueSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHN1cnJvdW5kaW5nIHRoaXMgcGFydGljdWxhciBCUEYgcHJvZ3JhbSB0eXBlLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS4gSSB3YW50IHRvIHVuY292ZXIgaG93IHRoZSByYXcgdHJhY2Vwb2ludCB3cml0ZWFibGUgcHJvZ3JhbXMgYWN0dWFsbHkgaW50ZXJhY3Qgd2l0aCB0aGUgdHJhY2Vwb2ludHMgYW5kIHdoYXQgc3BlY2lmaWMgY2FwYWJpbGl0aWVzIHRoZXkgZ3JhbnQuIEl04oCZcyBhbHNvIGltcG9ydGFudCB0byBpZGVudGlmeSBhbnkgY29uc3RyYWludHMgb3IgbGltaXRhdGlvbnMgdGhhdCBhcmUgaW1wb3NlZCBvbiBpdHMgdXNlLiBJIGV4cGVjdCB0byBzZWUgdGhlIGtleSBlbGVtZW50cyBmb3IgdGhpcyBwcm9ncmFtIHR5cGUsIGxpa2UgaXRzIHByb2dyYW0gbG9hZCBhbmQgZXhlY3V0aW9uIHBhdGhzLCBhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCBpbiBoYW5kbGluZyBhbmQgYnVmZmVyaW5nIGRhdGEuIEkgbmVlZCB0byBjb25maXJtIGhvdyB0aGUgd3JpdGFibGUgcGFydCBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOgoKKipEZWVwIERpdmUgaW50byBgYnBmX3Byb2dfdHlwZXNgIFdpdGhpbiB0aGUgS2VybmVsKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgQlBGIHByb2dyYW0gdHlwZXMuIE15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRvIHN0YXJ0IGRpcmVjdGx5IHdpdGggdGhlIHNvdXJjZS4gTGV0JiMzOTtzIGhlYWQgc3RyYWlnaHQgdG8gYGtlcm5lbC9icGYvc3lzY2FsbC5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIGludGVyYWN0aW9uIHdpdGggYGJwZl9wcm9nX3R5cGVzYC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgdHlwZXMgYXJlIGRlZmluZWQsIGhvdyB0aGV5JiMzOTtyZSB1c2VkIGluIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNhbm9uaWNhbCBkZWZpbml0aW9uLCB0aGUgbGlua2FnZSBiZXR3ZWVuIHVzZXItc3BhY2UgQlBGIHByb2dyYW0gbG9hZGluZyBhbmQgdGhlc2UgcHJvZ3JhbSB0eXBlcy4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgSSYjMzk7bGwgZmluZCB0aGUgc3RydWN0dXJlcyB0aGF0IGdvdmVybiB0aGUgdmVyaWZpZXImIzM5O3MgaW5wdXQuIEZyb20gdGhlcmUsIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHJlc3RyaWN0aW9ucyBhbmQgY2FwYWJpbGl0aWVzIG9mIGRpZmZlcmVudCBCUEYgcHJvZ3JhbSBjbGFzc2VzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRyb2xsaW5nIHRoZSBwcm9ncmFtJiMzOTtzIGxpZmVjeWNsZSwgdHlwZSB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgYWNjZXNzLiBUaGlzIGlzIGdyb3VuZCB6ZXJvIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9wcm9nX3R5cGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9MjMwNT1zdGF0aWMgaW50IG1hcF9mcmVlemUoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjMzOS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgKiBjb25zdCBicGZfcHJvZ190eXBlc1tdID0ge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM0MS0jZGVmaW5lIEJQRl9QUk9HX1RZUEUoX2lkLCBfbmFtZSwgcHJvZ19jdHhfdHlwZSwga2Vybl9jdHhfdHlwZSkgXFxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMzUxPXN0YXRpYyBpbnQgZmluZF9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHR5cGUsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMzU0LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MjM1NTpcdGlmICh0eXBlIFx1MDAzZT0gQVJSQVlfU0laRShicGZfcHJvZ190eXBlcykpXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMzU2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTc6XHR0eXBlID0gYXJyYXlfaW5kZXhfbm9zcGVjKHR5cGUsIEFSUkFZX1NJWkUoYnBmX3Byb2dfdHlwZXMpKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTg6XHRvcHMgPSBicGZfcHJvZ190eXBlc1t0eXBlXTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIzNTktXHRpZiAoIW9wcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NjMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzOgoKKipBbmFseXppbmcgdGhlIEJQRiBQcm9ncmFtIFR5cGUgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBCUEYgcHJvZ3JhbSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX3Byb2dfdHlwZXNgIGFycmF5LiBJdCBsb29rcyBsaWtlIHRoZSBgQlBGX1BST0dfVFlQRWAgbWFjcm8gaXMgdGhlIGtleSBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYGluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmhgLiBJIHNlZSB0aGF0IGl0IGluY2x1ZGVzIGEgYEJQRl9QUk9HX1RZUEVgIGRlZmluaXRpb24gZm9yIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYCwgYW5kIGFsc28gdGhlIG5hbWUgYHJhd190cmFjZXBvaW50X3dyaXRhYmxlYC4gTm93LCBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSBpZiB0aGUgYHJhd190cmFjZXBvaW50X3dyaXRhYmxlYCBwcm9ncmFtIHR5cGUgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGVmaW5lcyBpdHMgZXhpc3RlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ2LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ4LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4NDM9c3RhdGljIGJvb2wgcmF3X3RwX3dyaXRhYmxlX3Byb2dfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU1LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NTctXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2MC1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODYxOmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfcHJvZ19vcHMgPSB7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2Mi19O1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MjAyPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcHJvZ190eXBlX25hbWVbXSA9IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIyNi1cdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVExdXHRcdD0gXCYjMzQ7Y2dyb3VwX3N5c2N0bFwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MjI3Olx0W0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVdXHQ9IFwmIzM0O3Jhd190cmFjZXBvaW50X3dyaXRhYmxlXCYjMzQ7LFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXHRbQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVF1cdFx0PSBcJiMzNDtjZ3JvdXBfc29ja29wdFwmIzM0Oyxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYz04PXZvaWQgc2VyaWFsX3Rlc3RfcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjktXHRcdFx0XHQgICBcdTAwMjZ0cmFjZV9vcHRzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jOjMwOlx0aWYgKENIRUNLKGJwZl9mZCBcdTAwM2MgMCwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIGxvYWRlZFwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTMxLVx0XHQgIFwmIzM0O2ZhaWxlZDogJWQgZXJybm8gJWRcXG5cJiMzNDssIGJwZl9mZCwgZXJybm8pKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTUxLVx0aW50IHRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXCYjMzQ7YnBmX3Rlc3RfZmluaXNoXCYjMzQ7LCBicGZfZmQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM6NTI6XHRpZiAoQ0hFQ0sodHBfZmQgXHUwMDNjIDAsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF93cml0YWJsZSBvcGVuZWRcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYy01My1cdFx0ICBcJiMzNDtmYWlsZWQ6ICVkIGVycm5vICVkXFxuXCYjMzQ7LCB0cF9mZCwgZXJybm8pKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYz0xNT1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQud1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYzoxNjpfX2Rlc2NyaXB0aW9uKFwmIzM0O3Jhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgdmFyaWFibGUgb2Zmc2V0XCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jLTE3LV9fZmFpbHVyZVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYz01MD1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQud1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYzo1MTpfX2Rlc2NyaXB0aW9uKFwmIzM0O3Jhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jLTUyLV9fZmFpbHVyZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk3OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AgYW5kIHNwZWNpZmljYWxseSwgdGhlIGByYXdfdHJhY2Vwb2ludF93cml0YWJsZV92ZXJpZmllcl9vcHNgIHN0cnVjdHVyZS4gVGhpcyBpbW1lZGlhdGVseSBzaWduYWxzIHNvbWV0aGluZyBpbnRlcmVzdGluZyDigJMgaXQmIzM5O3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBCUEYgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSwgbGlrZWx5IGRlYWxpbmcgd2l0aCBob3cgd2UgdmVyaWZ5IGFuZCBtYW5hZ2Ugd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcywgd2hhdCYjMzk7cyAqZW5hYmxpbmcqIHRoaXMgY29kZSBwYXRoPyBXaGVyZSBkb2VzIHRoaXMgZml0IGludG8gdGhlIGJyb2FkZXIgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoZXRoZXIgb3Igbm90IHRoaXMgY29kZSB3aWxsIGV2ZW4gYmUgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWcgaXMgdml0YWwuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzIGFuZCBLY29uZmlnIGZyYWdtZW50cyB0aGF0IHJlZmVyZW5jZSB0aGF0IGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGZpbGUuIFRoaXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIEJQRiB0cmFjZXBvaW50IHN5c3RlbSBpcyBwdXQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFjZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvTWFrZWZpbGU9NTQ9S0NPVl9JTlNUUlVNRU5UX3RyYWNlX2lycXNvZmYubyA6PSBuXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGUtNTUtXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6NTY6Q0ZMQUdTX2JwZl90cmFjZS5vIDo9IC1JJChzcmMpXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGUtNTctXG4tLVxua2VybmVsL3RyYWNlL01ha2VmaWxlPTEwOT1vYmotJChDT05GSUdfVVNFUl9FVkVOVFMpICYjNDM7PSB0cmFjZV9ldmVudHNfdXNlci5vXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6MTEwOm9iai0kKENPTkZJR19CUEZfRVZFTlRTKSAmIzQzOz0gYnBmX3RyYWNlLm9cbmtlcm5lbC90cmFjZS9NYWtlZmlsZS0xMTEtb2JqLSQoQ09ORklHX0tQUk9CRV9FVkVOVFMpICYjNDM7PSB0cmFjZV9rcHJvYmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQzMAoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiA2NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgcmVxdWlyZXMgYENPTkZJR19CUEZfRVZFTlRTYC4gSGFuZyBvbiwgd2FzbiYjMzk7dCBgX19jaGVja19idWZmZXJfYWNjZXNzYCBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBhbmQgdGhhdCYjMzk7cyBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZD8gUmlnaHQsIHRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBBbmQgdGhlIHRlc3QgY2FzZSB1c2VzIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gVGhlcmVmb3JlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBzZWVtcyBuZWNlc3NhcnkuIFRvIGJlIHNhZmUsIGxldCYjMzk7cyBhbHNvIGVuYWJsZSBgQ09ORklHX0JQRl9FVkVOVFNgLgoKTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCYjMzk7cyB2ZXJpZnkgaWYgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgY2FsbGVkIGJ5IG90aGVyIHByb2dyYW0gdHlwZXMuIEFoLCB5ZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBjaGVja19tZW1fYWNjZXNzYCBhbmQgYGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzYC4gQW5kIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCBjYWxscyBpdCB2aWEgYGNoZWNrX21lbV9hY2Nlc3NgIHdoZW4gYFBUUl9UT19UUF9CVUZGRVJgIGlzIHVzZWQuIFNvLCB0aGlzIGNoYW5nZSBwb3RlbnRpYWxseSBhZmZlY3RzIHF1aXRlIGEgZmV3IEJQRiBwcm9ncmFtIHR5cGVzLgoKU28sIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgIHN1ZmZpY2llbnQ/IFllcywgYnV0IHNpbmNlIHRoZSB0ZXN0IHVzZXMgcmF3IHRyYWNlcG9pbnRzLCBlbmFibGluZyBgQ09ORklHX0JQRl9FVkVOVFNgIHdvbiYjMzk7dCBodXJ0LgoKVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBhcmU6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuCgpIbW0sIHdhaXQuIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGlzIHN0YXRpYy4gU3l6a2FsbGVyIGNhbiBmdXp6IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSYjMzk7cmUgaW4gdGhlIGtlcm5lbCBpbWFnZS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGUgY29tcGlsZXIgaW5saW5lcyB0aGlzIGZ1bmN0aW9uLiBJdCYjMzk7cyBzdGF0aWMsIGJ1dCBub3QgbWFya2VkIGFzIGlubGluZSwgc28gdGhlIGNvbXBpbGVyICptaWdodCogaW5saW5lIGl0LiBJZiBpdCYjMzk7cyBpbmxpbmVkLCBTeXprYWxsZXIgbWlnaHQgbm90IGZpbmQgaXQgYnkgbmFtZSwgYnV0IHRoZSBjb2RlICp3aWxsKiBzdGlsbCBiZSBmdXp6ZWQuIEFkZGluZyBgY2hlY2tfbWVtX2FjY2Vzc2AgYW5kIGBjaGVja19oZWxwZXJfbWVtX2FjY2Vzc2Agd291bGQgYmUgKnNhZmVyKiwgYnV0IHRob3NlIGFyZSB2ZXJ5IGhvdCBwYXRocyBpbiB0aGUgdmVyaWZpZXIuIEFjdHVhbGx5LCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCBhcmUgcHJvYmFibHkgZ29vZCBlbm91Z2ggdG8gdGFyZ2V0LgoKT2theSwgbGV0JiMzOTtzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGY6CgpgYGBjCnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCQkJIGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLAogCQkJCSBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLAotCQkJCSBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSkKJiM0MzsJCQkJIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplLAomIzQzOwkJCQkgdTMyICphY2Nlc3NfZW5kKQpgYGAKCll1cCwgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwYXJhbWV0ZXIgaGFzIGJlZW4gYWRkZWQuCgpBbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgZmluYWwgcmVzdWx0czoKCiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlCiogICAqKkZvY3VzU3ltYm9scyoqOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgQlBGX1NZU0NBTExgLCBgQlBGX0VWRU5UU2AKKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBpbmNyZWFzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGludHJvZHVjaW5nIGV4cGxvaXRhYmxlIGJ1Z3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19jaGVja19idWZmZXJfYWNjZXNzJiMzNDssCiAgICAmIzM0O2NoZWNrX3RwX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fY2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja190cF9idWZmZXJfYWNjZXNzJiMzNDssCiAgICAmIzM0O2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIHZhcmlhYmxlIG9mZnNldHMgYW5kIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyODo0OC42MTgwMzYwMzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzA0MjY3MzczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fY2hlY2tfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfYnVmZmVyX2FjY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSB2YXJpYWJsZSBvZmZzZXRzIGFuZCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyODo0OC42MTgwNDQ5OTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTIxNTg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU4YWQzYTJlNGE4NzU0ZGFjMWJjOWFlZGY1NzRiZDc5ZTVkZTMwZThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAyMToyODo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAyMWEzNjVkNDM2YTU5NS4uNmZlNGZjZjkzZTVmMDUgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTUzMjYsMTQgKzUzMjYsMTggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxcbiBcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcXG4tXFx0XFx0XFx0XFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxcbitcXHRcXHRcXHRcXHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUsXFxuK1xcdFxcdFxcdFxcdCB1MzIgKmFjY2Vzc19lbmQpXFxuIHtcXG4rXFx0czY0IHN0YXJ0LCB2YXJfb2ZmO1xcbitcXG4gXFx0aWYgKG9mZiBcXHUwMDNjIDApIHtcXG4gXFx0XFx0dmVyYm9zZShlbnYsXFxuIFxcdFxcdFxcdFxcXCIlcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0cmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgb2ZmLCBzaXplKTtcXG4gXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdH1cXG4rXFxuIFxcdGlmICghdG51bV9pc19jb25zdChyZWctXFx1MDAzZXZhcl9vZmYpKSB7XFxuIFxcdFxcdGNoYXIgdG5fYnVmWzQ4XTtcXG4gXFxuQEAgLTUzNDQsNiArNTM0OCwyOSBAQCBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4gXFx0fVxcbiBcXG4rXFx0dmFyX29mZiA9IChzNjQpcmVnLVxcdTAwM2V2YXJfb2ZmLnZhbHVlO1xcbitcXHRpZiAodmFyX29mZiBcXHUwMDNlPSBCUEZfTUFYX1ZBUl9PRkYgfHwgdmFyX29mZiBcXHUwMDNjPSAtQlBGX01BWF9WQVJfT0ZGKSB7XFxuK1xcdFxcdHZlcmJvc2UoZW52LCBcXFwiJXMgJXMgYnVmZmVyIG9mZnNldCAlbGxkIGlzIG5vdCBhbGxvd2VkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCB2YXJfb2ZmKTtcXG4rXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuK1xcdH1cXG4rXFxuK1xcdHN0YXJ0ID0gdmFyX29mZiArIG9mZjtcXG4rXFx0aWYgKHN0YXJ0IFxcdTAwM2MgMCkge1xcbitcXHRcXHR2ZXJib3NlKGVudixcXG4rXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XFxuK1xcdFxcdHJldHVybiAtRUFDQ0VTO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc2l6ZSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0dmVyYm9zZShlbnYsIFxcXCIlcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lbGxkLCBzaXplPSVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBzdGFydCwgc2l6ZSk7XFxuK1xcdFxcdHJldHVybiAtRUFDQ0VTO1xcbitcXHR9XFxuK1xcbitcXHQqYWNjZXNzX2VuZCA9ICh1MzIpc3RhcnQgKyAodTMyKXNpemU7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNTM1MSwxNCArNTM3OCwxNCBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbiBcXHRcXHRcXHRcXHQgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxcbiB7XFxuK1xcdHUzMiBhY2Nlc3NfZW5kO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXFxcInRyYWNlcG9pbnRcXFwiLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xcbitcXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcXFwidHJhY2Vwb2ludFxcXCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgocmVnLVxcdTAwM2V2YXJfb2ZmLnZhbHVlICsgb2ZmICsgc2l6ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VtYXhfdHBfYWNjZXNzKTtcXG4rXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNTM3MCwxMyArNTM5NywxNCBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0ICAgICAgIHUzMiAqbWF4X2FjY2VzcylcXG4ge1xcbiBcXHRjb25zdCBjaGFyICpidWZfaW5mbyA9IHR5cGVfaXNfcmRvbmx5X21lbShyZWctXFx1MDAzZXR5cGUpID8gXFxcInJkb25seVxcXCIgOiBcXFwicmR3clxcXCI7XFxuK1xcdHUzMiBhY2Nlc3NfZW5kO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XFxuK1xcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsIFxcdTAwMjZhY2Nlc3NfZW5kKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdCptYXhfYWNjZXNzID0gbWF4KHJlZy1cXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsICptYXhfYWNjZXNzKTtcXG4rXFx0Km1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jXFxuaW5kZXggMjE2YjBkZmFjMGZlNjEuLmVmZTRjYWQ0N2IyODBiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xcbkBAIC00LDEyICs0LDMxIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uYmQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImJwZl91dGlsLmhcXFwiXFxuIFxcbi12b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxcbitzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLFxcbitcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9pbnNuICpwcm9ncmFtLCBzaXplX3QgcHJvZ19sZW4pXFxuIHtcXG4tXFx0X191MzIgZHVyYXRpb24gPSAwO1xcbitcXHRMSUJCUEZfT1BUUyhicGZfcHJvZ19sb2FkX29wdHMsIG9wdHMpO1xcbiBcXHRjaGFyIGVycm9yWzQwOTZdO1xcbi1cXHRpbnQgYnBmX2ZkID0gLTEsIHRwX2ZkID0gLTE7XFxuK1xcdGludCBicGZfZmQsIHRwX2ZkO1xcbitcXG4rXFx0b3B0cy5sb2dfbGV2ZWwgPSAyO1xcbitcXHRvcHRzLmxvZ19idWYgPSBlcnJvcjtcXG4rXFx0b3B0cy5sb2dfc2l6ZSA9IHNpemVvZihlcnJvcik7XFxuK1xcbitcXHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFxcXCJHUEwgdjJcXFwiLFxcbitcXHRcXHRcXHQgICAgICAgcHJvZ3JhbSwgcHJvZ19sZW4sIFxcdTAwMjZvcHRzKTtcXG4rXFx0aWYgKCFBU1NFUlRfR0UoYnBmX2ZkLCAwLCBcXFwicHJvZ19sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXFxcIm5iZF9zZW5kX3JlcXVlc3RcXFwiLCBicGZfZmQpO1xcbitcXHRpZiAoIUFTU0VSVF9MVCh0cF9mZCwgMCwgbmFtZSkpXFxuK1xcdFxcdGNsb3NlKHRwX2ZkKTtcXG4rXFxuK1xcdGNsb3NlKGJwZl9mZCk7XFxuK31cXG4gXFxuK3ZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXFxuK3tcXG4gXFx0Y29uc3Qgc3RydWN0IGJwZl9pbnNuIHByb2dyYW1bXSA9IHtcXG4gXFx0XFx0LyogcjYgaXMgb3VyIHRwIGJ1ZmZlciAqL1xcbiBcXHRcXHRCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfNiwgQlBGX1JFR18xLCAwKSxcXG5AQCAtMTksMjUgKzM4LDE4IEBAIHZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXFxuIFxcdFxcdEJQRl9FWElUX0lOU04oKSxcXG4gXFx0fTtcXG4gXFxuLVxcdExJQkJQRl9PUFRTKGJwZl9wcm9nX2xvYWRfb3B0cywgb3B0cyxcXG4tXFx0XFx0LmxvZ19sZXZlbCA9IDIsXFxuLVxcdFxcdC5sb2dfYnVmID0gZXJyb3IsXFxuLVxcdFxcdC5sb2dfc2l6ZSA9IHNpemVvZihlcnJvciksXFxuLVxcdCk7XFxuLVxcbi1cXHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFxcXCJHUEwgdjJcXFwiLFxcbi1cXHRcXHRcXHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcXG4tXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZvcHRzKTtcXG4tXFx0aWYgKENIRUNLKGJwZl9mZCBcXHUwMDNjIDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgbG9hZFxcXCIsXFxuLVxcdFxcdCAgXFxcImZhaWxlZDogJWQgZXJybm8gJWRcXFxcblxcXCIsIGJwZl9mZCwgZXJybm8pKVxcbi1cXHRcXHRyZXR1cm47XFxuLVxcbi1cXHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFxcXCJuYmRfc2VuZF9yZXF1ZXN0XFxcIiwgYnBmX2ZkKTtcXG4tXFx0aWYgKENIRUNLKHRwX2ZkIFxcdTAwM2U9IDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgb3BlblxcXCIsXFxuLVxcdFxcdCAgXFxcImVycm9uZW91c2x5IHN1Y2NlZWRlZFxcXFxuXFxcIikpXFxuLVxcdFxcdGdvdG8gb3V0X2JwZmZkO1xcbitcXHRjb25zdCBzdHJ1Y3QgYnBmX2luc24gbmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtW10gPSB7XFxuK1xcdFxcdEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR182LCBCUEZfUkVHXzEsIDApLFxcbitcXHRcXHQvKiBtYWtlIHZhcl9vZmYgbmVnYXRpdmUsIGJ1dCBrZWVwIHRoZSBlZmZlY3RpdmUgYWNjZXNzIG9mZnNldCBub24tbmVnYXRpdmUgKi9cXG4rXFx0XFx0QlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHXzYsIC04KSxcXG4rXFx0XFx0Lyogb25lIGJ5dGUgYmV5b25kIHRoZSBlbmQgb2YgdGhlIG5iZF9yZXF1ZXN0IHN0cnVjdCAqL1xcbitcXHRcXHRCUEZfTERYX01FTShCUEZfQiwgQlBGX1JFR18wLCBCUEZfUkVHXzYsXFxuK1xcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IG5iZF9yZXF1ZXN0KSArIDgpLFxcbitcXHRcXHRCUEZfRVhJVF9JTlNOKCksXFxuK1xcdH07XFxuIFxcbi1cXHRjbG9zZSh0cF9mZCk7XFxuLW91dF9icGZmZDpcXG4tXFx0Y2xvc2UoYnBmX2ZkKTtcXG4rXFx0Y2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoXFxcIm5iZF9pbnZhbGlkXFxcIiwgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSk7XFxuK1xcdGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KFxcXCJuYmRfaW52YWxpZF9uZWdhdGl2ZV92YXJfb2ZmXFxcIixcXG4rXFx0XFx0XFx0XFx0bmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtLFxcbitcXHRcXHRcXHRcXHRBUlJBWV9TSVpFKG5lZ2F0aXZlX3Zhcl9vZmZfcHJvZ3JhbSkpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xcbmluZGV4IDE0YTAxNzJlMjE0MWU4Li40MDU1YTY0NDNiYzIwYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcXG5AQCAtNDcsNCArNDcsMjAgQEAgbDBfJT06XFx0Lyogc2hpZnQgdGhlIGJ1ZmZlciBwb2ludGVyIHRvIGEgdmFyaWFibGUgbG9jYXRpb24gKi9cXFxcXFxuIFxcdDogX19jbG9iYmVyX2FsbCk7XFxuIH1cXG4gXFxuK1NFQyhcXFwicmF3X3RyYWNlcG9pbnQud1xcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcInJhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XFxcIilcXG4rX19mYWlsdXJlXFxuK19fbXNnKFxcXCJpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFxcXCIpXFxuK19fbmFrZWQgdm9pZCB0cmFjZXBvaW50X3dyaXRhYmxlX3JlamVjdF9uZWdhdGl2ZV9jb25zdF9vZmZzZXQodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcXCJcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHI2ID0gKih1NjQgKikocjEgKyAwKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHI2ICs9IC04O1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjAgPSAqKHU2NCAqKShyNiArIDApO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcXCJcXHQ6XFxuK1xcdDpcXG4rXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4rfVxcbitcXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI4OjQ5LjM1ODM0NjYyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIzMDIzMTk1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlOGFkM2EyZTRhODc1NGRhYzFiYzlhZWRmNTc0YmQ3OWU1ZGUzMGU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAyMToyODo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMjFhMzY1ZDQzNmE1OTUuLjZmZTRmY2Y5M2U1ZjA1IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MzI2LDE0ICs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuK1x0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplLFxuK1x0XHRcdFx0IHUzMiAqYWNjZXNzX2VuZClcbiB7XG4rXHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4rXG4gXHRpZiAob2ZmIFx1MDAzYyAwKSB7XG4gXHRcdHZlcmJvc2UoZW52LFxuIFx0XHRcdFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWQsIHNpemU9JWRcXG5cIixcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbitcbiBcdGlmICghdG51bV9pc19jb25zdChyZWctXHUwMDNldmFyX29mZikpIHtcbiBcdFx0Y2hhciB0bl9idWZbNDhdO1xuIFxuQEAgLTUzNDQsNiArNTM0OCwyOSBAQCBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiBcbitcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuK1x0aWYgKHZhcl9vZmYgXHUwMDNlPSBCUEZfTUFYX1ZBUl9PRkYgfHwgdmFyX29mZiBcdTAwM2M9IC1CUEZfTUFYX1ZBUl9PRkYpIHtcbitcdFx0dmVyYm9zZShlbnYsIFwiJXMgJXMgYnVmZmVyIG9mZnNldCAlbGxkIGlzIG5vdCBhbGxvd2VkXFxuXCIsXG4rXHRcdFx0cmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0c3RhcnQgPSB2YXJfb2ZmICsgb2ZmO1xuK1x0aWYgKHN0YXJ0IFx1MDAzYyAwKSB7XG4rXHRcdHZlcmJvc2UoZW52LFxuK1x0XHRcdFwiJXMgaW52YWxpZCBuZWdhdGl2ZSAlcyBidWZmZXIgb2Zmc2V0OiBvZmY9JWQsIHZhcl9vZmY9JWxsZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0aWYgKHNpemUgXHUwMDNjIDApIHtcbitcdFx0dmVyYm9zZShlbnYsIFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWxsZCwgc2l6ZT0lZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTtcbitcdFx0cmV0dXJuIC1FQUNDRVM7XG4rXHR9XG4rXG4rXHQqYWNjZXNzX2VuZCA9ICh1MzIpc3RhcnQgKyAodTMyKXNpemU7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNTM1MSwxNCArNTM3OCwxNCBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdCAgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXG4ge1xuK1x0dTMyIGFjY2Vzc19lbmQ7XG4gXHRpbnQgZXJyO1xuIFxuLVx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCJ0cmFjZXBvaW50XCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XG4rXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcInRyYWNlcG9pbnRcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsXG4tXHRcdFx0XHRcdCAgICBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2Vzcyk7XG4rXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLCBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2Vzcyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtNTM3MCwxMyArNTM5NywxNCBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHQgICAgICAgdTMyICptYXhfYWNjZXNzKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmJ1Zl9pbmZvID0gdHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cdTAwM2V0eXBlKSA/IFwicmRvbmx5XCIgOiBcInJkd3JcIjtcbitcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuK1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXHUwMDI2YWNjZXNzX2VuZCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0Km1heF9hY2Nlc3MgPSBtYXgocmVnLVx1MDAzZXZhcl9vZmYudmFsdWUgKyBvZmYgKyBzaXplLCAqbWF4X2FjY2Vzcyk7XG4rXHQqbWF4X2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLCAqbWF4X2FjY2Vzcyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jXG5pbmRleCAyMTZiMGRmYWMwZmU2MS4uZWZlNGNhZDQ3YjI4MGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xuQEAgLTQsMTIgKzQsMzEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uYmQuaFx1MDAzZVxuICNpbmNsdWRlIFwiYnBmX3V0aWwuaFwiXG4gXG4tdm9pZCB0ZXN0X3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQodm9pZClcbitzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqcHJvZ3JhbSwgc2l6ZV90IHByb2dfbGVuKVxuIHtcbi1cdF9fdTMyIGR1cmF0aW9uID0gMDtcbitcdExJQkJQRl9PUFRTKGJwZl9wcm9nX2xvYWRfb3B0cywgb3B0cyk7XG4gXHRjaGFyIGVycm9yWzQwOTZdO1xuLVx0aW50IGJwZl9mZCA9IC0xLCB0cF9mZCA9IC0xO1xuK1x0aW50IGJwZl9mZCwgdHBfZmQ7XG4rXG4rXHRvcHRzLmxvZ19sZXZlbCA9IDI7XG4rXHRvcHRzLmxvZ19idWYgPSBlcnJvcjtcbitcdG9wdHMubG9nX3NpemUgPSBzaXplb2YoZXJyb3IpO1xuK1xuK1x0YnBmX2ZkID0gYnBmX3Byb2dfbG9hZChCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBOVUxMLCBcIkdQTCB2MlwiLFxuK1x0XHRcdCAgICAgICBwcm9ncmFtLCBwcm9nX2xlbiwgXHUwMDI2b3B0cyk7XG4rXHRpZiAoIUFTU0VSVF9HRShicGZfZmQsIDAsIFwicHJvZ19sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFwibmJkX3NlbmRfcmVxdWVzdFwiLCBicGZfZmQpO1xuK1x0aWYgKCFBU1NFUlRfTFQodHBfZmQsIDAsIG5hbWUpKVxuK1x0XHRjbG9zZSh0cF9mZCk7XG4rXG4rXHRjbG9zZShicGZfZmQpO1xuK31cbiBcbit2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxuK3tcbiBcdGNvbnN0IHN0cnVjdCBicGZfaW5zbiBwcm9ncmFtW10gPSB7XG4gXHRcdC8qIHI2IGlzIG91ciB0cCBidWZmZXIgKi9cbiBcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG5AQCAtMTksMjUgKzM4LDE4IEBAIHZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXG4gXHRcdEJQRl9FWElUX0lOU04oKSxcbiBcdH07XG4gXG4tXHRMSUJCUEZfT1BUUyhicGZfcHJvZ19sb2FkX29wdHMsIG9wdHMsXG4tXHRcdC5sb2dfbGV2ZWwgPSAyLFxuLVx0XHQubG9nX2J1ZiA9IGVycm9yLFxuLVx0XHQubG9nX3NpemUgPSBzaXplb2YoZXJyb3IpLFxuLVx0KTtcbi1cbi1cdGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXCJHUEwgdjJcIixcbi1cdFx0XHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcbi1cdFx0XHQgICAgICAgXHUwMDI2b3B0cyk7XG4tXHRpZiAoQ0hFQ0soYnBmX2ZkIFx1MDAzYyAwLCBcImJwZl9yYXdfdHJhY2Vwb2ludF93cml0YWJsZSBsb2FkXCIsXG4tXHRcdCAgXCJmYWlsZWQ6ICVkIGVycm5vICVkXFxuXCIsIGJwZl9mZCwgZXJybm8pKVxuLVx0XHRyZXR1cm47XG4tXG4tXHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFwibmJkX3NlbmRfcmVxdWVzdFwiLCBicGZfZmQpO1xuLVx0aWYgKENIRUNLKHRwX2ZkIFx1MDAzZT0gMCwgXCJicGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgb3BlblwiLFxuLVx0XHQgIFwiZXJyb25lb3VzbHkgc3VjY2VlZGVkXFxuXCIpKVxuLVx0XHRnb3RvIG91dF9icGZmZDtcbitcdGNvbnN0IHN0cnVjdCBicGZfaW5zbiBuZWdhdGl2ZV92YXJfb2ZmX3Byb2dyYW1bXSA9IHtcbitcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG4rXHRcdC8qIG1ha2UgdmFyX29mZiBuZWdhdGl2ZSwgYnV0IGtlZXAgdGhlIGVmZmVjdGl2ZSBhY2Nlc3Mgb2Zmc2V0IG5vbi1uZWdhdGl2ZSAqL1xuK1x0XHRCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfNiwgLTgpLFxuK1x0XHQvKiBvbmUgYnl0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgbmJkX3JlcXVlc3Qgc3RydWN0ICovXG4rXHRcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcbitcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBuYmRfcmVxdWVzdCkgKyA4KSxcbitcdFx0QlBGX0VYSVRfSU5TTigpLFxuK1x0fTtcbiBcbi1cdGNsb3NlKHRwX2ZkKTtcbi1vdXRfYnBmZmQ6XG4tXHRjbG9zZShicGZfZmQpO1xuK1x0Y2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoXCJuYmRfaW52YWxpZFwiLCBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pKTtcbitcdGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KFwibmJkX2ludmFsaWRfbmVnYXRpdmVfdmFyX29mZlwiLFxuK1x0XHRcdFx0bmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtLFxuK1x0XHRcdFx0QVJSQVlfU0laRShuZWdhdGl2ZV92YXJfb2ZmX3Byb2dyYW0pKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG5pbmRleCAxNGEwMTcyZTIxNDFlOC4uNDA1NWE2NDQzYmMyMGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuQEAgLTQ3LDQgKzQ3LDIwIEBAIGwwXyU9Olx0Lyogc2hpZnQgdGhlIGJ1ZmZlciBwb2ludGVyIHRvIGEgdmFyaWFibGUgbG9jYXRpb24gKi9cXFxuIFx0OiBfX2Nsb2JiZXJfYWxsKTtcbiB9XG4gXG4rU0VDKFwicmF3X3RyYWNlcG9pbnQud1wiKVxuK19fZGVzY3JpcHRpb24oXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZTogcmVqZWN0IG5lZ2F0aXZlIGNvbnN0IG9mZnNldFwiKVxuK19fZmFpbHVyZVxuK19fbXNnKFwiaW52YWxpZCBuZWdhdGl2ZSB0cmFjZXBvaW50IGJ1ZmZlciBvZmZzZXRcIilcbitfX25ha2VkIHZvaWQgdHJhY2Vwb2ludF93cml0YWJsZV9yZWplY3RfbmVnYXRpdmVfY29uc3Rfb2Zmc2V0KHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcIlx0XHRcdFx0XHRcXFxuK1x0cjYgPSAqKHU2NCAqKShyMSArIDApO1x0XHRcdFx0XFxcbitcdHI2ICs9IC04O1x0XHRcdFx0XHRcXFxuK1x0cjAgPSAqKHU2NCAqKShyNiArIDApO1x0XHRcdFx0XFxcbitcdGV4aXQ7XHRcdFx0XHRcdFx0XFxcbitcIlx0OlxuK1x0OlxuK1x0OiBfX2Nsb2JiZXJfYWxsKTtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjg6NDkuMzU4MzQ5MjA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODczMTY1MTU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIHRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjaGFuZ2VzIHdpdGhpbiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzYWZldHkgb2YgQlBGIHByb2dyYW1zIGJ5IHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBjaGVja3MgYXJvdW5kIGB2YXJfb2ZmYCAtIHNwZWNpZmljYWxseSwgZW5zdXJpbmcgaXQncyB3aXRoaW4gc2Vuc2libGUgYm91bmRzIChub3QgbmVnYXRpdmUgb3IgZXhjZXNzaXZlbHkgbGFyZ2UpIGFuZCB0aGVuIGNhbGN1bGF0aW5nIGBhY2Nlc3NfZW5kYCBzYWZlbHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gbWl0aWdhdGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgbG9naWMgSSdkIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgZnV6emluZzsgdGhlc2UgYnVmZmVyIGFjY2VzcyBjaGVja3MgYXJlIGEgcHJpbWUgdGFyZ2V0LiBBbnkgc3VidGxlIGZsYXdzIGhlcmUgY291bGQgbGVhZCB0byBleHBsb2l0YWJsZSBpc3N1ZXMuXG5cbkxldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIEl0IHNlZW1zIGxpa2UgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgdmFsaWRhdGVzIHRoZSBvZmZzZXQuIEl0IHN0YXJ0cyBieSBjaGVja2luZyBpZiB0aGUgb2Zmc2V0IGlzbid0IGEgY29uc3RhbnQsIGFuZCwgaWYgaXQgaXMsIG1ha2VzIHNvbWUgYm91bmRzIGNoZWNrcywgdGhlbiBjYWxjdWxhdGVzIHRoZSBgc3RhcnRgIGFuZCBgYWNjZXNzX2VuZGAgd2l0aCBjaGVja3MuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBzZWN1cml0eSBlbmhhbmNlbWVudC4gVGhlIGNvZGUgbm93IHByZXZlbnRzIG5lZ2F0aXZlIG9mZnNldHMgYW5kIGxhcmdlIG9mZnNldHMuIEl0IGVuc3VyZXMgdGhhdCB0aGUgY2FsY3VsYXRlZCBhY2Nlc3MgcmFuZ2Ugc3RheXMgd2l0aGluIGRlZmluZWQgYm91bmRhcmllcywgcHJldmVudGluZyBhY2Nlc3MgYmV5b25kIHRoZSBidWZmZXIncyBib3VuZHMuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IHRoZXNlIGNoZWNrcyBhcmUgYWN0dWFsbHkgKnVzZWQqLiBTbywgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGVzc2VudGlhbCwgSSBrbm93IHRoZSBCUEYgdmVyaWZpZXIgaXMgZW5hYmxlZCB0aHJvdWdoIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHN0cnVjdHVyZS4gT2theSwgc28gYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgY2FsbCBgX19jaGVja19idWZmZXJfYWNjZXNzYC4gTG9va3MgbGlrZSBpdCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBXYWl0LCBgX19jaGVja19idWZmZXJfYWNjZXNzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaW1lIHRvIHZlcmlmeSBga2VybmVsL2JwZi92ZXJpZmllci5jYCB3aXRoIGdyZXBwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyODo1OC4wOTAwMDUyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzc5NDk0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19jaGVja19idWZmZXJfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcXHUwMDI2YWNjZXNzX2VuZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzODUtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MzkzPXN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU0MDM6XFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA0LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI4OjU4LjYyNzk2ODE1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTcwOTA2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJ1ZmZlciBBY2Nlc3MgRnVuY3Rpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aHJlZSBmdW5jdGlvbnMgbGlzdGVkOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlcyB3aXRoaW4gdGhpcyBjb250ZXh0LiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGV5IGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdmVyaWZ5aW5nIGFjY2VzcyB0byBtZW1vcnkgYnVmZmVycywgYSBjcml0aWNhbCBhc3BlY3Qgb2Ygc3lzdGVtIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkuXG5cbk15IG5leHQgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQncyBhIGtleSBhdHRyaWJ1dGUgdG8gdW5kZXJzdGFuZC4gQmVpbmcgc3RhdGljIHdvdWxkIGluZmx1ZW5jZSBpdHMgc2NvcGUsIGhvdyBpdCdzIGxpbmtlZCwgYW5kIHBvdGVudGlhbGx5IHdoZXJlIGl0IGNhbiBiZSBjYWxsZWQgZnJvbS4gSXTigJlzIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IGl04oCZcyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhpcyBiZWZvcmUgSSBjYW4gZGVsdmUgZGVlcGVyIGludG8gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBsaXN0ZWQgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MDEuODQ1MDYzMDU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDgwMTYzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19idWZmZXJfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcXHUwMDI2YWNjZXNzX2VuZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzODUtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzkyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzkzOnN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzk0LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU0MDM6XFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA0LVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjA5OD1zdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYzMzM6XFx0XFx0ZXJyID0gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgZmFsc2UsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzQtXFx0XFx0XFx0XFx0XFx0ICBtYXhfYWNjZXNzKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NzYxPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODA5LVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgxMDpcXHRcXHRyZXR1cm4gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIDAsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MTEtXFx0XFx0XFx0XFx0XFx0ICAgYWNjZXNzX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyOTowMS45NjU4NzQ3MzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI5MDMyNDQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU3l6a2FsbGVyJ3MgQ292ZXJhZ2Ugb2YgU3RhdGljIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBpc3N1ZSBvZiB0aGVzZSBmdW5jdGlvbnMgYmVpbmcgc3RhdGljIGluaXRpYWxseSBzZWVtZWQgbGlrZSBhIHByb2JsZW0uIEJ1dCwgYWZ0ZXIgYSBtb21lbnQncyBjb25zaWRlcmF0aW9uLCBJIHJlYWxpemUgdGhhdCBpdCBzaG91bGRuJ3QgYWN0dWFsbHkgaGluZGVyIGBzeXprYWxsZXJgJ3MgZWZmZWN0aXZlbmVzcy4gVGhlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudCB3aXRoaW4gdGhlIGtlcm5lbCBpbWFnZSBpdHNlbGYsIHNvIHRoZXkgYXJlLCBpbiBmYWN0LCBhdmFpbGFibGUgZm9yIHRhcmdldGluZy4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgcHJvdmlkZSB0aGVtIGRpcmVjdGx5LlxuXG5UaGVuIEkgcmVjYWxsZWQgdGhhdCBgc3l6a2FsbGVyYCBsZXZlcmFnZXMgYGtjb3ZgLCB3aGljaCBvcGVyYXRlcyBhdCB0aGUgbGV2ZWwgb2YgYmFzaWMgYmxvY2tzIHRvIHRyYWNrIGNvZGUgY292ZXJhZ2UuIEZ1bmN0aW9uIG5hbWVzIGFyZSByZXNvbHZlZCB2aWEgZGVidWcgaW5mb3JtYXRpb24uIFRoZXJlZm9yZSwgYmVpbmcgc3RhdGljIHNob3VsZG4ndCBwcmV2ZW50IHRoZWlyIGV4ZWN1dGlvbiB0cmFja2luZy4gVGhhdCdzIGdvb2QuXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGlzIGFzcGVjdC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIGEga2V5IGNvbmZpZ3VyYXRpb24gdG8gaW52ZXN0aWdhdGUuIElzIHRoYXQgdGhlIG9ubHkgb25lP1xuXG5UaGUgc3BlY2lmaWMgdGVzdCBjYXNlIHdlJ3JlIGNvbnNpZGVyaW5nLCBgcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jYCwgdXRpbGl6ZXMgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgLiBNeSBmb2N1cyBzaG91bGQgc2hpZnQgdG93YXJkcyBkZXRlcm1pbmluZyB3aGljaCBjb25maWd1cmF0aW9ucyBzcGVjaWZpY2FsbHkgZW5hYmxlIHRoaXMgcHJvZ3JhbSB0eXBlLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaG93IGJyb2FkbHkgd2UncmUgZGVhbGluZyB3aXRoIHRoaXMgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MTguMjU2MjA1ODQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzI1MTM1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0PTE4PWRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiB0aGUgZm9vdG5vdGVzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0My0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0NDp8IGBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWBgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cC53K2BgIFsjcmF3dHBdXyAgICAgICAgICB8ICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0NS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00Ni1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00OC1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQqKixcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXFx0XFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFKipcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTA2Mj1lbnVtIGJwZl9wcm9nX3R5cGUge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMLFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3OlxcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODgtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9NjIxNj1zdGF0aWMgaW50IGJ0Zl92YWxpZGF0ZV9wcm9nX2N0eF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtNjI3My1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi9idGYuYzo2Mjc0OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL2J0Zi5jLTYyNzUtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzctXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI4Nzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mzc4LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzc5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVxcdFxcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihidWYsIHVzZXJfdHBfbmFtZSwgc2l6ZW9mKGJ1ZikgLSAxKSBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTc3MjM9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MjktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMDpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzMxLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4Ni0gKlxcdFxcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDozODc6ICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODgtICpcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwODc6XFx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BULFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cXHRcXHQ9IFxcXCJjZ3JvdXBfc3lzY3RsXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZVxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXFx0XFx0PSBcXFwiY2dyb3VwX3NvY2tvcHRcXFwiLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMxLVxcdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgICAgICAgICAgXFxcImJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXFxcIiB9LFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMjpcXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIgfSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzMtXFx0eyBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVCwgICAgICAgICAgICAgICBcXFwiX19za19idWZmXFxcIiB9LFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTUzPXN0YXRpYyBib29sIG5lZWRfZnVuY19hcmdfdHlwZV9maXh1cChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzIwOC1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MjA5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMTAtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jPTEwMz1zdGF0aWMgaW50IHByb2JlX3Byb2dfbG9hZChlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc3LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYzoxNzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3OS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfTFdUX1NFRzZMT0NBTDpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYz03PXN0YXRpYyB2b2lkIGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMTctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jOjE4OlxcdGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jLTE5LVxcdFxcdFxcdCAgICAgICBwcm9ncmFtLCBwcm9nX2xlbiwgXFx1MDAyNm9wdHMpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM9OD12b2lkIHNlcmlhbF90ZXN0X3Jhd190cF93cml0YWJsZV90ZXN0X3J1bih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM6Mjc6XFx0aW50IGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjgtXFx0XFx0XFx0XFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MjMuMjI4NzM1OTE2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwNzg2Mjc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgQlBGIFByb2dyYW0gVHlwZSBBdmFpbGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIGluaXRpYWxseSB0aG91Z2h0IGBDT05GSUdfQlBGX1NZU0NBTExgIHdvdWxkIGJlIHRoZSBkZXRlcm1pbmluZyBmYWN0b3IgaGVyZS4gQnV0IGhhbmcgb24sIGl0IGp1c3QgY2xpY2tlZCB0aGF0IGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYCBpcyB0aWVkIHRvIGBDT05GSUdfQlBGX0VWRU5UU2AuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbiBJIG5lZWQgdG8gdmVyaWZ5LiBMZXQgbWUganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciBtYXliZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCDigJMgdGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGxvZ2ljIHRoYXQgZ292ZXJucyB0aGUgYXZhaWxhYmlsaXR5IG9mIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5LCBhbmQgdGhvc2UgZmlsZXMgc2hvdWxkIHByb3ZpZGUgdGhlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcyNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjI2LjkzNjYwMjgyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxNzczNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz02MjE2PXN0YXRpYyBpbnQgYnRmX3ZhbGlkYXRlX3Byb2dfY3R4X3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MjczLVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG5rZXJuZWwvYnBmL2J0Zi5jOjYyNzQ6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvYnRmLmMtNjI3NS1cXHRcXHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9Mjg3MT1zdGF0aWMgYm9vbCBpc19wZXJmbW9uX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjg3Ny1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mjg3ODpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjg3OS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTQzNTI9c3RhdGljIGludCBicGZfcmF3X3RwX2xpbmtfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzNzgtXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzNzk6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzODAtXFx0XFx0aWYgKHN0cm5jcHlfZnJvbV91c2VyKGJ1ZiwgdXNlcl90cF9uYW1lLCBzaXplb2YoYnVmKSAtIDEpIFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzcyMz1zdGF0aWMgYm9vbCBpc190cmFjaW5nX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzcyOS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzMwOlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MzEtXFx0XFx0cmV0dXJuIHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjI3LjUxODM5MzY4NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQyMzI4NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBSYXcgVHJhY2Vwb2ludCBXcml0ZWFibGUgSGFuZGxpbmcqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAgaXMgaGFuZGxlZC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGp1bXAgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciwgc28gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBhbmQgYXNzb2NpYXRlZCBsb2dpYy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhhdCBmaWxlIGZvciBhbnkgY29kZSBzZWN0aW9ucyByZWxhdGVkIHRvIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBmdW5jdGlvbiBjYWxscywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgYW55IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc3Vycm91bmRpbmcgdGhpcyBwYXJ0aWN1bGFyIEJQRiBwcm9ncmFtIHR5cGUuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIGludG8gdGhlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgd2FudCB0byB1bmNvdmVyIGhvdyB0aGUgcmF3IHRyYWNlcG9pbnQgd3JpdGVhYmxlIHByb2dyYW1zIGFjdHVhbGx5IGludGVyYWN0IHdpdGggdGhlIHRyYWNlcG9pbnRzIGFuZCB3aGF0IHNwZWNpZmljIGNhcGFiaWxpdGllcyB0aGV5IGdyYW50LiBJdOKAmXMgYWxzbyBpbXBvcnRhbnQgdG8gaWRlbnRpZnkgYW55IGNvbnN0cmFpbnRzIG9yIGxpbWl0YXRpb25zIHRoYXQgYXJlIGltcG9zZWQgb24gaXRzIHVzZS4gSSBleHBlY3QgdG8gc2VlIHRoZSBrZXkgZWxlbWVudHMgZm9yIHRoaXMgcHJvZ3JhbSB0eXBlLCBsaWtlIGl0cyBwcm9ncmFtIGxvYWQgYW5kIGV4ZWN1dGlvbiBwYXRocywgYW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gaGFuZGxpbmcgYW5kIGJ1ZmZlcmluZyBkYXRhLiBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIHdyaXRhYmxlIHBhcnQgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU4MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjMxLjY2MDczMDczNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MjM3ODIzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjMxLjgxNTk3OTc4OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTYzNTI0ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgb2YgdGhlIHRob3VnaHQgcHJvY2VzcyBkZXNjcmliZWQ6XG5cbioqRGVlcCBEaXZlIGludG8gYGJwZl9wcm9nX3R5cGVzYCBXaXRoaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgQlBGIHByb2dyYW0gdHlwZXMuIE15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRvIHN0YXJ0IGRpcmVjdGx5IHdpdGggdGhlIHNvdXJjZS4gTGV0J3MgaGVhZCBzdHJhaWdodCB0byBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBicGZfcHJvZ190eXBlc2AuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIHR5cGVzIGFyZSBkZWZpbmVkLCBob3cgdGhleSdyZSB1c2VkIGluIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uIEknbSBsb29raW5nIGZvciB0aGUgY2Fub25pY2FsIGRlZmluaXRpb24sIHRoZSBsaW5rYWdlIGJldHdlZW4gdXNlci1zcGFjZSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCB0aGVzZSBwcm9ncmFtIHR5cGVzLiBJdCdzIGxpa2VseSB0aGF0IEknbGwgZmluZCB0aGUgc3RydWN0dXJlcyB0aGF0IGdvdmVybiB0aGUgdmVyaWZpZXIncyBpbnB1dC4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCB0aGUgcmVzdHJpY3Rpb25zIGFuZCBjYXBhYmlsaXRpZXMgb2YgZGlmZmVyZW50IEJQRiBwcm9ncmFtIGNsYXNzZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBjb250cm9sbGluZyB0aGUgcHJvZ3JhbSdzIGxpZmVjeWNsZSwgdHlwZSB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgYWNjZXNzLiBUaGlzIGlzIGdyb3VuZCB6ZXJvIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MzYuOTc5NTA4NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzU3NDcxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfcHJvZ190eXBlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuYz0yMzA1PXN0YXRpYyBpbnQgbWFwX2ZyZWV6ZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIzMzktXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MjM0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyAqIGNvbnN0IGJwZl9wcm9nX3R5cGVzW10gPSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM0MS0jZGVmaW5lIEJQRl9QUk9HX1RZUEUoX2lkLCBfbmFtZSwgcHJvZ19jdHhfdHlwZSwga2Vybl9jdHhfdHlwZSkgXFxcXFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MjM1MT1zdGF0aWMgaW50IGZpbmRfcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMzU0LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTU6XFx0aWYgKHR5cGUgXFx1MDAzZT0gQVJSQVlfU0laRShicGZfcHJvZ190eXBlcykpXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM1Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMzU3OlxcdHR5cGUgPSBhcnJheV9pbmRleF9ub3NwZWModHlwZSwgQVJSQVlfU0laRShicGZfcHJvZ190eXBlcykpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTg6XFx0b3BzID0gYnBmX3Byb2dfdHlwZXNbdHlwZV07XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM1OS1cXHRpZiAoIW9wcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MzcuNTEzMDkxMjE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTQ1MjAyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzOlxuXG4qKkFuYWx5emluZyB0aGUgQlBGIFByb2dyYW0gVHlwZSBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBCUEYgcHJvZ3JhbSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX3Byb2dfdHlwZXNgIGFycmF5LiBJdCBsb29rcyBsaWtlIHRoZSBgQlBGX1BST0dfVFlQRWAgbWFjcm8gaXMgdGhlIGtleSBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYGluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmhgLiBJIHNlZSB0aGF0IGl0IGluY2x1ZGVzIGEgYEJQRl9QUk9HX1RZUEVgIGRlZmluaXRpb24gZm9yIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYCwgYW5kIGFsc28gdGhlIG5hbWUgYHJhd190cmFjZXBvaW50X3dyaXRhYmxlYC4gTm93LCBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVgIHByb2dyYW0gdHlwZSBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgaXRzIGV4aXN0ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NjMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyOTo0MC45Mjc2MTUyMTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODkwNzU2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3X3RyYWNlcG9pbnRfd3JpdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9NDU9QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludCxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ2LVxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDc6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCByYXdfdHJhY2Vwb2ludF93cml0YWJsZSxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ4LVxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4NDM9c3RhdGljIGJvb2wgcmF3X3RwX3dyaXRhYmxlX3Byb2dfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLFxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NTUtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU3LVxcdC5nZXRfZnVuY19wcm90byAgPSByYXdfdHBfcHJvZ19mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NjAtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NjE6Y29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyByYXdfdHJhY2Vwb2ludF93cml0YWJsZV9wcm9nX29wcyA9IHtcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2Mi19O1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cXHRcXHQ9IFxcXCJjZ3JvdXBfc3lzY3RsXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZVxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXFx0XFx0PSBcXFwiY2dyb3VwX3NvY2tvcHRcXFwiLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM9OD12b2lkIHNlcmlhbF90ZXN0X3Jhd190cF93cml0YWJsZV90ZXN0X3J1bih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjktXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRyYWNlX29wdHMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jOjMwOlxcdGlmIChDSEVDSyhicGZfZmQgXFx1MDAzYyAwLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIGxvYWRlZFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMzEtXFx0XFx0ICBcXFwiZmFpbGVkOiAlZCBlcnJubyAlZFxcXFxuXFxcIiwgYnBmX2ZkLCBlcnJubykpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYy01MS1cXHRpbnQgdHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihcXFwiYnBmX3Rlc3RfZmluaXNoXFxcIiwgYnBmX2ZkKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYzo1MjpcXHRpZiAoQ0hFQ0sodHBfZmQgXFx1MDAzYyAwLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIG9wZW5lZFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtNTMtXFx0XFx0ICBcXFwiZmFpbGVkOiAlZCBlcnJubyAlZFxcXFxuXFxcIiwgdHBfZmQsIGVycm5vKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYz0xNT1TRUMoXFxcInJhd190cmFjZXBvaW50LndcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYzoxNjpfX2Rlc2NyaXB0aW9uKFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZTogcmVqZWN0IHZhcmlhYmxlIG9mZnNldFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jLTE3LV9fZmFpbHVyZVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jPTUwPVNFQyhcXFwicmF3X3RyYWNlcG9pbnQud1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jOjUxOl9fZGVzY3JpcHRpb24oXFxcInJhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmMtNTItX19mYWlsdXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjQzLjgxNjY5NzUyMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTcxNTU0MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgaW1tZWRpYXRlbHkgc2lnbmFscyBzb21ldGhpbmcgaW50ZXJlc3Rpbmcg4oCTIGl0J3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBCUEYgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSwgbGlrZWx5IGRlYWxpbmcgd2l0aCBob3cgd2UgdmVyaWZ5IGFuZCBtYW5hZ2Ugd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcywgd2hhdCdzICplbmFibGluZyogdGhpcyBjb2RlIHBhdGg/IFdoZXJlIGRvZXMgdGhpcyBmaXQgaW50byB0aGUgYnJvYWRlciBzeXN0ZW0gY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB0aGF0IGNvbnRyb2wgd2hldGhlciBvciBub3QgdGhpcyBjb2RlIHdpbGwgZXZlbiBiZSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyB2aXRhbC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBmcmFnbWVudHMgdGhhdCByZWZlcmVuY2UgdGhhdCBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYCBmaWxlLiBUaGlzIGlzIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRoZSBCUEYgdHJhY2Vwb2ludCBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjQ2Ljk4ODI1NTkwOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMzcwODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL01ha2VmaWxlPTU0PUtDT1ZfSU5TVFJVTUVOVF90cmFjZV9pcnFzb2ZmLm8gOj0gblxcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01NS1cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6NTY6Q0ZMQUdTX2JwZl90cmFjZS5vIDo9IC1JJChzcmMpXFxua2VybmVsL3RyYWNlL01ha2VmaWxlLTU3LVxcbi0tXFxua2VybmVsL3RyYWNlL01ha2VmaWxlPTEwOT1vYmotJChDT05GSUdfVVNFUl9FVkVOVFMpICs9IHRyYWNlX2V2ZW50c191c2VyLm9cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6MTEwOm9iai0kKENPTkZJR19CUEZfRVZFTlRTKSArPSBicGZfdHJhY2Uub1xcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS0xMTEtb2JqLSQoQ09ORklHX0tQUk9CRV9FVkVOVFMpICs9IHRyYWNlX2twcm9iZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjQ3LjEwODYzNTY1NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDQwNjU0Nzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBsaWtlIGl0IHJlcXVpcmVzIGBDT05GSUdfQlBGX0VWRU5UU2AuIEhhbmcgb24sIHdhc24ndCBgX19jaGVja19idWZmZXJfYWNjZXNzYCBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBhbmQgdGhhdCdzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkPyBSaWdodCwgdGhlIHBhdGNoICpkb2VzKiBtb2RpZnkgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEFuZCB0aGUgdGVzdCBjYXNlIHVzZXMgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgLiBUaGVyZWZvcmUsIGBDT05GSUdfQlBGX1NZU0NBTExgIHNlZW1zIG5lY2Vzc2FyeS4gVG8gYmUgc2FmZSwgbGV0J3MgYWxzbyBlbmFibGUgYENPTkZJR19CUEZfRVZFTlRTYC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCdzIHZlcmlmeSBpZiBgX19jaGVja19idWZmZXJfYWNjZXNzYCBpcyBjYWxsZWQgYnkgb3RoZXIgcHJvZ3JhbSB0eXBlcy4gQWgsIHllcywgaXQncyBjYWxsZWQgZnJvbSBgY2hlY2tfbWVtX2FjY2Vzc2AgYW5kIGBjaGVja19oZWxwZXJfbWVtX2FjY2Vzc2AuIEFuZCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgY2FsbHMgaXQgdmlhIGBjaGVja19tZW1fYWNjZXNzYCB3aGVuIGBQVFJfVE9fVFBfQlVGRkVSYCBpcyB1c2VkLiBTbywgdGhpcyBjaGFuZ2UgcG90ZW50aWFsbHkgYWZmZWN0cyBxdWl0ZSBhIGZldyBCUEYgcHJvZ3JhbSB0eXBlcy5cblxuU28sIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgIHN1ZmZpY2llbnQ/IFllcywgYnV0IHNpbmNlIHRoZSB0ZXN0IHVzZXMgcmF3IHRyYWNlcG9pbnRzLCBlbmFibGluZyBgQ09ORklHX0JQRl9FVkVOVFNgIHdvbid0IGh1cnQuXG5cblRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQgYXJlOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLlxuXG5IbW0sIHdhaXQuIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGlzIHN0YXRpYy4gU3l6a2FsbGVyIGNhbiBmdXp6IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSdyZSBpbiB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoZSBjb21waWxlciBpbmxpbmVzIHRoaXMgZnVuY3Rpb24uIEl0J3Mgc3RhdGljLCBidXQgbm90IG1hcmtlZCBhcyBpbmxpbmUsIHNvIHRoZSBjb21waWxlciAqbWlnaHQqIGlubGluZSBpdC4gSWYgaXQncyBpbmxpbmVkLCBTeXprYWxsZXIgbWlnaHQgbm90IGZpbmQgaXQgYnkgbmFtZSwgYnV0IHRoZSBjb2RlICp3aWxsKiBzdGlsbCBiZSBmdXp6ZWQuIEFkZGluZyBgY2hlY2tfbWVtX2FjY2Vzc2AgYW5kIGBjaGVja19oZWxwZXJfbWVtX2FjY2Vzc2Agd291bGQgYmUgKnNhZmVyKiwgYnV0IHRob3NlIGFyZSB2ZXJ5IGhvdCBwYXRocyBpbiB0aGUgdmVyaWZpZXIuIEFjdHVhbGx5LCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCBhcmUgcHJvYmFibHkgZ29vZCBlbm91Z2ggdG8gdGFyZ2V0LlxuXG5Pa2F5LCBsZXQncyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmOlxuXG5gYGBjXG5zdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tXHRcdFx0XHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXG4rXHRcdFx0XHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUsXG4rXHRcdFx0XHQgdTMyICphY2Nlc3NfZW5kKVxuYGBgXG5cbll1cCwgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHBhcmFtZXRlciBoYXMgYmVlbiBhZGRlZC5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIGZpbmFsIHJlc3VsdHM6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AsIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCwgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgXG4qICAgKipFbmFibGVDb25maWdzKio6IGBCUEZfU1lTQ0FMTGAsIGBCUEZfRVZFTlRTYFxuKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBpbmNyZWFzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGludHJvZHVjaW5nIGV4cGxvaXRhYmxlIGJ1Z3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDMwLCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMTozMDowMS41MTUxODY0MDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU0NDY1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19jaGVja19idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja190cF9idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja19idWZmZXJfYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIHZhcmlhYmxlIG9mZnNldHMgYW5kIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 21:13:20 +0000 UTC FinishedAt: 2026-07-08 21:30:03 +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": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "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": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "d01888d9-43ea-434e-9793-1495e9758847" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "__check_buffer_access", "check_tp_buffer_access", "check_buffer_access" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSB2YXJpYWJsZSBvZmZzZXRzIGFuZCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZThhZDNhMmU0YTg3NTRkYWMxYmM5YWVkZjU3NGJkNzllNWRlMzBlOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMjE6Mjg6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAyMWEzNjVkNDM2YTU5NS4uNmZlNGZjZjkzZTVmMDUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuJiM0MztcdFx0XHRcdCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSxcbiYjNDM7XHRcdFx0XHQgdTMyICphY2Nlc3NfZW5kKVxuIHtcbiYjNDM7XHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4mIzQzO1xuIFx0aWYgKG9mZiBcdTAwM2MgMCkge1xuIFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxcblwmIzM0OyxcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiYjNDM7XG4gXHRpZiAoIXRudW1faXNfY29uc3QocmVnLVx1MDAzZXZhcl9vZmYpKSB7XG4gXHRcdGNoYXIgdG5fYnVmWzQ4XTtcbiBcbkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuJiM0MztcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuJiM0MztcdGlmICh2YXJfb2ZmIFx1MDAzZT0gQlBGX01BWF9WQVJfT0ZGIHx8IHZhcl9vZmYgXHUwMDNjPSAtQlBGX01BWF9WQVJfT0ZGKSB7XG4mIzQzO1x0XHR2ZXJib3NlKGVudiwgXCYjMzQ7JXMgJXMgYnVmZmVyIG9mZnNldCAlbGxkIGlzIG5vdCBhbGxvd2VkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCB2YXJfb2ZmKTtcbiYjNDM7XHRcdHJldHVybiAtRUFDQ0VTO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3RhcnQgPSB2YXJfb2ZmICYjNDM7IG9mZjtcbiYjNDM7XHRpZiAoc3RhcnQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHZlcmJvc2UoZW52LFxuJiM0MztcdFx0XHRcJiMzNDslcyBpbnZhbGlkIG5lZ2F0aXZlICVzIGJ1ZmZlciBvZmZzZXQ6IG9mZj0lZCwgdmFyX29mZj0lbGxkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHZhcl9vZmYpO1xuJiM0MztcdFx0cmV0dXJuIC1FQUNDRVM7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoc2l6ZSBcdTAwM2MgMCkge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTtcbiYjNDM7XHRcdHJldHVybiAtRUFDQ0VTO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0KmFjY2Vzc19lbmQgPSAodTMyKXN0YXJ0ICYjNDM7ICh1MzIpc2l6ZTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNTM1MSwxNCAmIzQzOzUzNzgsMTQgQEAgc3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4gXHRcdFx0XHQgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuIHtcbiYjNDM7XHR1MzIgYWNjZXNzX2VuZDtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcJiMzNDt0cmFjZXBvaW50XCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuJiM0MztcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFwmIzM0O3RyYWNlcG9pbnRcJiMzNDssIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXHUwMDI2YWNjZXNzX2VuZCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgocmVnLVx1MDAzZXZhcl9vZmYudmFsdWUgJiM0Mzsgb2ZmICYjNDM7IHNpemUsXG4tXHRcdFx0XHRcdCAgICBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2Vzcyk7XG4mIzQzO1x0ZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTUzNzAsMTMgJiM0Mzs1Mzk3LDE0IEBAIHN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICB1MzIgKm1heF9hY2Nlc3MpXG4ge1xuIFx0Y29uc3QgY2hhciAqYnVmX2luZm8gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLVx1MDAzZXR5cGUpID8gXCYjMzQ7cmRvbmx5XCYjMzQ7IDogXCYjMzQ7cmR3clwmIzM0OztcbiYjNDM7XHR1MzIgYWNjZXNzX2VuZDtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcbiYjNDM7XHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHQqbWF4X2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSAmIzQzOyBvZmYgJiM0Mzsgc2l6ZSwgKm1heF9hY2Nlc3MpO1xuJiM0MztcdCptYXhfYWNjZXNzID0gbWF4KGFjY2Vzc19lbmQsICptYXhfYWNjZXNzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmNcbmluZGV4IDIxNmIwZGZhYzBmZTYxLi5lZmU0Y2FkNDdiMjgwYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jXG5AQCAtNCwxMiAmIzQzOzQsMzEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uYmQuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2JwZl91dGlsLmhcJiMzNDtcbiBcbi12b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxuJiM0MztzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX2luc24gKnByb2dyYW0sIHNpemVfdCBwcm9nX2xlbilcbiB7XG4tXHRfX3UzMiBkdXJhdGlvbiA9IDA7XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Byb2dfbG9hZF9vcHRzLCBvcHRzKTtcbiBcdGNoYXIgZXJyb3JbNDA5Nl07XG4tXHRpbnQgYnBmX2ZkID0gLTEsIHRwX2ZkID0gLTE7XG4mIzQzO1x0aW50IGJwZl9mZCwgdHBfZmQ7XG4mIzQzO1xuJiM0MztcdG9wdHMubG9nX2xldmVsID0gMjtcbiYjNDM7XHRvcHRzLmxvZ19idWYgPSBlcnJvcjtcbiYjNDM7XHRvcHRzLmxvZ19zaXplID0gc2l6ZW9mKGVycm9yKTtcbiYjNDM7XG4mIzQzO1x0YnBmX2ZkID0gYnBmX3Byb2dfbG9hZChCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBOVUxMLCBcJiMzNDtHUEwgdjJcJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICBwcm9ncmFtLCBwcm9nX2xlbiwgXHUwMDI2b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfR0UoYnBmX2ZkLCAwLCBcJiMzNDtwcm9nX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFwmIzM0O25iZF9zZW5kX3JlcXVlc3RcJiMzNDssIGJwZl9mZCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfTFQodHBfZmQsIDAsIG5hbWUpKVxuJiM0MztcdFx0Y2xvc2UodHBfZmQpO1xuJiM0MztcbiYjNDM7XHRjbG9zZShicGZfZmQpO1xuJiM0Mzt9XG4gXG4mIzQzO3ZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXG4mIzQzO3tcbiBcdGNvbnN0IHN0cnVjdCBicGZfaW5zbiBwcm9ncmFtW10gPSB7XG4gXHRcdC8qIHI2IGlzIG91ciB0cCBidWZmZXIgKi9cbiBcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG5AQCAtMTksMjUgJiM0MzszOCwxOCBAQCB2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxuIFx0XHRCUEZfRVhJVF9JTlNOKCksXG4gXHR9O1xuIFxuLVx0TElCQlBGX09QVFMoYnBmX3Byb2dfbG9hZF9vcHRzLCBvcHRzLFxuLVx0XHQubG9nX2xldmVsID0gMixcbi1cdFx0LmxvZ19idWYgPSBlcnJvcixcbi1cdFx0LmxvZ19zaXplID0gc2l6ZW9mKGVycm9yKSxcbi1cdCk7XG4tXG4tXHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0Oyxcbi1cdFx0XHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcbi1cdFx0XHQgICAgICAgXHUwMDI2b3B0cyk7XG4tXHRpZiAoQ0hFQ0soYnBmX2ZkIFx1MDAzYyAwLCBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgbG9hZFwmIzM0Oyxcbi1cdFx0ICBcJiMzNDtmYWlsZWQ6ICVkIGVycm5vICVkXFxuXCYjMzQ7LCBicGZfZmQsIGVycm5vKSlcbi1cdFx0cmV0dXJuO1xuLVxuLVx0dHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihcJiMzNDtuYmRfc2VuZF9yZXF1ZXN0XCYjMzQ7LCBicGZfZmQpO1xuLVx0aWYgKENIRUNLKHRwX2ZkIFx1MDAzZT0gMCwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIG9wZW5cJiMzNDssXG4tXHRcdCAgXCYjMzQ7ZXJyb25lb3VzbHkgc3VjY2VlZGVkXFxuXCYjMzQ7KSlcbi1cdFx0Z290byBvdXRfYnBmZmQ7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJwZl9pbnNuIG5lZ2F0aXZlX3Zhcl9vZmZfcHJvZ3JhbVtdID0ge1xuJiM0MztcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG4mIzQzO1x0XHQvKiBtYWtlIHZhcl9vZmYgbmVnYXRpdmUsIGJ1dCBrZWVwIHRoZSBlZmZlY3RpdmUgYWNjZXNzIG9mZnNldCBub24tbmVnYXRpdmUgKi9cbiYjNDM7XHRcdEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR182LCAtOCksXG4mIzQzO1x0XHQvKiBvbmUgYnl0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgbmJkX3JlcXVlc3Qgc3RydWN0ICovXG4mIzQzO1x0XHRCUEZfTERYX01FTShCUEZfQiwgQlBGX1JFR18wLCBCUEZfUkVHXzYsXG4mIzQzO1x0XHRcdCAgICBzaXplb2Yoc3RydWN0IG5iZF9yZXF1ZXN0KSAmIzQzOyA4KSxcbiYjNDM7XHRcdEJQRl9FWElUX0lOU04oKSxcbiYjNDM7XHR9O1xuIFxuLVx0Y2xvc2UodHBfZmQpO1xuLW91dF9icGZmZDpcbi1cdGNsb3NlKGJwZl9mZCk7XG4mIzQzO1x0Y2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoXCYjMzQ7bmJkX2ludmFsaWRcJiMzNDssIHByb2dyYW0sIEFSUkFZX1NJWkUocHJvZ3JhbSkpO1xuJiM0MztcdGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KFwmIzM0O25iZF9pbnZhbGlkX25lZ2F0aXZlX3Zhcl9vZmZcJiMzNDssXG4mIzQzO1x0XHRcdFx0bmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtLFxuJiM0MztcdFx0XHRcdEFSUkFZX1NJWkUobmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtKSk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuaW5kZXggMTRhMDE3MmUyMTQxZTguLjQwNTVhNjQ0M2JjMjBhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbkBAIC00Nyw0ICYjNDM7NDcsMjAgQEAgbDBfJT06XHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXG4gXHQ6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O3Jhd190cmFjZXBvaW50LndcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcJiMzNDspXG4mIzQzO19fZmFpbHVyZVxuJiM0MztfX21zZyhcJiMzNDtpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFwmIzM0OylcbiYjNDM7X19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRyNiA9ICoodTY0ICopKHIxICYjNDM7IDApO1x0XHRcdFx0XFxcbiYjNDM7XHRyNiAmIzQzOz0gLTg7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjAgPSAqKHU2NCAqKShyNiAmIzQzOyAwKTtcdFx0XHRcdFxcXG4mIzQzO1x0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcJiMzNDtcdDpcbiYjNDM7XHQ6XG4mIzQzO1x0OiBfX2Nsb2JiZXJfYWxsKTtcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSB2YXJpYWJsZSBvZmZzZXRzIGFuZCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlOGFkM2EyZTRhODc1NGRhYzFiYzlhZWRmNTc0YmQ3OWU1ZGUzMGU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAyMToyODo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyMWEzNjVkNDM2YTU5NS4uNmZlNGZjZjkzZTVmMDUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJCSBjb25zdCBjaGFyICpidWZfaW5mbywKIAkJCQkgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywKLQkJCQkgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpCiYjNDM7CQkJCSBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSwKJiM0MzsJCQkJIHUzMiAqYWNjZXNzX2VuZCkKIHsKJiM0MzsJczY0IHN0YXJ0LCB2YXJfb2ZmOwomIzQzOwogCWlmIChvZmYgJmx0OyAwKSB7CiAJCXZlcmJvc2UoZW52LAogCQkJJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxuJiMzNDssCiAJCQlyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpOwogCQlyZXR1cm4gLUVBQ0NFUzsKIAl9CiYjNDM7CiAJaWYgKCF0bnVtX2lzX2NvbnN0KHJlZy0mZ3Q7dmFyX29mZikpIHsKIAkJY2hhciB0bl9idWZbNDhdOwogCkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAomIzQzOwl2YXJfb2ZmID0gKHM2NClyZWctJmd0O3Zhcl9vZmYudmFsdWU7CiYjNDM7CWlmICh2YXJfb2ZmICZndDs9IEJQRl9NQVhfVkFSX09GRiB8fCB2YXJfb2ZmICZsdDs9IC1CUEZfTUFYX1ZBUl9PRkYpIHsKJiM0MzsJCXZlcmJvc2UoZW52LCAmIzM0OyVzICVzIGJ1ZmZlciBvZmZzZXQgJWxsZCBpcyBub3QgYWxsb3dlZFxuJiMzNDssCiYjNDM7CQkJcmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlzdGFydCA9IHZhcl9vZmYgJiM0Mzsgb2ZmOwomIzQzOwlpZiAoc3RhcnQgJmx0OyAwKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwKJiM0MzsJCQkmIzM0OyVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc2l6ZSAmbHQ7IDApIHsKJiM0MzsJCXZlcmJvc2UoZW52LCAmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTsKJiM0MzsJCXJldHVybiAtRUFDQ0VTOwomIzQzOwl9CiYjNDM7CiYjNDM7CSphY2Nlc3NfZW5kID0gKHUzMilzdGFydCAmIzQzOyAodTMyKXNpemU7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTUzNTEsMTQgJiM0Mzs1Mzc4LDE0IEBAIHN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJCSAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywKIAkJCQkgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKQogewomIzQzOwl1MzIgYWNjZXNzX2VuZDsKIAlpbnQgZXJyOwogCi0JZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgJiMzNDt0cmFjZXBvaW50JiMzNDssIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7CiYjNDM7CWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsICYjMzQ7dHJhY2Vwb2ludCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsICZhbXA7YWNjZXNzX2VuZCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWVudi0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDttYXhfdHBfYWNjZXNzID0gbWF4KHJlZy0mZ3Q7dmFyX29mZi52YWx1ZSAmIzQzOyBvZmYgJiM0Mzsgc2l6ZSwKLQkJCQkJICAgIGVudi0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDttYXhfdHBfYWNjZXNzKTsKJiM0MzsJZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC01MzcwLDEzICYjNDM7NTM5NywxNCBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCSAgICAgICB1MzIgKm1heF9hY2Nlc3MpCiB7CiAJY29uc3QgY2hhciAqYnVmX2luZm8gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLSZndDt0eXBlKSA/ICYjMzQ7cmRvbmx5JiMzNDsgOiAmIzM0O3Jkd3ImIzM0OzsKJiM0MzsJdTMyIGFjY2Vzc19lbmQ7CiAJaW50IGVycjsKIAotCWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpOwomIzQzOwllcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCAmYW1wO2FjY2Vzc19lbmQpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQkqbWF4X2FjY2VzcyA9IG1heChyZWctJmd0O3Zhcl9vZmYudmFsdWUgJiM0Mzsgb2ZmICYjNDM7IHNpemUsICptYXhfYWNjZXNzKTsKJiM0MzsJKm1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMKaW5kZXggMjE2YjBkZmFjMGZlNjEuLmVmZTRjYWQ0N2IyODBiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jCkBAIC00LDEyICYjNDM7NCwzMSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L25iZC5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfdXRpbC5oJiMzNDsKIAotdm9pZCB0ZXN0X3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQodm9pZCkKJiM0MztzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9pbnNuICpwcm9ncmFtLCBzaXplX3QgcHJvZ19sZW4pCiB7Ci0JX191MzIgZHVyYXRpb24gPSAwOwomIzQzOwlMSUJCUEZfT1BUUyhicGZfcHJvZ19sb2FkX29wdHMsIG9wdHMpOwogCWNoYXIgZXJyb3JbNDA5Nl07Ci0JaW50IGJwZl9mZCA9IC0xLCB0cF9mZCA9IC0xOwomIzQzOwlpbnQgYnBmX2ZkLCB0cF9mZDsKJiM0MzsKJiM0MzsJb3B0cy5sb2dfbGV2ZWwgPSAyOwomIzQzOwlvcHRzLmxvZ19idWYgPSBlcnJvcjsKJiM0MzsJb3B0cy5sb2dfc2l6ZSA9IHNpemVvZihlcnJvcik7CiYjNDM7CiYjNDM7CWJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgJiMzNDtHUEwgdjImIzM0OywKJiM0MzsJCQkgICAgICAgcHJvZ3JhbSwgcHJvZ19sZW4sICZhbXA7b3B0cyk7CiYjNDM7CWlmICghQVNTRVJUX0dFKGJwZl9mZCwgMCwgJiMzNDtwcm9nX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oJiMzNDtuYmRfc2VuZF9yZXF1ZXN0JiMzNDssIGJwZl9mZCk7CiYjNDM7CWlmICghQVNTRVJUX0xUKHRwX2ZkLCAwLCBuYW1lKSkKJiM0MzsJCWNsb3NlKHRwX2ZkKTsKJiM0MzsKJiM0MzsJY2xvc2UoYnBmX2ZkKTsKJiM0Mzt9CiAKJiM0Mzt2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKQomIzQzO3sKIAljb25zdCBzdHJ1Y3QgYnBmX2luc24gcHJvZ3JhbVtdID0gewogCQkvKiByNiBpcyBvdXIgdHAgYnVmZmVyICovCiAJCUJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR182LCBCUEZfUkVHXzEsIDApLApAQCAtMTksMjUgJiM0MzszOCwxOCBAQCB2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKQogCQlCUEZfRVhJVF9JTlNOKCksCiAJfTsKIAotCUxJQkJQRl9PUFRTKGJwZl9wcm9nX2xvYWRfb3B0cywgb3B0cywKLQkJLmxvZ19sZXZlbCA9IDIsCi0JCS5sb2dfYnVmID0gZXJyb3IsCi0JCS5sb2dfc2l6ZSA9IHNpemVvZihlcnJvciksCi0JKTsKLQotCWJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgJiMzNDtHUEwgdjImIzM0OywKLQkJCSAgICAgICBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pLAotCQkJICAgICAgICZhbXA7b3B0cyk7Ci0JaWYgKENIRUNLKGJwZl9mZCAmbHQ7IDAsICYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIGxvYWQmIzM0OywKLQkJICAmIzM0O2ZhaWxlZDogJWQgZXJybm8gJWRcbiYjMzQ7LCBicGZfZmQsIGVycm5vKSkKLQkJcmV0dXJuOwotCi0JdHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbigmIzM0O25iZF9zZW5kX3JlcXVlc3QmIzM0OywgYnBmX2ZkKTsKLQlpZiAoQ0hFQ0sodHBfZmQgJmd0Oz0gMCwgJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgb3BlbiYjMzQ7LAotCQkgICYjMzQ7ZXJyb25lb3VzbHkgc3VjY2VlZGVkXG4mIzM0OykpCi0JCWdvdG8gb3V0X2JwZmZkOwomIzQzOwljb25zdCBzdHJ1Y3QgYnBmX2luc24gbmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtW10gPSB7CiYjNDM7CQlCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfNiwgQlBGX1JFR18xLCAwKSwKJiM0MzsJCS8qIG1ha2UgdmFyX29mZiBuZWdhdGl2ZSwgYnV0IGtlZXAgdGhlIGVmZmVjdGl2ZSBhY2Nlc3Mgb2Zmc2V0IG5vbi1uZWdhdGl2ZSAqLwomIzQzOwkJQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHXzYsIC04KSwKJiM0MzsJCS8qIG9uZSBieXRlIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBuYmRfcmVxdWVzdCBzdHJ1Y3QgKi8KJiM0MzsJCUJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNiwKJiM0MzsJCQkgICAgc2l6ZW9mKHN0cnVjdCBuYmRfcmVxdWVzdCkgJiM0MzsgOCksCiYjNDM7CQlCUEZfRVhJVF9JTlNOKCksCiYjNDM7CX07CiAKLQljbG9zZSh0cF9mZCk7Ci1vdXRfYnBmZmQ6Ci0JY2xvc2UoYnBmX2ZkKTsKJiM0MzsJY2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoJiMzNDtuYmRfaW52YWxpZCYjMzQ7LCBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pKTsKJiM0MzsJY2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoJiMzNDtuYmRfaW52YWxpZF9uZWdhdGl2ZV92YXJfb2ZmJiMzNDssCiYjNDM7CQkJCW5lZ2F0aXZlX3Zhcl9vZmZfcHJvZ3JhbSwKJiM0MzsJCQkJQVJSQVlfU0laRShuZWdhdGl2ZV92YXJfb2ZmX3Byb2dyYW0pKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYwppbmRleCAxNGEwMTcyZTIxNDFlOC4uNDA1NWE2NDQzYmMyMGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmMKQEAgLTQ3LDQgJiM0Mzs0NywyMCBAQCBsMF8lPToJLyogc2hpZnQgdGhlIGJ1ZmZlciBwb2ludGVyIHRvIGEgdmFyaWFibGUgbG9jYXRpb24gKi9cCiAJOiBfX2Nsb2JiZXJfYWxsKTsKIH0KIAomIzQzO1NFQygmIzM0O3Jhd190cmFjZXBvaW50LncmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXQmIzM0OykKJiM0MztfX2ZhaWx1cmUKJiM0MztfX21zZygmIzM0O2ludmFsaWQgbmVnYXRpdmUgdHJhY2Vwb2ludCBidWZmZXIgb2Zmc2V0JiMzNDspCiYjNDM7X19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQkJXAomIzQzOwlyNiA9ICoodTY0ICopKHIxICYjNDM7IDApOwkJCQlcCiYjNDM7CXI2ICYjNDM7PSAtODsJCQkJCVwKJiM0MzsJcjAgPSAqKHU2NCAqKShyNiAmIzQzOyAwKTsJCQkJXAomIzQzOwlleGl0OwkJCQkJCVwKJiM0MzsmIzM0Owk6CiYjNDM7CToKJiM0MzsJOiBfX2Nsb2JiZXJfYWxsKTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIHRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjaGFuZ2VzIHdpdGhpbiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzYWZldHkgb2YgQlBGIHByb2dyYW1zIGJ5IHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgY2hlY2tzIGFyb3VuZCBgdmFyX29mZmAgLSBzcGVjaWZpY2FsbHksIGVuc3VyaW5nIGl0JiMzOTtzIHdpdGhpbiBzZW5zaWJsZSBib3VuZHMgKG5vdCBuZWdhdGl2ZSBvciBleGNlc3NpdmVseSBsYXJnZSkgYW5kIHRoZW4gY2FsY3VsYXRpbmcgYGFjY2Vzc19lbmRgIHNhZmVseS4gVGhlIGdvYWwgaGVyZSBpcyB0byBtaXRpZ2F0ZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiBsb2dpYyBJJiMzOTtkIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgZnV6emluZzsgdGhlc2UgYnVmZmVyIGFjY2VzcyBjaGVja3MgYXJlIGEgcHJpbWUgdGFyZ2V0LiBBbnkgc3VidGxlIGZsYXdzIGhlcmUgY291bGQgbGVhZCB0byBleHBsb2l0YWJsZSBpc3N1ZXMuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBJdCBzZWVtcyBsaWtlIHRoZSBjb2RlIG5vdyBleHBsaWNpdGx5IHZhbGlkYXRlcyB0aGUgb2Zmc2V0LiBJdCBzdGFydHMgYnkgY2hlY2tpbmcgaWYgdGhlIG9mZnNldCBpc24mIzM5O3QgYSBjb25zdGFudCwgYW5kLCBpZiBpdCBpcywgbWFrZXMgc29tZSBib3VuZHMgY2hlY2tzLCB0aGVuIGNhbGN1bGF0ZXMgdGhlIGBzdGFydGAgYW5kIGBhY2Nlc3NfZW5kYCB3aXRoIGNoZWNrcy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIHNlY3VyaXR5IGVuaGFuY2VtZW50LiBUaGUgY29kZSBub3cgcHJldmVudHMgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgbGFyZ2Ugb2Zmc2V0cy4gSXQgZW5zdXJlcyB0aGF0IHRoZSBjYWxjdWxhdGVkIGFjY2VzcyByYW5nZSBzdGF5cyB3aXRoaW4gZGVmaW5lZCBib3VuZGFyaWVzLCBwcmV2ZW50aW5nIGFjY2VzcyBiZXlvbmQgdGhlIGJ1ZmZlciYjMzk7cyBib3VuZHMuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVuIGFuZCBob3cgdGhlc2UgY2hlY2tzIGFyZSBhY3R1YWxseSAqdXNlZCouIFNvLCB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcgaXMgZXNzZW50aWFsLCBJIGtub3cgdGhlIEJQRiB2ZXJpZmllciBpcyBlbmFibGVkIHRocm91Z2ggdGhhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgc3RydWN0dXJlLiBPa2F5LCBzbyBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCBjYWxsIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBMb29rcyBsaWtlIGl0IGlzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgQlBGIHByb2dyYW0gdmVyaWZpY2F0aW9uIHByb2Nlc3MuIFdhaXQsIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRpbWUgdG8gdmVyaWZ5IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHdpdGggZ3JlcHBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTUyNzI9c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzI2OnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0Olx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzg1LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM5Mz1zdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NDAzOlx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXHUwMDI2YWNjZXNzX2VuZCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkwOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCdWZmZXIgQWNjZXNzIEZ1bmN0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aHJlZSBmdW5jdGlvbnMgbGlzdGVkOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlcyB3aXRoaW4gdGhpcyBjb250ZXh0LiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGV5IGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdmVyaWZ5aW5nIGFjY2VzcyB0byBtZW1vcnkgYnVmZmVycywgYSBjcml0aWNhbCBhc3BlY3Qgb2Ygc3lzdGVtIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkuCgpNeSBuZXh0IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgIGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0JiMzOTtzIGEga2V5IGF0dHJpYnV0ZSB0byB1bmRlcnN0YW5kLiBCZWluZyBzdGF0aWMgd291bGQgaW5mbHVlbmNlIGl0cyBzY29wZSwgaG93IGl0JiMzOTtzIGxpbmtlZCwgYW5kIHBvdGVudGlhbGx5IHdoZXJlIGl0IGNhbiBiZSBjYWxsZWQgZnJvbS4gSXTigJlzIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IGl04oCZcyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhpcyBiZWZvcmUgSSBjYW4gZGVsdmUgZGVlcGVyIGludG8gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBsaXN0ZWQgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTUyNzI9c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzI2OnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0Olx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzg1LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM5Mi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzkzOnN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTQwMzpcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsIFx1MDAyNmFjY2Vzc19lbmQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDQtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MDk4PXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjMzMzpcdFx0ZXJyID0gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgZmFsc2UsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjMzNC1cdFx0XHRcdFx0ICBtYXhfYWNjZXNzKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Njc2MT1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MDktXHRcdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2ODEwOlx0XHRyZXR1cm4gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIDAsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgxMS1cdFx0XHRcdFx0ICAgYWNjZXNzX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFN5emthbGxlciYjMzk7cyBDb3ZlcmFnZSBvZiBTdGF0aWMgRnVuY3Rpb25zKioKCk9rYXksIHNvIHRoZSBpc3N1ZSBvZiB0aGVzZSBmdW5jdGlvbnMgYmVpbmcgc3RhdGljIGluaXRpYWxseSBzZWVtZWQgbGlrZSBhIHByb2JsZW0uIEJ1dCwgYWZ0ZXIgYSBtb21lbnQmIzM5O3MgY29uc2lkZXJhdGlvbiwgSSByZWFsaXplIHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBhY3R1YWxseSBoaW5kZXIgYHN5emthbGxlcmAmIzM5O3MgZWZmZWN0aXZlbmVzcy4gVGhlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudCB3aXRoaW4gdGhlIGtlcm5lbCBpbWFnZSBpdHNlbGYsIHNvIHRoZXkgYXJlLCBpbiBmYWN0LCBhdmFpbGFibGUgZm9yIHRhcmdldGluZy4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgcHJvdmlkZSB0aGVtIGRpcmVjdGx5LgoKVGhlbiBJIHJlY2FsbGVkIHRoYXQgYHN5emthbGxlcmAgbGV2ZXJhZ2VzIGBrY292YCwgd2hpY2ggb3BlcmF0ZXMgYXQgdGhlIGxldmVsIG9mIGJhc2ljIGJsb2NrcyB0byB0cmFjayBjb2RlIGNvdmVyYWdlLiBGdW5jdGlvbiBuYW1lcyBhcmUgcmVzb2x2ZWQgdmlhIGRlYnVnIGluZm9ybWF0aW9uLiBUaGVyZWZvcmUsIGJlaW5nIHN0YXRpYyBzaG91bGRuJiMzOTt0IHByZXZlbnQgdGhlaXIgZXhlY3V0aW9uIHRyYWNraW5nLiBUaGF0JiMzOTtzIGdvb2QuCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGlzIGFzcGVjdC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIGEga2V5IGNvbmZpZ3VyYXRpb24gdG8gaW52ZXN0aWdhdGUuIElzIHRoYXQgdGhlIG9ubHkgb25lPwoKVGhlIHNwZWNpZmljIHRlc3QgY2FzZSB3ZSYjMzk7cmUgY29uc2lkZXJpbmcsIGByYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmNgLCB1dGlsaXplcyBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAuIE15IGZvY3VzIHNob3VsZCBzaGlmdCB0b3dhcmRzIGRldGVybWluaW5nIHdoaWNoIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljYWxseSBlbmFibGUgdGhpcyBwcm9ncmFtIHR5cGUuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBob3cgYnJvYWRseSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoaXMgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3Q9MTg9ZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBmb290bm90ZXMuXG4tLVxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0My0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0MztcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxNDQ6fCBgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgYCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGByYXdfdHAudyYjNDM7YGAgWyNyYXd0cF1fICAgICAgICAgIHwgICAgICAgICAgIHxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xNDUtJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLSYjNDM7XG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD00NT1CUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQsIHJhd190cmFjZXBvaW50LFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00Ni1cdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDo0NzpCUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIHJhd190cmFjZXBvaW50X3dyaXRhYmxlLFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00OC1cdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg2LSAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjM4NzogKlx0XHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4OC0gKlxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTA4NzpcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFQsXG4tLVxua2VybmVsL2JwZi9idGYuYz02MjE2PXN0YXRpYyBpbnQgYnRmX3ZhbGlkYXRlX3Byb2dfY3R4X3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNjI3My1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvYnRmLmM6NjI3NDpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvYnRmLmMtNjI3NS1cdFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yODcxPXN0YXRpYyBib29sIGlzX3BlcmZtb25fcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSBwcm9nX3R5cGUpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjg3Ny1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI4Nzg6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yODc5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDM1Mj1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzNzgtXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzc5Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM4MC1cdFx0aWYgKHN0cm5jcHlfZnJvbV91c2VyKGJ1ZiwgdXNlcl90cF9uYW1lLCBzaXplb2YoYnVmKSAtIDEpIFx1MDAzYyAwKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzcyMz1zdGF0aWMgYm9vbCBpc190cmFjaW5nX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MjktXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTc3MzA6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MzEtXHRcdHJldHVybiB0cnVlO1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg2LSAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjM4NzogKlx0XHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4OC0gKlxuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTA4NzpcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFQsXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI2LVx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cdFx0PSBcJiMzNDtjZ3JvdXBfc3lzY3RsXCYjMzQ7LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoyMjc6XHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cdD0gXCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGVcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIyOC1cdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BUXVx0XHQ9IFwmIzM0O2Nncm91cF9zb2Nrb3B0XCYjMzQ7LFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9NzExMz1zdGF0aWMgc3RydWN0IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzEtXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQsICAgICAgICAgIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXCYjMzQ7IH0sXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjcxMzI6XHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXCYjMzQ7IH0sXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzMtXHR7IEJQRl9QUk9HX1RZUEVfU0NIRURfQUNULCAgICAgICAgICAgICAgIFwmIzM0O19fc2tfYnVmZlwmIzM0OyB9LFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9NzE1Mz1zdGF0aWMgYm9vbCBuZWVkX2Z1bmNfYXJnX3R5cGVfZml4dXAoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MjA4LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MjA5Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MjEwLVx0XHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jPTEwMz1zdGF0aWMgaW50IHByb2JlX3Byb2dfbG9hZChlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3Ny1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jOjE3ODpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3OS1cdGNhc2UgQlBGX1BST0dfVFlQRV9MV1RfU0VHNkxPQ0FMOlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYz03PXN0YXRpYyB2b2lkIGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jLTE3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jOjE4Olx0YnBmX2ZkID0gYnBmX3Byb2dfbG9hZChCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBOVUxMLCBcJiMzNDtHUEwgdjJcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMTktXHRcdFx0ICAgICAgIHByb2dyYW0sIHByb2dfbGVuLCBcdTAwMjZvcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYz04PXZvaWQgc2VyaWFsX3Rlc3RfcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYzoyNzpcdGludCBicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTI4LVx0XHRcdFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzI2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEJQRiBQcm9ncmFtIFR5cGUgQXZhaWxhYmlsaXR5KioKCk9rYXksIHNvIEkgaW5pdGlhbGx5IHRob3VnaHQgYENPTkZJR19CUEZfU1lTQ0FMTGAgd291bGQgYmUgdGhlIGRldGVybWluaW5nIGZhY3RvciBoZXJlLiBCdXQgaGFuZyBvbiwgaXQganVzdCBjbGlja2VkIHRoYXQgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgIGlzIHRpZWQgdG8gYENPTkZJR19CUEZfRVZFTlRTYC4gVGhhdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbiBJIG5lZWQgdG8gdmVyaWZ5LiBMZXQgbWUganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciBtYXliZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCDigJMgdGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlIGF2YWlsYWJpbGl0eSBvZiBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeSwgYW5kIHRob3NlIGZpbGVzIHNob3VsZCBwcm92aWRlIHRoZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MjczLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9idGYuYzo2Mjc0Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxua2VybmVsL2JwZi9idGYuYy02Mjc1LVx0XHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yODc3LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mjg3ODpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM3OC1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzNzk6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVx0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoYnVmLCB1c2VyX3RwX25hbWUsIHNpemVvZihidWYpIC0gMSkgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3NzIzPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzcyOS1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMDpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzczMS1cdFx0cmV0dXJuIHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTgzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gUmF3IFRyYWNlcG9pbnQgV3JpdGVhYmxlIEhhbmRsaW5nKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAgaXMgaGFuZGxlZC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGp1bXAgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciwgc28gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGFuZCBhc3NvY2lhdGVkIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhhdCBmaWxlIGZvciBhbnkgY29kZSBzZWN0aW9ucyByZWxhdGVkIHRvIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciB0aGUgZnVuY3Rpb24gY2FsbHMsIGRhdGEgc3RydWN0dXJlcywgYW5kIGFueSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHN1cnJvdW5kaW5nIHRoaXMgcGFydGljdWxhciBCUEYgcHJvZ3JhbSB0eXBlLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS4gSSB3YW50IHRvIHVuY292ZXIgaG93IHRoZSByYXcgdHJhY2Vwb2ludCB3cml0ZWFibGUgcHJvZ3JhbXMgYWN0dWFsbHkgaW50ZXJhY3Qgd2l0aCB0aGUgdHJhY2Vwb2ludHMgYW5kIHdoYXQgc3BlY2lmaWMgY2FwYWJpbGl0aWVzIHRoZXkgZ3JhbnQuIEl04oCZcyBhbHNvIGltcG9ydGFudCB0byBpZGVudGlmeSBhbnkgY29uc3RyYWludHMgb3IgbGltaXRhdGlvbnMgdGhhdCBhcmUgaW1wb3NlZCBvbiBpdHMgdXNlLiBJIGV4cGVjdCB0byBzZWUgdGhlIGtleSBlbGVtZW50cyBmb3IgdGhpcyBwcm9ncmFtIHR5cGUsIGxpa2UgaXRzIHByb2dyYW0gbG9hZCBhbmQgZXhlY3V0aW9uIHBhdGhzLCBhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCBpbiBoYW5kbGluZyBhbmQgYnVmZmVyaW5nIGRhdGEuIEkgbmVlZCB0byBjb25maXJtIGhvdyB0aGUgd3JpdGFibGUgcGFydCBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOgoKKipEZWVwIERpdmUgaW50byBgYnBmX3Byb2dfdHlwZXNgIFdpdGhpbiB0aGUgS2VybmVsKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgQlBGIHByb2dyYW0gdHlwZXMuIE15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRvIHN0YXJ0IGRpcmVjdGx5IHdpdGggdGhlIHNvdXJjZS4gTGV0JiMzOTtzIGhlYWQgc3RyYWlnaHQgdG8gYGtlcm5lbC9icGYvc3lzY2FsbC5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIGludGVyYWN0aW9uIHdpdGggYGJwZl9wcm9nX3R5cGVzYC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgdHlwZXMgYXJlIGRlZmluZWQsIGhvdyB0aGV5JiMzOTtyZSB1c2VkIGluIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNhbm9uaWNhbCBkZWZpbml0aW9uLCB0aGUgbGlua2FnZSBiZXR3ZWVuIHVzZXItc3BhY2UgQlBGIHByb2dyYW0gbG9hZGluZyBhbmQgdGhlc2UgcHJvZ3JhbSB0eXBlcy4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgSSYjMzk7bGwgZmluZCB0aGUgc3RydWN0dXJlcyB0aGF0IGdvdmVybiB0aGUgdmVyaWZpZXImIzM5O3MgaW5wdXQuIEZyb20gdGhlcmUsIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHJlc3RyaWN0aW9ucyBhbmQgY2FwYWJpbGl0aWVzIG9mIGRpZmZlcmVudCBCUEYgcHJvZ3JhbSBjbGFzc2VzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRyb2xsaW5nIHRoZSBwcm9ncmFtJiMzOTtzIGxpZmVjeWNsZSwgdHlwZSB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgYWNjZXNzLiBUaGlzIGlzIGdyb3VuZCB6ZXJvIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9wcm9nX3R5cGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9MjMwNT1zdGF0aWMgaW50IG1hcF9mcmVlemUoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjMzOS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgKiBjb25zdCBicGZfcHJvZ190eXBlc1tdID0ge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM0MS0jZGVmaW5lIEJQRl9QUk9HX1RZUEUoX2lkLCBfbmFtZSwgcHJvZ19jdHhfdHlwZSwga2Vybl9jdHhfdHlwZSkgXFxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMzUxPXN0YXRpYyBpbnQgZmluZF9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHR5cGUsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMzU0LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MjM1NTpcdGlmICh0eXBlIFx1MDAzZT0gQVJSQVlfU0laRShicGZfcHJvZ190eXBlcykpXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMzU2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTc6XHR0eXBlID0gYXJyYXlfaW5kZXhfbm9zcGVjKHR5cGUsIEFSUkFZX1NJWkUoYnBmX3Byb2dfdHlwZXMpKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTg6XHRvcHMgPSBicGZfcHJvZ190eXBlc1t0eXBlXTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIzNTktXHRpZiAoIW9wcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NjMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzOgoKKipBbmFseXppbmcgdGhlIEJQRiBQcm9ncmFtIFR5cGUgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBCUEYgcHJvZ3JhbSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX3Byb2dfdHlwZXNgIGFycmF5LiBJdCBsb29rcyBsaWtlIHRoZSBgQlBGX1BST0dfVFlQRWAgbWFjcm8gaXMgdGhlIGtleSBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYGluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmhgLiBJIHNlZSB0aGF0IGl0IGluY2x1ZGVzIGEgYEJQRl9QUk9HX1RZUEVgIGRlZmluaXRpb24gZm9yIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYCwgYW5kIGFsc28gdGhlIG5hbWUgYHJhd190cmFjZXBvaW50X3dyaXRhYmxlYC4gTm93LCBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSBpZiB0aGUgYHJhd190cmFjZXBvaW50X3dyaXRhYmxlYCBwcm9ncmFtIHR5cGUgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGVmaW5lcyBpdHMgZXhpc3RlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ2LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ4LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4NDM9c3RhdGljIGJvb2wgcmF3X3RwX3dyaXRhYmxlX3Byb2dfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU1LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NTctXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2MC1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODYxOmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfcHJvZ19vcHMgPSB7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2Mi19O1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MjAyPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcHJvZ190eXBlX25hbWVbXSA9IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIyNi1cdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVExdXHRcdD0gXCYjMzQ7Y2dyb3VwX3N5c2N0bFwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MjI3Olx0W0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVdXHQ9IFwmIzM0O3Jhd190cmFjZXBvaW50X3dyaXRhYmxlXCYjMzQ7LFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXHRbQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVF1cdFx0PSBcJiMzNDtjZ3JvdXBfc29ja29wdFwmIzM0Oyxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYz04PXZvaWQgc2VyaWFsX3Rlc3RfcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjktXHRcdFx0XHQgICBcdTAwMjZ0cmFjZV9vcHRzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jOjMwOlx0aWYgKENIRUNLKGJwZl9mZCBcdTAwM2MgMCwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIGxvYWRlZFwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTMxLVx0XHQgIFwmIzM0O2ZhaWxlZDogJWQgZXJybm8gJWRcXG5cJiMzNDssIGJwZl9mZCwgZXJybm8pKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTUxLVx0aW50IHRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXCYjMzQ7YnBmX3Rlc3RfZmluaXNoXCYjMzQ7LCBicGZfZmQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM6NTI6XHRpZiAoQ0hFQ0sodHBfZmQgXHUwMDNjIDAsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF93cml0YWJsZSBvcGVuZWRcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYy01My1cdFx0ICBcJiMzNDtmYWlsZWQ6ICVkIGVycm5vICVkXFxuXCYjMzQ7LCB0cF9mZCwgZXJybm8pKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYz0xNT1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQud1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYzoxNjpfX2Rlc2NyaXB0aW9uKFwmIzM0O3Jhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgdmFyaWFibGUgb2Zmc2V0XCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jLTE3LV9fZmFpbHVyZVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYz01MD1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQud1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYzo1MTpfX2Rlc2NyaXB0aW9uKFwmIzM0O3Jhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jLTUyLV9fZmFpbHVyZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk3OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AgYW5kIHNwZWNpZmljYWxseSwgdGhlIGByYXdfdHJhY2Vwb2ludF93cml0YWJsZV92ZXJpZmllcl9vcHNgIHN0cnVjdHVyZS4gVGhpcyBpbW1lZGlhdGVseSBzaWduYWxzIHNvbWV0aGluZyBpbnRlcmVzdGluZyDigJMgaXQmIzM5O3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBCUEYgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSwgbGlrZWx5IGRlYWxpbmcgd2l0aCBob3cgd2UgdmVyaWZ5IGFuZCBtYW5hZ2Ugd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcywgd2hhdCYjMzk7cyAqZW5hYmxpbmcqIHRoaXMgY29kZSBwYXRoPyBXaGVyZSBkb2VzIHRoaXMgZml0IGludG8gdGhlIGJyb2FkZXIgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoZXRoZXIgb3Igbm90IHRoaXMgY29kZSB3aWxsIGV2ZW4gYmUgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWcgaXMgdml0YWwuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzIGFuZCBLY29uZmlnIGZyYWdtZW50cyB0aGF0IHJlZmVyZW5jZSB0aGF0IGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGZpbGUuIFRoaXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIEJQRiB0cmFjZXBvaW50IHN5c3RlbSBpcyBwdXQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFjZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvTWFrZWZpbGU9NTQ9S0NPVl9JTlNUUlVNRU5UX3RyYWNlX2lycXNvZmYubyA6PSBuXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGUtNTUtXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6NTY6Q0ZMQUdTX2JwZl90cmFjZS5vIDo9IC1JJChzcmMpXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGUtNTctXG4tLVxua2VybmVsL3RyYWNlL01ha2VmaWxlPTEwOT1vYmotJChDT05GSUdfVVNFUl9FVkVOVFMpICYjNDM7PSB0cmFjZV9ldmVudHNfdXNlci5vXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6MTEwOm9iai0kKENPTkZJR19CUEZfRVZFTlRTKSAmIzQzOz0gYnBmX3RyYWNlLm9cbmtlcm5lbC90cmFjZS9NYWtlZmlsZS0xMTEtb2JqLSQoQ09ORklHX0tQUk9CRV9FVkVOVFMpICYjNDM7PSB0cmFjZV9rcHJvYmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQzMAoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiA2NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgcmVxdWlyZXMgYENPTkZJR19CUEZfRVZFTlRTYC4gSGFuZyBvbiwgd2FzbiYjMzk7dCBgX19jaGVja19idWZmZXJfYWNjZXNzYCBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBhbmQgdGhhdCYjMzk7cyBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZD8gUmlnaHQsIHRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBBbmQgdGhlIHRlc3QgY2FzZSB1c2VzIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gVGhlcmVmb3JlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBzZWVtcyBuZWNlc3NhcnkuIFRvIGJlIHNhZmUsIGxldCYjMzk7cyBhbHNvIGVuYWJsZSBgQ09ORklHX0JQRl9FVkVOVFNgLgoKTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCYjMzk7cyB2ZXJpZnkgaWYgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgY2FsbGVkIGJ5IG90aGVyIHByb2dyYW0gdHlwZXMuIEFoLCB5ZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBjaGVja19tZW1fYWNjZXNzYCBhbmQgYGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzYC4gQW5kIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCBjYWxscyBpdCB2aWEgYGNoZWNrX21lbV9hY2Nlc3NgIHdoZW4gYFBUUl9UT19UUF9CVUZGRVJgIGlzIHVzZWQuIFNvLCB0aGlzIGNoYW5nZSBwb3RlbnRpYWxseSBhZmZlY3RzIHF1aXRlIGEgZmV3IEJQRiBwcm9ncmFtIHR5cGVzLgoKU28sIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgIHN1ZmZpY2llbnQ/IFllcywgYnV0IHNpbmNlIHRoZSB0ZXN0IHVzZXMgcmF3IHRyYWNlcG9pbnRzLCBlbmFibGluZyBgQ09ORklHX0JQRl9FVkVOVFNgIHdvbiYjMzk7dCBodXJ0LgoKVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBhcmU6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuCgpIbW0sIHdhaXQuIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGlzIHN0YXRpYy4gU3l6a2FsbGVyIGNhbiBmdXp6IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSYjMzk7cmUgaW4gdGhlIGtlcm5lbCBpbWFnZS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGUgY29tcGlsZXIgaW5saW5lcyB0aGlzIGZ1bmN0aW9uLiBJdCYjMzk7cyBzdGF0aWMsIGJ1dCBub3QgbWFya2VkIGFzIGlubGluZSwgc28gdGhlIGNvbXBpbGVyICptaWdodCogaW5saW5lIGl0LiBJZiBpdCYjMzk7cyBpbmxpbmVkLCBTeXprYWxsZXIgbWlnaHQgbm90IGZpbmQgaXQgYnkgbmFtZSwgYnV0IHRoZSBjb2RlICp3aWxsKiBzdGlsbCBiZSBmdXp6ZWQuIEFkZGluZyBgY2hlY2tfbWVtX2FjY2Vzc2AgYW5kIGBjaGVja19oZWxwZXJfbWVtX2FjY2Vzc2Agd291bGQgYmUgKnNhZmVyKiwgYnV0IHRob3NlIGFyZSB2ZXJ5IGhvdCBwYXRocyBpbiB0aGUgdmVyaWZpZXIuIEFjdHVhbGx5LCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCBhcmUgcHJvYmFibHkgZ29vZCBlbm91Z2ggdG8gdGFyZ2V0LgoKT2theSwgbGV0JiMzOTtzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGY6CgpgYGBjCnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCQkJIGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLAogCQkJCSBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLAotCQkJCSBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSkKJiM0MzsJCQkJIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplLAomIzQzOwkJCQkgdTMyICphY2Nlc3NfZW5kKQpgYGAKCll1cCwgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwYXJhbWV0ZXIgaGFzIGJlZW4gYWRkZWQuCgpBbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgZmluYWwgcmVzdWx0czoKCiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlCiogICAqKkZvY3VzU3ltYm9scyoqOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgQlBGX1NZU0NBTExgLCBgQlBGX0VWRU5UU2AKKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBpbmNyZWFzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGludHJvZHVjaW5nIGV4cGxvaXRhYmxlIGJ1Z3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19jaGVja19idWZmZXJfYWNjZXNzJiMzNDssCiAgICAmIzM0O2NoZWNrX3RwX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fY2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja190cF9idWZmZXJfYWNjZXNzJiMzNDssCiAgICAmIzM0O2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIHZhcmlhYmxlIG9mZnNldHMgYW5kIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyODo0OC42MTgwMzYwMzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzA0MjY3MzczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fY2hlY2tfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfYnVmZmVyX2FjY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSB2YXJpYWJsZSBvZmZzZXRzIGFuZCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyODo0OC42MTgwNDQ5OTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTIxNTg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU4YWQzYTJlNGE4NzU0ZGFjMWJjOWFlZGY1NzRiZDc5ZTVkZTMwZThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAyMToyODo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAyMWEzNjVkNDM2YTU5NS4uNmZlNGZjZjkzZTVmMDUgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTUzMjYsMTQgKzUzMjYsMTggQEAgc3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxcbiBcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcXG4tXFx0XFx0XFx0XFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxcbitcXHRcXHRcXHRcXHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUsXFxuK1xcdFxcdFxcdFxcdCB1MzIgKmFjY2Vzc19lbmQpXFxuIHtcXG4rXFx0czY0IHN0YXJ0LCB2YXJfb2ZmO1xcbitcXG4gXFx0aWYgKG9mZiBcXHUwMDNjIDApIHtcXG4gXFx0XFx0dmVyYm9zZShlbnYsXFxuIFxcdFxcdFxcdFxcXCIlcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0cmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgb2ZmLCBzaXplKTtcXG4gXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdH1cXG4rXFxuIFxcdGlmICghdG51bV9pc19jb25zdChyZWctXFx1MDAzZXZhcl9vZmYpKSB7XFxuIFxcdFxcdGNoYXIgdG5fYnVmWzQ4XTtcXG4gXFxuQEAgLTUzNDQsNiArNTM0OCwyOSBAQCBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4gXFx0fVxcbiBcXG4rXFx0dmFyX29mZiA9IChzNjQpcmVnLVxcdTAwM2V2YXJfb2ZmLnZhbHVlO1xcbitcXHRpZiAodmFyX29mZiBcXHUwMDNlPSBCUEZfTUFYX1ZBUl9PRkYgfHwgdmFyX29mZiBcXHUwMDNjPSAtQlBGX01BWF9WQVJfT0ZGKSB7XFxuK1xcdFxcdHZlcmJvc2UoZW52LCBcXFwiJXMgJXMgYnVmZmVyIG9mZnNldCAlbGxkIGlzIG5vdCBhbGxvd2VkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCB2YXJfb2ZmKTtcXG4rXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuK1xcdH1cXG4rXFxuK1xcdHN0YXJ0ID0gdmFyX29mZiArIG9mZjtcXG4rXFx0aWYgKHN0YXJ0IFxcdTAwM2MgMCkge1xcbitcXHRcXHR2ZXJib3NlKGVudixcXG4rXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XFxuK1xcdFxcdHJldHVybiAtRUFDQ0VTO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc2l6ZSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0dmVyYm9zZShlbnYsIFxcXCIlcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lbGxkLCBzaXplPSVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBzdGFydCwgc2l6ZSk7XFxuK1xcdFxcdHJldHVybiAtRUFDQ0VTO1xcbitcXHR9XFxuK1xcbitcXHQqYWNjZXNzX2VuZCA9ICh1MzIpc3RhcnQgKyAodTMyKXNpemU7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNTM1MSwxNCArNTM3OCwxNCBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbiBcXHRcXHRcXHRcXHQgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxcbiB7XFxuK1xcdHUzMiBhY2Nlc3NfZW5kO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXFxcInRyYWNlcG9pbnRcXFwiLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xcbitcXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcXFwidHJhY2Vwb2ludFxcXCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgocmVnLVxcdTAwM2V2YXJfb2ZmLnZhbHVlICsgb2ZmICsgc2l6ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VtYXhfdHBfYWNjZXNzKTtcXG4rXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNTM3MCwxMyArNTM5NywxNCBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0ICAgICAgIHUzMiAqbWF4X2FjY2VzcylcXG4ge1xcbiBcXHRjb25zdCBjaGFyICpidWZfaW5mbyA9IHR5cGVfaXNfcmRvbmx5X21lbShyZWctXFx1MDAzZXR5cGUpID8gXFxcInJkb25seVxcXCIgOiBcXFwicmR3clxcXCI7XFxuK1xcdHUzMiBhY2Nlc3NfZW5kO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XFxuK1xcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsIFxcdTAwMjZhY2Nlc3NfZW5kKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdCptYXhfYWNjZXNzID0gbWF4KHJlZy1cXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsICptYXhfYWNjZXNzKTtcXG4rXFx0Km1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jXFxuaW5kZXggMjE2YjBkZmFjMGZlNjEuLmVmZTRjYWQ0N2IyODBiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xcbkBAIC00LDEyICs0LDMxIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uYmQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImJwZl91dGlsLmhcXFwiXFxuIFxcbi12b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxcbitzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLFxcbitcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9pbnNuICpwcm9ncmFtLCBzaXplX3QgcHJvZ19sZW4pXFxuIHtcXG4tXFx0X191MzIgZHVyYXRpb24gPSAwO1xcbitcXHRMSUJCUEZfT1BUUyhicGZfcHJvZ19sb2FkX29wdHMsIG9wdHMpO1xcbiBcXHRjaGFyIGVycm9yWzQwOTZdO1xcbi1cXHRpbnQgYnBmX2ZkID0gLTEsIHRwX2ZkID0gLTE7XFxuK1xcdGludCBicGZfZmQsIHRwX2ZkO1xcbitcXG4rXFx0b3B0cy5sb2dfbGV2ZWwgPSAyO1xcbitcXHRvcHRzLmxvZ19idWYgPSBlcnJvcjtcXG4rXFx0b3B0cy5sb2dfc2l6ZSA9IHNpemVvZihlcnJvcik7XFxuK1xcbitcXHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFxcXCJHUEwgdjJcXFwiLFxcbitcXHRcXHRcXHQgICAgICAgcHJvZ3JhbSwgcHJvZ19sZW4sIFxcdTAwMjZvcHRzKTtcXG4rXFx0aWYgKCFBU1NFUlRfR0UoYnBmX2ZkLCAwLCBcXFwicHJvZ19sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXFxcIm5iZF9zZW5kX3JlcXVlc3RcXFwiLCBicGZfZmQpO1xcbitcXHRpZiAoIUFTU0VSVF9MVCh0cF9mZCwgMCwgbmFtZSkpXFxuK1xcdFxcdGNsb3NlKHRwX2ZkKTtcXG4rXFxuK1xcdGNsb3NlKGJwZl9mZCk7XFxuK31cXG4gXFxuK3ZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXFxuK3tcXG4gXFx0Y29uc3Qgc3RydWN0IGJwZl9pbnNuIHByb2dyYW1bXSA9IHtcXG4gXFx0XFx0LyogcjYgaXMgb3VyIHRwIGJ1ZmZlciAqL1xcbiBcXHRcXHRCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfNiwgQlBGX1JFR18xLCAwKSxcXG5AQCAtMTksMjUgKzM4LDE4IEBAIHZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXFxuIFxcdFxcdEJQRl9FWElUX0lOU04oKSxcXG4gXFx0fTtcXG4gXFxuLVxcdExJQkJQRl9PUFRTKGJwZl9wcm9nX2xvYWRfb3B0cywgb3B0cyxcXG4tXFx0XFx0LmxvZ19sZXZlbCA9IDIsXFxuLVxcdFxcdC5sb2dfYnVmID0gZXJyb3IsXFxuLVxcdFxcdC5sb2dfc2l6ZSA9IHNpemVvZihlcnJvciksXFxuLVxcdCk7XFxuLVxcbi1cXHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFxcXCJHUEwgdjJcXFwiLFxcbi1cXHRcXHRcXHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcXG4tXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZvcHRzKTtcXG4tXFx0aWYgKENIRUNLKGJwZl9mZCBcXHUwMDNjIDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgbG9hZFxcXCIsXFxuLVxcdFxcdCAgXFxcImZhaWxlZDogJWQgZXJybm8gJWRcXFxcblxcXCIsIGJwZl9mZCwgZXJybm8pKVxcbi1cXHRcXHRyZXR1cm47XFxuLVxcbi1cXHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFxcXCJuYmRfc2VuZF9yZXF1ZXN0XFxcIiwgYnBmX2ZkKTtcXG4tXFx0aWYgKENIRUNLKHRwX2ZkIFxcdTAwM2U9IDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgb3BlblxcXCIsXFxuLVxcdFxcdCAgXFxcImVycm9uZW91c2x5IHN1Y2NlZWRlZFxcXFxuXFxcIikpXFxuLVxcdFxcdGdvdG8gb3V0X2JwZmZkO1xcbitcXHRjb25zdCBzdHJ1Y3QgYnBmX2luc24gbmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtW10gPSB7XFxuK1xcdFxcdEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR182LCBCUEZfUkVHXzEsIDApLFxcbitcXHRcXHQvKiBtYWtlIHZhcl9vZmYgbmVnYXRpdmUsIGJ1dCBrZWVwIHRoZSBlZmZlY3RpdmUgYWNjZXNzIG9mZnNldCBub24tbmVnYXRpdmUgKi9cXG4rXFx0XFx0QlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHXzYsIC04KSxcXG4rXFx0XFx0Lyogb25lIGJ5dGUgYmV5b25kIHRoZSBlbmQgb2YgdGhlIG5iZF9yZXF1ZXN0IHN0cnVjdCAqL1xcbitcXHRcXHRCUEZfTERYX01FTShCUEZfQiwgQlBGX1JFR18wLCBCUEZfUkVHXzYsXFxuK1xcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IG5iZF9yZXF1ZXN0KSArIDgpLFxcbitcXHRcXHRCUEZfRVhJVF9JTlNOKCksXFxuK1xcdH07XFxuIFxcbi1cXHRjbG9zZSh0cF9mZCk7XFxuLW91dF9icGZmZDpcXG4tXFx0Y2xvc2UoYnBmX2ZkKTtcXG4rXFx0Y2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoXFxcIm5iZF9pbnZhbGlkXFxcIiwgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSk7XFxuK1xcdGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KFxcXCJuYmRfaW52YWxpZF9uZWdhdGl2ZV92YXJfb2ZmXFxcIixcXG4rXFx0XFx0XFx0XFx0bmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtLFxcbitcXHRcXHRcXHRcXHRBUlJBWV9TSVpFKG5lZ2F0aXZlX3Zhcl9vZmZfcHJvZ3JhbSkpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xcbmluZGV4IDE0YTAxNzJlMjE0MWU4Li40MDU1YTY0NDNiYzIwYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcXG5AQCAtNDcsNCArNDcsMjAgQEAgbDBfJT06XFx0Lyogc2hpZnQgdGhlIGJ1ZmZlciBwb2ludGVyIHRvIGEgdmFyaWFibGUgbG9jYXRpb24gKi9cXFxcXFxuIFxcdDogX19jbG9iYmVyX2FsbCk7XFxuIH1cXG4gXFxuK1NFQyhcXFwicmF3X3RyYWNlcG9pbnQud1xcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcInJhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XFxcIilcXG4rX19mYWlsdXJlXFxuK19fbXNnKFxcXCJpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFxcXCIpXFxuK19fbmFrZWQgdm9pZCB0cmFjZXBvaW50X3dyaXRhYmxlX3JlamVjdF9uZWdhdGl2ZV9jb25zdF9vZmZzZXQodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUgKFxcXCJcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHI2ID0gKih1NjQgKikocjEgKyAwKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHI2ICs9IC04O1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjAgPSAqKHU2NCAqKShyNiArIDApO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcXCJcXHQ6XFxuK1xcdDpcXG4rXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4rfVxcbitcXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI4OjQ5LjM1ODM0NjYyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIzMDIzMTk1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlOGFkM2EyZTRhODc1NGRhYzFiYzlhZWRmNTc0YmQ3OWU1ZGUzMGU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAyMToyODo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMjFhMzY1ZDQzNmE1OTUuLjZmZTRmY2Y5M2U1ZjA1IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MzI2LDE0ICs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuK1x0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplLFxuK1x0XHRcdFx0IHUzMiAqYWNjZXNzX2VuZClcbiB7XG4rXHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4rXG4gXHRpZiAob2ZmIFx1MDAzYyAwKSB7XG4gXHRcdHZlcmJvc2UoZW52LFxuIFx0XHRcdFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWQsIHNpemU9JWRcXG5cIixcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbitcbiBcdGlmICghdG51bV9pc19jb25zdChyZWctXHUwMDNldmFyX29mZikpIHtcbiBcdFx0Y2hhciB0bl9idWZbNDhdO1xuIFxuQEAgLTUzNDQsNiArNTM0OCwyOSBAQCBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiBcbitcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuK1x0aWYgKHZhcl9vZmYgXHUwMDNlPSBCUEZfTUFYX1ZBUl9PRkYgfHwgdmFyX29mZiBcdTAwM2M9IC1CUEZfTUFYX1ZBUl9PRkYpIHtcbitcdFx0dmVyYm9zZShlbnYsIFwiJXMgJXMgYnVmZmVyIG9mZnNldCAlbGxkIGlzIG5vdCBhbGxvd2VkXFxuXCIsXG4rXHRcdFx0cmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0c3RhcnQgPSB2YXJfb2ZmICsgb2ZmO1xuK1x0aWYgKHN0YXJ0IFx1MDAzYyAwKSB7XG4rXHRcdHZlcmJvc2UoZW52LFxuK1x0XHRcdFwiJXMgaW52YWxpZCBuZWdhdGl2ZSAlcyBidWZmZXIgb2Zmc2V0OiBvZmY9JWQsIHZhcl9vZmY9JWxsZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0aWYgKHNpemUgXHUwMDNjIDApIHtcbitcdFx0dmVyYm9zZShlbnYsIFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWxsZCwgc2l6ZT0lZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTtcbitcdFx0cmV0dXJuIC1FQUNDRVM7XG4rXHR9XG4rXG4rXHQqYWNjZXNzX2VuZCA9ICh1MzIpc3RhcnQgKyAodTMyKXNpemU7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNTM1MSwxNCArNTM3OCwxNCBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdCAgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXG4ge1xuK1x0dTMyIGFjY2Vzc19lbmQ7XG4gXHRpbnQgZXJyO1xuIFxuLVx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCJ0cmFjZXBvaW50XCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XG4rXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcInRyYWNlcG9pbnRcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsXG4tXHRcdFx0XHRcdCAgICBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2Vzcyk7XG4rXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLCBlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2Vzcyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtNTM3MCwxMyArNTM5NywxNCBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHQgICAgICAgdTMyICptYXhfYWNjZXNzKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmJ1Zl9pbmZvID0gdHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cdTAwM2V0eXBlKSA/IFwicmRvbmx5XCIgOiBcInJkd3JcIjtcbitcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuK1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXHUwMDI2YWNjZXNzX2VuZCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0Km1heF9hY2Nlc3MgPSBtYXgocmVnLVx1MDAzZXZhcl9vZmYudmFsdWUgKyBvZmYgKyBzaXplLCAqbWF4X2FjY2Vzcyk7XG4rXHQqbWF4X2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLCAqbWF4X2FjY2Vzcyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jXG5pbmRleCAyMTZiMGRmYWMwZmU2MS4uZWZlNGNhZDQ3YjI4MGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuY1xuQEAgLTQsMTIgKzQsMzEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uYmQuaFx1MDAzZVxuICNpbmNsdWRlIFwiYnBmX3V0aWwuaFwiXG4gXG4tdm9pZCB0ZXN0X3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQodm9pZClcbitzdGF0aWMgdm9pZCBjaGVja19uYmRfYXR0YWNoX3JlamVjdChjb25zdCBjaGFyICpuYW1lLFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqcHJvZ3JhbSwgc2l6ZV90IHByb2dfbGVuKVxuIHtcbi1cdF9fdTMyIGR1cmF0aW9uID0gMDtcbitcdExJQkJQRl9PUFRTKGJwZl9wcm9nX2xvYWRfb3B0cywgb3B0cyk7XG4gXHRjaGFyIGVycm9yWzQwOTZdO1xuLVx0aW50IGJwZl9mZCA9IC0xLCB0cF9mZCA9IC0xO1xuK1x0aW50IGJwZl9mZCwgdHBfZmQ7XG4rXG4rXHRvcHRzLmxvZ19sZXZlbCA9IDI7XG4rXHRvcHRzLmxvZ19idWYgPSBlcnJvcjtcbitcdG9wdHMubG9nX3NpemUgPSBzaXplb2YoZXJyb3IpO1xuK1xuK1x0YnBmX2ZkID0gYnBmX3Byb2dfbG9hZChCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBOVUxMLCBcIkdQTCB2MlwiLFxuK1x0XHRcdCAgICAgICBwcm9ncmFtLCBwcm9nX2xlbiwgXHUwMDI2b3B0cyk7XG4rXHRpZiAoIUFTU0VSVF9HRShicGZfZmQsIDAsIFwicHJvZ19sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFwibmJkX3NlbmRfcmVxdWVzdFwiLCBicGZfZmQpO1xuK1x0aWYgKCFBU1NFUlRfTFQodHBfZmQsIDAsIG5hbWUpKVxuK1x0XHRjbG9zZSh0cF9mZCk7XG4rXG4rXHRjbG9zZShicGZfZmQpO1xuK31cbiBcbit2b2lkIHRlc3RfcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZCh2b2lkKVxuK3tcbiBcdGNvbnN0IHN0cnVjdCBicGZfaW5zbiBwcm9ncmFtW10gPSB7XG4gXHRcdC8qIHI2IGlzIG91ciB0cCBidWZmZXIgKi9cbiBcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG5AQCAtMTksMjUgKzM4LDE4IEBAIHZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXG4gXHRcdEJQRl9FWElUX0lOU04oKSxcbiBcdH07XG4gXG4tXHRMSUJCUEZfT1BUUyhicGZfcHJvZ19sb2FkX29wdHMsIG9wdHMsXG4tXHRcdC5sb2dfbGV2ZWwgPSAyLFxuLVx0XHQubG9nX2J1ZiA9IGVycm9yLFxuLVx0XHQubG9nX3NpemUgPSBzaXplb2YoZXJyb3IpLFxuLVx0KTtcbi1cbi1cdGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXCJHUEwgdjJcIixcbi1cdFx0XHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcbi1cdFx0XHQgICAgICAgXHUwMDI2b3B0cyk7XG4tXHRpZiAoQ0hFQ0soYnBmX2ZkIFx1MDAzYyAwLCBcImJwZl9yYXdfdHJhY2Vwb2ludF93cml0YWJsZSBsb2FkXCIsXG4tXHRcdCAgXCJmYWlsZWQ6ICVkIGVycm5vICVkXFxuXCIsIGJwZl9mZCwgZXJybm8pKVxuLVx0XHRyZXR1cm47XG4tXG4tXHR0cF9mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFwibmJkX3NlbmRfcmVxdWVzdFwiLCBicGZfZmQpO1xuLVx0aWYgKENIRUNLKHRwX2ZkIFx1MDAzZT0gMCwgXCJicGZfcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUgb3BlblwiLFxuLVx0XHQgIFwiZXJyb25lb3VzbHkgc3VjY2VlZGVkXFxuXCIpKVxuLVx0XHRnb3RvIG91dF9icGZmZDtcbitcdGNvbnN0IHN0cnVjdCBicGZfaW5zbiBuZWdhdGl2ZV92YXJfb2ZmX3Byb2dyYW1bXSA9IHtcbitcdFx0QlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzYsIEJQRl9SRUdfMSwgMCksXG4rXHRcdC8qIG1ha2UgdmFyX29mZiBuZWdhdGl2ZSwgYnV0IGtlZXAgdGhlIGVmZmVjdGl2ZSBhY2Nlc3Mgb2Zmc2V0IG5vbi1uZWdhdGl2ZSAqL1xuK1x0XHRCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfNiwgLTgpLFxuK1x0XHQvKiBvbmUgYnl0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgbmJkX3JlcXVlc3Qgc3RydWN0ICovXG4rXHRcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcbitcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBuYmRfcmVxdWVzdCkgKyA4KSxcbitcdFx0QlBGX0VYSVRfSU5TTigpLFxuK1x0fTtcbiBcbi1cdGNsb3NlKHRwX2ZkKTtcbi1vdXRfYnBmZmQ6XG4tXHRjbG9zZShicGZfZmQpO1xuK1x0Y2hlY2tfbmJkX2F0dGFjaF9yZWplY3QoXCJuYmRfaW52YWxpZFwiLCBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pKTtcbitcdGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KFwibmJkX2ludmFsaWRfbmVnYXRpdmVfdmFyX29mZlwiLFxuK1x0XHRcdFx0bmVnYXRpdmVfdmFyX29mZl9wcm9ncmFtLFxuK1x0XHRcdFx0QVJSQVlfU0laRShuZWdhdGl2ZV92YXJfb2ZmX3Byb2dyYW0pKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG5pbmRleCAxNGEwMTcyZTIxNDFlOC4uNDA1NWE2NDQzYmMyMGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuQEAgLTQ3LDQgKzQ3LDIwIEBAIGwwXyU9Olx0Lyogc2hpZnQgdGhlIGJ1ZmZlciBwb2ludGVyIHRvIGEgdmFyaWFibGUgbG9jYXRpb24gKi9cXFxuIFx0OiBfX2Nsb2JiZXJfYWxsKTtcbiB9XG4gXG4rU0VDKFwicmF3X3RyYWNlcG9pbnQud1wiKVxuK19fZGVzY3JpcHRpb24oXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZTogcmVqZWN0IG5lZ2F0aXZlIGNvbnN0IG9mZnNldFwiKVxuK19fZmFpbHVyZVxuK19fbXNnKFwiaW52YWxpZCBuZWdhdGl2ZSB0cmFjZXBvaW50IGJ1ZmZlciBvZmZzZXRcIilcbitfX25ha2VkIHZvaWQgdHJhY2Vwb2ludF93cml0YWJsZV9yZWplY3RfbmVnYXRpdmVfY29uc3Rfb2Zmc2V0KHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcIlx0XHRcdFx0XHRcXFxuK1x0cjYgPSAqKHU2NCAqKShyMSArIDApO1x0XHRcdFx0XFxcbitcdHI2ICs9IC04O1x0XHRcdFx0XHRcXFxuK1x0cjAgPSAqKHU2NCAqKShyNiArIDApO1x0XHRcdFx0XFxcbitcdGV4aXQ7XHRcdFx0XHRcdFx0XFxcbitcIlx0OlxuK1x0OlxuK1x0OiBfX2Nsb2JiZXJfYWxsKTtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjg6NDkuMzU4MzQ5MjA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODczMTY1MTU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIHRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjaGFuZ2VzIHdpdGhpbiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzYWZldHkgb2YgQlBGIHByb2dyYW1zIGJ5IHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgYW5kIGludGVnZXIgb3ZlcmZsb3dzLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBjaGVja3MgYXJvdW5kIGB2YXJfb2ZmYCAtIHNwZWNpZmljYWxseSwgZW5zdXJpbmcgaXQncyB3aXRoaW4gc2Vuc2libGUgYm91bmRzIChub3QgbmVnYXRpdmUgb3IgZXhjZXNzaXZlbHkgbGFyZ2UpIGFuZCB0aGVuIGNhbGN1bGF0aW5nIGBhY2Nlc3NfZW5kYCBzYWZlbHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gbWl0aWdhdGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgbG9naWMgSSdkIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgZnV6emluZzsgdGhlc2UgYnVmZmVyIGFjY2VzcyBjaGVja3MgYXJlIGEgcHJpbWUgdGFyZ2V0LiBBbnkgc3VidGxlIGZsYXdzIGhlcmUgY291bGQgbGVhZCB0byBleHBsb2l0YWJsZSBpc3N1ZXMuXG5cbkxldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIEl0IHNlZW1zIGxpa2UgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgdmFsaWRhdGVzIHRoZSBvZmZzZXQuIEl0IHN0YXJ0cyBieSBjaGVja2luZyBpZiB0aGUgb2Zmc2V0IGlzbid0IGEgY29uc3RhbnQsIGFuZCwgaWYgaXQgaXMsIG1ha2VzIHNvbWUgYm91bmRzIGNoZWNrcywgdGhlbiBjYWxjdWxhdGVzIHRoZSBgc3RhcnRgIGFuZCBgYWNjZXNzX2VuZGAgd2l0aCBjaGVja3MuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBzZWN1cml0eSBlbmhhbmNlbWVudC4gVGhlIGNvZGUgbm93IHByZXZlbnRzIG5lZ2F0aXZlIG9mZnNldHMgYW5kIGxhcmdlIG9mZnNldHMuIEl0IGVuc3VyZXMgdGhhdCB0aGUgY2FsY3VsYXRlZCBhY2Nlc3MgcmFuZ2Ugc3RheXMgd2l0aGluIGRlZmluZWQgYm91bmRhcmllcywgcHJldmVudGluZyBhY2Nlc3MgYmV5b25kIHRoZSBidWZmZXIncyBib3VuZHMuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IHRoZXNlIGNoZWNrcyBhcmUgYWN0dWFsbHkgKnVzZWQqLiBTbywgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGVzc2VudGlhbCwgSSBrbm93IHRoZSBCUEYgdmVyaWZpZXIgaXMgZW5hYmxlZCB0aHJvdWdoIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHN0cnVjdHVyZS4gT2theSwgc28gYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgY2FsbCBgX19jaGVja19idWZmZXJfYWNjZXNzYC4gTG9va3MgbGlrZSBpdCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBXYWl0LCBgX19jaGVja19idWZmZXJfYWNjZXNzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaW1lIHRvIHZlcmlmeSBga2VybmVsL2JwZi92ZXJpZmllci5jYCB3aXRoIGdyZXBwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyODo1OC4wOTAwMDUyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzc5NDk0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19jaGVja19idWZmZXJfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcXHUwMDI2YWNjZXNzX2VuZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzODUtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01MzkzPXN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU0MDM6XFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA0LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI4OjU4LjYyNzk2ODE1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTcwOTA2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJ1ZmZlciBBY2Nlc3MgRnVuY3Rpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aHJlZSBmdW5jdGlvbnMgbGlzdGVkOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlcyB3aXRoaW4gdGhpcyBjb250ZXh0LiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGV5IGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdmVyaWZ5aW5nIGFjY2VzcyB0byBtZW1vcnkgYnVmZmVycywgYSBjcml0aWNhbCBhc3BlY3Qgb2Ygc3lzdGVtIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkuXG5cbk15IG5leHQgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQncyBhIGtleSBhdHRyaWJ1dGUgdG8gdW5kZXJzdGFuZC4gQmVpbmcgc3RhdGljIHdvdWxkIGluZmx1ZW5jZSBpdHMgc2NvcGUsIGhvdyBpdCdzIGxpbmtlZCwgYW5kIHBvdGVudGlhbGx5IHdoZXJlIGl0IGNhbiBiZSBjYWxsZWQgZnJvbS4gSXTigJlzIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IGl04oCZcyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhpcyBiZWZvcmUgSSBjYW4gZGVsdmUgZGVlcGVyIGludG8gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBsaXN0ZWQgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MDEuODQ1MDYzMDU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDgwMTYzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19idWZmZXJfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLCBcXHUwMDI2YWNjZXNzX2VuZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzODUtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzkyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzkzOnN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzk0LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU0MDM6XFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA0LVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjA5OD1zdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYzMzM6XFx0XFx0ZXJyID0gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgZmFsc2UsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzQtXFx0XFx0XFx0XFx0XFx0ICBtYXhfYWNjZXNzKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NzYxPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODA5LVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgxMDpcXHRcXHRyZXR1cm4gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIDAsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MTEtXFx0XFx0XFx0XFx0XFx0ICAgYWNjZXNzX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyOTowMS45NjU4NzQ3MzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI5MDMyNDQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU3l6a2FsbGVyJ3MgQ292ZXJhZ2Ugb2YgU3RhdGljIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBpc3N1ZSBvZiB0aGVzZSBmdW5jdGlvbnMgYmVpbmcgc3RhdGljIGluaXRpYWxseSBzZWVtZWQgbGlrZSBhIHByb2JsZW0uIEJ1dCwgYWZ0ZXIgYSBtb21lbnQncyBjb25zaWRlcmF0aW9uLCBJIHJlYWxpemUgdGhhdCBpdCBzaG91bGRuJ3QgYWN0dWFsbHkgaGluZGVyIGBzeXprYWxsZXJgJ3MgZWZmZWN0aXZlbmVzcy4gVGhlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudCB3aXRoaW4gdGhlIGtlcm5lbCBpbWFnZSBpdHNlbGYsIHNvIHRoZXkgYXJlLCBpbiBmYWN0LCBhdmFpbGFibGUgZm9yIHRhcmdldGluZy4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgcHJvdmlkZSB0aGVtIGRpcmVjdGx5LlxuXG5UaGVuIEkgcmVjYWxsZWQgdGhhdCBgc3l6a2FsbGVyYCBsZXZlcmFnZXMgYGtjb3ZgLCB3aGljaCBvcGVyYXRlcyBhdCB0aGUgbGV2ZWwgb2YgYmFzaWMgYmxvY2tzIHRvIHRyYWNrIGNvZGUgY292ZXJhZ2UuIEZ1bmN0aW9uIG5hbWVzIGFyZSByZXNvbHZlZCB2aWEgZGVidWcgaW5mb3JtYXRpb24uIFRoZXJlZm9yZSwgYmVpbmcgc3RhdGljIHNob3VsZG4ndCBwcmV2ZW50IHRoZWlyIGV4ZWN1dGlvbiB0cmFja2luZy4gVGhhdCdzIGdvb2QuXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGlzIGFzcGVjdC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIGEga2V5IGNvbmZpZ3VyYXRpb24gdG8gaW52ZXN0aWdhdGUuIElzIHRoYXQgdGhlIG9ubHkgb25lP1xuXG5UaGUgc3BlY2lmaWMgdGVzdCBjYXNlIHdlJ3JlIGNvbnNpZGVyaW5nLCBgcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jYCwgdXRpbGl6ZXMgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgLiBNeSBmb2N1cyBzaG91bGQgc2hpZnQgdG93YXJkcyBkZXRlcm1pbmluZyB3aGljaCBjb25maWd1cmF0aW9ucyBzcGVjaWZpY2FsbHkgZW5hYmxlIHRoaXMgcHJvZ3JhbSB0eXBlLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaG93IGJyb2FkbHkgd2UncmUgZGVhbGluZyB3aXRoIHRoaXMgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MTguMjU2MjA1ODQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzI1MTM1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0PTE4PWRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiB0aGUgZm9vdG5vdGVzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0My0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0NDp8IGBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWBgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cC53K2BgIFsjcmF3dHBdXyAgICAgICAgICB8ICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0NS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00Ni1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00OC1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQqKixcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXFx0XFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFKipcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTA2Mj1lbnVtIGJwZl9wcm9nX3R5cGUge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMLFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3OlxcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODgtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9NjIxNj1zdGF0aWMgaW50IGJ0Zl92YWxpZGF0ZV9wcm9nX2N0eF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtNjI3My1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi9idGYuYzo2Mjc0OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL2J0Zi5jLTYyNzUtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzctXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI4Nzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mzc4LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzc5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVxcdFxcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihidWYsIHVzZXJfdHBfbmFtZSwgc2l6ZW9mKGJ1ZikgLSAxKSBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTc3MjM9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MjktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMDpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzMxLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4Ni0gKlxcdFxcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDozODc6ICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODgtICpcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwODc6XFx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BULFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cXHRcXHQ9IFxcXCJjZ3JvdXBfc3lzY3RsXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZVxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXFx0XFx0PSBcXFwiY2dyb3VwX3NvY2tvcHRcXFwiLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMxLVxcdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgICAgICAgICAgXFxcImJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXFxcIiB9LFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMjpcXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIgfSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzMtXFx0eyBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVCwgICAgICAgICAgICAgICBcXFwiX19za19idWZmXFxcIiB9LFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTUzPXN0YXRpYyBib29sIG5lZWRfZnVuY19hcmdfdHlwZV9maXh1cChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzIwOC1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MjA5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMTAtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jPTEwMz1zdGF0aWMgaW50IHByb2JlX3Byb2dfbG9hZChlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc3LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYzoxNzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3OS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfTFdUX1NFRzZMT0NBTDpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYz03PXN0YXRpYyB2b2lkIGNoZWNrX25iZF9hdHRhY2hfcmVqZWN0KGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMTctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jOjE4OlxcdGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jLTE5LVxcdFxcdFxcdCAgICAgICBwcm9ncmFtLCBwcm9nX2xlbiwgXFx1MDAyNm9wdHMpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM9OD12b2lkIHNlcmlhbF90ZXN0X3Jhd190cF93cml0YWJsZV90ZXN0X3J1bih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM6Mjc6XFx0aW50IGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjgtXFx0XFx0XFx0XFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MjMuMjI4NzM1OTE2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwNzg2Mjc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgQlBGIFByb2dyYW0gVHlwZSBBdmFpbGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIGluaXRpYWxseSB0aG91Z2h0IGBDT05GSUdfQlBGX1NZU0NBTExgIHdvdWxkIGJlIHRoZSBkZXRlcm1pbmluZyBmYWN0b3IgaGVyZS4gQnV0IGhhbmcgb24sIGl0IGp1c3QgY2xpY2tlZCB0aGF0IGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYCBpcyB0aWVkIHRvIGBDT05GSUdfQlBGX0VWRU5UU2AuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbiBJIG5lZWQgdG8gdmVyaWZ5LiBMZXQgbWUganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciBtYXliZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCDigJMgdGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGxvZ2ljIHRoYXQgZ292ZXJucyB0aGUgYXZhaWxhYmlsaXR5IG9mIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5LCBhbmQgdGhvc2UgZmlsZXMgc2hvdWxkIHByb3ZpZGUgdGhlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcyNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjI2LjkzNjYwMjgyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxNzczNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz02MjE2PXN0YXRpYyBpbnQgYnRmX3ZhbGlkYXRlX3Byb2dfY3R4X3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MjczLVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG5rZXJuZWwvYnBmL2J0Zi5jOjYyNzQ6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvYnRmLmMtNjI3NS1cXHRcXHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9Mjg3MT1zdGF0aWMgYm9vbCBpc19wZXJmbW9uX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjg3Ny1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mjg3ODpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjg3OS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTQzNTI9c3RhdGljIGludCBicGZfcmF3X3RwX2xpbmtfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzNzgtXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzNzk6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzODAtXFx0XFx0aWYgKHN0cm5jcHlfZnJvbV91c2VyKGJ1ZiwgdXNlcl90cF9uYW1lLCBzaXplb2YoYnVmKSAtIDEpIFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzcyMz1zdGF0aWMgYm9vbCBpc190cmFjaW5nX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzcyOS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzMwOlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MzEtXFx0XFx0cmV0dXJuIHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjI3LjUxODM5MzY4NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQyMzI4NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBSYXcgVHJhY2Vwb2ludCBXcml0ZWFibGUgSGFuZGxpbmcqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAgaXMgaGFuZGxlZC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGp1bXAgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciwgc28gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBhbmQgYXNzb2NpYXRlZCBsb2dpYy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhhdCBmaWxlIGZvciBhbnkgY29kZSBzZWN0aW9ucyByZWxhdGVkIHRvIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBmdW5jdGlvbiBjYWxscywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgYW55IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc3Vycm91bmRpbmcgdGhpcyBwYXJ0aWN1bGFyIEJQRiBwcm9ncmFtIHR5cGUuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIGludG8gdGhlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgd2FudCB0byB1bmNvdmVyIGhvdyB0aGUgcmF3IHRyYWNlcG9pbnQgd3JpdGVhYmxlIHByb2dyYW1zIGFjdHVhbGx5IGludGVyYWN0IHdpdGggdGhlIHRyYWNlcG9pbnRzIGFuZCB3aGF0IHNwZWNpZmljIGNhcGFiaWxpdGllcyB0aGV5IGdyYW50LiBJdOKAmXMgYWxzbyBpbXBvcnRhbnQgdG8gaWRlbnRpZnkgYW55IGNvbnN0cmFpbnRzIG9yIGxpbWl0YXRpb25zIHRoYXQgYXJlIGltcG9zZWQgb24gaXRzIHVzZS4gSSBleHBlY3QgdG8gc2VlIHRoZSBrZXkgZWxlbWVudHMgZm9yIHRoaXMgcHJvZ3JhbSB0eXBlLCBsaWtlIGl0cyBwcm9ncmFtIGxvYWQgYW5kIGV4ZWN1dGlvbiBwYXRocywgYW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gaGFuZGxpbmcgYW5kIGJ1ZmZlcmluZyBkYXRhLiBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIHdyaXRhYmxlIHBhcnQgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU4MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjMxLjY2MDczMDczNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MjM3ODIzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjMxLjgxNTk3OTc4OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTYzNTI0ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgb2YgdGhlIHRob3VnaHQgcHJvY2VzcyBkZXNjcmliZWQ6XG5cbioqRGVlcCBEaXZlIGludG8gYGJwZl9wcm9nX3R5cGVzYCBXaXRoaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgQlBGIHByb2dyYW0gdHlwZXMuIE15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRvIHN0YXJ0IGRpcmVjdGx5IHdpdGggdGhlIHNvdXJjZS4gTGV0J3MgaGVhZCBzdHJhaWdodCB0byBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBicGZfcHJvZ190eXBlc2AuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIHR5cGVzIGFyZSBkZWZpbmVkLCBob3cgdGhleSdyZSB1c2VkIGluIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uIEknbSBsb29raW5nIGZvciB0aGUgY2Fub25pY2FsIGRlZmluaXRpb24sIHRoZSBsaW5rYWdlIGJldHdlZW4gdXNlci1zcGFjZSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCB0aGVzZSBwcm9ncmFtIHR5cGVzLiBJdCdzIGxpa2VseSB0aGF0IEknbGwgZmluZCB0aGUgc3RydWN0dXJlcyB0aGF0IGdvdmVybiB0aGUgdmVyaWZpZXIncyBpbnB1dC4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCB0aGUgcmVzdHJpY3Rpb25zIGFuZCBjYXBhYmlsaXRpZXMgb2YgZGlmZmVyZW50IEJQRiBwcm9ncmFtIGNsYXNzZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBjb250cm9sbGluZyB0aGUgcHJvZ3JhbSdzIGxpZmVjeWNsZSwgdHlwZSB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgYWNjZXNzLiBUaGlzIGlzIGdyb3VuZCB6ZXJvIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MzYuOTc5NTA4NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzU3NDcxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfcHJvZ190eXBlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuYz0yMzA1PXN0YXRpYyBpbnQgbWFwX2ZyZWV6ZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIzMzktXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MjM0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyAqIGNvbnN0IGJwZl9wcm9nX3R5cGVzW10gPSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM0MS0jZGVmaW5lIEJQRl9QUk9HX1RZUEUoX2lkLCBfbmFtZSwgcHJvZ19jdHhfdHlwZSwga2Vybl9jdHhfdHlwZSkgXFxcXFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MjM1MT1zdGF0aWMgaW50IGZpbmRfcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMzU0LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTU6XFx0aWYgKHR5cGUgXFx1MDAzZT0gQVJSQVlfU0laRShicGZfcHJvZ190eXBlcykpXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM1Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMzU3OlxcdHR5cGUgPSBhcnJheV9pbmRleF9ub3NwZWModHlwZSwgQVJSQVlfU0laRShicGZfcHJvZ190eXBlcykpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIzNTg6XFx0b3BzID0gYnBmX3Byb2dfdHlwZXNbdHlwZV07XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjM1OS1cXHRpZiAoIW9wcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6Mjk6MzcuNTEzMDkxMjE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTQ1MjAyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzOlxuXG4qKkFuYWx5emluZyB0aGUgQlBGIFByb2dyYW0gVHlwZSBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBCUEYgcHJvZ3JhbSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX3Byb2dfdHlwZXNgIGFycmF5LiBJdCBsb29rcyBsaWtlIHRoZSBgQlBGX1BST0dfVFlQRWAgbWFjcm8gaXMgdGhlIGtleSBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYGluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmhgLiBJIHNlZSB0aGF0IGl0IGluY2x1ZGVzIGEgYEJQRl9QUk9HX1RZUEVgIGRlZmluaXRpb24gZm9yIGBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFYCwgYW5kIGFsc28gdGhlIG5hbWUgYHJhd190cmFjZXBvaW50X3dyaXRhYmxlYC4gTm93LCBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVgIHByb2dyYW0gdHlwZSBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgaXRzIGV4aXN0ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NjMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyOTo0MC45Mjc2MTUyMTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODkwNzU2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3X3RyYWNlcG9pbnRfd3JpdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9NDU9QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludCxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ2LVxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDc6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCByYXdfdHJhY2Vwb2ludF93cml0YWJsZSxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ4LVxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4NDM9c3RhdGljIGJvb2wgcmF3X3RwX3dyaXRhYmxlX3Byb2dfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLFxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NTUtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU3LVxcdC5nZXRfZnVuY19wcm90byAgPSByYXdfdHBfcHJvZ19mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NjAtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NjE6Y29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyByYXdfdHJhY2Vwb2ludF93cml0YWJsZV9wcm9nX29wcyA9IHtcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2Mi19O1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cXHRcXHQ9IFxcXCJjZ3JvdXBfc3lzY3RsXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZVxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXFx0XFx0PSBcXFwiY2dyb3VwX3NvY2tvcHRcXFwiLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM9OD12b2lkIHNlcmlhbF90ZXN0X3Jhd190cF93cml0YWJsZV90ZXN0X3J1bih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjktXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRyYWNlX29wdHMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jOjMwOlxcdGlmIChDSEVDSyhicGZfZmQgXFx1MDAzYyAwLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIGxvYWRlZFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMzEtXFx0XFx0ICBcXFwiZmFpbGVkOiAlZCBlcnJubyAlZFxcXFxuXFxcIiwgYnBmX2ZkLCBlcnJubykpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYy01MS1cXHRpbnQgdHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihcXFwiYnBmX3Rlc3RfZmluaXNoXFxcIiwgYnBmX2ZkKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYzo1MjpcXHRpZiAoQ0hFQ0sodHBfZmQgXFx1MDAzYyAwLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X3dyaXRhYmxlIG9wZW5lZFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtNTMtXFx0XFx0ICBcXFwiZmFpbGVkOiAlZCBlcnJubyAlZFxcXFxuXFxcIiwgdHBfZmQsIGVycm5vKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYz0xNT1TRUMoXFxcInJhd190cmFjZXBvaW50LndcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYzoxNjpfX2Rlc2NyaXB0aW9uKFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZTogcmVqZWN0IHZhcmlhYmxlIG9mZnNldFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jLTE3LV9fZmFpbHVyZVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jPTUwPVNFQyhcXFwicmF3X3RyYWNlcG9pbnQud1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jOjUxOl9fZGVzY3JpcHRpb24oXFxcInJhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmMtNTItX19mYWlsdXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjQzLjgxNjY5NzUyMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTcxNTU0MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgaW1tZWRpYXRlbHkgc2lnbmFscyBzb21ldGhpbmcgaW50ZXJlc3Rpbmcg4oCTIGl0J3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBCUEYgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSwgbGlrZWx5IGRlYWxpbmcgd2l0aCBob3cgd2UgdmVyaWZ5IGFuZCBtYW5hZ2Ugd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcywgd2hhdCdzICplbmFibGluZyogdGhpcyBjb2RlIHBhdGg/IFdoZXJlIGRvZXMgdGhpcyBmaXQgaW50byB0aGUgYnJvYWRlciBzeXN0ZW0gY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB0aGF0IGNvbnRyb2wgd2hldGhlciBvciBub3QgdGhpcyBjb2RlIHdpbGwgZXZlbiBiZSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyB2aXRhbC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBmcmFnbWVudHMgdGhhdCByZWZlcmVuY2UgdGhhdCBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYCBmaWxlLiBUaGlzIGlzIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRoZSBCUEYgdHJhY2Vwb2ludCBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjQ2Ljk4ODI1NTkwOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMzcwODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL01ha2VmaWxlPTU0PUtDT1ZfSU5TVFJVTUVOVF90cmFjZV9pcnFzb2ZmLm8gOj0gblxcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01NS1cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6NTY6Q0ZMQUdTX2JwZl90cmFjZS5vIDo9IC1JJChzcmMpXFxua2VybmVsL3RyYWNlL01ha2VmaWxlLTU3LVxcbi0tXFxua2VybmVsL3RyYWNlL01ha2VmaWxlPTEwOT1vYmotJChDT05GSUdfVVNFUl9FVkVOVFMpICs9IHRyYWNlX2V2ZW50c191c2VyLm9cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6MTEwOm9iai0kKENPTkZJR19CUEZfRVZFTlRTKSArPSBicGZfdHJhY2Uub1xcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS0xMTEtb2JqLSQoQ09ORklHX0tQUk9CRV9FVkVOVFMpICs9IHRyYWNlX2twcm9iZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI5OjQ3LjEwODYzNTY1NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDQwNjU0Nzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBsaWtlIGl0IHJlcXVpcmVzIGBDT05GSUdfQlBGX0VWRU5UU2AuIEhhbmcgb24sIHdhc24ndCBgX19jaGVja19idWZmZXJfYWNjZXNzYCBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBhbmQgdGhhdCdzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkPyBSaWdodCwgdGhlIHBhdGNoICpkb2VzKiBtb2RpZnkgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEFuZCB0aGUgdGVzdCBjYXNlIHVzZXMgYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgLiBUaGVyZWZvcmUsIGBDT05GSUdfQlBGX1NZU0NBTExgIHNlZW1zIG5lY2Vzc2FyeS4gVG8gYmUgc2FmZSwgbGV0J3MgYWxzbyBlbmFibGUgYENPTkZJR19CUEZfRVZFTlRTYC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCdzIHZlcmlmeSBpZiBgX19jaGVja19idWZmZXJfYWNjZXNzYCBpcyBjYWxsZWQgYnkgb3RoZXIgcHJvZ3JhbSB0eXBlcy4gQWgsIHllcywgaXQncyBjYWxsZWQgZnJvbSBgY2hlY2tfbWVtX2FjY2Vzc2AgYW5kIGBjaGVja19oZWxwZXJfbWVtX2FjY2Vzc2AuIEFuZCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgY2FsbHMgaXQgdmlhIGBjaGVja19tZW1fYWNjZXNzYCB3aGVuIGBQVFJfVE9fVFBfQlVGRkVSYCBpcyB1c2VkLiBTbywgdGhpcyBjaGFuZ2UgcG90ZW50aWFsbHkgYWZmZWN0cyBxdWl0ZSBhIGZldyBCUEYgcHJvZ3JhbSB0eXBlcy5cblxuU28sIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgIHN1ZmZpY2llbnQ/IFllcywgYnV0IHNpbmNlIHRoZSB0ZXN0IHVzZXMgcmF3IHRyYWNlcG9pbnRzLCBlbmFibGluZyBgQ09ORklHX0JQRl9FVkVOVFNgIHdvbid0IGh1cnQuXG5cblRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQgYXJlOiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLlxuXG5IbW0sIHdhaXQuIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGlzIHN0YXRpYy4gU3l6a2FsbGVyIGNhbiBmdXp6IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSdyZSBpbiB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoZSBjb21waWxlciBpbmxpbmVzIHRoaXMgZnVuY3Rpb24uIEl0J3Mgc3RhdGljLCBidXQgbm90IG1hcmtlZCBhcyBpbmxpbmUsIHNvIHRoZSBjb21waWxlciAqbWlnaHQqIGlubGluZSBpdC4gSWYgaXQncyBpbmxpbmVkLCBTeXprYWxsZXIgbWlnaHQgbm90IGZpbmQgaXQgYnkgbmFtZSwgYnV0IHRoZSBjb2RlICp3aWxsKiBzdGlsbCBiZSBmdXp6ZWQuIEFkZGluZyBgY2hlY2tfbWVtX2FjY2Vzc2AgYW5kIGBjaGVja19oZWxwZXJfbWVtX2FjY2Vzc2Agd291bGQgYmUgKnNhZmVyKiwgYnV0IHRob3NlIGFyZSB2ZXJ5IGhvdCBwYXRocyBpbiB0aGUgdmVyaWZpZXIuIEFjdHVhbGx5LCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCBhcmUgcHJvYmFibHkgZ29vZCBlbm91Z2ggdG8gdGFyZ2V0LlxuXG5Pa2F5LCBsZXQncyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmOlxuXG5gYGBjXG5zdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tXHRcdFx0XHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXG4rXHRcdFx0XHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUsXG4rXHRcdFx0XHQgdTMyICphY2Nlc3NfZW5kKVxuYGBgXG5cbll1cCwgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHBhcmFtZXRlciBoYXMgYmVlbiBhZGRlZC5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIGZpbmFsIHJlc3VsdHM6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AsIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCwgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgXG4qICAgKipFbmFibGVDb25maWdzKio6IGBCUEZfU1lTQ0FMTGAsIGBCUEZfRVZFTlRTYFxuKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBpbmNyZWFzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGludHJvZHVjaW5nIGV4cGxvaXRhYmxlIGJ1Z3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDMwLCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMTozMDowMS41MTUxODY0MDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU0NDY1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19jaGVja19idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja190cF9idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja19idWZmZXJfYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIHZhcmlhYmxlIG9mZnNldHMgYW5kIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgdmFyaWFibGUgb2Zmc2V0cyBhbmQgcHJldmVudCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[1] Phase: Succeeded StartedAt: 2026-07-08 21:30:31 +0000 UTC FinishedAt: 2026-07-08 21:30:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 21:30:31 +0000 UTC FinishedAt: 2026-07-08 21:30:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2] Phase: Succeeded StartedAt: 2026-07-08 21:30:31 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 21:30:31 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 21:30:31 +0000 UTC FinishedAt: 2026-07-08 21:32:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 21:30:31 +0000 UTC FinishedAt: 2026-07-08 21:31:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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-workflowqs9rh/series-workflowqs9rh-convert-artifact-369567638/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 21:32:25 +0000 UTC FinishedAt: 2026-07-08 22:03:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 21:32:25 +0000 UTC FinishedAt: 2026-07-08 22:03:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4fddca65-6b4b-4723-82af-484e6770c313,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-workflowqs9rh/series-workflowqs9rh-convert-artifact-369567638/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": "cb2e816a-3508-40ba-bae1-728bac3d38a1", "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-workflowqs9rh/series-workflowqs9rh-build-action-1055020844/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 21:32:25 +0000 UTC FinishedAt: 2026-07-08 22:03:38 +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:*4fddca65-6b4b-4723-82af-484e6770c313,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-workflowqs9rh/series-workflowqs9rh-convert-artifact-369567638/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": "cb2e816a-3508-40ba-bae1-728bac3d38a1", "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-workflowqs9rh/series-workflowqs9rh-build-action-1055020844/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:03:48 +0000 UTC FinishedAt: 2026-07-08 22:03:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:03:48 +0000 UTC FinishedAt: 2026-07-08 22:03:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:03:48 +0000 UTC FinishedAt: 2026-07-08 22:04:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:03:48 +0000 UTC FinishedAt: 2026-07-08 22:04:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-workflowqs9rh/series-workflowqs9rh-convert-artifact-966301737/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:04:26 +0000 UTC FinishedAt: 2026-07-08 22:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:04:26 +0000 UTC FinishedAt: 2026-07-08 22:06:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cb2e816a-3508-40ba-bae1-728bac3d38a1,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-workflowqs9rh/series-workflowqs9rh-build-action-1055020844/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-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:06:15 +0000 UTC FinishedAt: 2026-07-08 22:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:06:15 +0000 UTC FinishedAt: 2026-07-08 22:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:06:15 +0000 UTC FinishedAt: 2026-07-08 22:41:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:06:15 +0000 UTC FinishedAt: 2026-07-08 22:41:35 +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:*4fddca65-6b4b-4723-82af-484e6770c313,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-workflowqs9rh/series-workflowqs9rh-convert-artifact-966301737/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": "fed13840-22c0-4a95-8707-975155eb33ba", "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-workflowqs9rh/series-workflowqs9rh-build-action-2822757637/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:06:15 +0000 UTC FinishedAt: 2026-07-08 22:41:25 +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:*4fddca65-6b4b-4723-82af-484e6770c313,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-workflowqs9rh/series-workflowqs9rh-convert-artifact-966301737/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": "fed13840-22c0-4a95-8707-975155eb33ba", "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-workflowqs9rh/series-workflowqs9rh-build-action-2822757637/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:41:35 +0000 UTC FinishedAt: 2026-07-08 22:41:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:41:35 +0000 UTC FinishedAt: 2026-07-08 22:41:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:41:35 +0000 UTC FinishedAt: 2026-07-08 22:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:41:35 +0000 UTC FinishedAt: 2026-07-08 22:43:19 +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:*fed13840-22c0-4a95-8707-975155eb33ba,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-workflowqs9rh/series-workflowqs9rh-build-action-2822757637/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-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +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_buffer_access","check_tp_buffer_access","check_buffer_access"],"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:*cb2e816a-3508-40ba-bae1-728bac3d38a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fed13840-22c0-4a95-8707-975155eb33ba,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-workflowqs9rh/series-workflowqs9rh-build-action-1055020844/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-workflowqs9rh/series-workflowqs9rh-build-action-2822757637/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-08 22:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-08 22:43:36 +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_buffer_access","check_tp_buffer_access","check_buffer_access"],"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-workflowqs9rh/series-workflowqs9rh-convert-artifact-541238398/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-08 22:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-08 22:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:29 +0000 UTC FinishedAt: 2026-07-08 22:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:39 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqs9rh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"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_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"d01888d9-43ea-434e-9793-1495e9758847","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-08 22:43:39 +0000 UTC FinishedAt: 2026-07-09 01:46:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cb2e816a-3508-40ba-bae1-728bac3d38a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fed13840-22c0-4a95-8707-975155eb33ba,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-workflowqs9rh/series-workflowqs9rh-build-action-1055020844/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-workflowqs9rh/series-workflowqs9rh-build-action-2822757637/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-workflowqs9rh/series-workflowqs9rh-convert-artifact-541238398/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,}