Name: series-workflowmrh2c Phase: Succeeded StartedAt: 2026-08-01 08:41:47 +0000 UTC FinishedAt: 2026-08-01 12:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[0] Phase: Succeeded StartedAt: 2026-08-01 08:41:47 +0000 UTC FinishedAt: 2026-08-01 08:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 08:41:47 +0000 UTC FinishedAt: 2026-08-01 08:43:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "b116cf3f-8dad-4ca6-8db4-a11d8596915e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_iter_tcp_seq_start", "bpf_iter_tcp_seq_next" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YmI5Zjg2NzI0ZmRmNDc2Mjg0YzBhN2FmMjZjNTUxMzNhYmUzMWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuaW5kZXggMjA5ZWY3NTIyNTA4Zi4uMTAzNDc1N2E1MzI4MCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbkBAIC0zMDczLDI0ICYjNDM7MzA3MywyNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcbiB7XG4gXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVx1MDAzZXByaXZhdGU7XG4gXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcbi1cdHVuc2lnbmVkIGludCBleHBlY3RlZCA9IDE7XG4tXHRzdHJ1Y3Qgc29jayAqc2s7XG4tXG4tXHRzb2NrX2hvbGQoKnN0YXJ0X3NrKTtcbi1cdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2smIzQzOyYjNDM7XS5zayA9ICpzdGFydF9zaztcbiYjNDM7XHRzdHJ1Y3Qgc29jayAqc2sgPSAqc3RhcnRfc2s7XG4mIzQzO1x0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMDtcbiBcbi1cdHNrID0gc2tfbnVsbHNfbmV4dCgqc3RhcnRfc2spO1xuIFx0KnN0YXJ0X3NrID0gTlVMTDtcbiBcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcbi1cdFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xuLVx0XHRcdGlmIChpdGVyLVx1MDAzZWVuZF9zayBcdTAwM2MgaXRlci1cdTAwM2VtYXhfc2spIHtcbi1cdFx0XHRcdHNvY2tfaG9sZChzayk7XG4tXHRcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzaztcbi1cdFx0XHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcbi1cdFx0XHRcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xuLVx0XHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4tXHRcdFx0fVxuLVx0XHRcdGV4cGVjdGVkJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGV4cGVjdGVkJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChpdGVyLVx1MDAzZWVuZF9zayBcdTAwM2MgaXRlci1cdTAwM2VtYXhfc2spIHtcbiYjNDM7XHRcdFx0LyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDBcbiYjNDM7XHRcdFx0ICogYW5kIHJlZmNvdW50X3NldCgpcyBpdCBhZnRlciB0aGUgYnVja2V0IGxvY2sgZHJvcHMuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZzay1cdTAwM2Vza19yZWZjbnQpKSlcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdFx0aXRlci1cdTAwM2ViYXRjaFtpdGVyLVx1MDAzZWVuZF9zayYjNDM7JiM0MztdLnNrID0gc2s7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcbiYjNDM7XHRcdFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXG4mIzQzO1x0XHRcdCpzdGFydF9zayA9IHNrO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMzEyOCwxMiAmIzQzOzMxMjgsMTMgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MzthZ2FpbjpcbiBcdHNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpO1xuIFx0aWYgKCFzaylcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbiBcbiBcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbi1cdGlmIChsaWtlbHkoaXRlci1cdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxuJiM0MztcdGlmIChsaWtlbHkoIXNrKSlcbiBcdFx0Z290byBkb25lO1xuIFxuIFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xuQEAgLTMxNDksNyAmIzQzOzMxNTAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbiBcbiBcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbi1cdGlmIChsaWtlbHkoaXRlci1cdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxuJiM0MztcdGlmIChsaWtlbHkoIXNrKSlcbiBcdFx0Z290byBkb25lO1xuIFxuIFx0LyogQmF0Y2ggc2l6ZSB3YXMgc3RpbGwgdG9vIHNtYWxsLiBIb2xkIG9udG8gdGhlIGxvY2sgd2hpbGUgd2UgdHJ5XG5AQCAtMzE2MiwxMCAmIzQzOzMxNjMsMTQgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4tXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4tXHRXQVJOX09OX09OQ0UoaXRlci1cdTAwM2VlbmRfc2sgIT0gZXhwZWN0ZWQpO1xuJiM0MztcdGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4mIzQzO1x0V0FSTl9PTl9PTkNFKHNrKTtcbiBkb25lOlxuIFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuJiM0MztcdFx0JiM0MzsmIzQzO2l0ZXItXHUwMDNlc3RhdGUuYnVja2V0O1xuJiM0MztcdFx0Z290byBhZ2FpbjtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YmI5Zjg2NzI0ZmRmNDc2Mjg0YzBhN2FmMjZjNTUxMzNhYmUzMWRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCmluZGV4IDIwOWVmNzUyMjUwOGYuLjEwMzQ3NTdhNTMyODAgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMzA3MywyNCAmIzQzOzMwNzMsMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEsCiB7CiAJc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS0mZ3Q7cHJpdmF0ZTsKIAlzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTsKLQl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAxOwotCXN0cnVjdCBzb2NrICpzazsKLQotCXNvY2tfaG9sZCgqc3RhcnRfc2spOwotCWl0ZXItJmd0O2JhdGNoW2l0ZXItJmd0O2VuZF9zayYjNDM7JiM0MztdLnNrID0gKnN0YXJ0X3NrOwomIzQzOwlzdHJ1Y3Qgc29jayAqc2sgPSAqc3RhcnRfc2s7CiYjNDM7CXVuc2lnbmVkIGludCBleHBlY3RlZCA9IDA7CiAKLQlzayA9IHNrX251bGxzX25leHQoKnN0YXJ0X3NrKTsKIAkqc3RhcnRfc2sgPSBOVUxMOwogCXNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHsKLQkJaWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkgewotCQkJaWYgKGl0ZXItJmd0O2VuZF9zayAmbHQ7IGl0ZXItJmd0O21heF9zaykgewotCQkJCXNvY2tfaG9sZChzayk7Ci0JCQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKLQkJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewotCQkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwotCQkJCSpzdGFydF9zayA9IHNrOwotCQkJfQotCQkJZXhwZWN0ZWQmIzQzOyYjNDM7OwomIzQzOwkJaWYgKCFzZXFfc2tfbWF0Y2goc2VxLCBzaykpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlleHBlY3RlZCYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAoaXRlci0mZ3Q7ZW5kX3NrICZsdDsgaXRlci0mZ3Q7bWF4X3NrKSB7CiYjNDM7CQkJLyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDAKJiM0MzsJCQkgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybygmYW1wO3NrLSZndDtza19yZWZjbnQpKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKJiM0MzsJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewomIzQzOwkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwomIzQzOwkJCSpzdGFydF9zayA9IHNrOwogCQl9CiAJfQogCkBAIC0zMTI4LDEyICYjNDM7MzEyOCwxMyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSkKIAlzdHJ1Y3Qgc29jayAqc2s7CiAJaW50IGVycjsKIAomIzQzO2FnYWluOgogCXNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpOwogCWlmICghc2spCiAJCXJldHVybiBOVUxMOyAvKiBEb25lICovCiAKIAlleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCAmYW1wO3NrKTsKLQlpZiAobGlrZWx5KGl0ZXItJmd0O2VuZF9zayA9PSBleHBlY3RlZCkpCiYjNDM7CWlmIChsaWtlbHkoIXNrKSkKIAkJZ290byBkb25lOwogCiAJLyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqLwpAQCAtMzE0OSw3ICYjNDM7MzE1MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKQogCQlyZXR1cm4gTlVMTDsgLyogRG9uZSAqLwogCiAJZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgJmFtcDtzayk7Ci0JaWYgKGxpa2VseShpdGVyLSZndDtlbmRfc2sgPT0gZXhwZWN0ZWQpKQomIzQzOwlpZiAobGlrZWx5KCFzaykpCiAJCWdvdG8gZG9uZTsKIAogCS8qIEJhdGNoIHNpemUgd2FzIHN0aWxsIHRvbyBzbWFsbC4gSG9sZCBvbnRvIHRoZSBsb2NrIHdoaWxlIHdlIHRyeQpAQCAtMzE2MiwxMCAmIzQzOzMxNjMsMTQgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpCiAJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCi0JZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgJmFtcDtzayk7Ci0JV0FSTl9PTl9PTkNFKGl0ZXItJmd0O2VuZF9zayAhPSBleHBlY3RlZCk7CiYjNDM7CWJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCAmYW1wO3NrKTsKJiM0MzsJV0FSTl9PTl9PTkNFKHNrKTsKIGRvbmU6CiAJYnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTsKJiM0MzsJaWYgKHVubGlrZWx5KCFpdGVyLSZndDtlbmRfc2spKSB7CiYjNDM7CQkmIzQzOyYjNDM7aXRlci0mZ3Q7c3RhdGUuYnVja2V0OwomIzQzOwkJZ290byBhZ2FpbjsKJiM0MzsJfQogCXJldHVybiBpdGVyLSZndDtiYXRjaFswXS5zazsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODgxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBCUEYgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L3RjcF9pcHY0LmNgLiBTZWVtcyBsaWtlIGl04oCZcyBkZWFsaW5nIHdpdGggYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgYW5kIGBicGZfaXRlcl90Y3BfYmF0Y2hgLiBBaCwgcmlnaHQsIHRoaXMgaXMgdGhlIG9uZSB0aGF0IHdhcyBjYXVzaW5nIGlzc3VlcyB3aXRoIGhvdyBgcmVxc2tfcXVldWVfaGFzaF9yZXEoKWAgd2FzIGludGVyYWN0aW5nIHdpdGggcmVmZXJlbmNlIGNvdW50cy4gVGhlIGNvcmUgb2YgaXQgYXBwZWFycyB0byBiZSBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbi4gVGhlIHByZXZpb3VzIGNvZGUgd2FzIHBvdGVudGlhbGx5IGluc2VydGluZyBzb21ldGhpbmcgaW50byB0aGUgcXVldWUgd2l0aCBhIHplcm8gcmVmZXJlbmNlIGNvdW50IGFuZCB0aGVuIGluY3JlbWVudGluZyBpdCBhZnRlciBkcm9wcGluZyB0aGUgYnVja2V0IGxvY2suIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZywgYW5kIHRoZXkmIzM5O3ZlIGFkZHJlc3NlZCBpdCB1c2luZyBgcmVmY291bnRfaW5jX25vdF96ZXJvKCZhbXA7c2stJmd0O3NrX3JlZmNudClgIHJhdGhlciB0aGFuIGBzb2NrX2hvbGQoc2spYC4gQSBzYWZlciBhcHByb2FjaCwgaW5kZWVkLiBBbmQgdGhlbiB0aGVyZSYjMzk7cyBhIGxvZ2ljIGFkanVzdG1lbnQgaW4gYGJwZl9pdGVyX3RjcF9iYXRjaGAgdG8gcmUtbG9vcCBpZiBgaXRlci0mZ3Q7ZW5kX3NrYCBpcyB6ZXJvLiBQcm9iYWJseSBhIGNvbnNlcXVlbmNlIG9mIHRoYXQgcmVmY291bnQgY2hhbmdlLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpZiB0aGlzIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFNpbmNlIHRoaXMgYWxsIGZhbGxzIHVuZGVyIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCwgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGNoZWNrIGlzIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25kaXRpb25hbCBvbiBhbnkgQlBGLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBmZWF0dXJlIGlzIGJ1aWx0IGluLCBvciBwZXJoYXBzIGV2ZW4gYSBtb2R1bGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaW4gdGhlIGtlcm5lbCBjb25maWdzIHRvIHNlZSB3aGF0IHRoZSBidWlsZCBydWxlcyBkaWN0YXRlLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIHBhcnQgb2YgdGhlIEJQRiBzdWJzeXN0ZW0sIGJ1dCBiZXR0ZXIgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaXRlcl90Y3BfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9MzExMj1zdGF0aWMgdm9pZCBicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjMtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxMjQ6c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjUte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE3Nz1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTgyLVx0aWYgKCpwb3MpXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxODM6XHRcdHJldHVybiBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE4NC1cbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxODg9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjA5LVx0ZWxzZVxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjEwOlx0XHRzayA9IGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgY29kZSBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzLiBUaGF0IG1lYW5zIGRpdmluZyBpbnRvIHRoZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHF1aWNrbHkgc2Nhbm5pbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGAjaWZkZWZgIGRpcmVjdGl2ZXMsIHRoZSBgI2lmbmRlZmAgZGlyZWN0aXZlcywgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGAjZWxzZWAgYW5kIGAjZW5kaWZgIGJsb2Nrcy4gVGhvc2UgYXJlIHRoZSBrZXlzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsb3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGVmaW5lcyBhcmUgY29udHJvbGxpbmcgd2hpY2ggY29kZSBwYXRocyBhcmUgYWN0aXZlLiBJZGVudGlmeWluZyB0aG9zZSBkZWZpbmVzIHdpbGwgc2hvdyB0aGUgdmFyaW91cyB3YXlzIHRoaXMgY29kZSBjYW4gYmUgY29uZmlndXJlZCwgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCBlbnZpcm9ubWVudCwgYW5kIGFsbG93IG1lIHRvIHF1aWNrbHkgYW5hbHl6ZSB0aGUgbG9naWMgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHX0JQRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0yODUwPXN0YXRpYyBpbnQgdGNwNF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzQtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjI4NzU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc2LXVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtIHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMyODU9c3RhdGljIHVuc2lnbmVkIHNob3J0IHNlcV9maWxlX2ZhbWlseShjb25zdCBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODgtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODk6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkwLVx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMzQwPXN0cnVjdCBwcm90byB0Y3BfcHJvdCA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjQtXHQucHV0X3BvcnRcdFx0PSBpbmV0X3B1dF9wb3J0LFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMzY1OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Ni1cdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB0Y3BfYnBmX3VwZGF0ZV9wcm90byxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBJdGVyYXRpb24gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBCUEYgY29kZSBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBndWFyZGVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBHb29kIHRvIGtub3c7IHRoYXQmIzM5O3MgdGhlIGZpcnN0IGZpbHRlci4gTm93LCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IHNlZW0gdG8gYmUgbW9kaWZpZWQgYXJlIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYC4KCkxldCBtZSBxdWlja2x5IGNvbmZpcm0gaWYgdGhlc2UgYXJlIHN0YXRpYy4gWWVzLCBib3RoIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhcmUgaW5kZWVkIHN0YXRpYyBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhleSBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRyYWNpbmcgdGhlaXIgY2FsbGluZyBwYXRocyB0byBhbiBleHRlbnQuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IHdoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbCB0aGVzZSBzdGF0aWMgQlBGIGl0ZXJhdG9ycz8gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIGFjdHVhbGx5IHRyaWdnZXJlZCBhbmQgaG93IHRoZSBpdGVyYXRvcnMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBub24tc3RhdGljIGNhbGxlcnMgd2lsbCByZWFsbHkgc2hvdyBtZSB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTI0PXN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3Ni1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE3NzpzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzgte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI3OD1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9pdGVyX3RjcF9zZXFfb3BzID0ge1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVx0LnNob3dcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODA6XHQuc3RhcnRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0LFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjgxLVx0Lm5leHRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX25leHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBicGZfaXRlcl90Y3Bfc2VxX29wc2AgVXNhZ2UqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBicGZfaXRlcl90Y3Bfc2VxX29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGFjdHVhbGx5ICp1c2VkKj8gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8mIzM0OyBJIGtub3cgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQsIGJ1dCB1bmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBhcmNoaXRlY3R1cmUgaXMga2V5IHRvIGl0cyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdHJhY2UgaXRzIHV0aWxpemF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBCUEYgZWNvc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9pdGVyX3RjcF9zZXFfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jPTMyNjE9c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3NlcV9zdG9wKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI3Ny1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzI3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9pdGVyX3RjcF9zZXFfb3BzID0ge1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVx0LnNob3dcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg1PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkwLVx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyOTE6XHRpZiAoc2VxLVx1MDAzZW9wID09IFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkyLVx0XHRyZXR1cm4gQUZfVU5TUEVDO1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzYwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9pdGVyX3NlcV9pbmZvIHRjcF9zZXFfaW5mbyA9IHtcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYwMjpcdC5zZXFfb3BzXHRcdD0gXHUwMDI2YnBmX2l0ZXJfdGNwX3NlcV9vcHMsXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDMtXHQuaW5pdF9zZXFfcHJpdmF0ZVx0PSBicGZfaXRlcl9pbml0X3RjcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4KCioqSW52ZXN0aWdhdGluZyBgdGNwX3NlcV9pbmZvYCBVc2FnZSoqCgpBbHJpZ2h0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIGB0Y3Bfc2VxX2luZm9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBKdXN0IHNlZWluZyB0aGUgZGVjbGFyYXRpb24gaXNuJiMzOTt0IGVub3VnaDsgSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyByZWFkLCBtb2RpZmllZCwgYW5kIHBvdGVudGlhbGx5IGZyZWVkLiBUaGlzIGlzIGdvaW5nIHRvIHRlbGwgbWUgaXRzIHB1cnBvc2UgYW5kIGhvdyBjcml0aWNhbCBpdCBpcyB0byB0aGUgVENQIHN0YWNrJiMzOTtzIG9wZXJhdGlvbi4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhvc2UgY3Jvc3MtcmVmZXJlbmNlcyBpbiB0aGUgY29kZS4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9zZXFfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zNTkzPXN0YXRpYyB2b2lkIGJwZl9pdGVyX2ZpbmlfdGNwKHZvaWQgKnByaXZfZGF0YSlcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDAtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM2MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfaXRlcl9zZXFfaW5mbyB0Y3Bfc2VxX2luZm8gPSB7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDItXHQuc2VxX29wc1x0XHQ9IFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzLFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzYyMj1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0Y3BfcmVnX2luZm8gPSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjI5LVx0LmdldF9mdW5jX3Byb3RvXHRcdD0gYnBmX2l0ZXJfdGNwX2dldF9mdW5jX3Byb3RvLFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjMwOlx0LnNlcV9pbmZvXHRcdD0gXHUwMDI2dGNwX3NlcV9pbmZvLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjMxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkludmVzdGlnYXRpbmcgYHRjcF9yZWdfaW5mb2AgVXNhZ2UqKgoKQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGxpY2F0aW9ucyBvZiBgdGNwX3JlZ19pbmZvYC4gV2hlcmUgaXMgdGhpcyBzdHJ1Y3R1cmUgYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHJlZmVyZW5jZXMgdG8gZ2V0IGEgc2Vuc2Ugb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgVENQIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHNvdXJjZSBjb2RlLCBwcm9iYWJseSB1c2luZyBncmVwIG9yIGEgc2ltaWxhciB0b29sLiBLbm93aW5nIHRoZSBjb250ZXh0cyB3aGVyZSBpdCYjMzk7cyBlbXBsb3llZCB3aWxsIHJldmVhbCBpdHMgcHVycG9zZSBhbmQgaG93IGNoYW5nZXMgdG8gaXQgbWlnaHQgcHJvcGFnYXRlIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gVW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgaXMga2V5LiBUaW1lIHRvIGdldCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfcmVnX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9MzYwOT1icGZfaXRlcl90Y3BfZ2V0X2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYyMS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYyMjpzdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0Y3BfcmVnX2luZm8gPSB7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjMtXHQudGFyZ2V0XHRcdFx0PSBcJiMzNDt0Y3BcJiMzNDssXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNjMzPXN0YXRpYyB2b2lkIF9faW5pdCBicGZfaXRlcl9yZWdpc3Rlcih2b2lkKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjM0LXtcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYzNTpcdHRjcF9yZWdfaW5mby5jdHhfYXJnX2luZm9bMF0uYnRmX2lkID0gYnRmX3NvY2tfaWRzW0JURl9TT0NLX1RZUEVfU09DS19DT01NT05dO1xubmV0L2lwdjQvdGNwX2lwdjQuYzozNjM2Olx0aWYgKGJwZl9pdGVyX3JlZ190YXJnZXQoXHUwMDI2dGNwX3JlZ19pbmZvKSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYzNy1cdFx0cHJfd2FybihcJiMzNDtXYXJuaW5nOiBjb3VsZCBub3QgcmVnaXN0ZXIgYnBmIGl0ZXJhdG9yIHRjcFxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NTAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSXRlcmF0b3IgZm9yIFRDUCBTb2NrZXRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBCUEYgaXRlcmF0b3IgZm9yIFRDUCBzb2NrZXRzIGlzIHNldCB1cC4gSXQgbG9va3MgbGlrZSB0aGUgcmVnaXN0cmF0aW9uIGhhcHBlbnMgdGhyb3VnaCBgYnBmX2l0ZXJfcmVnX3RhcmdldCgmYW1wO3RjcF9yZWdfaW5mbylgLiBTdGFuZGFyZCBCUEYgaXRlcmF0b3Igc3R1ZmYsIGludm9rZWQgd2hlbiBhIHVzZXIgcHJvZ3JhbSByZWFkcyBmcm9tIHRoZSBicGZfaXRlciBsaW5rLCBsaWtlbHkgdGhyb3VnaCBhIGBzZXFfZmlsZWAuIFRoZSB0eXBpY2FsIHN5c3RlbSBjYWxscyB3b3VsZCBiZSBgYnBmKClgIHRvIGxvYWQgdGhlIEJQRiBwcm9ncmFtIGFuZCBjcmVhdGUgdGhlIGxpbmssIGFuZCB0aGVuIGEgYHJlYWQoKWAgb24gdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGF0IGxpbmsuCgpTaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpY2FsbHkgZGVjbGFyZWQgYW5kIGNhbGxlZCB2aWEgc2VxX2ZpbGUgb3BlcmF0aW9ucywgdGhlIG1vc3QgbG9naWNhbCBlbnRyeSBwb2ludHMgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uIGFyZSB0aGUgc2VxX2ZpbGUgb3BlcmF0aW9ucyB0aGVtc2VsdmVzLiBBbHRlcm5hdGl2ZWx5LCBJIGNvdWxkIHNwZWNpZnkgdGhlIGl0ZXJhdG9yIGZ1bmN0aW9ucyBkaXJlY3RseSBsaWtlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGBicGZfaXRlcl90Y3Bfc2VxX3N0b3BgLCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfc2hvd2AuIEJ1dCBob2xkIG9uLCB3ZXJlbiYjMzk7dCBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAgYW5kIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgIHN0YXRpYz8gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0sIGdpdmVuIHRoYXQgc3l6a2FsbGVyIG1pZ2h0IHN0cnVnZ2xlIHdpdGggc3RhdGljIGZ1bmN0aW9ucy4KCkFoLCBidXQgdGhleSBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyBpbiBgYnBmX2l0ZXJfdGNwX3NlcV9vcHNgLiBUaGF0IG1lYW5zIHRoZXkgc2hvdWxkbiYjMzk7dCBiZSBpbmxpbmVkLiBJZiB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlc29sdmUgdGhlbS4gUmlnaHQsIEkgcmVtZW1iZXIgbm93LCBzeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zIGFzIGxvbmcgYXMgdGhleSBhcmVuJiMzOTt0IGlubGluZWQuIEJldHRlciB0byBiZSBzdXJlLiBUaW1lIHRvIGNoZWNrIGZvciBhbnkgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTI0PXN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3Ni1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE3NzpzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzgte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI3OD1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9pdGVyX3RjcF9zZXFfb3BzID0ge1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVx0LnNob3dcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODA6XHQuc3RhcnRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0LFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjgxLVx0Lm5leHRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX25leHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBCUEYgSXRlcmF0b3IgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyB3aXRoaW4gdGhlIEJQRiBpdGVyYXRvciBmb3IgVENQLiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGUgY29yZSBpc3N1ZSBzdGVtcyBmcm9tIGByZXFza19xdWV1ZV9oYXNoX3JlcSgpYCBhdHRlbXB0aW5nIHRvIGluc2VydCBhbiBlbnRyeSB3aXRoIGEgYHNrX3JlZmNudGAgb2YgemVyby4gVGhpcyBpcyBhIGNsYXNzaWMgY29uY3VycmVuY3kgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiBvciBjcmFzaGVzLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCYjMzk7cyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlLgoKVGhlIGNvbW1pdCBtZW50aW9ucyB0aGUgYENPTkZJR19CUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbiBhcyBiZWluZyBuZWNlc3NhcnkgdG8gcmVwcm9kdWNlIHRoZSBidWcuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYWxzbyBpbmZsdWVuY2UgdGhpcyBidWcmIzM5O3MgYmVoYXZpb3IsIGFuZCBtYWtlIHN1cmUgdGhhdCBhbnkgc3VnZ2VzdGVkIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBhcmUgY29tcGxldGUuIFRoaXMgaXMgdGhlIGtpbmQgb2YgZGV0YWlsIHRoYXQgaXMgY3JpdGljYWwgZm9yIGFueSBkb3duc3RyZWFtIHVzZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jPTI4NTA9c3RhdGljIGludCB0Y3A0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjg3NC1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6Mjg3NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzYtdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI4NT1zdGF0aWMgdW5zaWduZWQgc2hvcnQgc2VxX2ZpbGVfZmFtaWx5KGNvbnN0IHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI4OC1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzI4OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyOTAtXHQvKiBJdGVyYXRlZCBmcm9tIGJwZl9pdGVyLiAgTGV0IHRoZSBicGYgcHJvZyB0byBmaWx0ZXIgaW5zdGVhZC4gKi9cbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzNDA9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2NC1cdC5wdXRfcG9ydFx0XHQ9IGluZXRfcHV0X3BvcnQsXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNjU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY2LVx0LnBzb2NrX3VwZGF0ZV9za19wcm90XHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzE1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEJQRiBJdGVyYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBob21pbmcgaW4gb24gdGhlIEJQRiBzeXN0ZW0gY2FsbCBjb25maWd1cmF0aW9uIOKAkyBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IG9uZSB0byBjaGVjay4gSSBxdWlja2x5IGRvdWJsZS1jaGVja2VkIGBuZXQvaXB2NC9LY29uZmlnYCBqdXN0IHRvIGJlIHN1cmUgdGhlcmUgd2VyZW4mIzM5O3QgYW55IGhpZGRlbiBUQ1AtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYnV0IG9mIGNvdXJzZSwgVENQIGlzIGZ1bmRhbWVudGFsIHRvIExpbnV4LiBgQlBGX1NZU0NBTExgIGlzIGRlZmluaXRlbHkgdGhlIGtleS4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYmVzdCBmb2N1cyBzeW1ib2wgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YC4gSXQmIzM5O3Mgc3RhdGljLCBzbyBteSBmaXJzdCBpbnN0aW5jdCB3YXMgdG8gZmluZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIGhvdyB0aGUgaXRlcmF0aW9uIHdvcmtzOiB0aGUgVkZTIGxheWVyIGNhbGxzIGl0IGluZGlyZWN0bHkgdmlhIGBzZXFfcmVhZGAgLSZndDsgYG0tJmd0O29wLSZndDtzdGFydCgpYC4gQWN0dWFsbHksIHRoaXMgc3RhdGljIGZ1bmN0aW9uIGlzIGxpa2VseSBhIGJldHRlciBzeW1ib2wgdG8gZm9jdXMgb24gaW4gdGhpcyBjYXNlLCByYXRoZXIgdGhhbiBhbnkgY2FsbGVyLgoKVGhlbiBJIGhhZCBhIGV1cmVrYSBtb21lbnQhIFN5emthbGxlciYjMzk7cyBgRm9jdXNTeW1ib2xzYCBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkmIzM5O3JlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZSBhbmQgbm90IGlubGluZWQuIFNpbmNlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHNwZWNpZmljYWxseSBpbiBgYnBmX2l0ZXJfdGNwX3NlcV9vcHMuc3RhcnRgLCBpdCBjYW4mIzM5O3QgYmUgaW5saW5lZC4gVGhpcyBjaGFuZ2VzIHRoaW5ncyEgVGhhdCBtZWFucyBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAsIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgLCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfc3RvcGAgYXJlIGFsbCBpZGVhbCB0YXJnZXRzLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgaW5jbHVkZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFRoZXkmIzM5O3JlIHN0YXRpYywgYnV0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIHRoZXkgKm1pZ2h0KiBub3QgYmUgaW5saW5lZC4gSG9sZCBvbi4uLiBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBpcyBjYWxsZWQgZnJvbSBgYnBmX2l0ZXJfZmlsbF9iYXRjaGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYGJwZl9pdGVyX3RjcF9iYXRjaGAuIFRoYXQgbWVhbnMgSSYjMzk7dmUgZ290IGEgY2hhaW4sIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBpcyB0aGUgcG90ZW50aWFsIHdlYWsgcG9pbnQuIEkgYmV0dGVyIGNoZWNrIGlmIGBicGZfaXRlcl90Y3BfYmF0Y2hgIGlzIGlubGluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTEyPXN0YXRpYyB2b2lkIGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyMy1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzEyNDpzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNS17XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTc3PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODItXHRpZiAoKnBvcylcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4MzpcdFx0cmV0dXJuIGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg0LVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE4OD1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMDktXHRlbHNlXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTA6XHRcdHNrID0gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NTEKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBCUEYgSXRlcmF0b3IgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCB3YXkgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIFRDUCBCUEYgaXRlcmF0b3IgZml4LiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zLgoKRmlyc3QsIEkgc2VlIHRoZSBjb3JlIEJQRiBpdGVyYXRvciBmdW5jdGlvbnMgaW52b2x2ZWQgYXJlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGBicGZfaXRlcl90Y3BfYmF0Y2hgLCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFJlbWVtYmVyaW5nIHRoZSBwcmluY2lwbGUgb2YgZmF2b3Jpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLCBJIHF1aWNrbHkgcmVhbGl6ZSB0aGF0IGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAgYXJlIGlkZWFsIGNhbmRpZGF0ZXMuIFRoZXkmIzM5O3JlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHRoZXkgYXJlIG5vdCBpbmxpbmVkLiBHcmVhdC4KCkkgbmVlZCB0byBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3Qgb3RoZXIgaGlkZGVuIGZ1bmN0aW9ucywgc28gSSB0aGluayB0byBteXNlbGY6ICYjMzQ7QXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucz8mIzM0OyBUaGUgQlBGIGl0ZXJhdG9yIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIGBicGZfaXRlcl9yZWdpc3RlcmAsIHdoaWNoIGlzIG1hcmtlZCBgX19pbml0YC4gVGhlIGFjdHVhbCBpdGVyYXRpb24gaXMgdXNlci1zcGFjZSB0cmlnZ2VyZWQgYnkgYHJlYWQoKWAgb24gdGhlIGJwZl9pdGVyIGxpbmsgZmQuIFRoaXMgY29uZmlybXMgdGhhdCB0aG9zZSB0d28gYHNlcV9vcHNgIGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIHByb21wdCBpbmRpY2F0ZXMgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBsaWtlbHkgdGhlIHByaW1hcnkgY29uY2Vybi4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLCBsaWtlIGBDT05GSUdfSVBWNmAuIEhvd2V2ZXIsIHNpbmNlIHRoZSBmaWxlIGlzIGB0Y3BfaXB2NC5jYCwgSVB2NCBzZWVtcyB0byBiZSBhIGdpdmVuLiBJJiMzOTtsbCBtYWtlIGEgbm90ZSBvZiB0aGlzIGFuZCBzZXQgYFdvcnRoRnV6emluZzogdHJ1ZWAuCgpGb2N1c2luZyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZywgSSYjMzk7bGwgc2V0IGBGb2N1c1N5bWJvbHM6IGJwZl9pdGVyX3RjcF9zZXFfc3RhcnRgLCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAuIEFuZCwgb2J2aW91c2x5LCBJIHNob3VsZCBzZXQgYEVuYWJsZUNvbmZpZ3M6IEJQRl9TWVNDQUxMYC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBmdW5jdGlvbi4gQWgsIHllcywgaXQmIzM5O3Mgc3RhdGljLiBTbywgdGhlIGRlY2lzaW9uIHRvIGZvY3VzIG9uIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAgc3RpbGwgaG9sZHMuCgpUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGFwcHJvYWNoIGlzIGNsZWFyLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIGZsYXcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIEJQRiBzdWJzeXN0ZW0gYW5kIFRDUC4gVGhlcmVmb3JlLCBpdCYjMzk7cyByZWFjaGFibGUgY29yZSBjb2RlIHRoYXQmIzM5O3Mgd29ydGggZnV6emluZy4KCk5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo0OS4yNjU2NzM5ODNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA4ODAyNTMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfbmV4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgKEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3Rpbmcgd2l0aCBUQ1ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo0OS4yNjU2Nzk1NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzYxOTQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDliYjlmODY3MjRmZGY0NzYyODRjMGE3YWYyNmM1NTEzM2FiZTMxZGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbmluZGV4IDIwOWVmNzUyMjUwOGYuLjEwMzQ3NTdhNTMyODAgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5AQCAtMzA3MywyNCArMzA3MywyNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcXG4tXFx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMTtcXG4tXFx0c3RydWN0IHNvY2sgKnNrO1xcbi1cXG4tXFx0c29ja19ob2xkKCpzdGFydF9zayk7XFxuLVxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9ICpzdGFydF9zaztcXG4rXFx0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xcbitcXHR1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAwO1xcbiBcXG4tXFx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XFxuIFxcdCpzdGFydF9zayA9IE5VTEw7XFxuIFxcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcXG4tXFx0XFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xcbi1cXHRcXHRcXHRpZiAoaXRlci1cXHUwMDNlZW5kX3NrIFxcdTAwM2MgaXRlci1cXHUwMDNlbWF4X3NrKSB7XFxuLVxcdFxcdFxcdFxcdHNvY2tfaG9sZChzayk7XFxuLVxcdFxcdFxcdFxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9IHNrO1xcbi1cXHRcXHRcXHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcXG4tXFx0XFx0XFx0XFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXFxuLVxcdFxcdFxcdFxcdCpzdGFydF9zayA9IHNrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGV4cGVjdGVkKys7XFxuK1xcdFxcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0ZXhwZWN0ZWQrKztcXG4rXFx0XFx0aWYgKGl0ZXItXFx1MDAzZWVuZF9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZW1heF9zaykge1xcbitcXHRcXHRcXHQvKiByZXFza19xdWV1ZV9oYXNoX3JlcSgpIGluc2VydHMgd2l0aCBza19yZWZjbnQgPT0gMFxcbitcXHRcXHRcXHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseSghcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZzay1cXHUwMDNlc2tfcmVmY250KSkpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRpdGVyLVxcdTAwM2ViYXRjaFtpdGVyLVxcdTAwM2VlbmRfc2srK10uc2sgPSBzaztcXG4rXFx0XFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XFxuK1xcdFxcdFxcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xcbitcXHRcXHRcXHQqc3RhcnRfc2sgPSBzaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbkBAIC0zMTI4LDEyICszMTI4LDEzIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbiBcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIFxcdGludCBlcnI7XFxuIFxcbithZ2FpbjpcXG4gXFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XFxuIFxcdGlmICghc2spXFxuIFxcdFxcdHJldHVybiBOVUxMOyAvKiBEb25lICovXFxuIFxcbiBcXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbi1cXHRpZiAobGlrZWx5KGl0ZXItXFx1MDAzZWVuZF9zayA9PSBleHBlY3RlZCkpXFxuK1xcdGlmIChsaWtlbHkoIXNrKSlcXG4gXFx0XFx0Z290byBkb25lO1xcbiBcXG4gXFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xcbkBAIC0zMTQ5LDcgKzMxNTAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cXG4gXFxuIFxcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFxcdTAwMjZzayk7XFxuLVxcdGlmIChsaWtlbHkoaXRlci1cXHUwMDNlZW5kX3NrID09IGV4cGVjdGVkKSlcXG4rXFx0aWYgKGxpa2VseSghc2spKVxcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcbiBcXHQvKiBCYXRjaCBzaXplIHdhcyBzdGlsbCB0b28gc21hbGwuIEhvbGQgb250byB0aGUgbG9jayB3aGlsZSB3ZSB0cnlcXG5AQCAtMzE2MiwxMCArMzE2MywxNCBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gXFx0fVxcbiBcXG4tXFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXFx1MDAyNnNrKTtcXG4tXFx0V0FSTl9PTl9PTkNFKGl0ZXItXFx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XFxuK1xcdGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbitcXHRXQVJOX09OX09OQ0Uoc2spO1xcbiBkb25lOlxcbiBcXHRicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzZXEpO1xcbitcXHRpZiAodW5saWtlbHkoIWl0ZXItXFx1MDAzZWVuZF9zaykpIHtcXG4rXFx0XFx0KytpdGVyLVxcdTAwM2VzdGF0ZS5idWNrZXQ7XFxuK1xcdFxcdGdvdG8gYWdhaW47XFxuK1xcdH1cXG4gXFx0cmV0dXJuIGl0ZXItXFx1MDAzZWJhdGNoWzBdLnNrO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo0OS41NzM5MDg3MThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NDc3OTc4MjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfbmV4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgKEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3Rpbmcgd2l0aCBUQ1ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5YmI5Zjg2NzI0ZmRmNDc2Mjg0YzBhN2FmMjZjNTUxMzNhYmUzMWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCAyMDllZjc1MjI1MDhmLi4xMDM0NzU3YTUzMjgwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTMwNzMsMjQgKzMwNzMsMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEsXG4ge1xuIFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGhsaXN0X251bGxzX25vZGUgKm5vZGU7XG4tXHR1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAxO1xuLVx0c3RydWN0IHNvY2sgKnNrO1xuLVxuLVx0c29ja19ob2xkKCpzdGFydF9zayk7XG4tXHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrKytdLnNrID0gKnN0YXJ0X3NrO1xuK1x0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xuK1x0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMDtcbiBcbi1cdHNrID0gc2tfbnVsbHNfbmV4dCgqc3RhcnRfc2spO1xuIFx0KnN0YXJ0X3NrID0gTlVMTDtcbiBcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcbi1cdFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xuLVx0XHRcdGlmIChpdGVyLVx1MDAzZWVuZF9zayBcdTAwM2MgaXRlci1cdTAwM2VtYXhfc2spIHtcbi1cdFx0XHRcdHNvY2tfaG9sZChzayk7XG4tXHRcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrKytdLnNrID0gc2s7XG4tXHRcdFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XG4tXHRcdFx0XHQvKiBSZW1lbWJlciB3aGVyZSB3ZSBsZWZ0IG9mZi4gKi9cbi1cdFx0XHRcdCpzdGFydF9zayA9IHNrO1xuLVx0XHRcdH1cbi1cdFx0XHRleHBlY3RlZCsrO1xuK1x0XHRpZiAoIXNlcV9za19tYXRjaChzZXEsIHNrKSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0ZXhwZWN0ZWQrKztcbitcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuK1x0XHRcdC8qIHJlcXNrX3F1ZXVlX2hhc2hfcmVxKCkgaW5zZXJ0cyB3aXRoIHNrX3JlZmNudCA9PSAwXG4rXHRcdFx0ICogYW5kIHJlZmNvdW50X3NldCgpcyBpdCBhZnRlciB0aGUgYnVja2V0IGxvY2sgZHJvcHMuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKHVubGlrZWx5KCFyZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2c2stXHUwMDNlc2tfcmVmY250KSkpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrKytdLnNrID0gc2s7XG4rXHRcdH0gZWxzZSBpZiAoISpzdGFydF9zaykge1xuK1x0XHRcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xuK1x0XHRcdCpzdGFydF9zayA9IHNrO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMzEyOCwxMiArMzEyOCwxMyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbiBcdHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBlcnI7XG4gXG4rYWdhaW46XG4gXHRzayA9IGJwZl9pdGVyX3RjcF9yZXN1bWUoc2VxKTtcbiBcdGlmICghc2spXG4gXHRcdHJldHVybiBOVUxMOyAvKiBEb25lICovXG4gXG4gXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4tXHRpZiAobGlrZWx5KGl0ZXItXHUwMDNlZW5kX3NrID09IGV4cGVjdGVkKSlcbitcdGlmIChsaWtlbHkoIXNrKSlcbiBcdFx0Z290byBkb25lO1xuIFxuIFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xuQEAgLTMxNDksNyArMzE1MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuIFx0XHRyZXR1cm4gTlVMTDsgLyogRG9uZSAqL1xuIFxuIFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXHUwMDI2c2spO1xuLVx0aWYgKGxpa2VseShpdGVyLVx1MDAzZWVuZF9zayA9PSBleHBlY3RlZCkpXG4rXHRpZiAobGlrZWx5KCFzaykpXG4gXHRcdGdvdG8gZG9uZTtcbiBcbiBcdC8qIEJhdGNoIHNpemUgd2FzIHN0aWxsIHRvbyBzbWFsbC4gSG9sZCBvbnRvIHRoZSBsb2NrIHdoaWxlIHdlIHRyeVxuQEAgLTMxNjIsMTAgKzMxNjMsMTQgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4tXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4tXHRXQVJOX09OX09OQ0UoaXRlci1cdTAwM2VlbmRfc2sgIT0gZXhwZWN0ZWQpO1xuK1x0YnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbitcdFdBUk5fT05fT05DRShzayk7XG4gZG9uZTpcbiBcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XG4rXHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuK1x0XHQrK2l0ZXItXHUwMDNlc3RhdGUuYnVja2V0O1xuK1x0XHRnb3RvIGFnYWluO1xuK1x0fVxuIFx0cmV0dXJuIGl0ZXItXHUwMDNlYmF0Y2hbMF0uc2s7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDI6NDkuNTczOTA5NzI4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMTQ5NzQwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUQ1AgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvdGNwX2lwdjQuY2AuIFNlZW1zIGxpa2UgaXTigJlzIGRlYWxpbmcgd2l0aCBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuIEFoLCByaWdodCwgdGhpcyBpcyB0aGUgb25lIHRoYXQgd2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggaG93IGByZXFza19xdWV1ZV9oYXNoX3JlcSgpYCB3YXMgaW50ZXJhY3Rpbmcgd2l0aCByZWZlcmVuY2UgY291bnRzLiBUaGUgY29yZSBvZiBpdCBhcHBlYXJzIHRvIGJlIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uLiBUaGUgcHJldmlvdXMgY29kZSB3YXMgcG90ZW50aWFsbHkgaW5zZXJ0aW5nIHNvbWV0aGluZyBpbnRvIHRoZSBxdWV1ZSB3aXRoIGEgemVybyByZWZlcmVuY2UgY291bnQgYW5kIHRoZW4gaW5jcmVtZW50aW5nIGl0IGFmdGVyIGRyb3BwaW5nIHRoZSBidWNrZXQgbG9jay4gVGhhdCdzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcsIGFuZCB0aGV5J3ZlIGFkZHJlc3NlZCBpdCB1c2luZyBgcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNnNrLVx1MDAzZXNrX3JlZmNudClgIHJhdGhlciB0aGFuIGBzb2NrX2hvbGQoc2spYC4gQSBzYWZlciBhcHByb2FjaCwgaW5kZWVkLiBBbmQgdGhlbiB0aGVyZSdzIGEgbG9naWMgYWRqdXN0bWVudCBpbiBgYnBmX2l0ZXJfdGNwX2JhdGNoYCB0byByZS1sb29wIGlmIGBpdGVyLVx1MDAzZWVuZF9za2AgaXMgemVyby4gUHJvYmFibHkgYSBjb25zZXF1ZW5jZSBvZiB0aGF0IHJlZmNvdW50IGNoYW5nZS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpZiB0aGlzIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFNpbmNlIHRoaXMgYWxsIGZhbGxzIHVuZGVyIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCwgdGhlIGZpcnN0IHRoaW5nIEknbGwgY2hlY2sgaXMgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbmRpdGlvbmFsIG9uIGFueSBCUEYtcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgZmVhdHVyZSBpcyBidWlsdCBpbiwgb3IgcGVyaGFwcyBldmVuIGEgbW9kdWxlLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaW4gdGhlIGtlcm5lbCBjb25maWdzIHRvIHNlZSB3aGF0IHRoZSBidWlsZCBydWxlcyBkaWN0YXRlLiBJJ20gYXNzdW1pbmcgaXQncyBwYXJ0IG9mIHRoZSBCUEYgc3Vic3lzdGVtLCBidXQgYmV0dGVyIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo1NC41NzU0MTAxMjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3Mjg3ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pdGVyX3RjcF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MzExMj1zdGF0aWMgdm9pZCBicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyMy1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxMjQ6c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTI1LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE3Nz1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODItXFx0aWYgKCpwb3MpXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTgzOlxcdFxcdHJldHVybiBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODQtXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxODg9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMDktXFx0ZWxzZVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzIxMDpcXHRcXHRzayA9IGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzIxMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDI6NTQuNzAyNzA0ODIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcyODQ5NDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgY29kZSBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzLiBUaGF0IG1lYW5zIGRpdmluZyBpbnRvIHRoZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gTGV0J3Mgc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBgI2lmZGVmYCBkaXJlY3RpdmVzLCB0aGUgYCNpZm5kZWZgIGRpcmVjdGl2ZXMsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgI2Vsc2VgIGFuZCBgI2VuZGlmYCBibG9ja3MuIFRob3NlIGFyZSB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgYXJlIGNvbnRyb2xsaW5nIHdoaWNoIGNvZGUgcGF0aHMgYXJlIGFjdGl2ZS4gSWRlbnRpZnlpbmcgdGhvc2UgZGVmaW5lcyB3aWxsIHNob3cgdGhlIHZhcmlvdXMgd2F5cyB0aGlzIGNvZGUgY2FuIGJlIGNvbmZpZ3VyZWQsIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQsIGFuZCBhbGxvdyBtZSB0byBxdWlja2x5IGFuYWx5emUgdGhlIGxvZ2ljIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo1Ny40MzEyMDMxMzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MjI5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmIENPTkZJR19CUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTI4NTA9c3RhdGljIGludCB0Y3A0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc0LVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6Mjg3NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc2LXVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtIHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI4NT1zdGF0aWMgdW5zaWduZWQgc2hvcnQgc2VxX2ZpbGVfZmFtaWx5KGNvbnN0IHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjg4LVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzI4OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkwLVxcdC8qIEl0ZXJhdGVkIGZyb20gYnBmX2l0ZXIuICBMZXQgdGhlIGJwZiBwcm9nIHRvIGZpbHRlciBpbnN0ZWFkLiAqL1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMzQwPXN0cnVjdCBwcm90byB0Y3BfcHJvdCA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2NC1cXHQucHV0X3BvcnRcXHRcXHQ9IGluZXRfcHV0X3BvcnQsXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMzY1OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjYtXFx0LnBzb2NrX3VwZGF0ZV9za19wcm90XFx0PSB0Y3BfYnBmX3VwZGF0ZV9wcm90byxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDI6NTcuNDc0NzMyMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjExOTQ3OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgSXRlcmF0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEJQRiBjb2RlIGFuZCBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGd1YXJkZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAuIEdvb2QgdG8ga25vdzsgdGhhdCdzIHRoZSBmaXJzdCBmaWx0ZXIuIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBzZWVtIHRvIGJlIG1vZGlmaWVkIGFyZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuXG5cbkxldCBtZSBxdWlja2x5IGNvbmZpcm0gaWYgdGhlc2UgYXJlIHN0YXRpYy4gWWVzLCBib3RoIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhcmUgaW5kZWVkIHN0YXRpYyBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhleSBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRyYWNpbmcgdGhlaXIgY2FsbGluZyBwYXRocyB0byBhbiBleHRlbnQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIHN0YXRpYyBCUEYgaXRlcmF0b3JzPyBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtb2RpZmljYXRpb25zIGFyZSBhY3R1YWxseSB0cmlnZ2VyZWQgYW5kIGhvdyB0aGUgaXRlcmF0b3JzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgbm9uLXN0YXRpYyBjYWxsZXJzIHdpbGwgcmVhbGx5IHNob3cgbWUgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDEuMDg2NjgzMDc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDg5MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTMxMjQ9c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzYtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTc3OnN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzgte1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjc4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgYnBmX2l0ZXJfdGNwX3NlcV9vcHMgPSB7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVxcdC5zaG93XFx0XFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjgwOlxcdC5zdGFydFxcdFxcdD0gYnBmX2l0ZXJfdGNwX3NlcV9zdGFydCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODEtXFx0Lm5leHRcXHRcXHQ9IGJwZl9pdGVyX3RjcF9zZXFfbmV4dCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDEuMTMxMTc2MjM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NzU4MzgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgYnBmX2l0ZXJfdGNwX3NlcV9vcHNgIFVzYWdlKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGJwZl9pdGVyX3RjcF9zZXFfb3BzYCBzdHJ1Y3R1cmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlJ3MgdGhpcyBhY3R1YWxseSAqdXNlZCo/IFdoYXQncyB0aGUgY29udGV4dD9cIiBJIGtub3cgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCwgYnV0IHVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGFyY2hpdGVjdHVyZSBpcyBrZXkgdG8gaXRzIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXRpbGl6YXRpb24gd2l0aGluIHRoZSBicm9hZGVyIEJQRiBlY29zeXN0ZW0uIExldCdzIHNlZSBpZiBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDg2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDQuMzA4NzYzNjc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYzMTc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl90Y3Bfc2VxX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI2MT1zdGF0aWMgdm9pZCBicGZfaXRlcl90Y3Bfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyNzctXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjc4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgYnBmX2l0ZXJfdGNwX3NlcV9vcHMgPSB7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVxcdC5zaG93XFx0XFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMyODU9c3RhdGljIHVuc2lnbmVkIHNob3J0IHNlcV9maWxlX2ZhbWlseShjb25zdCBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI5MC1cXHQvKiBJdGVyYXRlZCBmcm9tIGJwZl9pdGVyLiAgTGV0IHRoZSBicGYgcHJvZyB0byBmaWx0ZXIgaW5zdGVhZC4gKi9cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyOTE6XFx0aWYgKHNlcS1cXHUwMDNlb3AgPT0gXFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI5Mi1cXHRcXHRyZXR1cm4gQUZfVU5TUEVDO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2l0ZXJfc2VxX2luZm8gdGNwX3NlcV9pbmZvID0ge1xcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYwMjpcXHQuc2VxX29wc1xcdFxcdD0gXFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYwMy1cXHQuaW5pdF9zZXFfcHJpdmF0ZVxcdD0gYnBmX2l0ZXJfaW5pdF90Y3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjA0LjM1MjQwMTEyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA1NTM2NDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkludmVzdGlnYXRpbmcgYHRjcF9zZXFfaW5mb2AgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIGB0Y3Bfc2VxX2luZm9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBKdXN0IHNlZWluZyB0aGUgZGVjbGFyYXRpb24gaXNuJ3QgZW5vdWdoOyBJIG5lZWQgdG8gdHJhY2UgaXRzIHJlZmVyZW5jZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0J3MgYmVpbmcgcmVhZCwgbW9kaWZpZWQsIGFuZCBwb3RlbnRpYWxseSBmcmVlZC4gVGhpcyBpcyBnb2luZyB0byB0ZWxsIG1lIGl0cyBwdXJwb3NlIGFuZCBob3cgY3JpdGljYWwgaXQgaXMgdG8gdGhlIFRDUCBzdGFjaydzIG9wZXJhdGlvbi4gSSdsbCBzdGFydCBieSBsb29raW5nIGZvciB0aG9zZSBjcm9zcy1yZWZlcmVuY2VzIGluIHRoZSBjb2RlLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGRlZXBlciBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjA3LjI1NzkzOTk3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc4MjY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3Bfc2VxX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTM1OTM9c3RhdGljIHZvaWQgYnBmX2l0ZXJfZmluaV90Y3Aodm9pZCAqcHJpdl9kYXRhKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjAwLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYwMTpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9pdGVyX3NlcV9pbmZvIHRjcF9zZXFfaW5mbyA9IHtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDItXFx0LnNlcV9vcHNcXHRcXHQ9IFxcdTAwMjZicGZfaXRlcl90Y3Bfc2VxX29wcyxcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzYyMj1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0Y3BfcmVnX2luZm8gPSB7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjktXFx0LmdldF9mdW5jX3Byb3RvXFx0XFx0PSBicGZfaXRlcl90Y3BfZ2V0X2Z1bmNfcHJvdG8sXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjMwOlxcdC5zZXFfaW5mb1xcdFxcdD0gXFx1MDAyNnRjcF9zZXFfaW5mbyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MzEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDcuMzAyNzI4NzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNDkyNDU2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipJbnZlc3RpZ2F0aW5nIGB0Y3BfcmVnX2luZm9gIFVzYWdlKipcblxuQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGxpY2F0aW9ucyBvZiBgdGNwX3JlZ19pbmZvYC4gV2hlcmUgaXMgdGhpcyBzdHJ1Y3R1cmUgYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHJlZmVyZW5jZXMgdG8gZ2V0IGEgc2Vuc2Ugb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgVENQIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgc291cmNlIGNvZGUsIHByb2JhYmx5IHVzaW5nIGdyZXAgb3IgYSBzaW1pbGFyIHRvb2wuIEtub3dpbmcgdGhlIGNvbnRleHRzIHdoZXJlIGl0J3MgZW1wbG95ZWQgd2lsbCByZXZlYWwgaXRzIHB1cnBvc2UgYW5kIGhvdyBjaGFuZ2VzIHRvIGl0IG1pZ2h0IHByb3BhZ2F0ZSB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGlzIGtleS4gVGltZSB0byBnZXQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjE1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjEwLjEwNzY1NTU5N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1Mjc0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3JlZ19pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuYz0zNjA5PWJwZl9pdGVyX3RjcF9nZXRfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjEtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjIyOnN0YXRpYyBzdHJ1Y3QgYnBmX2l0ZXJfcmVnIHRjcF9yZWdfaW5mbyA9IHtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjMtXFx0LnRhcmdldFxcdFxcdFxcdD0gXFxcInRjcFxcXCIsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTM2MzM9c3RhdGljIHZvaWQgX19pbml0IGJwZl9pdGVyX3JlZ2lzdGVyKHZvaWQpXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjM0LXtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM2MzU6XFx0dGNwX3JlZ19pbmZvLmN0eF9hcmdfaW5mb1swXS5idGZfaWQgPSBidGZfc29ja19pZHNbQlRGX1NPQ0tfVFlQRV9TT0NLX0NPTU1PTl07XFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjM2OlxcdGlmIChicGZfaXRlcl9yZWdfdGFyZ2V0KFxcdTAwMjZ0Y3BfcmVnX2luZm8pKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYzNy1cXHRcXHRwcl93YXJuKFxcXCJXYXJuaW5nOiBjb3VsZCBub3QgcmVnaXN0ZXIgYnBmIGl0ZXJhdG9yIHRjcFxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjEwLjE1NDE4Nzc3NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTAxNDc3MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdG9yIGZvciBUQ1AgU29ja2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIEJQRiBpdGVyYXRvciBmb3IgVENQIHNvY2tldHMgaXMgc2V0IHVwLiBJdCBsb29rcyBsaWtlIHRoZSByZWdpc3RyYXRpb24gaGFwcGVucyB0aHJvdWdoIGBicGZfaXRlcl9yZWdfdGFyZ2V0KFx1MDAyNnRjcF9yZWdfaW5mbylgLiBTdGFuZGFyZCBCUEYgaXRlcmF0b3Igc3R1ZmYsIGludm9rZWQgd2hlbiBhIHVzZXIgcHJvZ3JhbSByZWFkcyBmcm9tIHRoZSBicGZfaXRlciBsaW5rLCBsaWtlbHkgdGhyb3VnaCBhIGBzZXFfZmlsZWAuIFRoZSB0eXBpY2FsIHN5c3RlbSBjYWxscyB3b3VsZCBiZSBgYnBmKClgIHRvIGxvYWQgdGhlIEJQRiBwcm9ncmFtIGFuZCBjcmVhdGUgdGhlIGxpbmssIGFuZCB0aGVuIGEgYHJlYWQoKWAgb24gdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGF0IGxpbmsuXG5cblNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljYWxseSBkZWNsYXJlZCBhbmQgY2FsbGVkIHZpYSBzZXFfZmlsZSBvcGVyYXRpb25zLCB0aGUgbW9zdCBsb2dpY2FsIGVudHJ5IHBvaW50cyBJJ20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiBhcmUgdGhlIHNlcV9maWxlIG9wZXJhdGlvbnMgdGhlbXNlbHZlcy4gQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCBzcGVjaWZ5IHRoZSBpdGVyYXRvciBmdW5jdGlvbnMgZGlyZWN0bHkgbGlrZSBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAsIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgLCBgYnBmX2l0ZXJfdGNwX3NlcV9zdG9wYCwgYW5kIGBicGZfaXRlcl90Y3Bfc2VxX3Nob3dgLiBCdXQgaG9sZCBvbiwgd2VyZW4ndCBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAgYW5kIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgIHN0YXRpYz8gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0sIGdpdmVuIHRoYXQgc3l6a2FsbGVyIG1pZ2h0IHN0cnVnZ2xlIHdpdGggc3RhdGljIGZ1bmN0aW9ucy5cblxuQWgsIGJ1dCB0aGV5IGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGBicGZfaXRlcl90Y3Bfc2VxX29wc2AuIFRoYXQgbWVhbnMgdGhleSBzaG91bGRuJ3QgYmUgaW5saW5lZC4gSWYgdGhleSBhcmVuJ3QgaW5saW5lZCwgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlc29sdmUgdGhlbS4gUmlnaHQsIEkgcmVtZW1iZXIgbm93LCBzeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zIGFzIGxvbmcgYXMgdGhleSBhcmVuJ3QgaW5saW5lZC4gQmV0dGVyIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgZm9yIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcywganVzdCBpbiBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjUwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjE2LjA1NTY2NzQ1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1OTA2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2l0ZXJfdGNwX3NlcV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MzEyND1zdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3Ni1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxNzc6c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3OC17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMyNzg9c3RhdGljIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBicGZfaXRlcl90Y3Bfc2VxX29wcyA9IHtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyNzktXFx0LnNob3dcXHRcXHQ9IGJwZl9pdGVyX3RjcF9zZXFfc2hvdyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODA6XFx0LnN0YXJ0XFx0XFx0PSBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0LFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI4MS1cXHQubmV4dFxcdFxcdD0gYnBmX2l0ZXJfdGNwX3NlcV9uZXh0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0MzoxNi4xMDcyNjM5MzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzODY1ODIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDUCBCUEYgSXRlcmF0b3IgQnVnIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIHdpdGhpbiB0aGUgQlBGIGl0ZXJhdG9yIGZvciBUQ1AuIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoZSBjb3JlIGlzc3VlIHN0ZW1zIGZyb20gYHJlcXNrX3F1ZXVlX2hhc2hfcmVxKClgIGF0dGVtcHRpbmcgdG8gaW5zZXJ0IGFuIGVudHJ5IHdpdGggYSBgc2tfcmVmY250YCBvZiB6ZXJvLiBUaGlzIGlzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBpc3N1ZSB0aGF0IGNhbiBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uIG9yIGNyYXNoZXMsIGFuZCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQncyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlLlxuXG5UaGUgY29tbWl0IG1lbnRpb25zIHRoZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBjb25maWd1cmF0aW9uIGFzIGJlaW5nIG5lY2Vzc2FyeSB0byByZXByb2R1Y2UgdGhlIGJ1Zy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhbHNvIGluZmx1ZW5jZSB0aGlzIGJ1ZydzIGJlaGF2aW9yLCBhbmQgbWFrZSBzdXJlIHRoYXQgYW55IHN1Z2dlc3RlZCBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIGNvbXBsZXRlLiBUaGlzIGlzIHRoZSBraW5kIG9mIGRldGFpbCB0aGF0IGlzIGNyaXRpY2FsIGZvciBhbnkgZG93bnN0cmVhbSB1c2Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjE5LjY0NTkyNDgzNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3ODEyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9Mjg1MD1zdGF0aWMgaW50IHRjcDRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzQtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyODc1OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzYtdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg1PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODgtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjg5OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyOTAtXFx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzNDA9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY0LVxcdC5wdXRfcG9ydFxcdFxcdD0gaW5ldF9wdXRfcG9ydCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNjU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Ni1cXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0MzoxOS42OTE3MTA2MzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2MTU2MTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgSXRlcmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGhvbWluZyBpbiBvbiB0aGUgQlBGIHN5c3RlbSBjYWxsIGNvbmZpZ3VyYXRpb24g4oCTIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyB0aGUgcHJpbWFyeSBvbmUgdG8gY2hlY2suIEkgcXVpY2tseSBkb3VibGUtY2hlY2tlZCBgbmV0L2lwdjQvS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlIHRoZXJlIHdlcmVuJ3QgYW55IGhpZGRlbiBUQ1AtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYnV0IG9mIGNvdXJzZSwgVENQIGlzIGZ1bmRhbWVudGFsIHRvIExpbnV4LiBgQlBGX1NZU0NBTExgIGlzIGRlZmluaXRlbHkgdGhlIGtleS5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3QgZm9jdXMgc3ltYm9sIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAuIEl0J3Mgc3RhdGljLCBzbyBteSBmaXJzdCBpbnN0aW5jdCB3YXMgdG8gZmluZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIGhvdyB0aGUgaXRlcmF0aW9uIHdvcmtzOiB0aGUgVkZTIGxheWVyIGNhbGxzIGl0IGluZGlyZWN0bHkgdmlhIGBzZXFfcmVhZGAgLVx1MDAzZSBgbS1cdTAwM2VvcC1cdTAwM2VzdGFydCgpYC4gQWN0dWFsbHksIHRoaXMgc3RhdGljIGZ1bmN0aW9uIGlzIGxpa2VseSBhIGJldHRlciBzeW1ib2wgdG8gZm9jdXMgb24gaW4gdGhpcyBjYXNlLCByYXRoZXIgdGhhbiBhbnkgY2FsbGVyLlxuXG5UaGVuIEkgaGFkIGEgZXVyZWthIG1vbWVudCEgU3l6a2FsbGVyJ3MgYEZvY3VzU3ltYm9sc2AgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5J3JlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZSBhbmQgbm90IGlubGluZWQuIFNpbmNlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHNwZWNpZmljYWxseSBpbiBgYnBmX2l0ZXJfdGNwX3NlcV9vcHMuc3RhcnRgLCBpdCBjYW4ndCBiZSBpbmxpbmVkLiBUaGlzIGNoYW5nZXMgdGhpbmdzISBUaGF0IG1lYW5zIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGFuZCBgYnBmX2l0ZXJfdGNwX3NlcV9zdG9wYCBhcmUgYWxsIGlkZWFsIHRhcmdldHMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgaW5jbHVkZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFRoZXkncmUgc3RhdGljLCBidXQgdGhlcmUncyBhIGNoYW5jZSB0aGV5ICptaWdodCogbm90IGJlIGlubGluZWQuIEhvbGQgb24uLi4gYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaXMgY2FsbGVkIGZyb20gYGJwZl9pdGVyX2ZpbGxfYmF0Y2hgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBicGZfaXRlcl90Y3BfYmF0Y2hgLiBUaGF0IG1lYW5zIEkndmUgZ290IGEgY2hhaW4sIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBpcyB0aGUgcG90ZW50aWFsIHdlYWsgcG9pbnQuIEkgYmV0dGVyIGNoZWNrIGlmIGBicGZfaXRlcl90Y3BfYmF0Y2hgIGlzIGlubGluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzMTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MjYuMzUzMjc0MTc2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg5NDYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl90Y3BfYmF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTMxMTI9c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjMtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTI0OnN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNS17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxNzc9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTgyLVxcdGlmICgqcG9zKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4MzpcXHRcXHRyZXR1cm4gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg0LVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTg4PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjA5LVxcdGVsc2VcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTA6XFx0XFx0c2sgPSBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjI2LjM5NzE3NDQ3NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODc0NjIyMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBCUEYgSXRlcmF0b3IgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgd2F5IHRvIGFwcHJvYWNoIGZ1enppbmcgdGhpcyBUQ1AgQlBGIGl0ZXJhdG9yIGZpeC4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGFuZCBjb25maWd1cmF0aW9ucy5cblxuRmlyc3QsIEkgc2VlIHRoZSBjb3JlIEJQRiBpdGVyYXRvciBmdW5jdGlvbnMgaW52b2x2ZWQgYXJlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGBicGZfaXRlcl90Y3BfYmF0Y2hgLCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFJlbWVtYmVyaW5nIHRoZSBwcmluY2lwbGUgb2YgZmF2b3Jpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLCBJIHF1aWNrbHkgcmVhbGl6ZSB0aGF0IGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAgYXJlIGlkZWFsIGNhbmRpZGF0ZXMuIFRoZXkncmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycywgc28gdGhleSBhcmUgbm90IGlubGluZWQuIEdyZWF0LlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGVyZSBhcmVuJ3Qgb3RoZXIgaGlkZGVuIGZ1bmN0aW9ucywgc28gSSB0aGluayB0byBteXNlbGY6IFwiQXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucz9cIiBUaGUgQlBGIGl0ZXJhdG9yIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIGBicGZfaXRlcl9yZWdpc3RlcmAsIHdoaWNoIGlzIG1hcmtlZCBgX19pbml0YC4gVGhlIGFjdHVhbCBpdGVyYXRpb24gaXMgdXNlci1zcGFjZSB0cmlnZ2VyZWQgYnkgYHJlYWQoKWAgb24gdGhlIGJwZl9pdGVyIGxpbmsgZmQuIFRoaXMgY29uZmlybXMgdGhhdCB0aG9zZSB0d28gYHNlcV9vcHNgIGFyZSB0aGUgZW50cnkgcG9pbnRzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcHJvbXB0IGluZGljYXRlcyB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGxpa2VseSB0aGUgcHJpbWFyeSBjb25jZXJuLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGxpa2UgYENPTkZJR19JUFY2YC4gSG93ZXZlciwgc2luY2UgdGhlIGZpbGUgaXMgYHRjcF9pcHY0LmNgLCBJUHY0IHNlZW1zIHRvIGJlIGEgZ2l2ZW4uIEknbGwgbWFrZSBhIG5vdGUgb2YgdGhpcyBhbmQgc2V0IGBXb3J0aEZ1enppbmc6IHRydWVgLlxuXG5Gb2N1c2luZyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZywgSSdsbCBzZXQgYEZvY3VzU3ltYm9sczogYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAsIGFuZCBgYnBmX2l0ZXJfdGNwX3NlcV9uZXh0YC4gQW5kLCBvYnZpb3VzbHksIEkgc2hvdWxkIHNldCBgRW5hYmxlQ29uZmlnczogQlBGX1NZU0NBTExgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBmdW5jdGlvbi4gQWgsIHllcywgaXQncyBzdGF0aWMuIFNvLCB0aGUgZGVjaXNpb24gdG8gZm9jdXMgb24gYGJwZl9pdGVyX3RjcF9zZXFfc3RhcnRgIGFuZCBgYnBmX2l0ZXJfdGNwX3NlcV9uZXh0YCBzdGlsbCBob2xkcy5cblxuVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBhcHByb2FjaCBpcyBjbGVhci4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBmbGF3IGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBCUEYgc3Vic3lzdGVtIGFuZCBUQ1AuIFRoZXJlZm9yZSwgaXQncyByZWFjaGFibGUgY29yZSBjb2RlIHRoYXQncyB3b3J0aCBmdXp6aW5nLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU1MSwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MzQuMjcxNzk5MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTg4ODU5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0XCIsXG4gICAgXCJicGZfaXRlcl90Y3Bfc2VxX25leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVENQIEJQRiBpdGVyYXRvciB3aGVyZSBhIHNvY2tldCBjb3VsZCBiZSBhY2Nlc3NlZCB3aXRoIGEgemVybyByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIChCUEYgc3Vic3lzdGVtIGludGVyYWN0aW5nIHdpdGggVENQKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfbmV4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgKEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3Rpbmcgd2l0aCBUQ1ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 08:41:47 +0000 UTC FinishedAt: 2026-08-01 08:43:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "b116cf3f-8dad-4ca6-8db4-a11d8596915e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_iter_tcp_seq_start", "bpf_iter_tcp_seq_next" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YmI5Zjg2NzI0ZmRmNDc2Mjg0YzBhN2FmMjZjNTUxMzNhYmUzMWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuaW5kZXggMjA5ZWY3NTIyNTA4Zi4uMTAzNDc1N2E1MzI4MCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbkBAIC0zMDczLDI0ICYjNDM7MzA3MywyNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcbiB7XG4gXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVx1MDAzZXByaXZhdGU7XG4gXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcbi1cdHVuc2lnbmVkIGludCBleHBlY3RlZCA9IDE7XG4tXHRzdHJ1Y3Qgc29jayAqc2s7XG4tXG4tXHRzb2NrX2hvbGQoKnN0YXJ0X3NrKTtcbi1cdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2smIzQzOyYjNDM7XS5zayA9ICpzdGFydF9zaztcbiYjNDM7XHRzdHJ1Y3Qgc29jayAqc2sgPSAqc3RhcnRfc2s7XG4mIzQzO1x0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMDtcbiBcbi1cdHNrID0gc2tfbnVsbHNfbmV4dCgqc3RhcnRfc2spO1xuIFx0KnN0YXJ0X3NrID0gTlVMTDtcbiBcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcbi1cdFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xuLVx0XHRcdGlmIChpdGVyLVx1MDAzZWVuZF9zayBcdTAwM2MgaXRlci1cdTAwM2VtYXhfc2spIHtcbi1cdFx0XHRcdHNvY2tfaG9sZChzayk7XG4tXHRcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzaztcbi1cdFx0XHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcbi1cdFx0XHRcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xuLVx0XHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4tXHRcdFx0fVxuLVx0XHRcdGV4cGVjdGVkJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGV4cGVjdGVkJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChpdGVyLVx1MDAzZWVuZF9zayBcdTAwM2MgaXRlci1cdTAwM2VtYXhfc2spIHtcbiYjNDM7XHRcdFx0LyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDBcbiYjNDM7XHRcdFx0ICogYW5kIHJlZmNvdW50X3NldCgpcyBpdCBhZnRlciB0aGUgYnVja2V0IGxvY2sgZHJvcHMuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZzay1cdTAwM2Vza19yZWZjbnQpKSlcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdFx0aXRlci1cdTAwM2ViYXRjaFtpdGVyLVx1MDAzZWVuZF9zayYjNDM7JiM0MztdLnNrID0gc2s7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcbiYjNDM7XHRcdFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXG4mIzQzO1x0XHRcdCpzdGFydF9zayA9IHNrO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMzEyOCwxMiAmIzQzOzMxMjgsMTMgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MzthZ2FpbjpcbiBcdHNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpO1xuIFx0aWYgKCFzaylcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbiBcbiBcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbi1cdGlmIChsaWtlbHkoaXRlci1cdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxuJiM0MztcdGlmIChsaWtlbHkoIXNrKSlcbiBcdFx0Z290byBkb25lO1xuIFxuIFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xuQEAgLTMxNDksNyAmIzQzOzMxNTAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbiBcbiBcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbi1cdGlmIChsaWtlbHkoaXRlci1cdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxuJiM0MztcdGlmIChsaWtlbHkoIXNrKSlcbiBcdFx0Z290byBkb25lO1xuIFxuIFx0LyogQmF0Y2ggc2l6ZSB3YXMgc3RpbGwgdG9vIHNtYWxsLiBIb2xkIG9udG8gdGhlIGxvY2sgd2hpbGUgd2UgdHJ5XG5AQCAtMzE2MiwxMCAmIzQzOzMxNjMsMTQgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4tXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4tXHRXQVJOX09OX09OQ0UoaXRlci1cdTAwM2VlbmRfc2sgIT0gZXhwZWN0ZWQpO1xuJiM0MztcdGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4mIzQzO1x0V0FSTl9PTl9PTkNFKHNrKTtcbiBkb25lOlxuIFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuJiM0MztcdFx0JiM0MzsmIzQzO2l0ZXItXHUwMDNlc3RhdGUuYnVja2V0O1xuJiM0MztcdFx0Z290byBhZ2FpbjtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YmI5Zjg2NzI0ZmRmNDc2Mjg0YzBhN2FmMjZjNTUxMzNhYmUzMWRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCmluZGV4IDIwOWVmNzUyMjUwOGYuLjEwMzQ3NTdhNTMyODAgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMzA3MywyNCAmIzQzOzMwNzMsMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEsCiB7CiAJc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS0mZ3Q7cHJpdmF0ZTsKIAlzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTsKLQl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAxOwotCXN0cnVjdCBzb2NrICpzazsKLQotCXNvY2tfaG9sZCgqc3RhcnRfc2spOwotCWl0ZXItJmd0O2JhdGNoW2l0ZXItJmd0O2VuZF9zayYjNDM7JiM0MztdLnNrID0gKnN0YXJ0X3NrOwomIzQzOwlzdHJ1Y3Qgc29jayAqc2sgPSAqc3RhcnRfc2s7CiYjNDM7CXVuc2lnbmVkIGludCBleHBlY3RlZCA9IDA7CiAKLQlzayA9IHNrX251bGxzX25leHQoKnN0YXJ0X3NrKTsKIAkqc3RhcnRfc2sgPSBOVUxMOwogCXNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHsKLQkJaWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkgewotCQkJaWYgKGl0ZXItJmd0O2VuZF9zayAmbHQ7IGl0ZXItJmd0O21heF9zaykgewotCQkJCXNvY2tfaG9sZChzayk7Ci0JCQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKLQkJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewotCQkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwotCQkJCSpzdGFydF9zayA9IHNrOwotCQkJfQotCQkJZXhwZWN0ZWQmIzQzOyYjNDM7OwomIzQzOwkJaWYgKCFzZXFfc2tfbWF0Y2goc2VxLCBzaykpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlleHBlY3RlZCYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAoaXRlci0mZ3Q7ZW5kX3NrICZsdDsgaXRlci0mZ3Q7bWF4X3NrKSB7CiYjNDM7CQkJLyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDAKJiM0MzsJCQkgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybygmYW1wO3NrLSZndDtza19yZWZjbnQpKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKJiM0MzsJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewomIzQzOwkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwomIzQzOwkJCSpzdGFydF9zayA9IHNrOwogCQl9CiAJfQogCkBAIC0zMTI4LDEyICYjNDM7MzEyOCwxMyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSkKIAlzdHJ1Y3Qgc29jayAqc2s7CiAJaW50IGVycjsKIAomIzQzO2FnYWluOgogCXNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpOwogCWlmICghc2spCiAJCXJldHVybiBOVUxMOyAvKiBEb25lICovCiAKIAlleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCAmYW1wO3NrKTsKLQlpZiAobGlrZWx5KGl0ZXItJmd0O2VuZF9zayA9PSBleHBlY3RlZCkpCiYjNDM7CWlmIChsaWtlbHkoIXNrKSkKIAkJZ290byBkb25lOwogCiAJLyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqLwpAQCAtMzE0OSw3ICYjNDM7MzE1MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKQogCQlyZXR1cm4gTlVMTDsgLyogRG9uZSAqLwogCiAJZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgJmFtcDtzayk7Ci0JaWYgKGxpa2VseShpdGVyLSZndDtlbmRfc2sgPT0gZXhwZWN0ZWQpKQomIzQzOwlpZiAobGlrZWx5KCFzaykpCiAJCWdvdG8gZG9uZTsKIAogCS8qIEJhdGNoIHNpemUgd2FzIHN0aWxsIHRvbyBzbWFsbC4gSG9sZCBvbnRvIHRoZSBsb2NrIHdoaWxlIHdlIHRyeQpAQCAtMzE2MiwxMCAmIzQzOzMxNjMsMTQgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpCiAJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCi0JZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgJmFtcDtzayk7Ci0JV0FSTl9PTl9PTkNFKGl0ZXItJmd0O2VuZF9zayAhPSBleHBlY3RlZCk7CiYjNDM7CWJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCAmYW1wO3NrKTsKJiM0MzsJV0FSTl9PTl9PTkNFKHNrKTsKIGRvbmU6CiAJYnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTsKJiM0MzsJaWYgKHVubGlrZWx5KCFpdGVyLSZndDtlbmRfc2spKSB7CiYjNDM7CQkmIzQzOyYjNDM7aXRlci0mZ3Q7c3RhdGUuYnVja2V0OwomIzQzOwkJZ290byBhZ2FpbjsKJiM0MzsJfQogCXJldHVybiBpdGVyLSZndDtiYXRjaFswXS5zazsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODgxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBCUEYgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L3RjcF9pcHY0LmNgLiBTZWVtcyBsaWtlIGl04oCZcyBkZWFsaW5nIHdpdGggYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgYW5kIGBicGZfaXRlcl90Y3BfYmF0Y2hgLiBBaCwgcmlnaHQsIHRoaXMgaXMgdGhlIG9uZSB0aGF0IHdhcyBjYXVzaW5nIGlzc3VlcyB3aXRoIGhvdyBgcmVxc2tfcXVldWVfaGFzaF9yZXEoKWAgd2FzIGludGVyYWN0aW5nIHdpdGggcmVmZXJlbmNlIGNvdW50cy4gVGhlIGNvcmUgb2YgaXQgYXBwZWFycyB0byBiZSBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbi4gVGhlIHByZXZpb3VzIGNvZGUgd2FzIHBvdGVudGlhbGx5IGluc2VydGluZyBzb21ldGhpbmcgaW50byB0aGUgcXVldWUgd2l0aCBhIHplcm8gcmVmZXJlbmNlIGNvdW50IGFuZCB0aGVuIGluY3JlbWVudGluZyBpdCBhZnRlciBkcm9wcGluZyB0aGUgYnVja2V0IGxvY2suIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZywgYW5kIHRoZXkmIzM5O3ZlIGFkZHJlc3NlZCBpdCB1c2luZyBgcmVmY291bnRfaW5jX25vdF96ZXJvKCZhbXA7c2stJmd0O3NrX3JlZmNudClgIHJhdGhlciB0aGFuIGBzb2NrX2hvbGQoc2spYC4gQSBzYWZlciBhcHByb2FjaCwgaW5kZWVkLiBBbmQgdGhlbiB0aGVyZSYjMzk7cyBhIGxvZ2ljIGFkanVzdG1lbnQgaW4gYGJwZl9pdGVyX3RjcF9iYXRjaGAgdG8gcmUtbG9vcCBpZiBgaXRlci0mZ3Q7ZW5kX3NrYCBpcyB6ZXJvLiBQcm9iYWJseSBhIGNvbnNlcXVlbmNlIG9mIHRoYXQgcmVmY291bnQgY2hhbmdlLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpZiB0aGlzIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFNpbmNlIHRoaXMgYWxsIGZhbGxzIHVuZGVyIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCwgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGNoZWNrIGlzIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25kaXRpb25hbCBvbiBhbnkgQlBGLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBmZWF0dXJlIGlzIGJ1aWx0IGluLCBvciBwZXJoYXBzIGV2ZW4gYSBtb2R1bGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaW4gdGhlIGtlcm5lbCBjb25maWdzIHRvIHNlZSB3aGF0IHRoZSBidWlsZCBydWxlcyBkaWN0YXRlLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIHBhcnQgb2YgdGhlIEJQRiBzdWJzeXN0ZW0sIGJ1dCBiZXR0ZXIgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaXRlcl90Y3BfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9MzExMj1zdGF0aWMgdm9pZCBicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjMtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxMjQ6c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjUte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE3Nz1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTgyLVx0aWYgKCpwb3MpXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxODM6XHRcdHJldHVybiBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE4NC1cbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxODg9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjA5LVx0ZWxzZVxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjEwOlx0XHRzayA9IGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgY29kZSBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzLiBUaGF0IG1lYW5zIGRpdmluZyBpbnRvIHRoZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHF1aWNrbHkgc2Nhbm5pbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGAjaWZkZWZgIGRpcmVjdGl2ZXMsIHRoZSBgI2lmbmRlZmAgZGlyZWN0aXZlcywgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGAjZWxzZWAgYW5kIGAjZW5kaWZgIGJsb2Nrcy4gVGhvc2UgYXJlIHRoZSBrZXlzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsb3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGVmaW5lcyBhcmUgY29udHJvbGxpbmcgd2hpY2ggY29kZSBwYXRocyBhcmUgYWN0aXZlLiBJZGVudGlmeWluZyB0aG9zZSBkZWZpbmVzIHdpbGwgc2hvdyB0aGUgdmFyaW91cyB3YXlzIHRoaXMgY29kZSBjYW4gYmUgY29uZmlndXJlZCwgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCBlbnZpcm9ubWVudCwgYW5kIGFsbG93IG1lIHRvIHF1aWNrbHkgYW5hbHl6ZSB0aGUgbG9naWMgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHX0JQRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0yODUwPXN0YXRpYyBpbnQgdGNwNF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzQtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjI4NzU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc2LXVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtIHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMyODU9c3RhdGljIHVuc2lnbmVkIHNob3J0IHNlcV9maWxlX2ZhbWlseShjb25zdCBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODgtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODk6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkwLVx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMzQwPXN0cnVjdCBwcm90byB0Y3BfcHJvdCA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjQtXHQucHV0X3BvcnRcdFx0PSBpbmV0X3B1dF9wb3J0LFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMzY1OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Ni1cdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB0Y3BfYnBmX3VwZGF0ZV9wcm90byxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBJdGVyYXRpb24gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBCUEYgY29kZSBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBndWFyZGVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBHb29kIHRvIGtub3c7IHRoYXQmIzM5O3MgdGhlIGZpcnN0IGZpbHRlci4gTm93LCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IHNlZW0gdG8gYmUgbW9kaWZpZWQgYXJlIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYC4KCkxldCBtZSBxdWlja2x5IGNvbmZpcm0gaWYgdGhlc2UgYXJlIHN0YXRpYy4gWWVzLCBib3RoIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhcmUgaW5kZWVkIHN0YXRpYyBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhleSBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRyYWNpbmcgdGhlaXIgY2FsbGluZyBwYXRocyB0byBhbiBleHRlbnQuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IHdoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbCB0aGVzZSBzdGF0aWMgQlBGIGl0ZXJhdG9ycz8gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIGFjdHVhbGx5IHRyaWdnZXJlZCBhbmQgaG93IHRoZSBpdGVyYXRvcnMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBub24tc3RhdGljIGNhbGxlcnMgd2lsbCByZWFsbHkgc2hvdyBtZSB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTI0PXN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3Ni1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE3NzpzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzgte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI3OD1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9pdGVyX3RjcF9zZXFfb3BzID0ge1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVx0LnNob3dcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODA6XHQuc3RhcnRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0LFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjgxLVx0Lm5leHRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX25leHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBicGZfaXRlcl90Y3Bfc2VxX29wc2AgVXNhZ2UqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBicGZfaXRlcl90Y3Bfc2VxX29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGFjdHVhbGx5ICp1c2VkKj8gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8mIzM0OyBJIGtub3cgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQsIGJ1dCB1bmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBhcmNoaXRlY3R1cmUgaXMga2V5IHRvIGl0cyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdHJhY2UgaXRzIHV0aWxpemF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBCUEYgZWNvc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9pdGVyX3RjcF9zZXFfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jPTMyNjE9c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3NlcV9zdG9wKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI3Ny1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzI3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9pdGVyX3RjcF9zZXFfb3BzID0ge1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVx0LnNob3dcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg1PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkwLVx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyOTE6XHRpZiAoc2VxLVx1MDAzZW9wID09IFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkyLVx0XHRyZXR1cm4gQUZfVU5TUEVDO1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzYwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9pdGVyX3NlcV9pbmZvIHRjcF9zZXFfaW5mbyA9IHtcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYwMjpcdC5zZXFfb3BzXHRcdD0gXHUwMDI2YnBmX2l0ZXJfdGNwX3NlcV9vcHMsXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDMtXHQuaW5pdF9zZXFfcHJpdmF0ZVx0PSBicGZfaXRlcl9pbml0X3RjcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4KCioqSW52ZXN0aWdhdGluZyBgdGNwX3NlcV9pbmZvYCBVc2FnZSoqCgpBbHJpZ2h0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIGB0Y3Bfc2VxX2luZm9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBKdXN0IHNlZWluZyB0aGUgZGVjbGFyYXRpb24gaXNuJiMzOTt0IGVub3VnaDsgSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyByZWFkLCBtb2RpZmllZCwgYW5kIHBvdGVudGlhbGx5IGZyZWVkLiBUaGlzIGlzIGdvaW5nIHRvIHRlbGwgbWUgaXRzIHB1cnBvc2UgYW5kIGhvdyBjcml0aWNhbCBpdCBpcyB0byB0aGUgVENQIHN0YWNrJiMzOTtzIG9wZXJhdGlvbi4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhvc2UgY3Jvc3MtcmVmZXJlbmNlcyBpbiB0aGUgY29kZS4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9zZXFfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zNTkzPXN0YXRpYyB2b2lkIGJwZl9pdGVyX2ZpbmlfdGNwKHZvaWQgKnByaXZfZGF0YSlcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDAtXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM2MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfaXRlcl9zZXFfaW5mbyB0Y3Bfc2VxX2luZm8gPSB7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDItXHQuc2VxX29wc1x0XHQ9IFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzLFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzYyMj1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0Y3BfcmVnX2luZm8gPSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjI5LVx0LmdldF9mdW5jX3Byb3RvXHRcdD0gYnBmX2l0ZXJfdGNwX2dldF9mdW5jX3Byb3RvLFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjMwOlx0LnNlcV9pbmZvXHRcdD0gXHUwMDI2dGNwX3NlcV9pbmZvLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjMxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkludmVzdGlnYXRpbmcgYHRjcF9yZWdfaW5mb2AgVXNhZ2UqKgoKQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGxpY2F0aW9ucyBvZiBgdGNwX3JlZ19pbmZvYC4gV2hlcmUgaXMgdGhpcyBzdHJ1Y3R1cmUgYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHJlZmVyZW5jZXMgdG8gZ2V0IGEgc2Vuc2Ugb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgVENQIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHNvdXJjZSBjb2RlLCBwcm9iYWJseSB1c2luZyBncmVwIG9yIGEgc2ltaWxhciB0b29sLiBLbm93aW5nIHRoZSBjb250ZXh0cyB3aGVyZSBpdCYjMzk7cyBlbXBsb3llZCB3aWxsIHJldmVhbCBpdHMgcHVycG9zZSBhbmQgaG93IGNoYW5nZXMgdG8gaXQgbWlnaHQgcHJvcGFnYXRlIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gVW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgaXMga2V5LiBUaW1lIHRvIGdldCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfcmVnX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9MzYwOT1icGZfaXRlcl90Y3BfZ2V0X2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYyMS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYyMjpzdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0Y3BfcmVnX2luZm8gPSB7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjMtXHQudGFyZ2V0XHRcdFx0PSBcJiMzNDt0Y3BcJiMzNDssXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNjMzPXN0YXRpYyB2b2lkIF9faW5pdCBicGZfaXRlcl9yZWdpc3Rlcih2b2lkKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjM0LXtcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYzNTpcdHRjcF9yZWdfaW5mby5jdHhfYXJnX2luZm9bMF0uYnRmX2lkID0gYnRmX3NvY2tfaWRzW0JURl9TT0NLX1RZUEVfU09DS19DT01NT05dO1xubmV0L2lwdjQvdGNwX2lwdjQuYzozNjM2Olx0aWYgKGJwZl9pdGVyX3JlZ190YXJnZXQoXHUwMDI2dGNwX3JlZ19pbmZvKSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYzNy1cdFx0cHJfd2FybihcJiMzNDtXYXJuaW5nOiBjb3VsZCBub3QgcmVnaXN0ZXIgYnBmIGl0ZXJhdG9yIHRjcFxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NTAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSXRlcmF0b3IgZm9yIFRDUCBTb2NrZXRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBCUEYgaXRlcmF0b3IgZm9yIFRDUCBzb2NrZXRzIGlzIHNldCB1cC4gSXQgbG9va3MgbGlrZSB0aGUgcmVnaXN0cmF0aW9uIGhhcHBlbnMgdGhyb3VnaCBgYnBmX2l0ZXJfcmVnX3RhcmdldCgmYW1wO3RjcF9yZWdfaW5mbylgLiBTdGFuZGFyZCBCUEYgaXRlcmF0b3Igc3R1ZmYsIGludm9rZWQgd2hlbiBhIHVzZXIgcHJvZ3JhbSByZWFkcyBmcm9tIHRoZSBicGZfaXRlciBsaW5rLCBsaWtlbHkgdGhyb3VnaCBhIGBzZXFfZmlsZWAuIFRoZSB0eXBpY2FsIHN5c3RlbSBjYWxscyB3b3VsZCBiZSBgYnBmKClgIHRvIGxvYWQgdGhlIEJQRiBwcm9ncmFtIGFuZCBjcmVhdGUgdGhlIGxpbmssIGFuZCB0aGVuIGEgYHJlYWQoKWAgb24gdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGF0IGxpbmsuCgpTaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpY2FsbHkgZGVjbGFyZWQgYW5kIGNhbGxlZCB2aWEgc2VxX2ZpbGUgb3BlcmF0aW9ucywgdGhlIG1vc3QgbG9naWNhbCBlbnRyeSBwb2ludHMgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uIGFyZSB0aGUgc2VxX2ZpbGUgb3BlcmF0aW9ucyB0aGVtc2VsdmVzLiBBbHRlcm5hdGl2ZWx5LCBJIGNvdWxkIHNwZWNpZnkgdGhlIGl0ZXJhdG9yIGZ1bmN0aW9ucyBkaXJlY3RseSBsaWtlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGBicGZfaXRlcl90Y3Bfc2VxX3N0b3BgLCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfc2hvd2AuIEJ1dCBob2xkIG9uLCB3ZXJlbiYjMzk7dCBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAgYW5kIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgIHN0YXRpYz8gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0sIGdpdmVuIHRoYXQgc3l6a2FsbGVyIG1pZ2h0IHN0cnVnZ2xlIHdpdGggc3RhdGljIGZ1bmN0aW9ucy4KCkFoLCBidXQgdGhleSBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyBpbiBgYnBmX2l0ZXJfdGNwX3NlcV9vcHNgLiBUaGF0IG1lYW5zIHRoZXkgc2hvdWxkbiYjMzk7dCBiZSBpbmxpbmVkLiBJZiB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlc29sdmUgdGhlbS4gUmlnaHQsIEkgcmVtZW1iZXIgbm93LCBzeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zIGFzIGxvbmcgYXMgdGhleSBhcmVuJiMzOTt0IGlubGluZWQuIEJldHRlciB0byBiZSBzdXJlLiBUaW1lIHRvIGNoZWNrIGZvciBhbnkgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTI0PXN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3Ni1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE3NzpzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzgte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI3OD1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9pdGVyX3RjcF9zZXFfb3BzID0ge1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVx0LnNob3dcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODA6XHQuc3RhcnRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0LFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjgxLVx0Lm5leHRcdFx0PSBicGZfaXRlcl90Y3Bfc2VxX25leHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBCUEYgSXRlcmF0b3IgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyB3aXRoaW4gdGhlIEJQRiBpdGVyYXRvciBmb3IgVENQLiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGUgY29yZSBpc3N1ZSBzdGVtcyBmcm9tIGByZXFza19xdWV1ZV9oYXNoX3JlcSgpYCBhdHRlbXB0aW5nIHRvIGluc2VydCBhbiBlbnRyeSB3aXRoIGEgYHNrX3JlZmNudGAgb2YgemVyby4gVGhpcyBpcyBhIGNsYXNzaWMgY29uY3VycmVuY3kgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiBvciBjcmFzaGVzLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCYjMzk7cyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlLgoKVGhlIGNvbW1pdCBtZW50aW9ucyB0aGUgYENPTkZJR19CUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbiBhcyBiZWluZyBuZWNlc3NhcnkgdG8gcmVwcm9kdWNlIHRoZSBidWcuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYWxzbyBpbmZsdWVuY2UgdGhpcyBidWcmIzM5O3MgYmVoYXZpb3IsIGFuZCBtYWtlIHN1cmUgdGhhdCBhbnkgc3VnZ2VzdGVkIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBhcmUgY29tcGxldGUuIFRoaXMgaXMgdGhlIGtpbmQgb2YgZGV0YWlsIHRoYXQgaXMgY3JpdGljYWwgZm9yIGFueSBkb3duc3RyZWFtIHVzZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jPTI4NTA9c3RhdGljIGludCB0Y3A0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjg3NC1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6Mjg3NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzYtdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI4NT1zdGF0aWMgdW5zaWduZWQgc2hvcnQgc2VxX2ZpbGVfZmFtaWx5KGNvbnN0IHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI4OC1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzI4OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyOTAtXHQvKiBJdGVyYXRlZCBmcm9tIGJwZl9pdGVyLiAgTGV0IHRoZSBicGYgcHJvZyB0byBmaWx0ZXIgaW5zdGVhZC4gKi9cbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzNDA9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2NC1cdC5wdXRfcG9ydFx0XHQ9IGluZXRfcHV0X3BvcnQsXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNjU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY2LVx0LnBzb2NrX3VwZGF0ZV9za19wcm90XHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzE1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEJQRiBJdGVyYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBob21pbmcgaW4gb24gdGhlIEJQRiBzeXN0ZW0gY2FsbCBjb25maWd1cmF0aW9uIOKAkyBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IG9uZSB0byBjaGVjay4gSSBxdWlja2x5IGRvdWJsZS1jaGVja2VkIGBuZXQvaXB2NC9LY29uZmlnYCBqdXN0IHRvIGJlIHN1cmUgdGhlcmUgd2VyZW4mIzM5O3QgYW55IGhpZGRlbiBUQ1AtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYnV0IG9mIGNvdXJzZSwgVENQIGlzIGZ1bmRhbWVudGFsIHRvIExpbnV4LiBgQlBGX1NZU0NBTExgIGlzIGRlZmluaXRlbHkgdGhlIGtleS4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYmVzdCBmb2N1cyBzeW1ib2wgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YC4gSXQmIzM5O3Mgc3RhdGljLCBzbyBteSBmaXJzdCBpbnN0aW5jdCB3YXMgdG8gZmluZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIGhvdyB0aGUgaXRlcmF0aW9uIHdvcmtzOiB0aGUgVkZTIGxheWVyIGNhbGxzIGl0IGluZGlyZWN0bHkgdmlhIGBzZXFfcmVhZGAgLSZndDsgYG0tJmd0O29wLSZndDtzdGFydCgpYC4gQWN0dWFsbHksIHRoaXMgc3RhdGljIGZ1bmN0aW9uIGlzIGxpa2VseSBhIGJldHRlciBzeW1ib2wgdG8gZm9jdXMgb24gaW4gdGhpcyBjYXNlLCByYXRoZXIgdGhhbiBhbnkgY2FsbGVyLgoKVGhlbiBJIGhhZCBhIGV1cmVrYSBtb21lbnQhIFN5emthbGxlciYjMzk7cyBgRm9jdXNTeW1ib2xzYCBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkmIzM5O3JlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZSBhbmQgbm90IGlubGluZWQuIFNpbmNlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHNwZWNpZmljYWxseSBpbiBgYnBmX2l0ZXJfdGNwX3NlcV9vcHMuc3RhcnRgLCBpdCBjYW4mIzM5O3QgYmUgaW5saW5lZC4gVGhpcyBjaGFuZ2VzIHRoaW5ncyEgVGhhdCBtZWFucyBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAsIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgLCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfc3RvcGAgYXJlIGFsbCBpZGVhbCB0YXJnZXRzLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgaW5jbHVkZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFRoZXkmIzM5O3JlIHN0YXRpYywgYnV0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIHRoZXkgKm1pZ2h0KiBub3QgYmUgaW5saW5lZC4gSG9sZCBvbi4uLiBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBpcyBjYWxsZWQgZnJvbSBgYnBmX2l0ZXJfZmlsbF9iYXRjaGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYGJwZl9pdGVyX3RjcF9iYXRjaGAuIFRoYXQgbWVhbnMgSSYjMzk7dmUgZ290IGEgY2hhaW4sIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBpcyB0aGUgcG90ZW50aWFsIHdlYWsgcG9pbnQuIEkgYmV0dGVyIGNoZWNrIGlmIGBicGZfaXRlcl90Y3BfYmF0Y2hgIGlzIGlubGluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTEyPXN0YXRpYyB2b2lkIGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyMy1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzEyNDpzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNS17XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTc3PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODItXHRpZiAoKnBvcylcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4MzpcdFx0cmV0dXJuIGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg0LVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE4OD1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMDktXHRlbHNlXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTA6XHRcdHNrID0gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NTEKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBCUEYgSXRlcmF0b3IgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCB3YXkgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIFRDUCBCUEYgaXRlcmF0b3IgZml4LiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zLgoKRmlyc3QsIEkgc2VlIHRoZSBjb3JlIEJQRiBpdGVyYXRvciBmdW5jdGlvbnMgaW52b2x2ZWQgYXJlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGBicGZfaXRlcl90Y3BfYmF0Y2hgLCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFJlbWVtYmVyaW5nIHRoZSBwcmluY2lwbGUgb2YgZmF2b3Jpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLCBJIHF1aWNrbHkgcmVhbGl6ZSB0aGF0IGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAgYXJlIGlkZWFsIGNhbmRpZGF0ZXMuIFRoZXkmIzM5O3JlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHRoZXkgYXJlIG5vdCBpbmxpbmVkLiBHcmVhdC4KCkkgbmVlZCB0byBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3Qgb3RoZXIgaGlkZGVuIGZ1bmN0aW9ucywgc28gSSB0aGluayB0byBteXNlbGY6ICYjMzQ7QXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucz8mIzM0OyBUaGUgQlBGIGl0ZXJhdG9yIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIGBicGZfaXRlcl9yZWdpc3RlcmAsIHdoaWNoIGlzIG1hcmtlZCBgX19pbml0YC4gVGhlIGFjdHVhbCBpdGVyYXRpb24gaXMgdXNlci1zcGFjZSB0cmlnZ2VyZWQgYnkgYHJlYWQoKWAgb24gdGhlIGJwZl9pdGVyIGxpbmsgZmQuIFRoaXMgY29uZmlybXMgdGhhdCB0aG9zZSB0d28gYHNlcV9vcHNgIGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIHByb21wdCBpbmRpY2F0ZXMgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBsaWtlbHkgdGhlIHByaW1hcnkgY29uY2Vybi4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLCBsaWtlIGBDT05GSUdfSVBWNmAuIEhvd2V2ZXIsIHNpbmNlIHRoZSBmaWxlIGlzIGB0Y3BfaXB2NC5jYCwgSVB2NCBzZWVtcyB0byBiZSBhIGdpdmVuLiBJJiMzOTtsbCBtYWtlIGEgbm90ZSBvZiB0aGlzIGFuZCBzZXQgYFdvcnRoRnV6emluZzogdHJ1ZWAuCgpGb2N1c2luZyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZywgSSYjMzk7bGwgc2V0IGBGb2N1c1N5bWJvbHM6IGJwZl9pdGVyX3RjcF9zZXFfc3RhcnRgLCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAuIEFuZCwgb2J2aW91c2x5LCBJIHNob3VsZCBzZXQgYEVuYWJsZUNvbmZpZ3M6IEJQRl9TWVNDQUxMYC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBmdW5jdGlvbi4gQWgsIHllcywgaXQmIzM5O3Mgc3RhdGljLiBTbywgdGhlIGRlY2lzaW9uIHRvIGZvY3VzIG9uIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAgc3RpbGwgaG9sZHMuCgpUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGFwcHJvYWNoIGlzIGNsZWFyLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIGZsYXcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIEJQRiBzdWJzeXN0ZW0gYW5kIFRDUC4gVGhlcmVmb3JlLCBpdCYjMzk7cyByZWFjaGFibGUgY29yZSBjb2RlIHRoYXQmIzM5O3Mgd29ydGggZnV6emluZy4KCk5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX3NlcV9zdGFydCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl90Y3Bfc2VxX25leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFRDUCBCUEYgaXRlcmF0b3Igd2hlcmUgYSBzb2NrZXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIHplcm8gcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSAoQlBGIHN1YnN5c3RlbSBpbnRlcmFjdGluZyB3aXRoIFRDUCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo0OS4yNjU2NzM5ODNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA4ODAyNTMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfbmV4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgKEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3Rpbmcgd2l0aCBUQ1ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo0OS4yNjU2Nzk1NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzYxOTQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDliYjlmODY3MjRmZGY0NzYyODRjMGE3YWYyNmM1NTEzM2FiZTMxZGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbmluZGV4IDIwOWVmNzUyMjUwOGYuLjEwMzQ3NTdhNTMyODAgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5AQCAtMzA3MywyNCArMzA3MywyNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcXG4tXFx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMTtcXG4tXFx0c3RydWN0IHNvY2sgKnNrO1xcbi1cXG4tXFx0c29ja19ob2xkKCpzdGFydF9zayk7XFxuLVxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9ICpzdGFydF9zaztcXG4rXFx0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xcbitcXHR1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAwO1xcbiBcXG4tXFx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XFxuIFxcdCpzdGFydF9zayA9IE5VTEw7XFxuIFxcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcXG4tXFx0XFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xcbi1cXHRcXHRcXHRpZiAoaXRlci1cXHUwMDNlZW5kX3NrIFxcdTAwM2MgaXRlci1cXHUwMDNlbWF4X3NrKSB7XFxuLVxcdFxcdFxcdFxcdHNvY2tfaG9sZChzayk7XFxuLVxcdFxcdFxcdFxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9IHNrO1xcbi1cXHRcXHRcXHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcXG4tXFx0XFx0XFx0XFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXFxuLVxcdFxcdFxcdFxcdCpzdGFydF9zayA9IHNrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGV4cGVjdGVkKys7XFxuK1xcdFxcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0ZXhwZWN0ZWQrKztcXG4rXFx0XFx0aWYgKGl0ZXItXFx1MDAzZWVuZF9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZW1heF9zaykge1xcbitcXHRcXHRcXHQvKiByZXFza19xdWV1ZV9oYXNoX3JlcSgpIGluc2VydHMgd2l0aCBza19yZWZjbnQgPT0gMFxcbitcXHRcXHRcXHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseSghcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZzay1cXHUwMDNlc2tfcmVmY250KSkpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRpdGVyLVxcdTAwM2ViYXRjaFtpdGVyLVxcdTAwM2VlbmRfc2srK10uc2sgPSBzaztcXG4rXFx0XFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XFxuK1xcdFxcdFxcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xcbitcXHRcXHRcXHQqc3RhcnRfc2sgPSBzaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbkBAIC0zMTI4LDEyICszMTI4LDEzIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbiBcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIFxcdGludCBlcnI7XFxuIFxcbithZ2FpbjpcXG4gXFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XFxuIFxcdGlmICghc2spXFxuIFxcdFxcdHJldHVybiBOVUxMOyAvKiBEb25lICovXFxuIFxcbiBcXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbi1cXHRpZiAobGlrZWx5KGl0ZXItXFx1MDAzZWVuZF9zayA9PSBleHBlY3RlZCkpXFxuK1xcdGlmIChsaWtlbHkoIXNrKSlcXG4gXFx0XFx0Z290byBkb25lO1xcbiBcXG4gXFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xcbkBAIC0zMTQ5LDcgKzMxNTAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cXG4gXFxuIFxcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFxcdTAwMjZzayk7XFxuLVxcdGlmIChsaWtlbHkoaXRlci1cXHUwMDNlZW5kX3NrID09IGV4cGVjdGVkKSlcXG4rXFx0aWYgKGxpa2VseSghc2spKVxcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcbiBcXHQvKiBCYXRjaCBzaXplIHdhcyBzdGlsbCB0b28gc21hbGwuIEhvbGQgb250byB0aGUgbG9jayB3aGlsZSB3ZSB0cnlcXG5AQCAtMzE2MiwxMCArMzE2MywxNCBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gXFx0fVxcbiBcXG4tXFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXFx1MDAyNnNrKTtcXG4tXFx0V0FSTl9PTl9PTkNFKGl0ZXItXFx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XFxuK1xcdGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbitcXHRXQVJOX09OX09OQ0Uoc2spO1xcbiBkb25lOlxcbiBcXHRicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzZXEpO1xcbitcXHRpZiAodW5saWtlbHkoIWl0ZXItXFx1MDAzZWVuZF9zaykpIHtcXG4rXFx0XFx0KytpdGVyLVxcdTAwM2VzdGF0ZS5idWNrZXQ7XFxuK1xcdFxcdGdvdG8gYWdhaW47XFxuK1xcdH1cXG4gXFx0cmV0dXJuIGl0ZXItXFx1MDAzZWJhdGNoWzBdLnNrO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo0OS41NzM5MDg3MThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NDc3OTc4MjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfbmV4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgKEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3Rpbmcgd2l0aCBUQ1ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5YmI5Zjg2NzI0ZmRmNDc2Mjg0YzBhN2FmMjZjNTUxMzNhYmUzMWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwODo0Mjo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCAyMDllZjc1MjI1MDhmLi4xMDM0NzU3YTUzMjgwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTMwNzMsMjQgKzMwNzMsMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEsXG4ge1xuIFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGhsaXN0X251bGxzX25vZGUgKm5vZGU7XG4tXHR1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAxO1xuLVx0c3RydWN0IHNvY2sgKnNrO1xuLVxuLVx0c29ja19ob2xkKCpzdGFydF9zayk7XG4tXHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrKytdLnNrID0gKnN0YXJ0X3NrO1xuK1x0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xuK1x0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMDtcbiBcbi1cdHNrID0gc2tfbnVsbHNfbmV4dCgqc3RhcnRfc2spO1xuIFx0KnN0YXJ0X3NrID0gTlVMTDtcbiBcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcbi1cdFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xuLVx0XHRcdGlmIChpdGVyLVx1MDAzZWVuZF9zayBcdTAwM2MgaXRlci1cdTAwM2VtYXhfc2spIHtcbi1cdFx0XHRcdHNvY2tfaG9sZChzayk7XG4tXHRcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrKytdLnNrID0gc2s7XG4tXHRcdFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XG4tXHRcdFx0XHQvKiBSZW1lbWJlciB3aGVyZSB3ZSBsZWZ0IG9mZi4gKi9cbi1cdFx0XHRcdCpzdGFydF9zayA9IHNrO1xuLVx0XHRcdH1cbi1cdFx0XHRleHBlY3RlZCsrO1xuK1x0XHRpZiAoIXNlcV9za19tYXRjaChzZXEsIHNrKSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0ZXhwZWN0ZWQrKztcbitcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuK1x0XHRcdC8qIHJlcXNrX3F1ZXVlX2hhc2hfcmVxKCkgaW5zZXJ0cyB3aXRoIHNrX3JlZmNudCA9PSAwXG4rXHRcdFx0ICogYW5kIHJlZmNvdW50X3NldCgpcyBpdCBhZnRlciB0aGUgYnVja2V0IGxvY2sgZHJvcHMuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKHVubGlrZWx5KCFyZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2c2stXHUwMDNlc2tfcmVmY250KSkpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrKytdLnNrID0gc2s7XG4rXHRcdH0gZWxzZSBpZiAoISpzdGFydF9zaykge1xuK1x0XHRcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xuK1x0XHRcdCpzdGFydF9zayA9IHNrO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMzEyOCwxMiArMzEyOCwxMyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbiBcdHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBlcnI7XG4gXG4rYWdhaW46XG4gXHRzayA9IGJwZl9pdGVyX3RjcF9yZXN1bWUoc2VxKTtcbiBcdGlmICghc2spXG4gXHRcdHJldHVybiBOVUxMOyAvKiBEb25lICovXG4gXG4gXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4tXHRpZiAobGlrZWx5KGl0ZXItXHUwMDNlZW5kX3NrID09IGV4cGVjdGVkKSlcbitcdGlmIChsaWtlbHkoIXNrKSlcbiBcdFx0Z290byBkb25lO1xuIFxuIFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xuQEAgLTMxNDksNyArMzE1MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuIFx0XHRyZXR1cm4gTlVMTDsgLyogRG9uZSAqL1xuIFxuIFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXHUwMDI2c2spO1xuLVx0aWYgKGxpa2VseShpdGVyLVx1MDAzZWVuZF9zayA9PSBleHBlY3RlZCkpXG4rXHRpZiAobGlrZWx5KCFzaykpXG4gXHRcdGdvdG8gZG9uZTtcbiBcbiBcdC8qIEJhdGNoIHNpemUgd2FzIHN0aWxsIHRvbyBzbWFsbC4gSG9sZCBvbnRvIHRoZSBsb2NrIHdoaWxlIHdlIHRyeVxuQEAgLTMxNjIsMTAgKzMxNjMsMTQgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4tXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcdTAwMjZzayk7XG4tXHRXQVJOX09OX09OQ0UoaXRlci1cdTAwM2VlbmRfc2sgIT0gZXhwZWN0ZWQpO1xuK1x0YnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbitcdFdBUk5fT05fT05DRShzayk7XG4gZG9uZTpcbiBcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XG4rXHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuK1x0XHQrK2l0ZXItXHUwMDNlc3RhdGUuYnVja2V0O1xuK1x0XHRnb3RvIGFnYWluO1xuK1x0fVxuIFx0cmV0dXJuIGl0ZXItXHUwMDNlYmF0Y2hbMF0uc2s7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDI6NDkuNTczOTA5NzI4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMTQ5NzQwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUQ1AgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvdGNwX2lwdjQuY2AuIFNlZW1zIGxpa2UgaXTigJlzIGRlYWxpbmcgd2l0aCBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuIEFoLCByaWdodCwgdGhpcyBpcyB0aGUgb25lIHRoYXQgd2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggaG93IGByZXFza19xdWV1ZV9oYXNoX3JlcSgpYCB3YXMgaW50ZXJhY3Rpbmcgd2l0aCByZWZlcmVuY2UgY291bnRzLiBUaGUgY29yZSBvZiBpdCBhcHBlYXJzIHRvIGJlIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uLiBUaGUgcHJldmlvdXMgY29kZSB3YXMgcG90ZW50aWFsbHkgaW5zZXJ0aW5nIHNvbWV0aGluZyBpbnRvIHRoZSBxdWV1ZSB3aXRoIGEgemVybyByZWZlcmVuY2UgY291bnQgYW5kIHRoZW4gaW5jcmVtZW50aW5nIGl0IGFmdGVyIGRyb3BwaW5nIHRoZSBidWNrZXQgbG9jay4gVGhhdCdzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcsIGFuZCB0aGV5J3ZlIGFkZHJlc3NlZCBpdCB1c2luZyBgcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNnNrLVx1MDAzZXNrX3JlZmNudClgIHJhdGhlciB0aGFuIGBzb2NrX2hvbGQoc2spYC4gQSBzYWZlciBhcHByb2FjaCwgaW5kZWVkLiBBbmQgdGhlbiB0aGVyZSdzIGEgbG9naWMgYWRqdXN0bWVudCBpbiBgYnBmX2l0ZXJfdGNwX2JhdGNoYCB0byByZS1sb29wIGlmIGBpdGVyLVx1MDAzZWVuZF9za2AgaXMgemVyby4gUHJvYmFibHkgYSBjb25zZXF1ZW5jZSBvZiB0aGF0IHJlZmNvdW50IGNoYW5nZS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpZiB0aGlzIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFNpbmNlIHRoaXMgYWxsIGZhbGxzIHVuZGVyIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCwgdGhlIGZpcnN0IHRoaW5nIEknbGwgY2hlY2sgaXMgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbmRpdGlvbmFsIG9uIGFueSBCUEYtcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgZmVhdHVyZSBpcyBidWlsdCBpbiwgb3IgcGVyaGFwcyBldmVuIGEgbW9kdWxlLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaW4gdGhlIGtlcm5lbCBjb25maWdzIHRvIHNlZSB3aGF0IHRoZSBidWlsZCBydWxlcyBkaWN0YXRlLiBJJ20gYXNzdW1pbmcgaXQncyBwYXJ0IG9mIHRoZSBCUEYgc3Vic3lzdGVtLCBidXQgYmV0dGVyIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo1NC41NzU0MTAxMjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3Mjg3ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pdGVyX3RjcF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MzExMj1zdGF0aWMgdm9pZCBicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyMy1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxMjQ6c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTI1LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE3Nz1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODItXFx0aWYgKCpwb3MpXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTgzOlxcdFxcdHJldHVybiBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODQtXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxODg9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMDktXFx0ZWxzZVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzIxMDpcXHRcXHRzayA9IGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzIxMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDI6NTQuNzAyNzA0ODIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcyODQ5NDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgY29kZSBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzLiBUaGF0IG1lYW5zIGRpdmluZyBpbnRvIHRoZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gTGV0J3Mgc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBgI2lmZGVmYCBkaXJlY3RpdmVzLCB0aGUgYCNpZm5kZWZgIGRpcmVjdGl2ZXMsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgI2Vsc2VgIGFuZCBgI2VuZGlmYCBibG9ja3MuIFRob3NlIGFyZSB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgYXJlIGNvbnRyb2xsaW5nIHdoaWNoIGNvZGUgcGF0aHMgYXJlIGFjdGl2ZS4gSWRlbnRpZnlpbmcgdGhvc2UgZGVmaW5lcyB3aWxsIHNob3cgdGhlIHZhcmlvdXMgd2F5cyB0aGlzIGNvZGUgY2FuIGJlIGNvbmZpZ3VyZWQsIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQsIGFuZCBhbGxvdyBtZSB0byBxdWlja2x5IGFuYWx5emUgdGhlIGxvZ2ljIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0Mjo1Ny40MzEyMDMxMzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MjI5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmIENPTkZJR19CUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTI4NTA9c3RhdGljIGludCB0Y3A0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc0LVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6Mjg3NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc2LXVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtIHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI4NT1zdGF0aWMgdW5zaWduZWQgc2hvcnQgc2VxX2ZpbGVfZmFtaWx5KGNvbnN0IHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjg4LVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzI4OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjkwLVxcdC8qIEl0ZXJhdGVkIGZyb20gYnBmX2l0ZXIuICBMZXQgdGhlIGJwZiBwcm9nIHRvIGZpbHRlciBpbnN0ZWFkLiAqL1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMzQwPXN0cnVjdCBwcm90byB0Y3BfcHJvdCA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2NC1cXHQucHV0X3BvcnRcXHRcXHQ9IGluZXRfcHV0X3BvcnQsXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMzY1OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjYtXFx0LnBzb2NrX3VwZGF0ZV9za19wcm90XFx0PSB0Y3BfYnBmX3VwZGF0ZV9wcm90byxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDI6NTcuNDc0NzMyMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjExOTQ3OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgSXRlcmF0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEJQRiBjb2RlIGFuZCBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGd1YXJkZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAuIEdvb2QgdG8ga25vdzsgdGhhdCdzIHRoZSBmaXJzdCBmaWx0ZXIuIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBzZWVtIHRvIGJlIG1vZGlmaWVkIGFyZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuXG5cbkxldCBtZSBxdWlja2x5IGNvbmZpcm0gaWYgdGhlc2UgYXJlIHN0YXRpYy4gWWVzLCBib3RoIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhcmUgaW5kZWVkIHN0YXRpYyBmdW5jdGlvbnMuIFRoaXMgbWVhbnMgdGhleSBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRyYWNpbmcgdGhlaXIgY2FsbGluZyBwYXRocyB0byBhbiBleHRlbnQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIHN0YXRpYyBCUEYgaXRlcmF0b3JzPyBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtb2RpZmljYXRpb25zIGFyZSBhY3R1YWxseSB0cmlnZ2VyZWQgYW5kIGhvdyB0aGUgaXRlcmF0b3JzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgbm9uLXN0YXRpYyBjYWxsZXJzIHdpbGwgcmVhbGx5IHNob3cgbWUgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDEuMDg2NjgzMDc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDg5MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTMxMjQ9c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzYtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTc3OnN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxNzgte1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjc4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgYnBmX2l0ZXJfdGNwX3NlcV9vcHMgPSB7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVxcdC5zaG93XFx0XFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjgwOlxcdC5zdGFydFxcdFxcdD0gYnBmX2l0ZXJfdGNwX3NlcV9zdGFydCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODEtXFx0Lm5leHRcXHRcXHQ9IGJwZl9pdGVyX3RjcF9zZXFfbmV4dCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDEuMTMxMTc2MjM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NzU4MzgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgYnBmX2l0ZXJfdGNwX3NlcV9vcHNgIFVzYWdlKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGJwZl9pdGVyX3RjcF9zZXFfb3BzYCBzdHJ1Y3R1cmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlJ3MgdGhpcyBhY3R1YWxseSAqdXNlZCo/IFdoYXQncyB0aGUgY29udGV4dD9cIiBJIGtub3cgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCwgYnV0IHVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGFyY2hpdGVjdHVyZSBpcyBrZXkgdG8gaXRzIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXRpbGl6YXRpb24gd2l0aGluIHRoZSBicm9hZGVyIEJQRiBlY29zeXN0ZW0uIExldCdzIHNlZSBpZiBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDg2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDQuMzA4NzYzNjc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYzMTc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl90Y3Bfc2VxX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MzI2MT1zdGF0aWMgdm9pZCBicGZfaXRlcl90Y3Bfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyNzctXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjc4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgYnBmX2l0ZXJfdGNwX3NlcV9vcHMgPSB7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjc5LVxcdC5zaG93XFx0XFx0PSBicGZfaXRlcl90Y3Bfc2VxX3Nob3csXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMyODU9c3RhdGljIHVuc2lnbmVkIHNob3J0IHNlcV9maWxlX2ZhbWlseShjb25zdCBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI5MC1cXHQvKiBJdGVyYXRlZCBmcm9tIGJwZl9pdGVyLiAgTGV0IHRoZSBicGYgcHJvZyB0byBmaWx0ZXIgaW5zdGVhZC4gKi9cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyOTE6XFx0aWYgKHNlcS1cXHUwMDNlb3AgPT0gXFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI5Mi1cXHRcXHRyZXR1cm4gQUZfVU5TUEVDO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2l0ZXJfc2VxX2luZm8gdGNwX3NlcV9pbmZvID0ge1xcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYwMjpcXHQuc2VxX29wc1xcdFxcdD0gXFx1MDAyNmJwZl9pdGVyX3RjcF9zZXFfb3BzLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYwMy1cXHQuaW5pdF9zZXFfcHJpdmF0ZVxcdD0gYnBmX2l0ZXJfaW5pdF90Y3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjA0LjM1MjQwMTEyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA1NTM2NDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkludmVzdGlnYXRpbmcgYHRjcF9zZXFfaW5mb2AgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIGB0Y3Bfc2VxX2luZm9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBKdXN0IHNlZWluZyB0aGUgZGVjbGFyYXRpb24gaXNuJ3QgZW5vdWdoOyBJIG5lZWQgdG8gdHJhY2UgaXRzIHJlZmVyZW5jZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0J3MgYmVpbmcgcmVhZCwgbW9kaWZpZWQsIGFuZCBwb3RlbnRpYWxseSBmcmVlZC4gVGhpcyBpcyBnb2luZyB0byB0ZWxsIG1lIGl0cyBwdXJwb3NlIGFuZCBob3cgY3JpdGljYWwgaXQgaXMgdG8gdGhlIFRDUCBzdGFjaydzIG9wZXJhdGlvbi4gSSdsbCBzdGFydCBieSBsb29raW5nIGZvciB0aG9zZSBjcm9zcy1yZWZlcmVuY2VzIGluIHRoZSBjb2RlLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGRlZXBlciBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjA3LjI1NzkzOTk3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc4MjY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3Bfc2VxX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTM1OTM9c3RhdGljIHZvaWQgYnBmX2l0ZXJfZmluaV90Y3Aodm9pZCAqcHJpdl9kYXRhKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjAwLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzYwMTpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9pdGVyX3NlcV9pbmZvIHRjcF9zZXFfaW5mbyA9IHtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MDItXFx0LnNlcV9vcHNcXHRcXHQ9IFxcdTAwMjZicGZfaXRlcl90Y3Bfc2VxX29wcyxcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzYyMj1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0Y3BfcmVnX2luZm8gPSB7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjktXFx0LmdldF9mdW5jX3Byb3RvXFx0XFx0PSBicGZfaXRlcl90Y3BfZ2V0X2Z1bmNfcHJvdG8sXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjMwOlxcdC5zZXFfaW5mb1xcdFxcdD0gXFx1MDAyNnRjcF9zZXFfaW5mbyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MzEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MDcuMzAyNzI4NzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNDkyNDU2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipJbnZlc3RpZ2F0aW5nIGB0Y3BfcmVnX2luZm9gIFVzYWdlKipcblxuQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGxpY2F0aW9ucyBvZiBgdGNwX3JlZ19pbmZvYC4gV2hlcmUgaXMgdGhpcyBzdHJ1Y3R1cmUgYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHJlZmVyZW5jZXMgdG8gZ2V0IGEgc2Vuc2Ugb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgVENQIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgc291cmNlIGNvZGUsIHByb2JhYmx5IHVzaW5nIGdyZXAgb3IgYSBzaW1pbGFyIHRvb2wuIEtub3dpbmcgdGhlIGNvbnRleHRzIHdoZXJlIGl0J3MgZW1wbG95ZWQgd2lsbCByZXZlYWwgaXRzIHB1cnBvc2UgYW5kIGhvdyBjaGFuZ2VzIHRvIGl0IG1pZ2h0IHByb3BhZ2F0ZSB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGlzIGtleS4gVGltZSB0byBnZXQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjE1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjEwLjEwNzY1NTU5N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1Mjc0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3JlZ19pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuYz0zNjA5PWJwZl9pdGVyX3RjcF9nZXRfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjEtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjIyOnN0YXRpYyBzdHJ1Y3QgYnBmX2l0ZXJfcmVnIHRjcF9yZWdfaW5mbyA9IHtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2MjMtXFx0LnRhcmdldFxcdFxcdFxcdD0gXFxcInRjcFxcXCIsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTM2MzM9c3RhdGljIHZvaWQgX19pbml0IGJwZl9pdGVyX3JlZ2lzdGVyKHZvaWQpXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjM0LXtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM2MzU6XFx0dGNwX3JlZ19pbmZvLmN0eF9hcmdfaW5mb1swXS5idGZfaWQgPSBidGZfc29ja19pZHNbQlRGX1NPQ0tfVFlQRV9TT0NLX0NPTU1PTl07XFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjM2OlxcdGlmIChicGZfaXRlcl9yZWdfdGFyZ2V0KFxcdTAwMjZ0Y3BfcmVnX2luZm8pKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzYzNy1cXHRcXHRwcl93YXJuKFxcXCJXYXJuaW5nOiBjb3VsZCBub3QgcmVnaXN0ZXIgYnBmIGl0ZXJhdG9yIHRjcFxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjEwLjE1NDE4Nzc3NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTAxNDc3MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdG9yIGZvciBUQ1AgU29ja2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIEJQRiBpdGVyYXRvciBmb3IgVENQIHNvY2tldHMgaXMgc2V0IHVwLiBJdCBsb29rcyBsaWtlIHRoZSByZWdpc3RyYXRpb24gaGFwcGVucyB0aHJvdWdoIGBicGZfaXRlcl9yZWdfdGFyZ2V0KFx1MDAyNnRjcF9yZWdfaW5mbylgLiBTdGFuZGFyZCBCUEYgaXRlcmF0b3Igc3R1ZmYsIGludm9rZWQgd2hlbiBhIHVzZXIgcHJvZ3JhbSByZWFkcyBmcm9tIHRoZSBicGZfaXRlciBsaW5rLCBsaWtlbHkgdGhyb3VnaCBhIGBzZXFfZmlsZWAuIFRoZSB0eXBpY2FsIHN5c3RlbSBjYWxscyB3b3VsZCBiZSBgYnBmKClgIHRvIGxvYWQgdGhlIEJQRiBwcm9ncmFtIGFuZCBjcmVhdGUgdGhlIGxpbmssIGFuZCB0aGVuIGEgYHJlYWQoKWAgb24gdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGF0IGxpbmsuXG5cblNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljYWxseSBkZWNsYXJlZCBhbmQgY2FsbGVkIHZpYSBzZXFfZmlsZSBvcGVyYXRpb25zLCB0aGUgbW9zdCBsb2dpY2FsIGVudHJ5IHBvaW50cyBJJ20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiBhcmUgdGhlIHNlcV9maWxlIG9wZXJhdGlvbnMgdGhlbXNlbHZlcy4gQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCBzcGVjaWZ5IHRoZSBpdGVyYXRvciBmdW5jdGlvbnMgZGlyZWN0bHkgbGlrZSBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAsIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgLCBgYnBmX2l0ZXJfdGNwX3NlcV9zdG9wYCwgYW5kIGBicGZfaXRlcl90Y3Bfc2VxX3Nob3dgLiBCdXQgaG9sZCBvbiwgd2VyZW4ndCBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAgYW5kIGBicGZfaXRlcl90Y3Bfc2VxX25leHRgIHN0YXRpYz8gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0sIGdpdmVuIHRoYXQgc3l6a2FsbGVyIG1pZ2h0IHN0cnVnZ2xlIHdpdGggc3RhdGljIGZ1bmN0aW9ucy5cblxuQWgsIGJ1dCB0aGV5IGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGBicGZfaXRlcl90Y3Bfc2VxX29wc2AuIFRoYXQgbWVhbnMgdGhleSBzaG91bGRuJ3QgYmUgaW5saW5lZC4gSWYgdGhleSBhcmVuJ3QgaW5saW5lZCwgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlc29sdmUgdGhlbS4gUmlnaHQsIEkgcmVtZW1iZXIgbm93LCBzeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zIGFzIGxvbmcgYXMgdGhleSBhcmVuJ3QgaW5saW5lZC4gQmV0dGVyIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgZm9yIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcywganVzdCBpbiBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjUwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjE2LjA1NTY2NzQ1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1OTA2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2l0ZXJfdGNwX3NlcV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MzEyND1zdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3Ni1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMxNzc6c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzE3OC17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMyNzg9c3RhdGljIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBicGZfaXRlcl90Y3Bfc2VxX29wcyA9IHtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyNzktXFx0LnNob3dcXHRcXHQ9IGJwZl9pdGVyX3RjcF9zZXFfc2hvdyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyODA6XFx0LnN0YXJ0XFx0XFx0PSBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0LFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI4MS1cXHQubmV4dFxcdFxcdD0gYnBmX2l0ZXJfdGNwX3NlcV9uZXh0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0MzoxNi4xMDcyNjM5MzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzODY1ODIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDUCBCUEYgSXRlcmF0b3IgQnVnIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIHdpdGhpbiB0aGUgQlBGIGl0ZXJhdG9yIGZvciBUQ1AuIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoZSBjb3JlIGlzc3VlIHN0ZW1zIGZyb20gYHJlcXNrX3F1ZXVlX2hhc2hfcmVxKClgIGF0dGVtcHRpbmcgdG8gaW5zZXJ0IGFuIGVudHJ5IHdpdGggYSBgc2tfcmVmY250YCBvZiB6ZXJvLiBUaGlzIGlzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBpc3N1ZSB0aGF0IGNhbiBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uIG9yIGNyYXNoZXMsIGFuZCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQncyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlLlxuXG5UaGUgY29tbWl0IG1lbnRpb25zIHRoZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBjb25maWd1cmF0aW9uIGFzIGJlaW5nIG5lY2Vzc2FyeSB0byByZXByb2R1Y2UgdGhlIGJ1Zy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhbHNvIGluZmx1ZW5jZSB0aGlzIGJ1ZydzIGJlaGF2aW9yLCBhbmQgbWFrZSBzdXJlIHRoYXQgYW55IHN1Z2dlc3RlZCBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIGNvbXBsZXRlLiBUaGlzIGlzIHRoZSBraW5kIG9mIGRldGFpbCB0aGF0IGlzIGNyaXRpY2FsIGZvciBhbnkgZG93bnN0cmVhbSB1c2Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjE5LjY0NTkyNDgzNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3ODEyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9Mjg1MD1zdGF0aWMgaW50IHRjcDRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzQtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyODc1OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzYtdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg1PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODgtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjg5OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyOTAtXFx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzNDA9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY0LVxcdC5wdXRfcG9ydFxcdFxcdD0gaW5ldF9wdXRfcG9ydCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNjU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Ni1cXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwODo0MzoxOS42OTE3MTA2MzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2MTU2MTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgSXRlcmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGhvbWluZyBpbiBvbiB0aGUgQlBGIHN5c3RlbSBjYWxsIGNvbmZpZ3VyYXRpb24g4oCTIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyB0aGUgcHJpbWFyeSBvbmUgdG8gY2hlY2suIEkgcXVpY2tseSBkb3VibGUtY2hlY2tlZCBgbmV0L2lwdjQvS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlIHRoZXJlIHdlcmVuJ3QgYW55IGhpZGRlbiBUQ1AtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYnV0IG9mIGNvdXJzZSwgVENQIGlzIGZ1bmRhbWVudGFsIHRvIExpbnV4LiBgQlBGX1NZU0NBTExgIGlzIGRlZmluaXRlbHkgdGhlIGtleS5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3QgZm9jdXMgc3ltYm9sIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBgYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAuIEl0J3Mgc3RhdGljLCBzbyBteSBmaXJzdCBpbnN0aW5jdCB3YXMgdG8gZmluZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIGhvdyB0aGUgaXRlcmF0aW9uIHdvcmtzOiB0aGUgVkZTIGxheWVyIGNhbGxzIGl0IGluZGlyZWN0bHkgdmlhIGBzZXFfcmVhZGAgLVx1MDAzZSBgbS1cdTAwM2VvcC1cdTAwM2VzdGFydCgpYC4gQWN0dWFsbHksIHRoaXMgc3RhdGljIGZ1bmN0aW9uIGlzIGxpa2VseSBhIGJldHRlciBzeW1ib2wgdG8gZm9jdXMgb24gaW4gdGhpcyBjYXNlLCByYXRoZXIgdGhhbiBhbnkgY2FsbGVyLlxuXG5UaGVuIEkgaGFkIGEgZXVyZWthIG1vbWVudCEgU3l6a2FsbGVyJ3MgYEZvY3VzU3ltYm9sc2AgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5J3JlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZSBhbmQgbm90IGlubGluZWQuIFNpbmNlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHNwZWNpZmljYWxseSBpbiBgYnBmX2l0ZXJfdGNwX3NlcV9vcHMuc3RhcnRgLCBpdCBjYW4ndCBiZSBpbmxpbmVkLiBUaGlzIGNoYW5nZXMgdGhpbmdzISBUaGF0IG1lYW5zIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGFuZCBgYnBmX2l0ZXJfdGNwX3NlcV9zdG9wYCBhcmUgYWxsIGlkZWFsIHRhcmdldHMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgaW5jbHVkZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFRoZXkncmUgc3RhdGljLCBidXQgdGhlcmUncyBhIGNoYW5jZSB0aGV5ICptaWdodCogbm90IGJlIGlubGluZWQuIEhvbGQgb24uLi4gYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaXMgY2FsbGVkIGZyb20gYGJwZl9pdGVyX2ZpbGxfYmF0Y2hgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBicGZfaXRlcl90Y3BfYmF0Y2hgLiBUaGF0IG1lYW5zIEkndmUgZ290IGEgY2hhaW4sIGFuZCBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBpcyB0aGUgcG90ZW50aWFsIHdlYWsgcG9pbnQuIEkgYmV0dGVyIGNoZWNrIGlmIGBicGZfaXRlcl90Y3BfYmF0Y2hgIGlzIGlubGluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzMTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MjYuMzUzMjc0MTc2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg5NDYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl90Y3BfYmF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTMxMTI9c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjMtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTI0OnN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNS17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxNzc9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTgyLVxcdGlmICgqcG9zKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4MzpcXHRcXHRyZXR1cm4gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg0LVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTg4PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjA5LVxcdGVsc2VcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTA6XFx0XFx0c2sgPSBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA4OjQzOjI2LjM5NzE3NDQ3NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODc0NjIyMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBCUEYgSXRlcmF0b3IgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgd2F5IHRvIGFwcHJvYWNoIGZ1enppbmcgdGhpcyBUQ1AgQlBGIGl0ZXJhdG9yIGZpeC4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGFuZCBjb25maWd1cmF0aW9ucy5cblxuRmlyc3QsIEkgc2VlIHRoZSBjb3JlIEJQRiBpdGVyYXRvciBmdW5jdGlvbnMgaW52b2x2ZWQgYXJlIGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCwgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAsIGBicGZfaXRlcl90Y3BfYmF0Y2hgLCBhbmQgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAuIFJlbWVtYmVyaW5nIHRoZSBwcmluY2lwbGUgb2YgZmF2b3Jpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLCBJIHF1aWNrbHkgcmVhbGl6ZSB0aGF0IGBicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0YCBhbmQgYGJwZl9pdGVyX3RjcF9zZXFfbmV4dGAgYXJlIGlkZWFsIGNhbmRpZGF0ZXMuIFRoZXkncmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycywgc28gdGhleSBhcmUgbm90IGlubGluZWQuIEdyZWF0LlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGVyZSBhcmVuJ3Qgb3RoZXIgaGlkZGVuIGZ1bmN0aW9ucywgc28gSSB0aGluayB0byBteXNlbGY6IFwiQXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucz9cIiBUaGUgQlBGIGl0ZXJhdG9yIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIGBicGZfaXRlcl9yZWdpc3RlcmAsIHdoaWNoIGlzIG1hcmtlZCBgX19pbml0YC4gVGhlIGFjdHVhbCBpdGVyYXRpb24gaXMgdXNlci1zcGFjZSB0cmlnZ2VyZWQgYnkgYHJlYWQoKWAgb24gdGhlIGJwZl9pdGVyIGxpbmsgZmQuIFRoaXMgY29uZmlybXMgdGhhdCB0aG9zZSB0d28gYHNlcV9vcHNgIGFyZSB0aGUgZW50cnkgcG9pbnRzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcHJvbXB0IGluZGljYXRlcyB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGxpa2VseSB0aGUgcHJpbWFyeSBjb25jZXJuLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGxpa2UgYENPTkZJR19JUFY2YC4gSG93ZXZlciwgc2luY2UgdGhlIGZpbGUgaXMgYHRjcF9pcHY0LmNgLCBJUHY0IHNlZW1zIHRvIGJlIGEgZ2l2ZW4uIEknbGwgbWFrZSBhIG5vdGUgb2YgdGhpcyBhbmQgc2V0IGBXb3J0aEZ1enppbmc6IHRydWVgLlxuXG5Gb2N1c2luZyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZywgSSdsbCBzZXQgYEZvY3VzU3ltYm9sczogYnBmX2l0ZXJfdGNwX3NlcV9zdGFydGAsIGFuZCBgYnBmX2l0ZXJfdGNwX3NlcV9uZXh0YC4gQW5kLCBvYnZpb3VzbHksIEkgc2hvdWxkIHNldCBgRW5hYmxlQ29uZmlnczogQlBGX1NZU0NBTExgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBmdW5jdGlvbi4gQWgsIHllcywgaXQncyBzdGF0aWMuIFNvLCB0aGUgZGVjaXNpb24gdG8gZm9jdXMgb24gYGJwZl9pdGVyX3RjcF9zZXFfc3RhcnRgIGFuZCBgYnBmX2l0ZXJfdGNwX3NlcV9uZXh0YCBzdGlsbCBob2xkcy5cblxuVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBhcHByb2FjaCBpcyBjbGVhci4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBmbGF3IGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBCUEYgc3Vic3lzdGVtIGFuZCBUQ1AuIFRoZXJlZm9yZSwgaXQncyByZWFjaGFibGUgY29yZSBjb2RlIHRoYXQncyB3b3J0aCBmdXp6aW5nLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU1MSwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDg6NDM6MzQuMjcxNzk5MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTg4ODU5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0XCIsXG4gICAgXCJicGZfaXRlcl90Y3Bfc2VxX25leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVENQIEJQRiBpdGVyYXRvciB3aGVyZSBhIHNvY2tldCBjb3VsZCBiZSBhY2Nlc3NlZCB3aXRoIGEgemVybyByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIChCUEYgc3Vic3lzdGVtIGludGVyYWN0aW5nIHdpdGggVENQKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfc3RhcnRcIixcbiAgICBcImJwZl9pdGVyX3RjcF9zZXFfbmV4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBUQ1AgQlBGIGl0ZXJhdG9yIHdoZXJlIGEgc29ja2V0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSB6ZXJvIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgKEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3Rpbmcgd2l0aCBUQ1ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[1] Phase: Succeeded StartedAt: 2026-08-01 08:43:38 +0000 UTC FinishedAt: 2026-08-01 08:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 08:43:38 +0000 UTC FinishedAt: 2026-08-01 08:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2] Phase: Succeeded StartedAt: 2026-08-01 08:43:38 +0000 UTC FinishedAt: 2026-08-01 12:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 08:43:38 +0000 UTC FinishedAt: 2026-08-01 12:26:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 08:43:38 +0000 UTC FinishedAt: 2026-08-01 08:43:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 08:43:38 +0000 UTC FinishedAt: 2026-08-01 08:43:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmrh2c/series-workflowmrh2c-convert-artifact-1067131860/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 08:43:48 +0000 UTC FinishedAt: 2026-08-01 08:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 08:43:48 +0000 UTC FinishedAt: 2026-08-01 08:59:56 +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:*8d3fe044-4f4a-4ab6-b98b-d68c29124e1f,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-workflowmrh2c/series-workflowmrh2c-convert-artifact-1067131860/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": "587e2440-1240-4b97-87ed-1785d4ca9ae4", "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-workflowmrh2c/series-workflowmrh2c-build-action-3219349330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 08:43:48 +0000 UTC FinishedAt: 2026-08-01 08:59:46 +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:*8d3fe044-4f4a-4ab6-b98b-d68c29124e1f,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-workflowmrh2c/series-workflowmrh2c-convert-artifact-1067131860/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": "587e2440-1240-4b97-87ed-1785d4ca9ae4", "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-workflowmrh2c/series-workflowmrh2c-build-action-3219349330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 08:59:56 +0000 UTC FinishedAt: 2026-08-01 08:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 08:59:56 +0000 UTC FinishedAt: 2026-08-01 08:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 08:59:56 +0000 UTC FinishedAt: 2026-08-01 09:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 08:59:56 +0000 UTC FinishedAt: 2026-08-01 09:00:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmrh2c/series-workflowmrh2c-convert-artifact-217207187/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 09:00:06 +0000 UTC FinishedAt: 2026-08-01 09:02:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 09:00:06 +0000 UTC FinishedAt: 2026-08-01 09:02:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*587e2440-1240-4b97-87ed-1785d4ca9ae4,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-workflowmrh2c/series-workflowmrh2c-build-action-3219349330/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-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 09:02:15 +0000 UTC FinishedAt: 2026-08-01 09:02:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 09:02:15 +0000 UTC FinishedAt: 2026-08-01 09:02:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 09:02:15 +0000 UTC FinishedAt: 2026-08-01 09:23:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 09:02:15 +0000 UTC FinishedAt: 2026-08-01 09:23:09 +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:*8d3fe044-4f4a-4ab6-b98b-d68c29124e1f,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-workflowmrh2c/series-workflowmrh2c-convert-artifact-217207187/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": "030f6c58-3fed-4f83-a04d-9c56bbb8a61a", "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-workflowmrh2c/series-workflowmrh2c-build-action-3872466887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 09:02:15 +0000 UTC FinishedAt: 2026-08-01 09:22:59 +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:*8d3fe044-4f4a-4ab6-b98b-d68c29124e1f,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-workflowmrh2c/series-workflowmrh2c-convert-artifact-217207187/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": "030f6c58-3fed-4f83-a04d-9c56bbb8a61a", "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-workflowmrh2c/series-workflowmrh2c-build-action-3872466887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 09:23:09 +0000 UTC FinishedAt: 2026-08-01 09:23:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 09:23:09 +0000 UTC FinishedAt: 2026-08-01 09:23:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 09:23:09 +0000 UTC FinishedAt: 2026-08-01 09:25:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 09:23:09 +0000 UTC FinishedAt: 2026-08-01 09:24:51 +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:*030f6c58-3fed-4f83-a04d-9c56bbb8a61a,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-workflowmrh2c/series-workflowmrh2c-build-action-3872466887/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-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 12:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 12:26:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"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:*587e2440-1240-4b97-87ed-1785d4ca9ae4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*030f6c58-3fed-4f83-a04d-9c56bbb8a61a,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-workflowmrh2c/series-workflowmrh2c-build-action-3219349330/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-workflowmrh2c/series-workflowmrh2c-build-action-3872466887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 09:25:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 09:25:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"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-workflowmrh2c/series-workflowmrh2c-convert-artifact-1222291468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 09:25:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 09:25:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 09:25:01 +0000 UTC FinishedAt: 2026-08-01 09:25:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 09:25:27 +0000 UTC FinishedAt: 2026-08-01 12:26:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrh2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_seq_start","bpf_iter_tcp_seq_next"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"b116cf3f-8dad-4ca6-8db4-a11d8596915e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 09:25:27 +0000 UTC FinishedAt: 2026-08-01 12:26:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*587e2440-1240-4b97-87ed-1785d4ca9ae4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*030f6c58-3fed-4f83-a04d-9c56bbb8a61a,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-workflowmrh2c/series-workflowmrh2c-build-action-3219349330/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-workflowmrh2c/series-workflowmrh2c-build-action-3872466887/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-workflowmrh2c/series-workflowmrh2c-convert-artifact-1222291468/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,}