Name: series-workflowrdfbc Phase: Succeeded StartedAt: 2026-07-29 18:11:48 +0000 UTC FinishedAt: 2026-07-29 22:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[0] Phase: Succeeded StartedAt: 2026-07-29 18:11:48 +0000 UTC FinishedAt: 2026-07-29 18:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 18:11:48 +0000 UTC FinishedAt: 2026-07-29 18:19:34 +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": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "6c78a2fc-37ab-4b65-a652-2d159290117c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "tipc_sk_rcv", "tipc_shutdown", "tipc_release", "tipc_setsockopt" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3NrX3JjdiYjMzQ7LAogICAgJiMzNDt0aXBjX3NodXRkb3duJiMzNDssCiAgICAmIzM0O3RpcGNfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDt0aXBjX3NldHNvY2tvcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCB0byBzcGxpY2UgdGhlIHRyYW5zbWl0IHF1ZXVlIGludG8gYSBwcm92aWRlZCBgeG1pdHFgIGluc3RlYWQgb2YgY2FsbGluZyBgdGlwY19ub2RlX3htaXRgIGRpcmVjdGx5IHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIHRoZSBsb2NhbCBub2RlLiBUaGlzIGFmZmVjdHMgVElQQyBzb2NrZXQgc2h1dGRvd24gYW5kIHJlY2VpdmUgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZjZlNjlmMzVkYTU0OGY1YzlkMWRkMzYwYjU5NmUyNjViNGQ2YWI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTg6MTg6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvc29ja2V0LmMgYi9uZXQvdGlwYy9zb2NrZXQuY1xuaW5kZXggZTU2NDM0MWUwMjE2ZC4uMTZkODQ0ZmM4Y2E1NyAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuY1xuQEAgLTE1Niw3ICYjNDM7MTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyB2b2lkIHRpcGNfc2tfcmVtb3ZlKHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spO1xuJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSk7XG4gc3RhdGljIGludCB0aXBjX3dhaXRfZm9yX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW9fcCk7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcztcbkBAIC01NjAsNyAmIzQzOzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG4gXHRcdFx0XHRcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XG4gXG4gXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cbi1cdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuJiM0MztcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xuIFx0LyogUmVtb3ZlIHBlbmRpbmcgU1lOICovXG4gXHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza193cml0ZV9xdWV1ZSk7XG4gXG5AQCAtMTI2OCw3ICYjNDM7MTI2OSw4IEBAIHZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcbiAvKiB0aXBjX3NrX3B1c2hfYmFja2xvZygpOiBzZW5kIGFjY3VtdWxhdGVkIGJ1ZmZlcnMgaW4gc29ja2V0IHdyaXRlIHF1ZXVlXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZVxuICAqL1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4mIzQzO3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxuIHtcbiBcdHN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9IFx1MDAyNnRzay1cdTAwM2Vzay5za193cml0ZV9xdWV1ZTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7XG5AQCAtMTMxMCw2ICYjNDM7MTMxMiwxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuIFx0XHR0c2stXHUwMDNlcGt0X2NudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbih0eHEpO1xuIFx0dHNrLVx1MDAzZXNudF91bmFja2VkICYjNDM7PSB0c2stXHUwMDNlc25kX2JhY2tsb2c7XG4gXHR0c2stXHUwMDNlc25kX2JhY2tsb2cgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoeG1pdHEgXHUwMDI2XHUwMDI2IGluX293bl9ub2RlKG5ldCwgZG5vZGUpKSB7XG4mIzQzO1x0XHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmMgPSB0aXBjX25vZGVfeG1pdChuZXQsIHR4cSwgZG5vZGUsIHRzay1cdTAwM2Vwb3J0aWQpO1xuIFx0aWYgKHJjID09IC1FTElOS0NPTkcpXG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250ID0gMTtcbkBAIC0xMzY3LDcgJiM0MzsxMzc1LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Z290byBleGl0O1xuIFxuIFx0XHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcbi1cdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xuJiM0MztcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkciksIHhtaXRxKTtcbiBcdFx0dHNrLVx1MDAzZXNudF91bmFja2VkIC09IG1zZ19jb25uX2FjayhoZHIpO1xuIFx0XHRpZiAodHNrLVx1MDAzZXBlZXJfY2FwcyBcdTAwMjYgVElQQ19CTE9DS19GTE9XQ1RMKVxuIFx0XHRcdHRzay1cdTAwM2VzbmRfd2luID0gbXNnX2Fkdl93aW4oaGRyKTtcbkBAIC0yMTY1LDcgJiM0MzsyMTczLDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRzbXBfd21iKCk7XG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250LS07XG4gXHRcdHdha2V1cCA9IHRydWU7XG4tXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuJiM0MztcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XG4gXHRcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xuQEAgLTIyNTYsNyAmIzQzOzIyNjQsNyBAQCBzdGF0aWMgYm9vbCB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0Y2FzZSBUSVBDX0VTVEFCTElTSEVEOlxuIFx0XHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcdTAwMjZzay1cdTAwM2Vza193cml0ZV9xdWV1ZSkpXG4tXHRcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XG4mIzQzO1x0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcbiBcdFx0LyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi9cbiBcdFx0aWYgKGxpa2VseShjb25fbXNnIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBwcG9ydCA9PSBvcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICBwbm9kZSA9PSBvbm9kZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7dGlwY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3RpcGNfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRmNmU2OWYzNWRhNTQ4ZjVjOWQxZGQzNjBiNTk2ZTI2NWI0ZDZhYjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxODoxODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZTU2NDM0MWUwMjE2ZC4uMTZkODQ0ZmM4Y2E1NyAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvc29ja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvc29ja2V0LmMKQEAgLTE1Niw3ICYjNDM7MTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spOwogc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTsKIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7CiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opOwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7CiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaywKJiM0MzsJCQkJIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKTsKIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzOwpAQCAtNTYwLDcgJiM0Mzs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKQogCQkJCQkgICAgIXRza19jb25uX2NvbmcodHNrKSkpOwogCiAJLyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovCi0JdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpOwogCS8qIFJlbW92ZSBwZW5kaW5nIFNZTiAqLwogCV9fc2tiX3F1ZXVlX3B1cmdlKCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKTsKIApAQCAtMTI2OCw3ICYjNDM7MTI2OSw4IEBAIHZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSwKIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWUKICAqICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gc29ja2V0IGlzIGluIE5hZ2xlIG1vZGUKICAqLwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaykKJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLAomIzQzOwkJCQkgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpCiB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCAqdHhxID0gJmFtcDt0c2stJmd0O3NrLnNrX3dyaXRlX3F1ZXVlOwogCXN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7CkBAIC0xMzEwLDYgJiM0MzsxMzEyLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spCiAJCXRzay0mZ3Q7cGt0X2NudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbih0eHEpOwogCXRzay0mZ3Q7c250X3VuYWNrZWQgJiM0Mzs9IHRzay0mZ3Q7c25kX2JhY2tsb2c7CiAJdHNrLSZndDtzbmRfYmFja2xvZyA9IDA7CiYjNDM7CiYjNDM7CWlmICh4bWl0cSAmYW1wOyZhbXA7IGluX293bl9ub2RlKG5ldCwgZG5vZGUpKSB7CiYjNDM7CQlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stJmd0O3BvcnRpZCk7CiAJaWYgKHJjID09IC1FTElOS0NPTkcpCiAJCXRzay0mZ3Q7Y29uZ19saW5rX2NudCA9IDE7CkBAIC0xMzY3LDcgJiM0MzsxMzc1LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCQlnb3RvIGV4aXQ7CiAKIAkJd2FzX2NvbmcgPSB0c2tfY29ubl9jb25nKHRzayk7Ci0JCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpKTsKJiM0MzsJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7CiAJCXRzay0mZ3Q7c250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7CiAJCWlmICh0c2stJmd0O3BlZXJfY2FwcyAmYW1wOyBUSVBDX0JMT0NLX0ZMT1dDVEwpCiAJCQl0c2stJmd0O3NuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpOwpAQCAtMjE2NSw3ICYjNDM7MjE3Myw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzaywKIAkJc21wX3dtYigpOwogCQl0c2stJmd0O2NvbmdfbGlua19jbnQtLTsKIAkJd2FrZXVwID0gdHJ1ZTsKLQkJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7CiAJCWJyZWFrOwogCWNhc2UgR1JPVVBfUFJPVE9DT0w6CiAJCXRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgJmFtcDt3YWtldXAsIGhkciwgaW5wdXRxLCB4bWl0cSk7CkBAIC0yMjU2LDcgJiM0MzsyMjY0LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldHVybiBmYWxzZTsKIAljYXNlIFRJUENfRVNUQUJMSVNIRUQ6CiAJCWlmICghc2tiX3F1ZXVlX2VtcHR5KCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKSkKLQkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpOwomIzQzOwkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTsKIAkJLyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi8KIAkJaWYgKGxpa2VseShjb25fbXNnICZhbXA7JmFtcDsgIWVyciAmYW1wOyZhbXA7IHBwb3J0ID09IG9wb3J0ICZhbXA7JmFtcDsKIAkJCSAgIHBub2RlID09IG9ub2RlKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTM2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRJUEMgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3RpcGMvc29ja2V0LmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBtb2RpZmllZCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEludGVyZXN0aW5nLCB0aGV5JiMzOTtyZSBub3cgcGFzc2luZyBpbiBhIGBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cWAgYXJndW1lbnQuIFRoZSBpbnRlbnRpb24gaGVyZSBpcyBjbGVhcjogaXQmIzM5O3MgYWJvdXQgb3B0aW1pemluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyBsb2NhbC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0JiMzOTtzIHRoZSByYXRpb25hbGU/IFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBzYXlzIGl0IHNwbGljZXMgYHR4cWAgaW50byBgeG1pdHFgIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIGxvY2FsIGFuZCBgeG1pdHFgIGlzIHByb3ZpZGVkLiBUaGlzIGF2b2lkcyBkaXJlY3QgY2FsbHMgdG8gYHRpcGNfbm9kZV94bWl0YCBpbiBjZXJ0YWluIHNjZW5hcmlvcy4gUmlnaHQsIHRoYXQgc291bmRzIGxpa2UgYSBwb3RlbnRpYWwgZml4IGZvciBhIGxvY2tkZXAgaXNzdWUsIG9yIHBlcmhhcHMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgc29tZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxscy4gSXQmIzM5O3MgYWJvdXQgb3B0aW1pemluZyB0aGUgcGFja2V0IGZsb3csIGxpa2VseSB0byBrZWVwIHRoaW5ncyBpbiBhIHNpbmdsZSBxdWV1ZSB3aGVuZXZlciBwb3NzaWJsZS4KCk5vdywgYmVmb3JlIEkgZGVsdmUgZGVlcGVyIGludG8gdGhlIGNvZGUgbG9naWMsIEkgc2hvdWxkIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFRJUEMgaXMgY29uZmlndXJlZCB0byBmdWxseSBncmFzcCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBxdWlja2x5IGdyZXAgdGhlIGBuZXQvdGlwYy9LY29uZmlnYCBmaWxlIGZvciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyB0aGV5IG1pZ2h0IHJlbGF0ZSB0byB0aGlzIHBhdGNoLiBLbm93aW5nIHRoZSBlbmFibGVkIGNvbmZpZyBvcHRpb25zIHdpbGwgaGVscCBtZSBxdWlja2x5IHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkwOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKgoKT2theSwgc28gdGhlIGNvbmZpZyBoZXJlIGlzIGBUSVBDYCwgcmlnaHQ/IEFuZCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AsIGBfX3RpcGNfc2h1dGRvd25gLCBgdGlwY19za19jb25uX3Byb3RvX3JjdmAsIGB0aXBjX3NrX3Byb3RvX3JjdmAsIGFuZCBgdGlwY19za19maWx0ZXJfY29ubmVjdGAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoaWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBkZXNlcnZlIHRoZSBtb3N0IHNjcnV0aW55PyBMZXQmIzM5O3Mgem9vbSBpbiBvbiBgX190aXBjX3NodXRkb3duYCBmaXJzdCDigJMgdGhhdCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gTm93LCBgdGlwY19za19jb25uX3Byb3RvX3JjdmAgaXMgZmxhZ2dlZCBhcyBzdGF0aWMsIGJ1dCB0aGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyBpdHMgcm9sZS4gSSYjMzk7bSB3aWxsaW5nIHRvIGJldCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBzb21ldGhpbmcgbGlrZSBgdGlwY19za19yY3ZgLi4uYW5kIGlmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHdlIGhhdmUgYSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHBhdGggdGhyb3VnaCB0aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSB0aGluayBJIHdpbGwgY2hlY2sgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIGFuZCBgdGlwY19za19wcm90b19yY3ZgIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19jb25uX3Byb3RvX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTEyNzI9c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzI2LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MTMyNzogKiB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2IC0gcmVjZWl2ZSBhIGNvbm5lY3Rpb24gbW5nIHByb3RvY29sIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTEzMjgtICogQHRzazogcmVjZWl2aW5nIHNvY2tldFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTEzMzItICovXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzMzOnN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMTMzNC1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yMTU2PXN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTY3LVx0Y2FzZSBDT05OX01BTkFHRVI6XG5uZXQvdGlwYy9zb2NrZXQuYzoyMTY4Olx0XHR0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHRzaywgc2tiLCBpbnB1dHEsIHhtaXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTIxNjktXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjY0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgdGlwY19za19wcm90b19yY3ZgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB0aXBjX3NrX3Byb3RvX3JjdmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIFRJUEMgY29kZWJhc2UuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVkIG15IGludGVyZXN0LiBUaGUgJiMzNDtzdGF0aWMmIzM0OyBrZXl3b3JkIGhpbnRzIHRoYXQgaXRzIHNjb3BlIGlzIGRlbGliZXJhdGVseSBsaW1pdGVkLCBsaWtlbHkgdG8gdGhlIGZpbGUgaXQmIzM5O3MgZGVmaW5lZCBpbi4gVGhpcyB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIGEgaGVscGVyIGZ1bmN0aW9uLCB0aWdodGx5IGNvdXBsZWQgdG8gdGhhdCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGZyb20gbXkgcGVyc3BlY3RpdmUsIGlzIHRvIGRldGVybWluZSBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIFRJUEMgcHJvdG9jb2wgc3RhY2suIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgZGF0YSByZWNlcHRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIGFyZSBjYWxsaW5nIGl0LiBJ4oCZbGwgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjb2RlIHRvIHRyYWNlIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkYXRhIGdldHMgdG8gaXQgYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZSB0ZWxscyB0aGUgY2FsbGluZyBmdW5jdGlvbi4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBpbnNpZ2h0cyBpbnRvIGl0cyBmdW5jdGlvbmFsaXR5IGFuZCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcHJvdG9fcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9NDAzPXN0YXRpYyBpbnQgdGlwY19za19zb2NrX2VycihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBsb25nICp0aW1lb3V0KVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTQzMS1cdHdoaWxlICgocmNfID0gIShjb25kaXRpb25fKSkpIHtcdFx0XHRcdFx0ICAgICAgIFxcXG5uZXQvdGlwYy9zb2NrZXQuYzo0MzI6XHRcdC8qIGNvdXBsZWQgd2l0aCBzbXBfd21iKCkgaW4gdGlwY19za19wcm90b19yY3YoKSAqLyAgICAgICAgICAgIFxcXG5uZXQvdGlwYy9zb2NrZXQuYy00MzMtXHRcdHNtcF9ybWIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjE1MT1zdGF0aWMgdm9pZCB0aXBjX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIxNTUtXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTU2OnN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbm5ldC90aXBjL3NvY2tldC5jLTIxNTctXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTIzNDY9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzYzLVx0aWYgKHVubGlrZWx5KCFtc2dfaXNkYXRhKGhkcikpKVxubmV0L3RpcGMvc29ja2V0LmM6MjM2NDpcdFx0dGlwY19za19wcm90b19yY3Yoc2ssIFx1MDAyNmlucHV0cSwgeG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjM2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIEZ1bmN0aW9uIEludmVzdGlnYXRpb246IHRpcGNfc2tfZmlsdGVyX3JjdioqCgpPa2F5LCBgdGlwY19za19maWx0ZXJfcmN2YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCYjMzk7cyBzY29wZWQgaW50ZXJuYWxseSwgbGlrZWx5IHRvIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgb3IgbW9kdWxlLiBTaW5jZSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiBtZXNzYWdlIHJlY2VwdGlvbi4gSeKAmWxsIHN0YXJ0IGJ5IHRyYWNpbmcgaXRzIGNhbGwgc2l0ZXMuIEZpbmRpbmcgd2hlcmUgaXQmIzM5O3MgKmNhbGxlZCogaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nICpob3cqIGFuZCAqd2h5KiBpdCYjMzk7cyB1c2VkLiBUaGlzIHdpbGwgaGVscCBtZSB1bnJhdmVsIHRoZSBsb2dpYy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfZmlsdGVyX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTIzMTg9c3RhdGljIHVuc2lnbmVkIGludCByY3ZidWZfbGltaXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIzMzUtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzM2OiAqIHRpcGNfc2tfZmlsdGVyX3JjdiAtIHZhbGlkYXRlIGluY29taW5nIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTIzMzctICogQHNrOiBzb2NrZXRcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzQ1LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjM0NjpzdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMjM0Ny1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM1Ny1cbm5ldC90aXBjL3NvY2tldC5jOjIzNTg6XHR0cmFjZV90aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYy0yMzU5LVx0VElQQ19TS0JfQ0Ioc2tiKS1cdTAwM2VieXRlc19yZWFkID0gMDtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yNDExPXN0YXRpYyBpbnQgdGlwY19za19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjQxOC1cbm5ldC90aXBjL3NvY2tldC5jOjI0MTk6XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXHUwMDI2eG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQyMC1cdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0Mzg9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0NTYtXHRcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xubmV0L3RpcGMvc29ja2V0LmM6MjQ1NzpcdFx0XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgeG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQ1OC1cdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIFRJUEMgUmVjZWl2ZSBQYXRod2F5KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IG1lbnRhbCBtb2RlbCBvZiB0aGUgVElQQyBkYXRhIGZsb3cgaXMgc29saWQsIHNvIHRoZXNlIGNsdWVzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiAqdGlwY19za19iYWNrbG9nX3Jjdiog4oCTIGFoLCB0aGF0JiMzOTtzIHRoZSBiYWNrbG9nIHJlY2VpdmUgZnVuY3Rpb24uIENsYXNzaWMuIE15IGltbWVkaWF0ZSBhc3NvY2lhdGlvbiBpcyB0aGF0IHRoaXMgaXMgd2hlcmUgd2UmIzM5O3JlIGhvbGRpbmcgdGhvc2UgaW5jb21pbmcgbWVzc2FnZXMgdGhhdCBjYW4mIzM5O3QgYmUgaW1tZWRpYXRlbHkgcHJvY2Vzc2VkLCBwZXJoYXBzIGR1ZSB0byByZXNvdXJjZSBjb25zdHJhaW50cyBvciBsb2NrIGNvbnRlbnRpb24gb24gdGhlIHNvY2tldC4gSXQgaXMgdGhlIHJlY2VpdmUgZnVuY3Rpb24gZm9yIHRoZSBiYWNrbG9nIHF1ZXVlLgoKQW5kIHRoZW4gd2UgaGF2ZSAqdGlwY19za19lbnF1ZXVlKi4gSW50ZXJlc3RpbmcuIEVucXVldWVpbmcuLi4gSSBpbW1lZGlhdGVseSB0aGluayBiYWNrIHRvIHRoZSBzb2NrZXQmIzM5O3MgcmVjZWl2ZSBwYXRoIGFuZCBob3cgdGhlIGRhdGEgZ2V0cyBzdGFnZWQuIFRoZSBuYW1lIGFsb25lIGhpbnRzIGl0JiMzOTtzIGFib3V0IHB1c2hpbmcgdGhlIHJlY2VpdmVkIGRhdGEgb250byBhIHF1ZXVlLiBUaGUgZmFjdCB0aGF0ICp0aXBjX3NrX2VucXVldWUqIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiAqdGlwY19za19yY3YqIHJlYWxseSBzZWFscyB0aGUgZGVhbC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIGRhdGEgcmVjZXB0aW9uIHBpcGVsaW5lLiBJbmNvbWluZyBkYXRhIGlzIHJlY2VpdmVkIHZpYSB0aGUgdHJhbnNwb3J0IGxheWVyLCBhbmQgdGhlbiAqdGlwY19za19yY3YqIGlzIGdvaW5nIHRvIGJlIHRoZSBoYW5kbGVyLCBmcm9tIHdpdGhpbiB3aGljaCAqdGlwY19za19lbnF1ZXVlKiBpcyBjYWxsZWQgdG8gc2FmZWx5IGFkZCB0aGUgcmVjZWl2ZWQgbWVzc2FnZSB0byB0aGUgc29ja2V0JiMzOTtzIGJhY2tsb2cgcXVldWUuIFRoaXMgaXMgcHJvYmFibHkgc29tZSBzb3J0IG9mIGludGVybmFsIHF1ZXVlLiBUaGlzIGNvbmZpcm1zIHRoYXQgdGhlc2UgZnVuY3Rpb25zIHdvcmsgaW4gY29uanVuY3Rpb24gdG8gaGFuZGxlIHRoZSBkYXRhIHJlY2VwdGlvbiwgcXVldWVpbmcsIGFuZCBldmVudHVhbCBjb25zdW1wdGlvbiBvZiBtZXNzYWdlcyB3aXRoaW4gdGhlIFRJUEMgZnJhbWV3b3JrLiBTb3VuZHMgbGlrZSB0aGUgdHlwaWNhbCBidWZmZXJpbmcgbWVjaGFuaXNtLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBlYWNoIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBpdHMgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9MTE5Mj12b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMTI2NS1cdH1cbm5ldC90aXBjL3NvY2tldC5jOjEyNjY6XHR0aXBjX3NrX3JjdihuZXQsIGlucHV0cSk7XG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY3LX1cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yNDM4PXN0YXRpYyB2b2lkIHRpcGNfc2tfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEsIHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDg1LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjQ4NjogKiB0aXBjX3NrX3JjdiAtIGhhbmRsZSBhIGNoYWluIG9mIGluY29taW5nIGJ1ZmZlcnNcbm5ldC90aXBjL3NvY2tldC5jLTI0ODctICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2Vcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDkxLSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjQ5Mjp2b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKVxubmV0L3RpcGMvc29ja2V0LmMtMjQ5My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3ODIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91OgoKKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX3JjdmAqKgoKT2theSwgc28gYHRpcGNfc2tfcmN2YCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3Igbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgaXQgYmVpbmcgdXNlZD8gVG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIHBvdGVudGlhbCBpbXBhY3QsIEkgbmVlZCB0byB0cmFjZSBpdHMgY29ubmVjdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgY29ubmVjdGVkIHdpdGggYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBUaGF0IGZ1bmN0aW9uIGlzIHByb2JhYmx5IGludm9sdmVkIGluIGNvbm5lY3Rpb24gZmlsdGVyaW5nLCBzbyB0aGUgcmVsYXRpb25zaGlwIGNvdWxkIGJlIGNydWNpYWwgdG8gZGV0ZXJtaW5pbmcgd2h5IGB0aXBjX3NrX3JjdmAgaXMgb2Ygbm90ZS4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19maWx0ZXJfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTIxNTY9c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIxOTUtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTk2OiAqIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3QgLSBjaGVjayBpbmNvbWluZyBtZXNzYWdlIGZvciBhIGNvbm5lY3Rpb24tYmFzZWQgc29ja2V0XG5uZXQvdGlwYy9zb2NrZXQuYy0yMTk3LSAqIEB0c2s6IFRJUEMgc29ja2V0XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjIwMS0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjIyMDI6c3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvdGlwYy9zb2NrZXQuYy0yMjAzLVx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjM0Nj1zdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIzNzUtXHRcdGxpbWl0ID0gcmN2YnVmX2xpbWl0KHNrLCBza2IpO1xubmV0L3RpcGMvc29ja2V0LmM6MjM3NjpcdFx0aWYgKChza19jb25uIFx1MDAyNlx1MDAyNiAhdGlwY19za19maWx0ZXJfY29ubmVjdCh0c2ssIHNrYiwgeG1pdHEpKSB8fFxubmV0L3RpcGMvc29ja2V0LmMtMjM3Ny1cdFx0ICAgICghc2tfY29ubiBcdTAwMjZcdTAwMjYgbXNnX2Nvbm5lY3RlZChoZHIpKSB8fFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIFdlYWsgUG9pbnRzIGluIHRoZSBUSVBDIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGh1bmNoLCBmb2N1c2luZyBvbiBgdGlwY19za19yY3ZgLCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIHRoZSByZWNlaXZlIHBhdGgsIHNvIGFueSB2dWxuZXJhYmlsaXR5IHRoZXJlIGNvdWxkIGJlIGltcGFjdGZ1bC4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHJlbGF0ZWQgZnVuY3Rpb25z4oCmIGFuZCBgX190aXBjX3NodXRkb3duYCBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFNodXRkb3duIHByb2NlZHVyZXMgYXJlIGFsd2F5cyBhIHBvdGVudGlhbCBhcmVhIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIHN0YWNrLiBHb3R0YSBkaWcgZGVlcGVyIHRoZXJlLCBjb25zaWRlciBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHNvY2tldCBsYXllciBhbmQgdGhlIG92ZXJhbGwgVElQQyBzdGF0ZS4gQ291bGQgYmUgYW4gaW1wb3J0YW50IHNlY29uZGFyeSBmb2N1cywgb3IgZXZlbiB0aGUgcHJpbWFyeSBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGlwY19zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTU0Mj1zdGF0aWMgdm9pZCB0aXBjX3NrX2NhbGxiYWNrKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xubmV0L3RpcGMvc29ja2V0LmM6NTUwOnN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG5uZXQvdGlwYy9zb2NrZXQuYy01NTEte1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTYyNj1zdGF0aWMgaW50IHRpcGNfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cdHRyYWNlX3RpcGNfc2tfcmVsZWFzZShzaywgTlVMTCwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYzo2NDI6XHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19FUlJfTk9fUE9SVCk7XG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXHRzay1cdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjgwOD1zdGF0aWMgaW50IHRpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGhvdylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE4LVx0dHJhY2VfdGlwY19za19zaHV0ZG93bihzaywgTlVMTCwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYzoyODE5Olx0X190aXBjX3NodXRkb3duKHNvY2ssIFRJUENfQ09OTl9TSFVURE9XTik7XG5uZXQvdGlwYy9zb2NrZXQuYy0yODIwLVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSBTSFVURE9XTl9NQVNLO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSBhcmUgbXkgaW1tZWRpYXRlIHRob3VnaHRzOgoKKipBbmFseXppbmcgVElQQyBTb2NrZXQgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBUSVBDIHNvY2tldCBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGB0aXBjX3JlbGVhc2VgIGFuZCBgdGlwY19zaHV0ZG93bmAgYXJlIGlkZW50aWZpZWQgYXMgdGhlIGtleSBzb2NrZXQgb3BlcmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgdGhvc2UgYXJlIGZ1bmRhbWVudGFsIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4gTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBhbmQgc2VlIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGNvcmUgc2VuZCBtZWNoYW5pc21zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBzbyBJJiMzOTtsbCBjaGVjayBvdXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIG5leHQuIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIG9wZXJhdGlvbnMgaW50ZXJmYWNlIHdpdGggdGhlIG1lc3NhZ2luZyBzdHJ1Y3R1cmVzIGFuZCB3aGF0IGxvY2tpbmcgaXMgZ29pbmcgb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyByZWxlYXNlIGFuZCBzaHV0ZG93biBhZmZlY3Qgb25nb2luZyBvciBwZW5kaW5nIHNlbmRzLiBBcmUgdGhleSBncmFjZWZ1bGx5IGhhbmRsZWQsIG9yIGFyZSB0aGV5IG1vcmUgYWJydXB0PyBVbmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRob3NlIHNlbmQgZnVuY3Rpb25zIGlzIGNydWNpYWwgZm9yIG92ZXJhbGwgc3lzdGVtIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgaW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIHdpdGggdGhlIHNodXRkb3duIGNhbGwgYW5kIGlmIHJlbGVhc2UgZG9lcyBhIHByb3BlciBjbGVhbnVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz0xNTc9c3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbm5ldC90aXBjL3NvY2tldC5jOjE1ODpzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xubmV0L3RpcGMvc29ja2V0LmMtMTU5LXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9NzkxPXN0YXRpYyBfX3BvbGxfdCB0aXBjX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtODM5LSAqXG5uZXQvdGlwYy9zb2NrZXQuYzo4NDA6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXG5uZXQvdGlwYy9zb2NrZXQuYy04NDEtICogUmV0dXJuOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgb24gc3VjY2Vzcywgb3IgZXJybm9cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz05MDY9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfc29jayAqdHNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTk1My0gKlxubmV0L3RpcGMvc29ja2V0LmM6OTU0OiAqIENhbGxlZCBmcm9tIGZ1bmN0aW9uIHRpcGNfc2VuZG1zZygpLCB3aGljaCBoYXMgZG9uZSBhbGwgc2FuaXR5IGNoZWNrc1xubmV0L3RpcGMvc29ja2V0LmMtOTU1LSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9OTU3PXN0YXRpYyBpbnQgdGlwY19zZW5kX2dyb3VwX3VuaWNhc3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy05OTctICpcbm5ldC90aXBjL3NvY2tldC5jOjk5ODogKiBDYWxsZWQgZnJvbSBmdW5jdGlvbiB0aXBjX3NlbmRtc2coKSwgd2hpY2ggaGFzIGRvbmUgYWxsIHNhbml0eSBjaGVja3Ncbm5ldC90aXBjL3NvY2tldC5jLTk5OS0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTEwMDE9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfYW55Y2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTEwNzgtICpcbm5ldC90aXBjL3NvY2tldC5jOjEwNzk6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXG5uZXQvdGlwYy9zb2NrZXQuYy0xMDgwLSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MTA4Mj1zdGF0aWMgaW50IHRpcGNfc2VuZF9ncm91cF9iY2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTExNTItICpcbm5ldC90aXBjL3NvY2tldC5jOjExNTM6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXG5uZXQvdGlwYy9zb2NrZXQuYy0xMTU0LSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MTMzMz1zdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzkxLS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MTM5MjogKiB0aXBjX3NlbmRtc2cgLSBzZW5kIG1lc3NhZ2UgaW4gY29ubmVjdGlvbmxlc3MgbWFubmVyXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzkzLSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMTQwMy0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjE0MDQ6c3RhdGljIGludCB0aXBjX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jayxcbm5ldC90aXBjL3NvY2tldC5jLTE0MDUtXHRcdFx0c3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDEwLVx0bG9ja19zb2NrKHNrKTtcbm5ldC90aXBjL3NvY2tldC5jOjE0MTE6XHRyZXQgPSBfX3RpcGNfc2VuZG1zZyhzb2NrLCBtLCBkc3opO1xubmV0L3RpcGMvc29ja2V0LmMtMTQxMi1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMTQxNi1cbm5ldC90aXBjL3NvY2tldC5jOjE0MTc6c3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcbm5ldC90aXBjL3NvY2tldC5jLTE0MTgte1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTE1NjQ9c3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xNTg0LVx0aWYgKHVubGlrZWx5KGRlc3QgXHUwMDI2XHUwMDI2IHNrLVx1MDAzZXNrX3N0YXRlID09IFRJUENfT1BFTikpIHtcbm5ldC90aXBjL3NvY2tldC5jOjE1ODU6XHRcdHJjID0gX190aXBjX3NlbmRtc2coc29jaywgbSwgZGxlbik7XG5uZXQvdGlwYy9zb2NrZXQuYy0xNTg2LVx0XHRpZiAoZGxlbiBcdTAwMjZcdTAwMjYgZGxlbiA9PSByYykge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI1ODI9c3RhdGljIGludCB0aXBjX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmRlc3QsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjYzNi1cbm5ldC90aXBjL3NvY2tldC5jOjI2Mzc6XHRcdHJlcyA9IF9fdGlwY19zZW5kbXNnKHNvY2ssIFx1MDAyNm0sIDApO1xubmV0L3RpcGMvc29ja2V0LmMtMjYzOC1cdFx0aWYgKChyZXMgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAocmVzICE9IC1FV09VTERCTE9DSykpXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMzODAtXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxubmV0L3RpcGMvc29ja2V0LmM6MzM4MTpcdC5zZW5kbXNnXHQ9IHRpcGNfc2VuZG1zZyxcbm5ldC90aXBjL3NvY2tldC5jLTMzODItXHQucmVjdm1zZ1x0PSB0aXBjX3JlY3Ztc2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUSVBDIFNvY2tldCBMb2dpYyBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIHdhcyB0aGF0IGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCB3ZXJlIHRoZSBwcmltYXJ5IHNvY2tldCBvcGVyYXRpb25zIGludm9sdmVkLCBidXQgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFdoaWxlIHRob3NlIGFyZSBkZWZpbml0ZWx5ICprZXkqIHNvY2tldCBvcGVyYXRpb25zLCB0aGUgY3J1Y2lhbCBjb25uZWN0aW9uIGxpZXMgZWxzZXdoZXJlLiBNeSBpbml0aWFsIGxpc3Qgb2YgJiMzNDtyZWFjaGFibGUmIzM0OyBmdW5jdGlvbnMsIHRoYXQgaW5jbHVkZXMgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBgdGlwY19za19maWx0ZXJfY29ubmVjdGAsIGFuZCBgX190aXBjX3NodXRkb3duYCB3aGljaCBhbGwgZGlyZWN0bHkgY2FsbCBgdGlwY19za19wdXNoX2JhY2tsb2dgLCBpcyBjb3JyZWN0LCBidXQgdGhlIHJlbGF0aW9uc2hpcHMgYXJlIGRlZXBlci4KCldhaXQsIHRoZSBkaWFncmFtIHNob3dzIHRoYXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIGRvbiYjMzk7dCAqZGlyZWN0bHkqIGludm9rZSBgdGlwY19za19wdXNoX2JhY2tsb2dgLiBIb3dldmVyLCBgX190aXBjX3NodXRkb3duYCwgd2hpY2ggaXMgcmVhY2hhYmxlIHRocm91Z2ggYm90aCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgLCBkb2VzISBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcGF0aC4gQW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IHRoZSBjaGFpbjogYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIC0mZ3Q7IGB0aXBjX3NrX3Byb3RvX3JjdmAgLSZndDsgYHRpcGNfc2tfZmlsdGVyX3JjdmAgLSZndDsgYHRpcGNfc2tfYmFja2xvZ19yY3ZgICZhbXA7IGB0aXBjX3NrX2VucXVldWVgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgdGlwY19za19yY3ZgLiBUaGlzIHJldmVhbHMgdGhhdCBgdGlwY19za19yY3ZgIGlzIGEgbXVjaCBtb3JlIGNlbnRyYWwgZnVuY3Rpb24gdG8gZm9jdXMgb24gZm9yIHRoaXMgcGF0Y2guIFNvLCBgdGlwY19za19yY3ZgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gaGVyZSwgYWxvbmcgd2l0aCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgLgoKSSB3YXMgYWxzbyBjb25zaWRlcmluZyBgdGlwY19jb25uZWN0YCwgYnV0IGl0IGNhbGxzIGBfX3RpcGNfc2VuZG1zZ2AsIHdoaWNoIHN0aWxsIGRvZXNuJiMzOTt0IGNhbGwgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gU28sIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhcyBpbXBvcnRhbnQuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGhvd2V2ZXIsIHRoYXQgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBpcyBhbGwgYWJvdXQgc2VuZGluZyBhY2N1bXVsYXRlZCBidWZmZXJzIHdoZW4gYSBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZS4gQWgsIHllcywgYW5kIE5hZ2xlIG1vZGUgaXMgYWN0aXZhdGVkIGJ5IHNldHRpbmcgdGhlIGBUSVBDX05BR0xFYCBzb2NrZXQgb3B0aW9uLiBJIG5lZWQgdG8gbG9vayBpbnRvIGB0aXBjX3NldHNvY2tvcHRgIGFuZCBhbnkgaW50ZXJhY3Rpb25zIGl0IGhhcyB3aXRoIHRoZSBmdW5jdGlvbnMgSSYjMzk7dmUgaWRlbnRpZmllZC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMgbGlrZWx5IGxpZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9MzExOD1zdGF0aWMgaW50IHRpcGNfc2tfbGVhdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMxMzYtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzozMTM3OiAqIHRpcGNfc2V0c29ja29wdCAtIHNldCBzb2NrZXQgb3B0aW9uXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTM4LSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzE0OC0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjMxNDk6c3RhdGljIGludCB0aXBjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGx2bCwgaW50IG9wdCxcbm5ldC90aXBjL3NvY2tldC5jLTMxNTAtXHRcdFx0ICAgc29ja3B0cl90IG92LCB1bnNpZ25lZCBpbnQgb2wpXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMzNzgtXHQuc2h1dGRvd25cdD0gdGlwY19zaHV0ZG93bixcbm5ldC90aXBjL3NvY2tldC5jOjMzNzk6XHQuc2V0c29ja29wdFx0PSB0aXBjX3NldHNvY2tvcHQsXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzgwLVx0LmdldHNvY2tvcHRfaXRlciA9IHRpcGNfZ2V0c29ja29wdCxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzM5OC1cdC5zaHV0ZG93blx0PSB0aXBjX3NodXRkb3duLFxubmV0L3RpcGMvc29ja2V0LmM6MzM5OTpcdC5zZXRzb2Nrb3B0XHQ9IHRpcGNfc2V0c29ja29wdCxcbm5ldC90aXBjL3NvY2tldC5jLTM0MDAtXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTM0MDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDE4LVx0LnNodXRkb3duXHQ9IHRpcGNfc2h1dGRvd24sXG5uZXQvdGlwYy9zb2NrZXQuYzozNDE5Olx0LnNldHNvY2tvcHRcdD0gdGlwY19zZXRzb2Nrb3B0LFxubmV0L3RpcGMvc29ja2V0LmMtMzQyMC1cdC5nZXRzb2Nrb3B0X2l0ZXIgPSB0aXBjX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRJUEMgU29ja2V0IE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGB0aXBjX3NldHNvY2tvcHRgIGFzIGFub3RoZXIgaW1wb3J0YW50IGFyZWEgZm9yIHNjcnV0aW55LCB3aGljaCBpcyBnb29kLiBUaGUgY29yZSBjaGFuZ2UgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHRlcnMgaG93IHRoZSBUSVBDIHNvY2tldCBsb2dpYyBoYW5kbGVzIGl0cyBiYWNrbG9nIHF1ZXVlIGluIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBgdGlwY19ub2RlX3htaXRgIHRvIHRyYW5zbWl0IGRhdGEsIGl0JiMzOTtzIG5vdyBzcGxpY2luZyB0aGUgcXVldWUgaW50byBgeG1pdHFgICppZiogdGhhdCBxdWV1ZSBpcyBhdmFpbGFibGUgYW5kIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgbG9jYWwgbm9kZS4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCByaWdodCB0aGVyZS4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBtYXJraW5nIHRoaXMgZm9yIGZ1enppbmc7IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBzZWVtcyBhcHByb3ByaWF0ZSBoZXJlLgoKQmV5b25kIGB0aXBjX3NldHNvY2tvcHRgLCBJJiMzOTt2ZSBhbHNvIGZsYWdnZWQgYHRpcGNfc2tfcmN2YCwgYHRpcGNfc2h1dGRvd25gLCBhbmQgYHRpcGNfcmVsZWFzZWAgYXMgZm9jdXMgc3ltYm9scyB0byBrZWVwIGEgY2xvc2UgZXllIG9uLiBUaGVzZSBhcmVhcyBhcmUgYWxsIGxpa2VseSBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc29ja2V0LiBJJiMzOTttIG9wZXJhdGluZyB1bmRlciB0aGUgYFRJUENgIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcyBpbXBhY3RpbmcgdGhpcyBjb2RlIHBhdGguIEFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUSVBDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg2NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipFeGFtaW5pbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDYgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jeSBjbGF1c2VzIGRlZmluZWQgZm9yIHRoZSBUSVBDIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIGEgcm9idXN0IGFuZCBjb3JyZWN0IGltcGxlbWVudGF0aW9uLCBlc3BlY2lhbGx5IHdoZW4gaW50ZWdyYXRpbmcgaXQgd2l0aCBvdGhlciBuZXR3b3JraW5nIGNvbXBvbmVudHMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBvdGhlciBmZWF0dXJlcyBvciBtb2R1bGVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgVElQQyBjYW4gYmUgY29uZmlndXJlZC4gSXTigJlzIHRoZSB1c3VhbCBwcm9jZXNzIG9mIHJldmVyc2UtZW5naW5lZXJpbmcgdG8gZGlzY292ZXIgcHJlcmVxdWlzaXRlcywgaXNuJiMzOTt0IGl0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBUSVBDIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBUSVBDXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoZSBUcmFuc3BhcmVudCBJbnRlciBQcm9jZXNzIENvbW11bmljYXRpb24gKFRJUEMpIHByb3RvY29sIGlzXG4gIDExOlx0XHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXG4gIDEyOlx0XHQgIG9yaWdpbmF0ZXMgZnJvbSBFcmljc3NvbiB3aGVyZSBpdCBoYXMgYmVlbiB1c2VkIGluIGNhcnJpZXIgZ3JhZGVcbiAgMTM6XHRcdCAgY2x1c3RlciBhcHBsaWNhdGlvbnMgZm9yIG1hbnkgeWVhcnMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRoaXMgcHJvdG9jb2wgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaFxuICAxODpcdFx0ICBjYW4gYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XG4gIDE5Olx0XHQgIHdhbnQpLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRpcGMuIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXRcbiAgMjA6XHRcdCAgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFx1MDAzZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNDMKCQkJCQkJCW91dHB1dDogMTMxCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhpcyBpcyBhbGwgY29udGluZ2VudCBvbiB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24sIHRoYXQmIzM5O3MgdGhlIGtleS4gRnJvbSB3aGF0IEkgc2VlLCBpdCBsb29rcyBsaWtlIGBUSVBDYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVsZW1lbnQgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBzZXQgYEVuYWJsZUNvbmZpZ3M6IFsmIzM0O1RJUEMmIzM0O11gLgoKTm93LCBkaWdnaW5nIGRlZXBlciwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgdGlwY19za19yY3ZgLCBgdGlwY19zaHV0ZG93bmAsIGB0aXBjX3JlbGVhc2VgLCBhbmQgYHRpcGNfc2V0c29ja29wdGAuIFRoZXNlIGFyZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBgdGlwY19ub2RlX3htaXRgIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIGxvY2FsLCBpdCYjMzk7cyBzcGxpY2luZyB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHN1cHBsaWVkIGB4bWl0cWAuIFRoaXMgZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IHRoZSB0cmFuc21pdCBxdWV1ZSBpcyBoYW5kbGVkLCBwYXJ0aWN1bGFybHkgZm9yIGxvY2FsIG5vZGUgY29tbXVuaWNhdGlvbi4gVGhpcyBzcGxpY2luZyBhcHByb2FjaCBpcyBjaGFuZ2luZyB0aGluZ3MgcmVsYXRlZCB0byB0aGUgc2h1dGRvd24gb2YgdGhlIFRJUEMgc29ja2V0IGFuZCB0aGUgcmVjZWlwdCBvZiBkYXRhLiBTbywgdGhlIGltcGxpY2F0aW9ucyBhcmUgbGlrZWx5IGZvdW5kIGluIHRob3NlIHBhdGhzIC0gYW5kIEkgZXhwZWN0IHRob3NlIHBhdGhzIHRvIGJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4KCkkgdGhpbmsgaXQmIzM5O3MgdGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7dGlwY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3RpcGNfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7dGlwY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3RpcGNfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjI4LjU1MTEyNzQ3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDM2MDE4NzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3NrX3JjdlwiLFxuICAgIFwidGlwY19zaHV0ZG93blwiLFxuICAgIFwidGlwY19yZWxlYXNlXCIsXG4gICAgXCJ0aXBjX3NldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6MjguNTUxMTM0NzQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYxNjQ1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZjZlNjlmMzVkYTU0OGY1YzlkMWRkMzYwYjU5NmUyNjViNGQ2YWI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDE4OjE4OjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5pbmRleCBlNTY0MzQxZTAyMTZkLi4xNmQ4NDRmYzhjYTU3IDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXFxuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5AQCAtMTU2LDcgKzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7XFxuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSk7XFxuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcztcXG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XFxuIFxcbiBcXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cXG4tXFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xcbiBcXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cXG4gXFx0X19za2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNrLVxcdTAwM2Vza193cml0ZV9xdWV1ZSk7XFxuIFxcbkBAIC0xMjY4LDcgKzEyNjksOCBAQCB2b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsXFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZVxcbiAgKi9cXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcXG4rc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9IFxcdTAwMjZ0c2stXFx1MDAzZXNrLnNrX3dyaXRlX3F1ZXVlO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xcbkBAIC0xMzEwLDYgKzEzMTIsMTIgQEAgc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcXG4gXFx0XFx0dHNrLVxcdTAwM2Vwa3RfY250ICs9IHNrYl9xdWV1ZV9sZW4odHhxKTtcXG4gXFx0dHNrLVxcdTAwM2VzbnRfdW5hY2tlZCArPSB0c2stXFx1MDAzZXNuZF9iYWNrbG9nO1xcbiBcXHR0c2stXFx1MDAzZXNuZF9iYWNrbG9nID0gMDtcXG4rXFxuK1xcdGlmICh4bWl0cSBcXHUwMDI2XFx1MDAyNiBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkge1xcbitcXHRcXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbiBcXHRyYyA9IHRpcGNfbm9kZV94bWl0KG5ldCwgdHhxLCBkbm9kZSwgdHNrLVxcdTAwM2Vwb3J0aWQpO1xcbiBcXHRpZiAocmMgPT0gLUVMSU5LQ09ORylcXG4gXFx0XFx0dHNrLVxcdTAwM2Vjb25nX2xpbmtfY250ID0gMTtcXG5AQCAtMTM2Nyw3ICsxMzc1LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFxuIFxcdFxcdHdhc19jb25nID0gdHNrX2Nvbm5fY29uZyh0c2spO1xcbi1cXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSk7XFxuK1xcdFxcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7XFxuIFxcdFxcdHRzay1cXHUwMDNlc250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7XFxuIFxcdFxcdGlmICh0c2stXFx1MDAzZXBlZXJfY2FwcyBcXHUwMDI2IFRJUENfQkxPQ0tfRkxPV0NUTClcXG4gXFx0XFx0XFx0dHNrLVxcdTAwM2VzbmRfd2luID0gbXNnX2Fkdl93aW4oaGRyKTtcXG5AQCAtMjE2NSw3ICsyMTczLDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRcXHRzbXBfd21iKCk7XFxuIFxcdFxcdHRzay1cXHUwMDNlY29uZ19saW5rX2NudC0tO1xcbiBcXHRcXHR3YWtldXAgPSB0cnVlO1xcbi1cXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcXG4rXFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBHUk9VUF9QUk9UT0NPTDpcXG4gXFx0XFx0dGlwY19ncm91cF9wcm90b19yY3YoZ3JwLCBcXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xcbkBAIC0yMjU2LDcgKzIyNjQsNyBAQCBzdGF0aWMgYm9vbCB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRjYXNlIFRJUENfRVNUQUJMSVNIRUQ6XFxuIFxcdFxcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZzay1cXHUwMDNlc2tfd3JpdGVfcXVldWUpKVxcbi1cXHRcXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcXG4rXFx0XFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xcbiBcXHRcXHQvKiBBY2NlcHQgb25seSBjb25uZWN0aW9uLWJhc2VkIG1lc3NhZ2VzIHNlbnQgYnkgcGVlciAqL1xcbiBcXHRcXHRpZiAobGlrZWx5KGNvbl9tc2cgXFx1MDAyNlxcdTAwMjYgIWVyciBcXHUwMDI2XFx1MDAyNiBwcG9ydCA9PSBvcG9ydCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICBwbm9kZSA9PSBvbm9kZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6MjkuMTM4Mjg1NjQxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTM4NDg4Mzk5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NodXRkb3duXCIsXG4gICAgXCJ0aXBjX3JlbGVhc2VcIixcbiAgICBcInRpcGNfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgdG8gc3BsaWNlIHRoZSB0cmFuc21pdCBxdWV1ZSBpbnRvIGEgcHJvdmlkZWQgYHhtaXRxYCBpbnN0ZWFkIG9mIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YCBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgbG9jYWwgbm9kZS4gVGhpcyBhZmZlY3RzIFRJUEMgc29ja2V0IHNodXRkb3duIGFuZCByZWNlaXZlIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZjZlNjlmMzVkYTU0OGY1YzlkMWRkMzYwYjU5NmUyNjViNGQ2YWI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTg6MTg6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9zb2NrZXQuYyBiL25ldC90aXBjL3NvY2tldC5jXG5pbmRleCBlNTY0MzQxZTAyMTZkLi4xNmQ4NDRmYzhjYTU3IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvc29ja2V0LmNcbisrKyBiL25ldC90aXBjL3NvY2tldC5jXG5AQCAtMTU2LDcgKzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcbiBzdGF0aWMgdm9pZCB0aXBjX3NrX3JlbW92ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbi1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKTtcbitzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuK1x0XHRcdFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKTtcbiBzdGF0aWMgaW50IHRpcGNfd2FpdF9mb3JfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBsb25nICp0aW1lb19wKTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzO1xuQEAgLTU2MCw3ICs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxuIFx0XHRcdFx0XHQgICAgIXRza19jb25uX2NvbmcodHNrKSkpO1xuIFxuIFx0LyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovXG4tXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xuIFx0LyogUmVtb3ZlIHBlbmRpbmcgU1lOICovXG4gXHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza193cml0ZV9xdWV1ZSk7XG4gXG5AQCAtMTI2OCw3ICsxMjY5LDggQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4gICovXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcbitzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuK1x0XHRcdFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxuIHtcbiBcdHN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9IFx1MDAyNnRzay1cdTAwM2Vzay5za193cml0ZV9xdWV1ZTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7XG5AQCAtMTMxMCw2ICsxMzEyLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4gXHRcdHRzay1cdTAwM2Vwa3RfY250ICs9IHNrYl9xdWV1ZV9sZW4odHhxKTtcbiBcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCArPSB0c2stXHUwMDNlc25kX2JhY2tsb2c7XG4gXHR0c2stXHUwMDNlc25kX2JhY2tsb2cgPSAwO1xuK1xuK1x0aWYgKHhtaXRxIFx1MDAyNlx1MDAyNiBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkge1xuK1x0XHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0cmMgPSB0aXBjX25vZGVfeG1pdChuZXQsIHR4cSwgZG5vZGUsIHRzay1cdTAwM2Vwb3J0aWQpO1xuIFx0aWYgKHJjID09IC1FTElOS0NPTkcpXG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250ID0gMTtcbkBAIC0xMzY3LDcgKzEzNzUsNyBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRcdHdhc19jb25nID0gdHNrX2Nvbm5fY29uZyh0c2spO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSk7XG4rXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7XG4gXHRcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCAtPSBtc2dfY29ubl9hY2soaGRyKTtcbiBcdFx0aWYgKHRzay1cdTAwM2VwZWVyX2NhcHMgXHUwMDI2IFRJUENfQkxPQ0tfRkxPV0NUTClcbiBcdFx0XHR0c2stXHUwMDNlc25kX3dpbiA9IG1zZ19hZHZfd2luKGhkcik7XG5AQCAtMjE2NSw3ICsyMTczLDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRzbXBfd21iKCk7XG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250LS07XG4gXHRcdHdha2V1cCA9IHRydWU7XG4tXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBHUk9VUF9QUk9UT0NPTDpcbiBcdFx0dGlwY19ncm91cF9wcm90b19yY3YoZ3JwLCBcdTAwMjZ3YWtldXAsIGhkciwgaW5wdXRxLCB4bWl0cSk7XG5AQCAtMjI1Niw3ICsyMjY0LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdGNhc2UgVElQQ19FU1RBQkxJU0hFRDpcbiBcdFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUpKVxuLVx0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcbiBcdFx0LyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi9cbiBcdFx0aWYgKGxpa2VseShjb25fbXNnIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBwcG9ydCA9PSBvcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICBwbm9kZSA9PSBvbm9kZSkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjI5LjEzODI4NzE4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjczMDU1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVElQQyBTb2NrZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3RpcGMvc29ja2V0LmNgLiBJdCBzZWVtcyB0aGV5J3ZlIG1vZGlmaWVkIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSW50ZXJlc3RpbmcsIHRoZXkncmUgbm93IHBhc3NpbmcgaW4gYSBgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHFgIGFyZ3VtZW50LiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgY2xlYXI6IGl0J3MgYWJvdXQgb3B0aW1pemluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyBsb2NhbC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgcmF0aW9uYWxlPyBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gc2F5cyBpdCBzcGxpY2VzIGB0eHFgIGludG8gYHhtaXRxYCB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBsb2NhbCBhbmQgYHhtaXRxYCBpcyBwcm92aWRlZC4gVGhpcyBhdm9pZHMgZGlyZWN0IGNhbGxzIHRvIGB0aXBjX25vZGVfeG1pdGAgaW4gY2VydGFpbiBzY2VuYXJpb3MuIFJpZ2h0LCB0aGF0IHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIGZpeCBmb3IgYSBsb2NrZGVwIGlzc3VlLCBvciBwZXJoYXBzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgZnVuY3Rpb24gY2FsbHMuIEl0J3MgYWJvdXQgb3B0aW1pemluZyB0aGUgcGFja2V0IGZsb3csIGxpa2VseSB0byBrZWVwIHRoaW5ncyBpbiBhIHNpbmdsZSBxdWV1ZSB3aGVuZXZlciBwb3NzaWJsZS5cblxuTm93LCBiZWZvcmUgSSBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBsb2dpYywgSSBzaG91bGQgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgVElQQyBpcyBjb25maWd1cmVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLiBMZXQncyBzZWUuLi4gSSdsbCBxdWlja2x5IGdyZXAgdGhlIGBuZXQvdGlwYy9LY29uZmlnYCBmaWxlIGZvciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyB0aGV5IG1pZ2h0IHJlbGF0ZSB0byB0aGlzIHBhdGNoLiBLbm93aW5nIHRoZSBlbmFibGVkIGNvbmZpZyBvcHRpb25zIHdpbGwgaGVscCBtZSBxdWlja2x5IHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODozMy45NjU1OTc0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQyNzA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODozNC4wNDMwMjkyOTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjcxMjk0ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBgVElQQ2AsIHJpZ2h0PyBBbmQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdGlwY19za19wdXNoX2JhY2tsb2dgLCBgX190aXBjX3NodXRkb3duYCwgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGljaCBvZiB0aGVzZSBmdW5jdGlvbnMgZGVzZXJ2ZSB0aGUgbW9zdCBzY3J1dGlueT8gTGV0J3Mgem9vbSBpbiBvbiBgX190aXBjX3NodXRkb3duYCBmaXJzdCDigJMgdGhhdCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gTm93LCBgdGlwY19za19jb25uX3Byb3RvX3JjdmAgaXMgZmxhZ2dlZCBhcyBzdGF0aWMsIGJ1dCB0aGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyBpdHMgcm9sZS4gSSdtIHdpbGxpbmcgdG8gYmV0IGl0J3MgY2FsbGVkIGZyb20gc29tZXRoaW5nIGxpa2UgYHRpcGNfc2tfcmN2YC4uLmFuZCBpZiB0aGF0J3MgdGhlIGNhc2UsIHdlIGhhdmUgYSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHBhdGggdGhyb3VnaCB0aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSB0aGluayBJIHdpbGwgY2hlY2sgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIGFuZCBgdGlwY19za19wcm90b19yY3ZgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6MzguNzE0MzI5NjkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDUxMjEwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3NvY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTEyNzI9c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEzMjYtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MTMyNzogKiB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2IC0gcmVjZWl2ZSBhIGNvbm5lY3Rpb24gbW5nIHByb3RvY29sIG1lc3NhZ2VcXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzI4LSAqIEB0c2s6IHJlY2VpdmluZyBzb2NrZXRcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEzMzItICovXFxubmV0L3RpcGMvc29ja2V0LmM6MTMzMzpzdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzM0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTIxNTY9c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjE2Ny1cXHRjYXNlIENPTk5fTUFOQUdFUjpcXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTY4OlxcdFxcdHRpcGNfc2tfY29ubl9wcm90b19yY3YodHNrLCBza2IsIGlucHV0cSwgeG1pdHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTIxNjktXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODozOS4xNTg4NDc4NTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU1OTA3NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGB0aXBjX3NrX3Byb3RvX3JjdmAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgdGlwY19za19wcm90b19yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBUSVBDIGNvZGViYXNlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlZCBteSBpbnRlcmVzdC4gVGhlIFwic3RhdGljXCIga2V5d29yZCBoaW50cyB0aGF0IGl0cyBzY29wZSBpcyBkZWxpYmVyYXRlbHkgbGltaXRlZCwgbGlrZWx5IHRvIHRoZSBmaWxlIGl0J3MgZGVmaW5lZCBpbi4gVGhpcyB1c3VhbGx5IG1lYW5zIGl0J3MgYSBoZWxwZXIgZnVuY3Rpb24sIHRpZ2h0bHkgY291cGxlZCB0byB0aGF0IHNwZWNpZmljIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgZnJvbSBteSBwZXJzcGVjdGl2ZSwgaXMgdG8gZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgVElQQyBwcm90b2NvbCBzdGFjay4gTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBkYXRhIHJlY2VwdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvdGhlciBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgaXQuIEnigJlsbCBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGUgdG8gdHJhY2UgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBnZXRzIHRvIGl0IGFuZCB3aGF0IGl0cyByZXR1cm4gdmFsdWUgdGVsbHMgdGhlIGNhbGxpbmcgZnVuY3Rpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgaW50ZWdyYXRpb24gd2l0aCB0aGUgb3RoZXIgY29tcG9uZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjQyLjQxNDc1OTI1NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzI4Mjc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX3Byb3RvX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz00MDM9c3RhdGljIGludCB0aXBjX3NrX3NvY2tfZXJyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvdXQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy00MzEtXFx0d2hpbGUgKChyY18gPSAhKGNvbmRpdGlvbl8pKSkge1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxubmV0L3RpcGMvc29ja2V0LmM6NDMyOlxcdFxcdC8qIGNvdXBsZWQgd2l0aCBzbXBfd21iKCkgaW4gdGlwY19za19wcm90b19yY3YoKSAqLyAgICAgICAgICAgIFxcXFxcXG5uZXQvdGlwYy9zb2NrZXQuYy00MzMtXFx0XFx0c21wX3JtYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjE1MT1zdGF0aWMgdm9pZCB0aXBjX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjE1NS1cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTU2OnN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTIzNDY9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzNjMtXFx0aWYgKHVubGlrZWx5KCFtc2dfaXNkYXRhKGhkcikpKVxcbm5ldC90aXBjL3NvY2tldC5jOjIzNjQ6XFx0XFx0dGlwY19za19wcm90b19yY3Yoc2ssIFxcdTAwMjZpbnB1dHEsIHhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo0Mi40NzgwNDg4NzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY0NjIwMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipTdGF0aWMgRnVuY3Rpb24gSW52ZXN0aWdhdGlvbjogdGlwY19za19maWx0ZXJfcmN2KipcblxuT2theSwgYHRpcGNfc2tfZmlsdGVyX3JjdmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBzY29wZWQgaW50ZXJuYWxseSwgbGlrZWx5IHRvIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgb3IgbW9kdWxlLiBTaW5jZSBJJ20gd29ya2luZyB3aXRoIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIGNvZGUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIG1lc3NhZ2UgcmVjZXB0aW9uLiBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyBpdHMgY2FsbCBzaXRlcy4gRmluZGluZyB3aGVyZSBpdCdzICpjYWxsZWQqIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyAqaG93KiBhbmQgKndoeSogaXQncyB1c2VkLiBUaGlzIHdpbGwgaGVscCBtZSB1bnJhdmVsIHRoZSBsb2dpYy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjQ1Ljg0MjY3MDc4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzE1NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfc2tfZmlsdGVyX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0yMzE4PXN0YXRpYyB1bnNpZ25lZCBpbnQgcmN2YnVmX2xpbWl0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzMzUtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjMzNjogKiB0aXBjX3NrX2ZpbHRlcl9yY3YgLSB2YWxpZGF0ZSBpbmNvbWluZyBtZXNzYWdlXFxubmV0L3RpcGMvc29ja2V0LmMtMjMzNy0gKiBAc2s6IHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0NS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzQ2OnN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0Ny1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzU3LVxcbm5ldC90aXBjL3NvY2tldC5jOjIzNTg6XFx0dHJhY2VfdGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmMtMjM1OS1cXHRUSVBDX1NLQl9DQihza2IpLVxcdTAwM2VieXRlc19yZWFkID0gMDtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0MTE9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTgtXFxubmV0L3RpcGMvc29ja2V0LmM6MjQxOTpcXHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXFx1MDAyNnhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDIwLVxcdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQzOD1zdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU2LVxcdFxcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xcbm5ldC90aXBjL3NvY2tldC5jOjI0NTc6XFx0XFx0XFx0dGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIHhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU4LVxcdFxcdFxcdGNvbnRpbnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo0NS45NDc5OTI0OTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0OTcyODAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWNvZGluZyB0aGUgVElQQyBSZWNlaXZlIFBhdGh3YXkqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IG1lbnRhbCBtb2RlbCBvZiB0aGUgVElQQyBkYXRhIGZsb3cgaXMgc29saWQsIHNvIHRoZXNlIGNsdWVzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiAqdGlwY19za19iYWNrbG9nX3Jjdiog4oCTIGFoLCB0aGF0J3MgdGhlIGJhY2tsb2cgcmVjZWl2ZSBmdW5jdGlvbi4gQ2xhc3NpYy4gTXkgaW1tZWRpYXRlIGFzc29jaWF0aW9uIGlzIHRoYXQgdGhpcyBpcyB3aGVyZSB3ZSdyZSBob2xkaW5nIHRob3NlIGluY29taW5nIG1lc3NhZ2VzIHRoYXQgY2FuJ3QgYmUgaW1tZWRpYXRlbHkgcHJvY2Vzc2VkLCBwZXJoYXBzIGR1ZSB0byByZXNvdXJjZSBjb25zdHJhaW50cyBvciBsb2NrIGNvbnRlbnRpb24gb24gdGhlIHNvY2tldC4gSXQgaXMgdGhlIHJlY2VpdmUgZnVuY3Rpb24gZm9yIHRoZSBiYWNrbG9nIHF1ZXVlLlxuXG5BbmQgdGhlbiB3ZSBoYXZlICp0aXBjX3NrX2VucXVldWUqLiBJbnRlcmVzdGluZy4gRW5xdWV1ZWluZy4uLiBJIGltbWVkaWF0ZWx5IHRoaW5rIGJhY2sgdG8gdGhlIHNvY2tldCdzIHJlY2VpdmUgcGF0aCBhbmQgaG93IHRoZSBkYXRhIGdldHMgc3RhZ2VkLiBUaGUgbmFtZSBhbG9uZSBoaW50cyBpdCdzIGFib3V0IHB1c2hpbmcgdGhlIHJlY2VpdmVkIGRhdGEgb250byBhIHF1ZXVlLiBUaGUgZmFjdCB0aGF0ICp0aXBjX3NrX2VucXVldWUqIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiAqdGlwY19za19yY3YqIHJlYWxseSBzZWFscyB0aGUgZGVhbC4gV2UncmUgdGFsa2luZyBhYm91dCB0aGUgc3RhbmRhcmQgZGF0YSByZWNlcHRpb24gcGlwZWxpbmUuIEluY29taW5nIGRhdGEgaXMgcmVjZWl2ZWQgdmlhIHRoZSB0cmFuc3BvcnQgbGF5ZXIsIGFuZCB0aGVuICp0aXBjX3NrX3JjdiogaXMgZ29pbmcgdG8gYmUgdGhlIGhhbmRsZXIsIGZyb20gd2l0aGluIHdoaWNoICp0aXBjX3NrX2VucXVldWUqIGlzIGNhbGxlZCB0byBzYWZlbHkgYWRkIHRoZSByZWNlaXZlZCBtZXNzYWdlIHRvIHRoZSBzb2NrZXQncyBiYWNrbG9nIHF1ZXVlLiBUaGlzIGlzIHByb2JhYmx5IHNvbWUgc29ydCBvZiBpbnRlcm5hbCBxdWV1ZS4gVGhpcyBjb25maXJtcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyB3b3JrIGluIGNvbmp1bmN0aW9uIHRvIGhhbmRsZSB0aGUgZGF0YSByZWNlcHRpb24sIHF1ZXVlaW5nLCBhbmQgZXZlbnR1YWwgY29uc3VtcHRpb24gb2YgbWVzc2FnZXMgd2l0aGluIHRoZSBUSVBDIGZyYW1ld29yay4gU291bmRzIGxpa2UgdGhlIHR5cGljYWwgYnVmZmVyaW5nIG1lY2hhbmlzbS4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBlYWNoIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBpdHMgaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo1MC4xOTc3MjQxMzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTQ5MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0xMTkyPXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEyNjUtXFx0fVxcbm5ldC90aXBjL3NvY2tldC5jOjEyNjY6XFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTEyNjctfVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQzOD1zdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDg1LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjI0ODY6ICogdGlwY19za19yY3YgLSBoYW5kbGUgYSBjaGFpbiBvZiBpbmNvbWluZyBidWZmZXJzXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ4Ny0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ5MS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDkyOnZvaWQgdGlwY19za19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEpXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ5My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjUwLjM0MzIyNTQyOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY4MTg4NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdTpcblxuKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX3JjdmAqKlxuXG5Pa2F5LCBzbyBgdGlwY19za19yY3ZgIGlzIGVpdGhlciBleHBvcnRlZCBvciBub3QgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGl0IGJlaW5nIHVzZWQ/IFRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaW1wYWN0LCBJIG5lZWQgdG8gdHJhY2UgaXRzIGNvbm5lY3Rpb25zLiBMZXQncyBzZWUgaWYgaXQncyBjb25uZWN0ZWQgd2l0aCBgdGlwY19za19maWx0ZXJfY29ubmVjdGAuIFRoYXQgZnVuY3Rpb24gaXMgcHJvYmFibHkgaW52b2x2ZWQgaW4gY29ubmVjdGlvbiBmaWx0ZXJpbmcsIHNvIHRoZSByZWxhdGlvbnNoaXAgY291bGQgYmUgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB3aHkgYHRpcGNfc2tfcmN2YCBpcyBvZiBub3RlLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGhvdyB0aGV5IGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzgyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6NTMuNjExNDE5OTcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTIxMDQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX2ZpbHRlcl9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3NvY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTIxNTY9c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjE5NS0vKipcXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTk2OiAqIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3QgLSBjaGVjayBpbmNvbWluZyBtZXNzYWdlIGZvciBhIGNvbm5lY3Rpb24tYmFzZWQgc29ja2V0XFxubmV0L3RpcGMvc29ja2V0LmMtMjE5Ny0gKiBAdHNrOiBUSVBDIHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjIwMS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMjAyOnN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC90aXBjL3NvY2tldC5jLTIyMDMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yMzQ2PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzc1LVxcdFxcdGxpbWl0ID0gcmN2YnVmX2xpbWl0KHNrLCBza2IpO1xcbm5ldC90aXBjL3NvY2tldC5jOjIzNzY6XFx0XFx0aWYgKChza19jb25uIFxcdTAwMjZcXHUwMDI2ICF0aXBjX3NrX2ZpbHRlcl9jb25uZWN0KHRzaywgc2tiLCB4bWl0cSkpIHx8XFxubmV0L3RpcGMvc29ja2V0LmMtMjM3Ny1cXHRcXHQgICAgKCFza19jb25uIFxcdTAwMjZcXHUwMDI2IG1zZ19jb25uZWN0ZWQoaGRyKSkgfHxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6NTMuNjkyNjM3MzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxNzk5MjkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgV2VhayBQb2ludHMgaW4gdGhlIFRJUEMgSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBNeSBpbml0aWFsIGh1bmNoLCBmb2N1c2luZyBvbiBgdGlwY19za19yY3ZgLCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEl0J3MgdGhlIHJlY2VpdmUgcGF0aCwgc28gYW55IHZ1bG5lcmFiaWxpdHkgdGhlcmUgY291bGQgYmUgaW1wYWN0ZnVsLiBOb3csIEknbSB0aGlua2luZyBhYm91dCByZWxhdGVkIGZ1bmN0aW9uc+KApiBhbmQgYF9fdGlwY19zaHV0ZG93bmAganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFNodXRkb3duIHByb2NlZHVyZXMgYXJlIGFsd2F5cyBhIHBvdGVudGlhbCBhcmVhIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIHN0YWNrLiBHb3R0YSBkaWcgZGVlcGVyIHRoZXJlLCBjb25zaWRlciBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHNvY2tldCBsYXllciBhbmQgdGhlIG92ZXJhbGwgVElQQyBzdGF0ZS4gQ291bGQgYmUgYW4gaW1wb3J0YW50IHNlY29uZGFyeSBmb2N1cywgb3IgZXZlbiB0aGUgcHJpbWFyeSBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo1Ni43MTA2MzQyNzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzI0Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGlwY19zaHV0ZG93blwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxcbm5ldC90aXBjL3NvY2tldC5jLTU1MS17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6NjQyOlxcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0VSUl9OT19QT1JUKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXFx0c2stXFx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI4MDg9c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE4LVxcdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6MjgxOTpcXHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yODIwLVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjU2Ljc2ODk3NDkxNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg3OTI1MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSBhcmUgbXkgaW1tZWRpYXRlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBUSVBDIFNvY2tldCBPcGVyYXRpb25zKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBUSVBDIHNvY2tldCBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGB0aXBjX3JlbGVhc2VgIGFuZCBgdGlwY19zaHV0ZG93bmAgYXJlIGlkZW50aWZpZWQgYXMgdGhlIGtleSBzb2NrZXQgb3BlcmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgdGhvc2UgYXJlIGZ1bmRhbWVudGFsIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4gTm93LCBsZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBzZW5kIG1lY2hhbmlzbXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIHNvIEknbGwgY2hlY2sgb3V0IGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCBuZXh0LiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBvcGVyYXRpb25zIGludGVyZmFjZSB3aXRoIHRoZSBtZXNzYWdpbmcgc3RydWN0dXJlcyBhbmQgd2hhdCBsb2NraW5nIGlzIGdvaW5nIG9uLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyByZWxlYXNlIGFuZCBzaHV0ZG93biBhZmZlY3Qgb25nb2luZyBvciBwZW5kaW5nIHNlbmRzLiBBcmUgdGhleSBncmFjZWZ1bGx5IGhhbmRsZWQsIG9yIGFyZSB0aGV5IG1vcmUgYWJydXB0PyBVbmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRob3NlIHNlbmQgZnVuY3Rpb25zIGlzIGNydWNpYWwgZm9yIG92ZXJhbGwgc3lzdGVtIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgaW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIHdpdGggdGhlIHNodXRkb3duIGNhbGwgYW5kIGlmIHJlbGVhc2UgZG9lcyBhIHByb3BlciBjbGVhbnVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTk6MDAuMzU2OTAzNjAxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4MjMwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19zZW5kbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3NvY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTE1Nz1zdGF0aWMgaW50IF9fdGlwY19zZW5kc3RyZWFtKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xcbm5ldC90aXBjL3NvY2tldC5jOjE1ODpzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xcbm5ldC90aXBjL3NvY2tldC5jLTE1OS1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9NzkxPXN0YXRpYyBfX3BvbGxfdCB0aXBjX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy04MzktICpcXG5uZXQvdGlwYy9zb2NrZXQuYzo4NDA6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXFxubmV0L3RpcGMvc29ja2V0LmMtODQxLSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz05MDY9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfc29jayAqdHNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtOTUzLSAqXFxubmV0L3RpcGMvc29ja2V0LmM6OTU0OiAqIENhbGxlZCBmcm9tIGZ1bmN0aW9uIHRpcGNfc2VuZG1zZygpLCB3aGljaCBoYXMgZG9uZSBhbGwgc2FuaXR5IGNoZWNrc1xcbm5ldC90aXBjL3NvY2tldC5jLTk1NS0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9OTU3PXN0YXRpYyBpbnQgdGlwY19zZW5kX2dyb3VwX3VuaWNhc3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTk5Ny0gKlxcbm5ldC90aXBjL3NvY2tldC5jOjk5ODogKiBDYWxsZWQgZnJvbSBmdW5jdGlvbiB0aXBjX3NlbmRtc2coKSwgd2hpY2ggaGFzIGRvbmUgYWxsIHNhbml0eSBjaGVja3NcXG5uZXQvdGlwYy9zb2NrZXQuYy05OTktICogUmV0dXJuOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgb24gc3VjY2Vzcywgb3IgZXJybm9cXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTEwMDE9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfYW55Y2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTA3OC0gKlxcbm5ldC90aXBjL3NvY2tldC5jOjEwNzk6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXFxubmV0L3RpcGMvc29ja2V0LmMtMTA4MC0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MTA4Mj1zdGF0aWMgaW50IHRpcGNfc2VuZF9ncm91cF9iY2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTE1Mi0gKlxcbm5ldC90aXBjL3NvY2tldC5jOjExNTM6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXFxubmV0L3RpcGMvc29ja2V0LmMtMTE1NC0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MTMzMz1zdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEzOTEtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MTM5MjogKiB0aXBjX3NlbmRtc2cgLSBzZW5kIG1lc3NhZ2UgaW4gY29ubmVjdGlvbmxlc3MgbWFubmVyXFxubmV0L3RpcGMvc29ja2V0LmMtMTM5My0gKiBAc29jazogc29ja2V0IHN0cnVjdHVyZVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTQwMy0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoxNDA0OnN0YXRpYyBpbnQgdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxubmV0L3RpcGMvc29ja2V0LmMtMTQwNS1cXHRcXHRcXHRzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTQxMC1cXHRsb2NrX3NvY2soc2spO1xcbm5ldC90aXBjL3NvY2tldC5jOjE0MTE6XFx0cmV0ID0gX190aXBjX3NlbmRtc2coc29jaywgbSwgZHN6KTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDEyLVxcdHJlbGVhc2Vfc29jayhzayk7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDE2LVxcbm5ldC90aXBjL3NvY2tldC5jOjE0MTc6c3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDE4LXtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTE1NjQ9c3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTE1ODQtXFx0aWYgKHVubGlrZWx5KGRlc3QgXFx1MDAyNlxcdTAwMjYgc2stXFx1MDAzZXNrX3N0YXRlID09IFRJUENfT1BFTikpIHtcXG5uZXQvdGlwYy9zb2NrZXQuYzoxNTg1OlxcdFxcdHJjID0gX190aXBjX3NlbmRtc2coc29jaywgbSwgZGxlbik7XFxubmV0L3RpcGMvc29ja2V0LmMtMTU4Ni1cXHRcXHRpZiAoZGxlbiBcXHUwMDI2XFx1MDAyNiBkbGVuID09IHJjKSB7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yNTgyPXN0YXRpYyBpbnQgdGlwY19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpkZXN0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjYzNi1cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNjM3OlxcdFxcdHJlcyA9IF9fdGlwY19zZW5kbXNnKHNvY2ssIFxcdTAwMjZtLCAwKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNjM4LVxcdFxcdGlmICgocmVzIFxcdTAwM2MgMCkgXFx1MDAyNlxcdTAwMjYgKHJlcyAhPSAtRVdPVUxEQkxPQ0spKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM4MC1cXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxcbm5ldC90aXBjL3NvY2tldC5jOjMzODE6XFx0LnNlbmRtc2dcXHQ9IHRpcGNfc2VuZG1zZyxcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzgyLVxcdC5yZWN2bXNnXFx0PSB0aXBjX3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE5OjAwLjQ1NzczMjg4OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjQzNTMwNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTG9naWMgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgd2FzIHRoYXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIHdlcmUgdGhlIHByaW1hcnkgc29ja2V0IG9wZXJhdGlvbnMgaW52b2x2ZWQsIGJ1dCB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0LiBXaGlsZSB0aG9zZSBhcmUgZGVmaW5pdGVseSAqa2V5KiBzb2NrZXQgb3BlcmF0aW9ucywgdGhlIGNydWNpYWwgY29ubmVjdGlvbiBsaWVzIGVsc2V3aGVyZS4gTXkgaW5pdGlhbCBsaXN0IG9mIFwicmVhY2hhYmxlXCIgZnVuY3Rpb25zLCB0aGF0IGluY2x1ZGVzIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLCBhbmQgYF9fdGlwY19zaHV0ZG93bmAgd2hpY2ggYWxsIGRpcmVjdGx5IGNhbGwgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgaXMgY29ycmVjdCwgYnV0IHRoZSByZWxhdGlvbnNoaXBzIGFyZSBkZWVwZXIuXG5cbldhaXQsIHRoZSBkaWFncmFtIHNob3dzIHRoYXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIGRvbid0ICpkaXJlY3RseSogaW52b2tlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEhvd2V2ZXIsIGBfX3RpcGNfc2h1dGRvd25gLCB3aGljaCBpcyByZWFjaGFibGUgdGhyb3VnaCBib3RoIGB0aXBjX3NodXRkb3duYCBhbmQgYHRpcGNfcmVsZWFzZWAsIGRvZXMhIFRoYXQncyBhIGNyaXRpY2FsIHBhdGguIEFuZCBsZXQncyBub3QgZm9yZ2V0IHRoZSBjaGFpbjogYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIC1cdTAwM2UgYHRpcGNfc2tfcHJvdG9fcmN2YCAtXHUwMDNlIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgIC1cdTAwM2UgYHRpcGNfc2tfYmFja2xvZ19yY3ZgIFx1MDAyNiBgdGlwY19za19lbnF1ZXVlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHRpcGNfc2tfcmN2YC4gVGhpcyByZXZlYWxzIHRoYXQgYHRpcGNfc2tfcmN2YCBpcyBhIG11Y2ggbW9yZSBjZW50cmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciB0aGlzIHBhdGNoLiBTbywgYHRpcGNfc2tfcmN2YCBsb29rcyBsaWtlIGEga2V5IGZ1bmN0aW9uIGhlcmUsIGFsb25nIHdpdGggYHRpcGNfc2h1dGRvd25gIGFuZCBgdGlwY19yZWxlYXNlYC5cblxuSSB3YXMgYWxzbyBjb25zaWRlcmluZyBgdGlwY19jb25uZWN0YCwgYnV0IGl0IGNhbGxzIGBfX3RpcGNfc2VuZG1zZ2AsIHdoaWNoIHN0aWxsIGRvZXNuJ3QgY2FsbCBgdGlwY19za19wdXNoX2JhY2tsb2dgLiBTbywgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgYXMgaW1wb3J0YW50LiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBob3dldmVyLCB0aGF0IGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgYWxsIGFib3V0IHNlbmRpbmcgYWNjdW11bGF0ZWQgYnVmZmVycyB3aGVuIGEgc29ja2V0IGlzIGluIE5hZ2xlIG1vZGUuIEFoLCB5ZXMsIGFuZCBOYWdsZSBtb2RlIGlzIGFjdGl2YXRlZCBieSBzZXR0aW5nIHRoZSBgVElQQ19OQUdMRWAgc29ja2V0IG9wdGlvbi4gSSBuZWVkIHRvIGxvb2sgaW50byBgdGlwY19zZXRzb2Nrb3B0YCBhbmQgYW55IGludGVyYWN0aW9ucyBpdCBoYXMgd2l0aCB0aGUgZnVuY3Rpb25zIEkndmUgaWRlbnRpZmllZC4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcyBsaWtlbHkgbGllLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjUwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE5OjA3LjcwMTI2NjczOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ3MzQzMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfc2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0zMTE4PXN0YXRpYyBpbnQgdGlwY19za19sZWF2ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTM2LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjMxMzc6ICogdGlwY19zZXRzb2Nrb3B0IC0gc2V0IHNvY2tldCBvcHRpb25cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTM4LSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTQ4LSAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjMxNDk6c3RhdGljIGludCB0aXBjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGx2bCwgaW50IG9wdCxcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTUwLVxcdFxcdFxcdCAgIHNvY2twdHJfdCBvdiwgdW5zaWduZWQgaW50IG9sKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM3OC1cXHQuc2h1dGRvd25cXHQ9IHRpcGNfc2h1dGRvd24sXFxubmV0L3RpcGMvc29ja2V0LmM6MzM3OTpcXHQuc2V0c29ja29wdFxcdD0gdGlwY19zZXRzb2Nrb3B0LFxcbm5ldC90aXBjL3NvY2tldC5jLTMzODAtXFx0LmdldHNvY2tvcHRfaXRlciA9IHRpcGNfZ2V0c29ja29wdCxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTMzODY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTMzOTgtXFx0LnNodXRkb3duXFx0PSB0aXBjX3NodXRkb3duLFxcbm5ldC90aXBjL3NvY2tldC5jOjMzOTk6XFx0LnNldHNvY2tvcHRcXHQ9IHRpcGNfc2V0c29ja29wdCxcXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDAwLVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPSB0aXBjX2dldHNvY2tvcHQsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0zNDA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHN0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDE4LVxcdC5zaHV0ZG93blxcdD0gdGlwY19zaHV0ZG93bixcXG5uZXQvdGlwYy9zb2NrZXQuYzozNDE5OlxcdC5zZXRzb2Nrb3B0XFx0PSB0aXBjX3NldHNvY2tvcHQsXFxubmV0L3RpcGMvc29ja2V0LmMtMzQyMC1cXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOTowOC4xNDg2MTc3MjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MTI5ODI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUSVBDIFNvY2tldCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgYHRpcGNfc2V0c29ja29wdGAgYXMgYW5vdGhlciBpbXBvcnRhbnQgYXJlYSBmb3Igc2NydXRpbnksIHdoaWNoIGlzIGdvb2QuIFRoZSBjb3JlIGNoYW5nZSBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIGFsdGVycyBob3cgdGhlIFRJUEMgc29ja2V0IGxvZ2ljIGhhbmRsZXMgaXRzIGJhY2tsb2cgcXVldWUgaW4gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgdG8gdHJhbnNtaXQgZGF0YSwgaXQncyBub3cgc3BsaWNpbmcgdGhlIHF1ZXVlIGludG8gYHhtaXRxYCAqaWYqIHRoYXQgcXVldWUgaXMgYXZhaWxhYmxlIGFuZCB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCByaWdodCB0aGVyZS4gR2l2ZW4gdGhhdCwgSSdtIG1hcmtpbmcgdGhpcyBmb3IgZnV6emluZzsgc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIHNlZW1zIGFwcHJvcHJpYXRlIGhlcmUuXG5cbkJleW9uZCBgdGlwY19zZXRzb2Nrb3B0YCwgSSd2ZSBhbHNvIGZsYWdnZWQgYHRpcGNfc2tfcmN2YCwgYHRpcGNfc2h1dGRvd25gLCBhbmQgYHRpcGNfcmVsZWFzZWAgYXMgZm9jdXMgc3ltYm9scyB0byBrZWVwIGEgY2xvc2UgZXllIG9uLiBUaGVzZSBhcmVhcyBhcmUgYWxsIGxpa2VseSBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc29ja2V0LiBJJ20gb3BlcmF0aW5nIHVuZGVyIHRoZSBgVElQQ2AgY29uZmlndXJhdGlvbiBjb250ZXh0LCBzbyBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gZGVwZW5kZW5jaWVzIGltcGFjdGluZyB0aGlzIGNvZGUgcGF0aC4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNDksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTk6MTIuNzE5OTE5MzkzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTA3OTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOToxMi43ODUwMDUxNTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3NzUzNDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkV4YW1pbmluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZS4gSSdtIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgNiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmN5IGNsYXVzZXMgZGVmaW5lZCBmb3IgdGhlIFRJUEMgY29uZmlndXJhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSByb2J1c3QgYW5kIGNvcnJlY3QgaW1wbGVtZW50YXRpb24sIGVzcGVjaWFsbHkgd2hlbiBpbnRlZ3JhdGluZyBpdCB3aXRoIG90aGVyIG5ldHdvcmtpbmcgY29tcG9uZW50cy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IG90aGVyIGZlYXR1cmVzIG9yIG1vZHVsZXMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBUSVBDIGNhbiBiZSBjb25maWd1cmVkLiBJdOKAmXMgdGhlIHVzdWFsIHByb2Nlc3Mgb2YgcmV2ZXJzZS1lbmdpbmVlcmluZyB0byBkaXNjb3ZlciBwcmVyZXF1aXNpdGVzLCBpc24ndCBpdD9cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOToxNi4xNjI1NDEzODFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3RpcGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBUSVBDIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBUSVBDXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhlIFRyYW5zcGFyZW50IEludGVyIFByb2Nlc3MgQ29tbXVuaWNhdGlvbiAoVElQQykgcHJvdG9jb2wgaXNcXG4gIDExOlxcdFxcdCAgc3BlY2lhbGx5IGRlc2lnbmVkIGZvciBpbnRyYSBjbHVzdGVyIGNvbW11bmljYXRpb24uIFRoaXMgcHJvdG9jb2xcXG4gIDEyOlxcdFxcdCAgb3JpZ2luYXRlcyBmcm9tIEVyaWNzc29uIHdoZXJlIGl0IGhhcyBiZWVuIHVzZWQgaW4gY2FycmllciBncmFkZVxcbiAgMTM6XFx0XFx0ICBjbHVzdGVyIGFwcGxpY2F0aW9ucyBmb3IgbWFueSB5ZWFycy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBUSVBDLCBzZWUgaHR0cDovL3RpcGMuc291cmNlZm9yZ2UubmV0LlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRoaXMgcHJvdG9jb2wgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaFxcbiAgMTg6XFx0XFx0ICBjYW4gYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XFxuICAxOTpcXHRcXHQgIHdhbnQpLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRpcGMuIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXRcXG4gIDIwOlxcdFxcdCAgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcXHUwMDNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOToxNi4xNjI1OTkxMzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY4OTI1MzgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVElQQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhpcyBpcyBhbGwgY29udGluZ2VudCBvbiB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24sIHRoYXQncyB0aGUga2V5LiBGcm9tIHdoYXQgSSBzZWUsIGl0IGxvb2tzIGxpa2UgYFRJUENgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gZWxlbWVudCBoZXJlLiBJJ2xsIG5lZWQgdG8gc2V0IGBFbmFibGVDb25maWdzOiBbXCJUSVBDXCJdYC5cblxuTm93LCBkaWdnaW5nIGRlZXBlciwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgdGlwY19za19yY3ZgLCBgdGlwY19zaHV0ZG93bmAsIGB0aXBjX3JlbGVhc2VgLCBhbmQgYHRpcGNfc2V0c29ja29wdGAuIFRoZXNlIGFyZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgbG9jYWwsIGl0J3Mgc3BsaWNpbmcgdGhlIHRyYW5zbWl0IHF1ZXVlIGludG8gYSBzdXBwbGllZCBgeG1pdHFgLiBUaGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyB0aGUgdHJhbnNtaXQgcXVldWUgaXMgaGFuZGxlZCwgcGFydGljdWxhcmx5IGZvciBsb2NhbCBub2RlIGNvbW11bmljYXRpb24uIFRoaXMgc3BsaWNpbmcgYXBwcm9hY2ggaXMgY2hhbmdpbmcgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIHNodXRkb3duIG9mIHRoZSBUSVBDIHNvY2tldCBhbmQgdGhlIHJlY2VpcHQgb2YgZGF0YS4gU28sIHRoZSBpbXBsaWNhdGlvbnMgYXJlIGxpa2VseSBmb3VuZCBpbiB0aG9zZSBwYXRocyAtIGFuZCBJIGV4cGVjdCB0aG9zZSBwYXRocyB0byBiZSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXG5cbkkgdGhpbmsgaXQncyB0aW1lIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzQzLCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE5OjIyLjg1MTg1NjMyMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTI2MzU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NodXRkb3duXCIsXG4gICAgXCJ0aXBjX3JlbGVhc2VcIixcbiAgICBcInRpcGNfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgdG8gc3BsaWNlIHRoZSB0cmFuc21pdCBxdWV1ZSBpbnRvIGEgcHJvdmlkZWQgYHhtaXRxYCBpbnN0ZWFkIG9mIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YCBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgbG9jYWwgbm9kZS4gVGhpcyBhZmZlY3RzIFRJUEMgc29ja2V0IHNodXRkb3duIGFuZCByZWNlaXZlIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3NrX3JjdlwiLFxuICAgIFwidGlwY19zaHV0ZG93blwiLFxuICAgIFwidGlwY19yZWxlYXNlXCIsXG4gICAgXCJ0aXBjX3NldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 18:11:48 +0000 UTC FinishedAt: 2026-07-29 18:19:24 +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": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "6c78a2fc-37ab-4b65-a652-2d159290117c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "tipc_sk_rcv", "tipc_shutdown", "tipc_release", "tipc_setsockopt" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3NrX3JjdiYjMzQ7LAogICAgJiMzNDt0aXBjX3NodXRkb3duJiMzNDssCiAgICAmIzM0O3RpcGNfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDt0aXBjX3NldHNvY2tvcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCB0byBzcGxpY2UgdGhlIHRyYW5zbWl0IHF1ZXVlIGludG8gYSBwcm92aWRlZCBgeG1pdHFgIGluc3RlYWQgb2YgY2FsbGluZyBgdGlwY19ub2RlX3htaXRgIGRpcmVjdGx5IHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIHRoZSBsb2NhbCBub2RlLiBUaGlzIGFmZmVjdHMgVElQQyBzb2NrZXQgc2h1dGRvd24gYW5kIHJlY2VpdmUgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZjZlNjlmMzVkYTU0OGY1YzlkMWRkMzYwYjU5NmUyNjViNGQ2YWI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTg6MTg6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvc29ja2V0LmMgYi9uZXQvdGlwYy9zb2NrZXQuY1xuaW5kZXggZTU2NDM0MWUwMjE2ZC4uMTZkODQ0ZmM4Y2E1NyAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuY1xuQEAgLTE1Niw3ICYjNDM7MTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyB2b2lkIHRpcGNfc2tfcmVtb3ZlKHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spO1xuJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSk7XG4gc3RhdGljIGludCB0aXBjX3dhaXRfZm9yX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW9fcCk7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcztcbkBAIC01NjAsNyAmIzQzOzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG4gXHRcdFx0XHRcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XG4gXG4gXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cbi1cdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuJiM0MztcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xuIFx0LyogUmVtb3ZlIHBlbmRpbmcgU1lOICovXG4gXHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza193cml0ZV9xdWV1ZSk7XG4gXG5AQCAtMTI2OCw3ICYjNDM7MTI2OSw4IEBAIHZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcbiAvKiB0aXBjX3NrX3B1c2hfYmFja2xvZygpOiBzZW5kIGFjY3VtdWxhdGVkIGJ1ZmZlcnMgaW4gc29ja2V0IHdyaXRlIHF1ZXVlXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZVxuICAqL1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4mIzQzO3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxuIHtcbiBcdHN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9IFx1MDAyNnRzay1cdTAwM2Vzay5za193cml0ZV9xdWV1ZTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7XG5AQCAtMTMxMCw2ICYjNDM7MTMxMiwxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuIFx0XHR0c2stXHUwMDNlcGt0X2NudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbih0eHEpO1xuIFx0dHNrLVx1MDAzZXNudF91bmFja2VkICYjNDM7PSB0c2stXHUwMDNlc25kX2JhY2tsb2c7XG4gXHR0c2stXHUwMDNlc25kX2JhY2tsb2cgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoeG1pdHEgXHUwMDI2XHUwMDI2IGluX293bl9ub2RlKG5ldCwgZG5vZGUpKSB7XG4mIzQzO1x0XHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmMgPSB0aXBjX25vZGVfeG1pdChuZXQsIHR4cSwgZG5vZGUsIHRzay1cdTAwM2Vwb3J0aWQpO1xuIFx0aWYgKHJjID09IC1FTElOS0NPTkcpXG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250ID0gMTtcbkBAIC0xMzY3LDcgJiM0MzsxMzc1LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Z290byBleGl0O1xuIFxuIFx0XHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcbi1cdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xuJiM0MztcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkciksIHhtaXRxKTtcbiBcdFx0dHNrLVx1MDAzZXNudF91bmFja2VkIC09IG1zZ19jb25uX2FjayhoZHIpO1xuIFx0XHRpZiAodHNrLVx1MDAzZXBlZXJfY2FwcyBcdTAwMjYgVElQQ19CTE9DS19GTE9XQ1RMKVxuIFx0XHRcdHRzay1cdTAwM2VzbmRfd2luID0gbXNnX2Fkdl93aW4oaGRyKTtcbkBAIC0yMTY1LDcgJiM0MzsyMTczLDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRzbXBfd21iKCk7XG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250LS07XG4gXHRcdHdha2V1cCA9IHRydWU7XG4tXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuJiM0MztcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XG4gXHRcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xuQEAgLTIyNTYsNyAmIzQzOzIyNjQsNyBAQCBzdGF0aWMgYm9vbCB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0Y2FzZSBUSVBDX0VTVEFCTElTSEVEOlxuIFx0XHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcdTAwMjZzay1cdTAwM2Vza193cml0ZV9xdWV1ZSkpXG4tXHRcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XG4mIzQzO1x0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcbiBcdFx0LyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi9cbiBcdFx0aWYgKGxpa2VseShjb25fbXNnIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBwcG9ydCA9PSBvcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICBwbm9kZSA9PSBvbm9kZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7dGlwY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3RpcGNfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRmNmU2OWYzNWRhNTQ4ZjVjOWQxZGQzNjBiNTk2ZTI2NWI0ZDZhYjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxODoxODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZTU2NDM0MWUwMjE2ZC4uMTZkODQ0ZmM4Y2E1NyAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvc29ja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvc29ja2V0LmMKQEAgLTE1Niw3ICYjNDM7MTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spOwogc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTsKIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7CiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opOwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7CiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaywKJiM0MzsJCQkJIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKTsKIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzOwpAQCAtNTYwLDcgJiM0Mzs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKQogCQkJCQkgICAgIXRza19jb25uX2NvbmcodHNrKSkpOwogCiAJLyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovCi0JdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpOwogCS8qIFJlbW92ZSBwZW5kaW5nIFNZTiAqLwogCV9fc2tiX3F1ZXVlX3B1cmdlKCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKTsKIApAQCAtMTI2OCw3ICYjNDM7MTI2OSw4IEBAIHZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSwKIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWUKICAqICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gc29ja2V0IGlzIGluIE5hZ2xlIG1vZGUKICAqLwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaykKJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLAomIzQzOwkJCQkgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpCiB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCAqdHhxID0gJmFtcDt0c2stJmd0O3NrLnNrX3dyaXRlX3F1ZXVlOwogCXN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7CkBAIC0xMzEwLDYgJiM0MzsxMzEyLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spCiAJCXRzay0mZ3Q7cGt0X2NudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbih0eHEpOwogCXRzay0mZ3Q7c250X3VuYWNrZWQgJiM0Mzs9IHRzay0mZ3Q7c25kX2JhY2tsb2c7CiAJdHNrLSZndDtzbmRfYmFja2xvZyA9IDA7CiYjNDM7CiYjNDM7CWlmICh4bWl0cSAmYW1wOyZhbXA7IGluX293bl9ub2RlKG5ldCwgZG5vZGUpKSB7CiYjNDM7CQlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stJmd0O3BvcnRpZCk7CiAJaWYgKHJjID09IC1FTElOS0NPTkcpCiAJCXRzay0mZ3Q7Y29uZ19saW5rX2NudCA9IDE7CkBAIC0xMzY3LDcgJiM0MzsxMzc1LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCQlnb3RvIGV4aXQ7CiAKIAkJd2FzX2NvbmcgPSB0c2tfY29ubl9jb25nKHRzayk7Ci0JCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpKTsKJiM0MzsJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7CiAJCXRzay0mZ3Q7c250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7CiAJCWlmICh0c2stJmd0O3BlZXJfY2FwcyAmYW1wOyBUSVBDX0JMT0NLX0ZMT1dDVEwpCiAJCQl0c2stJmd0O3NuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpOwpAQCAtMjE2NSw3ICYjNDM7MjE3Myw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzaywKIAkJc21wX3dtYigpOwogCQl0c2stJmd0O2NvbmdfbGlua19jbnQtLTsKIAkJd2FrZXVwID0gdHJ1ZTsKLQkJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7CiAJCWJyZWFrOwogCWNhc2UgR1JPVVBfUFJPVE9DT0w6CiAJCXRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgJmFtcDt3YWtldXAsIGhkciwgaW5wdXRxLCB4bWl0cSk7CkBAIC0yMjU2LDcgJiM0MzsyMjY0LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldHVybiBmYWxzZTsKIAljYXNlIFRJUENfRVNUQUJMSVNIRUQ6CiAJCWlmICghc2tiX3F1ZXVlX2VtcHR5KCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKSkKLQkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpOwomIzQzOwkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTsKIAkJLyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi8KIAkJaWYgKGxpa2VseShjb25fbXNnICZhbXA7JmFtcDsgIWVyciAmYW1wOyZhbXA7IHBwb3J0ID09IG9wb3J0ICZhbXA7JmFtcDsKIAkJCSAgIHBub2RlID09IG9ub2RlKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTM2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRJUEMgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3RpcGMvc29ja2V0LmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBtb2RpZmllZCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEludGVyZXN0aW5nLCB0aGV5JiMzOTtyZSBub3cgcGFzc2luZyBpbiBhIGBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cWAgYXJndW1lbnQuIFRoZSBpbnRlbnRpb24gaGVyZSBpcyBjbGVhcjogaXQmIzM5O3MgYWJvdXQgb3B0aW1pemluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyBsb2NhbC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0JiMzOTtzIHRoZSByYXRpb25hbGU/IFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBzYXlzIGl0IHNwbGljZXMgYHR4cWAgaW50byBgeG1pdHFgIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIGxvY2FsIGFuZCBgeG1pdHFgIGlzIHByb3ZpZGVkLiBUaGlzIGF2b2lkcyBkaXJlY3QgY2FsbHMgdG8gYHRpcGNfbm9kZV94bWl0YCBpbiBjZXJ0YWluIHNjZW5hcmlvcy4gUmlnaHQsIHRoYXQgc291bmRzIGxpa2UgYSBwb3RlbnRpYWwgZml4IGZvciBhIGxvY2tkZXAgaXNzdWUsIG9yIHBlcmhhcHMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgc29tZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxscy4gSXQmIzM5O3MgYWJvdXQgb3B0aW1pemluZyB0aGUgcGFja2V0IGZsb3csIGxpa2VseSB0byBrZWVwIHRoaW5ncyBpbiBhIHNpbmdsZSBxdWV1ZSB3aGVuZXZlciBwb3NzaWJsZS4KCk5vdywgYmVmb3JlIEkgZGVsdmUgZGVlcGVyIGludG8gdGhlIGNvZGUgbG9naWMsIEkgc2hvdWxkIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFRJUEMgaXMgY29uZmlndXJlZCB0byBmdWxseSBncmFzcCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBxdWlja2x5IGdyZXAgdGhlIGBuZXQvdGlwYy9LY29uZmlnYCBmaWxlIGZvciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyB0aGV5IG1pZ2h0IHJlbGF0ZSB0byB0aGlzIHBhdGNoLiBLbm93aW5nIHRoZSBlbmFibGVkIGNvbmZpZyBvcHRpb25zIHdpbGwgaGVscCBtZSBxdWlja2x5IHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkwOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKgoKT2theSwgc28gdGhlIGNvbmZpZyBoZXJlIGlzIGBUSVBDYCwgcmlnaHQ/IEFuZCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AsIGBfX3RpcGNfc2h1dGRvd25gLCBgdGlwY19za19jb25uX3Byb3RvX3JjdmAsIGB0aXBjX3NrX3Byb3RvX3JjdmAsIGFuZCBgdGlwY19za19maWx0ZXJfY29ubmVjdGAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoaWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBkZXNlcnZlIHRoZSBtb3N0IHNjcnV0aW55PyBMZXQmIzM5O3Mgem9vbSBpbiBvbiBgX190aXBjX3NodXRkb3duYCBmaXJzdCDigJMgdGhhdCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gTm93LCBgdGlwY19za19jb25uX3Byb3RvX3JjdmAgaXMgZmxhZ2dlZCBhcyBzdGF0aWMsIGJ1dCB0aGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyBpdHMgcm9sZS4gSSYjMzk7bSB3aWxsaW5nIHRvIGJldCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBzb21ldGhpbmcgbGlrZSBgdGlwY19za19yY3ZgLi4uYW5kIGlmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHdlIGhhdmUgYSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHBhdGggdGhyb3VnaCB0aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSB0aGluayBJIHdpbGwgY2hlY2sgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIGFuZCBgdGlwY19za19wcm90b19yY3ZgIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19jb25uX3Byb3RvX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTEyNzI9c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzI2LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MTMyNzogKiB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2IC0gcmVjZWl2ZSBhIGNvbm5lY3Rpb24gbW5nIHByb3RvY29sIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTEzMjgtICogQHRzazogcmVjZWl2aW5nIHNvY2tldFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTEzMzItICovXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzMzOnN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMTMzNC1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yMTU2PXN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTY3LVx0Y2FzZSBDT05OX01BTkFHRVI6XG5uZXQvdGlwYy9zb2NrZXQuYzoyMTY4Olx0XHR0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHRzaywgc2tiLCBpbnB1dHEsIHhtaXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTIxNjktXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjY0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgdGlwY19za19wcm90b19yY3ZgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB0aXBjX3NrX3Byb3RvX3JjdmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIFRJUEMgY29kZWJhc2UuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVkIG15IGludGVyZXN0LiBUaGUgJiMzNDtzdGF0aWMmIzM0OyBrZXl3b3JkIGhpbnRzIHRoYXQgaXRzIHNjb3BlIGlzIGRlbGliZXJhdGVseSBsaW1pdGVkLCBsaWtlbHkgdG8gdGhlIGZpbGUgaXQmIzM5O3MgZGVmaW5lZCBpbi4gVGhpcyB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIGEgaGVscGVyIGZ1bmN0aW9uLCB0aWdodGx5IGNvdXBsZWQgdG8gdGhhdCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGZyb20gbXkgcGVyc3BlY3RpdmUsIGlzIHRvIGRldGVybWluZSBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIFRJUEMgcHJvdG9jb2wgc3RhY2suIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgZGF0YSByZWNlcHRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIGFyZSBjYWxsaW5nIGl0LiBJ4oCZbGwgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjb2RlIHRvIHRyYWNlIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkYXRhIGdldHMgdG8gaXQgYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZSB0ZWxscyB0aGUgY2FsbGluZyBmdW5jdGlvbi4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBpbnNpZ2h0cyBpbnRvIGl0cyBmdW5jdGlvbmFsaXR5IGFuZCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcHJvdG9fcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9NDAzPXN0YXRpYyBpbnQgdGlwY19za19zb2NrX2VycihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBsb25nICp0aW1lb3V0KVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTQzMS1cdHdoaWxlICgocmNfID0gIShjb25kaXRpb25fKSkpIHtcdFx0XHRcdFx0ICAgICAgIFxcXG5uZXQvdGlwYy9zb2NrZXQuYzo0MzI6XHRcdC8qIGNvdXBsZWQgd2l0aCBzbXBfd21iKCkgaW4gdGlwY19za19wcm90b19yY3YoKSAqLyAgICAgICAgICAgIFxcXG5uZXQvdGlwYy9zb2NrZXQuYy00MzMtXHRcdHNtcF9ybWIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjE1MT1zdGF0aWMgdm9pZCB0aXBjX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIxNTUtXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTU2OnN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbm5ldC90aXBjL3NvY2tldC5jLTIxNTctXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTIzNDY9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzYzLVx0aWYgKHVubGlrZWx5KCFtc2dfaXNkYXRhKGhkcikpKVxubmV0L3RpcGMvc29ja2V0LmM6MjM2NDpcdFx0dGlwY19za19wcm90b19yY3Yoc2ssIFx1MDAyNmlucHV0cSwgeG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjM2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIEZ1bmN0aW9uIEludmVzdGlnYXRpb246IHRpcGNfc2tfZmlsdGVyX3JjdioqCgpPa2F5LCBgdGlwY19za19maWx0ZXJfcmN2YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCYjMzk7cyBzY29wZWQgaW50ZXJuYWxseSwgbGlrZWx5IHRvIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgb3IgbW9kdWxlLiBTaW5jZSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiBtZXNzYWdlIHJlY2VwdGlvbi4gSeKAmWxsIHN0YXJ0IGJ5IHRyYWNpbmcgaXRzIGNhbGwgc2l0ZXMuIEZpbmRpbmcgd2hlcmUgaXQmIzM5O3MgKmNhbGxlZCogaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nICpob3cqIGFuZCAqd2h5KiBpdCYjMzk7cyB1c2VkLiBUaGlzIHdpbGwgaGVscCBtZSB1bnJhdmVsIHRoZSBsb2dpYy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfZmlsdGVyX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTIzMTg9c3RhdGljIHVuc2lnbmVkIGludCByY3ZidWZfbGltaXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIzMzUtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzM2OiAqIHRpcGNfc2tfZmlsdGVyX3JjdiAtIHZhbGlkYXRlIGluY29taW5nIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTIzMzctICogQHNrOiBzb2NrZXRcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzQ1LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjM0NjpzdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMjM0Ny1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM1Ny1cbm5ldC90aXBjL3NvY2tldC5jOjIzNTg6XHR0cmFjZV90aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYy0yMzU5LVx0VElQQ19TS0JfQ0Ioc2tiKS1cdTAwM2VieXRlc19yZWFkID0gMDtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yNDExPXN0YXRpYyBpbnQgdGlwY19za19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjQxOC1cbm5ldC90aXBjL3NvY2tldC5jOjI0MTk6XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXHUwMDI2eG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQyMC1cdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0Mzg9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0NTYtXHRcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xubmV0L3RpcGMvc29ja2V0LmM6MjQ1NzpcdFx0XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgeG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQ1OC1cdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIFRJUEMgUmVjZWl2ZSBQYXRod2F5KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IG1lbnRhbCBtb2RlbCBvZiB0aGUgVElQQyBkYXRhIGZsb3cgaXMgc29saWQsIHNvIHRoZXNlIGNsdWVzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiAqdGlwY19za19iYWNrbG9nX3Jjdiog4oCTIGFoLCB0aGF0JiMzOTtzIHRoZSBiYWNrbG9nIHJlY2VpdmUgZnVuY3Rpb24uIENsYXNzaWMuIE15IGltbWVkaWF0ZSBhc3NvY2lhdGlvbiBpcyB0aGF0IHRoaXMgaXMgd2hlcmUgd2UmIzM5O3JlIGhvbGRpbmcgdGhvc2UgaW5jb21pbmcgbWVzc2FnZXMgdGhhdCBjYW4mIzM5O3QgYmUgaW1tZWRpYXRlbHkgcHJvY2Vzc2VkLCBwZXJoYXBzIGR1ZSB0byByZXNvdXJjZSBjb25zdHJhaW50cyBvciBsb2NrIGNvbnRlbnRpb24gb24gdGhlIHNvY2tldC4gSXQgaXMgdGhlIHJlY2VpdmUgZnVuY3Rpb24gZm9yIHRoZSBiYWNrbG9nIHF1ZXVlLgoKQW5kIHRoZW4gd2UgaGF2ZSAqdGlwY19za19lbnF1ZXVlKi4gSW50ZXJlc3RpbmcuIEVucXVldWVpbmcuLi4gSSBpbW1lZGlhdGVseSB0aGluayBiYWNrIHRvIHRoZSBzb2NrZXQmIzM5O3MgcmVjZWl2ZSBwYXRoIGFuZCBob3cgdGhlIGRhdGEgZ2V0cyBzdGFnZWQuIFRoZSBuYW1lIGFsb25lIGhpbnRzIGl0JiMzOTtzIGFib3V0IHB1c2hpbmcgdGhlIHJlY2VpdmVkIGRhdGEgb250byBhIHF1ZXVlLiBUaGUgZmFjdCB0aGF0ICp0aXBjX3NrX2VucXVldWUqIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiAqdGlwY19za19yY3YqIHJlYWxseSBzZWFscyB0aGUgZGVhbC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIGRhdGEgcmVjZXB0aW9uIHBpcGVsaW5lLiBJbmNvbWluZyBkYXRhIGlzIHJlY2VpdmVkIHZpYSB0aGUgdHJhbnNwb3J0IGxheWVyLCBhbmQgdGhlbiAqdGlwY19za19yY3YqIGlzIGdvaW5nIHRvIGJlIHRoZSBoYW5kbGVyLCBmcm9tIHdpdGhpbiB3aGljaCAqdGlwY19za19lbnF1ZXVlKiBpcyBjYWxsZWQgdG8gc2FmZWx5IGFkZCB0aGUgcmVjZWl2ZWQgbWVzc2FnZSB0byB0aGUgc29ja2V0JiMzOTtzIGJhY2tsb2cgcXVldWUuIFRoaXMgaXMgcHJvYmFibHkgc29tZSBzb3J0IG9mIGludGVybmFsIHF1ZXVlLiBUaGlzIGNvbmZpcm1zIHRoYXQgdGhlc2UgZnVuY3Rpb25zIHdvcmsgaW4gY29uanVuY3Rpb24gdG8gaGFuZGxlIHRoZSBkYXRhIHJlY2VwdGlvbiwgcXVldWVpbmcsIGFuZCBldmVudHVhbCBjb25zdW1wdGlvbiBvZiBtZXNzYWdlcyB3aXRoaW4gdGhlIFRJUEMgZnJhbWV3b3JrLiBTb3VuZHMgbGlrZSB0aGUgdHlwaWNhbCBidWZmZXJpbmcgbWVjaGFuaXNtLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBlYWNoIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBpdHMgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9MTE5Mj12b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMTI2NS1cdH1cbm5ldC90aXBjL3NvY2tldC5jOjEyNjY6XHR0aXBjX3NrX3JjdihuZXQsIGlucHV0cSk7XG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY3LX1cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yNDM4PXN0YXRpYyB2b2lkIHRpcGNfc2tfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEsIHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDg1LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjQ4NjogKiB0aXBjX3NrX3JjdiAtIGhhbmRsZSBhIGNoYWluIG9mIGluY29taW5nIGJ1ZmZlcnNcbm5ldC90aXBjL3NvY2tldC5jLTI0ODctICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2Vcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDkxLSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjQ5Mjp2b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKVxubmV0L3RpcGMvc29ja2V0LmMtMjQ5My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3ODIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91OgoKKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX3JjdmAqKgoKT2theSwgc28gYHRpcGNfc2tfcmN2YCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3Igbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgaXQgYmVpbmcgdXNlZD8gVG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIHBvdGVudGlhbCBpbXBhY3QsIEkgbmVlZCB0byB0cmFjZSBpdHMgY29ubmVjdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgY29ubmVjdGVkIHdpdGggYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBUaGF0IGZ1bmN0aW9uIGlzIHByb2JhYmx5IGludm9sdmVkIGluIGNvbm5lY3Rpb24gZmlsdGVyaW5nLCBzbyB0aGUgcmVsYXRpb25zaGlwIGNvdWxkIGJlIGNydWNpYWwgdG8gZGV0ZXJtaW5pbmcgd2h5IGB0aXBjX3NrX3JjdmAgaXMgb2Ygbm90ZS4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19maWx0ZXJfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTIxNTY9c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIxOTUtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTk2OiAqIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3QgLSBjaGVjayBpbmNvbWluZyBtZXNzYWdlIGZvciBhIGNvbm5lY3Rpb24tYmFzZWQgc29ja2V0XG5uZXQvdGlwYy9zb2NrZXQuYy0yMTk3LSAqIEB0c2s6IFRJUEMgc29ja2V0XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjIwMS0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjIyMDI6c3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvdGlwYy9zb2NrZXQuYy0yMjAzLVx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjM0Nj1zdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIzNzUtXHRcdGxpbWl0ID0gcmN2YnVmX2xpbWl0KHNrLCBza2IpO1xubmV0L3RpcGMvc29ja2V0LmM6MjM3NjpcdFx0aWYgKChza19jb25uIFx1MDAyNlx1MDAyNiAhdGlwY19za19maWx0ZXJfY29ubmVjdCh0c2ssIHNrYiwgeG1pdHEpKSB8fFxubmV0L3RpcGMvc29ja2V0LmMtMjM3Ny1cdFx0ICAgICghc2tfY29ubiBcdTAwMjZcdTAwMjYgbXNnX2Nvbm5lY3RlZChoZHIpKSB8fFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIFdlYWsgUG9pbnRzIGluIHRoZSBUSVBDIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGh1bmNoLCBmb2N1c2luZyBvbiBgdGlwY19za19yY3ZgLCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIHRoZSByZWNlaXZlIHBhdGgsIHNvIGFueSB2dWxuZXJhYmlsaXR5IHRoZXJlIGNvdWxkIGJlIGltcGFjdGZ1bC4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHJlbGF0ZWQgZnVuY3Rpb25z4oCmIGFuZCBgX190aXBjX3NodXRkb3duYCBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFNodXRkb3duIHByb2NlZHVyZXMgYXJlIGFsd2F5cyBhIHBvdGVudGlhbCBhcmVhIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIHN0YWNrLiBHb3R0YSBkaWcgZGVlcGVyIHRoZXJlLCBjb25zaWRlciBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHNvY2tldCBsYXllciBhbmQgdGhlIG92ZXJhbGwgVElQQyBzdGF0ZS4gQ291bGQgYmUgYW4gaW1wb3J0YW50IHNlY29uZGFyeSBmb2N1cywgb3IgZXZlbiB0aGUgcHJpbWFyeSBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGlwY19zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTU0Mj1zdGF0aWMgdm9pZCB0aXBjX3NrX2NhbGxiYWNrKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xubmV0L3RpcGMvc29ja2V0LmM6NTUwOnN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG5uZXQvdGlwYy9zb2NrZXQuYy01NTEte1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTYyNj1zdGF0aWMgaW50IHRpcGNfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cdHRyYWNlX3RpcGNfc2tfcmVsZWFzZShzaywgTlVMTCwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYzo2NDI6XHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19FUlJfTk9fUE9SVCk7XG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXHRzay1cdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjgwOD1zdGF0aWMgaW50IHRpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGhvdylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE4LVx0dHJhY2VfdGlwY19za19zaHV0ZG93bihzaywgTlVMTCwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYzoyODE5Olx0X190aXBjX3NodXRkb3duKHNvY2ssIFRJUENfQ09OTl9TSFVURE9XTik7XG5uZXQvdGlwYy9zb2NrZXQuYy0yODIwLVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSBTSFVURE9XTl9NQVNLO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSBhcmUgbXkgaW1tZWRpYXRlIHRob3VnaHRzOgoKKipBbmFseXppbmcgVElQQyBTb2NrZXQgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBUSVBDIHNvY2tldCBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGB0aXBjX3JlbGVhc2VgIGFuZCBgdGlwY19zaHV0ZG93bmAgYXJlIGlkZW50aWZpZWQgYXMgdGhlIGtleSBzb2NrZXQgb3BlcmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgdGhvc2UgYXJlIGZ1bmRhbWVudGFsIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4gTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBhbmQgc2VlIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGNvcmUgc2VuZCBtZWNoYW5pc21zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBzbyBJJiMzOTtsbCBjaGVjayBvdXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIG5leHQuIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIG9wZXJhdGlvbnMgaW50ZXJmYWNlIHdpdGggdGhlIG1lc3NhZ2luZyBzdHJ1Y3R1cmVzIGFuZCB3aGF0IGxvY2tpbmcgaXMgZ29pbmcgb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyByZWxlYXNlIGFuZCBzaHV0ZG93biBhZmZlY3Qgb25nb2luZyBvciBwZW5kaW5nIHNlbmRzLiBBcmUgdGhleSBncmFjZWZ1bGx5IGhhbmRsZWQsIG9yIGFyZSB0aGV5IG1vcmUgYWJydXB0PyBVbmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRob3NlIHNlbmQgZnVuY3Rpb25zIGlzIGNydWNpYWwgZm9yIG92ZXJhbGwgc3lzdGVtIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgaW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIHdpdGggdGhlIHNodXRkb3duIGNhbGwgYW5kIGlmIHJlbGVhc2UgZG9lcyBhIHByb3BlciBjbGVhbnVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz0xNTc9c3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbm5ldC90aXBjL3NvY2tldC5jOjE1ODpzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xubmV0L3RpcGMvc29ja2V0LmMtMTU5LXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9NzkxPXN0YXRpYyBfX3BvbGxfdCB0aXBjX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtODM5LSAqXG5uZXQvdGlwYy9zb2NrZXQuYzo4NDA6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXG5uZXQvdGlwYy9zb2NrZXQuYy04NDEtICogUmV0dXJuOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgb24gc3VjY2Vzcywgb3IgZXJybm9cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz05MDY9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfc29jayAqdHNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTk1My0gKlxubmV0L3RpcGMvc29ja2V0LmM6OTU0OiAqIENhbGxlZCBmcm9tIGZ1bmN0aW9uIHRpcGNfc2VuZG1zZygpLCB3aGljaCBoYXMgZG9uZSBhbGwgc2FuaXR5IGNoZWNrc1xubmV0L3RpcGMvc29ja2V0LmMtOTU1LSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9OTU3PXN0YXRpYyBpbnQgdGlwY19zZW5kX2dyb3VwX3VuaWNhc3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy05OTctICpcbm5ldC90aXBjL3NvY2tldC5jOjk5ODogKiBDYWxsZWQgZnJvbSBmdW5jdGlvbiB0aXBjX3NlbmRtc2coKSwgd2hpY2ggaGFzIGRvbmUgYWxsIHNhbml0eSBjaGVja3Ncbm5ldC90aXBjL3NvY2tldC5jLTk5OS0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTEwMDE9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfYW55Y2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTEwNzgtICpcbm5ldC90aXBjL3NvY2tldC5jOjEwNzk6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXG5uZXQvdGlwYy9zb2NrZXQuYy0xMDgwLSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MTA4Mj1zdGF0aWMgaW50IHRpcGNfc2VuZF9ncm91cF9iY2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTExNTItICpcbm5ldC90aXBjL3NvY2tldC5jOjExNTM6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXG5uZXQvdGlwYy9zb2NrZXQuYy0xMTU0LSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MTMzMz1zdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzkxLS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MTM5MjogKiB0aXBjX3NlbmRtc2cgLSBzZW5kIG1lc3NhZ2UgaW4gY29ubmVjdGlvbmxlc3MgbWFubmVyXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzkzLSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMTQwMy0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjE0MDQ6c3RhdGljIGludCB0aXBjX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jayxcbm5ldC90aXBjL3NvY2tldC5jLTE0MDUtXHRcdFx0c3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDEwLVx0bG9ja19zb2NrKHNrKTtcbm5ldC90aXBjL3NvY2tldC5jOjE0MTE6XHRyZXQgPSBfX3RpcGNfc2VuZG1zZyhzb2NrLCBtLCBkc3opO1xubmV0L3RpcGMvc29ja2V0LmMtMTQxMi1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMTQxNi1cbm5ldC90aXBjL3NvY2tldC5jOjE0MTc6c3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcbm5ldC90aXBjL3NvY2tldC5jLTE0MTgte1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTE1NjQ9c3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xNTg0LVx0aWYgKHVubGlrZWx5KGRlc3QgXHUwMDI2XHUwMDI2IHNrLVx1MDAzZXNrX3N0YXRlID09IFRJUENfT1BFTikpIHtcbm5ldC90aXBjL3NvY2tldC5jOjE1ODU6XHRcdHJjID0gX190aXBjX3NlbmRtc2coc29jaywgbSwgZGxlbik7XG5uZXQvdGlwYy9zb2NrZXQuYy0xNTg2LVx0XHRpZiAoZGxlbiBcdTAwMjZcdTAwMjYgZGxlbiA9PSByYykge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI1ODI9c3RhdGljIGludCB0aXBjX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmRlc3QsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjYzNi1cbm5ldC90aXBjL3NvY2tldC5jOjI2Mzc6XHRcdHJlcyA9IF9fdGlwY19zZW5kbXNnKHNvY2ssIFx1MDAyNm0sIDApO1xubmV0L3RpcGMvc29ja2V0LmMtMjYzOC1cdFx0aWYgKChyZXMgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAocmVzICE9IC1FV09VTERCTE9DSykpXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMzODAtXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxubmV0L3RpcGMvc29ja2V0LmM6MzM4MTpcdC5zZW5kbXNnXHQ9IHRpcGNfc2VuZG1zZyxcbm5ldC90aXBjL3NvY2tldC5jLTMzODItXHQucmVjdm1zZ1x0PSB0aXBjX3JlY3Ztc2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUSVBDIFNvY2tldCBMb2dpYyBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIHdhcyB0aGF0IGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCB3ZXJlIHRoZSBwcmltYXJ5IHNvY2tldCBvcGVyYXRpb25zIGludm9sdmVkLCBidXQgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFdoaWxlIHRob3NlIGFyZSBkZWZpbml0ZWx5ICprZXkqIHNvY2tldCBvcGVyYXRpb25zLCB0aGUgY3J1Y2lhbCBjb25uZWN0aW9uIGxpZXMgZWxzZXdoZXJlLiBNeSBpbml0aWFsIGxpc3Qgb2YgJiMzNDtyZWFjaGFibGUmIzM0OyBmdW5jdGlvbnMsIHRoYXQgaW5jbHVkZXMgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBgdGlwY19za19maWx0ZXJfY29ubmVjdGAsIGFuZCBgX190aXBjX3NodXRkb3duYCB3aGljaCBhbGwgZGlyZWN0bHkgY2FsbCBgdGlwY19za19wdXNoX2JhY2tsb2dgLCBpcyBjb3JyZWN0LCBidXQgdGhlIHJlbGF0aW9uc2hpcHMgYXJlIGRlZXBlci4KCldhaXQsIHRoZSBkaWFncmFtIHNob3dzIHRoYXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIGRvbiYjMzk7dCAqZGlyZWN0bHkqIGludm9rZSBgdGlwY19za19wdXNoX2JhY2tsb2dgLiBIb3dldmVyLCBgX190aXBjX3NodXRkb3duYCwgd2hpY2ggaXMgcmVhY2hhYmxlIHRocm91Z2ggYm90aCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgLCBkb2VzISBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcGF0aC4gQW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IHRoZSBjaGFpbjogYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIC0mZ3Q7IGB0aXBjX3NrX3Byb3RvX3JjdmAgLSZndDsgYHRpcGNfc2tfZmlsdGVyX3JjdmAgLSZndDsgYHRpcGNfc2tfYmFja2xvZ19yY3ZgICZhbXA7IGB0aXBjX3NrX2VucXVldWVgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgdGlwY19za19yY3ZgLiBUaGlzIHJldmVhbHMgdGhhdCBgdGlwY19za19yY3ZgIGlzIGEgbXVjaCBtb3JlIGNlbnRyYWwgZnVuY3Rpb24gdG8gZm9jdXMgb24gZm9yIHRoaXMgcGF0Y2guIFNvLCBgdGlwY19za19yY3ZgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gaGVyZSwgYWxvbmcgd2l0aCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgLgoKSSB3YXMgYWxzbyBjb25zaWRlcmluZyBgdGlwY19jb25uZWN0YCwgYnV0IGl0IGNhbGxzIGBfX3RpcGNfc2VuZG1zZ2AsIHdoaWNoIHN0aWxsIGRvZXNuJiMzOTt0IGNhbGwgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gU28sIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhcyBpbXBvcnRhbnQuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGhvd2V2ZXIsIHRoYXQgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBpcyBhbGwgYWJvdXQgc2VuZGluZyBhY2N1bXVsYXRlZCBidWZmZXJzIHdoZW4gYSBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZS4gQWgsIHllcywgYW5kIE5hZ2xlIG1vZGUgaXMgYWN0aXZhdGVkIGJ5IHNldHRpbmcgdGhlIGBUSVBDX05BR0xFYCBzb2NrZXQgb3B0aW9uLiBJIG5lZWQgdG8gbG9vayBpbnRvIGB0aXBjX3NldHNvY2tvcHRgIGFuZCBhbnkgaW50ZXJhY3Rpb25zIGl0IGhhcyB3aXRoIHRoZSBmdW5jdGlvbnMgSSYjMzk7dmUgaWRlbnRpZmllZC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMgbGlrZWx5IGxpZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9MzExOD1zdGF0aWMgaW50IHRpcGNfc2tfbGVhdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMxMzYtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzozMTM3OiAqIHRpcGNfc2V0c29ja29wdCAtIHNldCBzb2NrZXQgb3B0aW9uXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTM4LSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzE0OC0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjMxNDk6c3RhdGljIGludCB0aXBjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGx2bCwgaW50IG9wdCxcbm5ldC90aXBjL3NvY2tldC5jLTMxNTAtXHRcdFx0ICAgc29ja3B0cl90IG92LCB1bnNpZ25lZCBpbnQgb2wpXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMzNzgtXHQuc2h1dGRvd25cdD0gdGlwY19zaHV0ZG93bixcbm5ldC90aXBjL3NvY2tldC5jOjMzNzk6XHQuc2V0c29ja29wdFx0PSB0aXBjX3NldHNvY2tvcHQsXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzgwLVx0LmdldHNvY2tvcHRfaXRlciA9IHRpcGNfZ2V0c29ja29wdCxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzM5OC1cdC5zaHV0ZG93blx0PSB0aXBjX3NodXRkb3duLFxubmV0L3RpcGMvc29ja2V0LmM6MzM5OTpcdC5zZXRzb2Nrb3B0XHQ9IHRpcGNfc2V0c29ja29wdCxcbm5ldC90aXBjL3NvY2tldC5jLTM0MDAtXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTM0MDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDE4LVx0LnNodXRkb3duXHQ9IHRpcGNfc2h1dGRvd24sXG5uZXQvdGlwYy9zb2NrZXQuYzozNDE5Olx0LnNldHNvY2tvcHRcdD0gdGlwY19zZXRzb2Nrb3B0LFxubmV0L3RpcGMvc29ja2V0LmMtMzQyMC1cdC5nZXRzb2Nrb3B0X2l0ZXIgPSB0aXBjX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRJUEMgU29ja2V0IE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGB0aXBjX3NldHNvY2tvcHRgIGFzIGFub3RoZXIgaW1wb3J0YW50IGFyZWEgZm9yIHNjcnV0aW55LCB3aGljaCBpcyBnb29kLiBUaGUgY29yZSBjaGFuZ2UgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHRlcnMgaG93IHRoZSBUSVBDIHNvY2tldCBsb2dpYyBoYW5kbGVzIGl0cyBiYWNrbG9nIHF1ZXVlIGluIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBgdGlwY19ub2RlX3htaXRgIHRvIHRyYW5zbWl0IGRhdGEsIGl0JiMzOTtzIG5vdyBzcGxpY2luZyB0aGUgcXVldWUgaW50byBgeG1pdHFgICppZiogdGhhdCBxdWV1ZSBpcyBhdmFpbGFibGUgYW5kIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgbG9jYWwgbm9kZS4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCByaWdodCB0aGVyZS4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBtYXJraW5nIHRoaXMgZm9yIGZ1enppbmc7IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBzZWVtcyBhcHByb3ByaWF0ZSBoZXJlLgoKQmV5b25kIGB0aXBjX3NldHNvY2tvcHRgLCBJJiMzOTt2ZSBhbHNvIGZsYWdnZWQgYHRpcGNfc2tfcmN2YCwgYHRpcGNfc2h1dGRvd25gLCBhbmQgYHRpcGNfcmVsZWFzZWAgYXMgZm9jdXMgc3ltYm9scyB0byBrZWVwIGEgY2xvc2UgZXllIG9uLiBUaGVzZSBhcmVhcyBhcmUgYWxsIGxpa2VseSBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc29ja2V0LiBJJiMzOTttIG9wZXJhdGluZyB1bmRlciB0aGUgYFRJUENgIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcyBpbXBhY3RpbmcgdGhpcyBjb2RlIHBhdGguIEFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUSVBDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg2NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipFeGFtaW5pbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDYgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jeSBjbGF1c2VzIGRlZmluZWQgZm9yIHRoZSBUSVBDIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIGEgcm9idXN0IGFuZCBjb3JyZWN0IGltcGxlbWVudGF0aW9uLCBlc3BlY2lhbGx5IHdoZW4gaW50ZWdyYXRpbmcgaXQgd2l0aCBvdGhlciBuZXR3b3JraW5nIGNvbXBvbmVudHMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBvdGhlciBmZWF0dXJlcyBvciBtb2R1bGVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgVElQQyBjYW4gYmUgY29uZmlndXJlZC4gSXTigJlzIHRoZSB1c3VhbCBwcm9jZXNzIG9mIHJldmVyc2UtZW5naW5lZXJpbmcgdG8gZGlzY292ZXIgcHJlcmVxdWlzaXRlcywgaXNuJiMzOTt0IGl0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBUSVBDIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBUSVBDXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoZSBUcmFuc3BhcmVudCBJbnRlciBQcm9jZXNzIENvbW11bmljYXRpb24gKFRJUEMpIHByb3RvY29sIGlzXG4gIDExOlx0XHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXG4gIDEyOlx0XHQgIG9yaWdpbmF0ZXMgZnJvbSBFcmljc3NvbiB3aGVyZSBpdCBoYXMgYmVlbiB1c2VkIGluIGNhcnJpZXIgZ3JhZGVcbiAgMTM6XHRcdCAgY2x1c3RlciBhcHBsaWNhdGlvbnMgZm9yIG1hbnkgeWVhcnMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRoaXMgcHJvdG9jb2wgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaFxuICAxODpcdFx0ICBjYW4gYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XG4gIDE5Olx0XHQgIHdhbnQpLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRpcGMuIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXRcbiAgMjA6XHRcdCAgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFx1MDAzZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNDMKCQkJCQkJCW91dHB1dDogMTMxCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhpcyBpcyBhbGwgY29udGluZ2VudCBvbiB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24sIHRoYXQmIzM5O3MgdGhlIGtleS4gRnJvbSB3aGF0IEkgc2VlLCBpdCBsb29rcyBsaWtlIGBUSVBDYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVsZW1lbnQgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBzZXQgYEVuYWJsZUNvbmZpZ3M6IFsmIzM0O1RJUEMmIzM0O11gLgoKTm93LCBkaWdnaW5nIGRlZXBlciwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgdGlwY19za19yY3ZgLCBgdGlwY19zaHV0ZG93bmAsIGB0aXBjX3JlbGVhc2VgLCBhbmQgYHRpcGNfc2V0c29ja29wdGAuIFRoZXNlIGFyZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBgdGlwY19ub2RlX3htaXRgIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIGxvY2FsLCBpdCYjMzk7cyBzcGxpY2luZyB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHN1cHBsaWVkIGB4bWl0cWAuIFRoaXMgZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IHRoZSB0cmFuc21pdCBxdWV1ZSBpcyBoYW5kbGVkLCBwYXJ0aWN1bGFybHkgZm9yIGxvY2FsIG5vZGUgY29tbXVuaWNhdGlvbi4gVGhpcyBzcGxpY2luZyBhcHByb2FjaCBpcyBjaGFuZ2luZyB0aGluZ3MgcmVsYXRlZCB0byB0aGUgc2h1dGRvd24gb2YgdGhlIFRJUEMgc29ja2V0IGFuZCB0aGUgcmVjZWlwdCBvZiBkYXRhLiBTbywgdGhlIGltcGxpY2F0aW9ucyBhcmUgbGlrZWx5IGZvdW5kIGluIHRob3NlIHBhdGhzIC0gYW5kIEkgZXhwZWN0IHRob3NlIHBhdGhzIHRvIGJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4KCkkgdGhpbmsgaXQmIzM5O3MgdGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7dGlwY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3RpcGNfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7dGlwY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3RpcGNfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjI4LjU1MTEyNzQ3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDM2MDE4NzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3NrX3JjdlwiLFxuICAgIFwidGlwY19zaHV0ZG93blwiLFxuICAgIFwidGlwY19yZWxlYXNlXCIsXG4gICAgXCJ0aXBjX3NldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6MjguNTUxMTM0NzQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYxNjQ1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZjZlNjlmMzVkYTU0OGY1YzlkMWRkMzYwYjU5NmUyNjViNGQ2YWI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDE4OjE4OjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5pbmRleCBlNTY0MzQxZTAyMTZkLi4xNmQ4NDRmYzhjYTU3IDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXFxuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5AQCAtMTU2LDcgKzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7XFxuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSk7XFxuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcztcXG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XFxuIFxcbiBcXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cXG4tXFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xcbiBcXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cXG4gXFx0X19za2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNrLVxcdTAwM2Vza193cml0ZV9xdWV1ZSk7XFxuIFxcbkBAIC0xMjY4LDcgKzEyNjksOCBAQCB2b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsXFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZVxcbiAgKi9cXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcXG4rc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9IFxcdTAwMjZ0c2stXFx1MDAzZXNrLnNrX3dyaXRlX3F1ZXVlO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xcbkBAIC0xMzEwLDYgKzEzMTIsMTIgQEAgc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcXG4gXFx0XFx0dHNrLVxcdTAwM2Vwa3RfY250ICs9IHNrYl9xdWV1ZV9sZW4odHhxKTtcXG4gXFx0dHNrLVxcdTAwM2VzbnRfdW5hY2tlZCArPSB0c2stXFx1MDAzZXNuZF9iYWNrbG9nO1xcbiBcXHR0c2stXFx1MDAzZXNuZF9iYWNrbG9nID0gMDtcXG4rXFxuK1xcdGlmICh4bWl0cSBcXHUwMDI2XFx1MDAyNiBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkge1xcbitcXHRcXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbiBcXHRyYyA9IHRpcGNfbm9kZV94bWl0KG5ldCwgdHhxLCBkbm9kZSwgdHNrLVxcdTAwM2Vwb3J0aWQpO1xcbiBcXHRpZiAocmMgPT0gLUVMSU5LQ09ORylcXG4gXFx0XFx0dHNrLVxcdTAwM2Vjb25nX2xpbmtfY250ID0gMTtcXG5AQCAtMTM2Nyw3ICsxMzc1LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFxuIFxcdFxcdHdhc19jb25nID0gdHNrX2Nvbm5fY29uZyh0c2spO1xcbi1cXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSk7XFxuK1xcdFxcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7XFxuIFxcdFxcdHRzay1cXHUwMDNlc250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7XFxuIFxcdFxcdGlmICh0c2stXFx1MDAzZXBlZXJfY2FwcyBcXHUwMDI2IFRJUENfQkxPQ0tfRkxPV0NUTClcXG4gXFx0XFx0XFx0dHNrLVxcdTAwM2VzbmRfd2luID0gbXNnX2Fkdl93aW4oaGRyKTtcXG5AQCAtMjE2NSw3ICsyMTczLDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRcXHRzbXBfd21iKCk7XFxuIFxcdFxcdHRzay1cXHUwMDNlY29uZ19saW5rX2NudC0tO1xcbiBcXHRcXHR3YWtldXAgPSB0cnVlO1xcbi1cXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcXG4rXFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBHUk9VUF9QUk9UT0NPTDpcXG4gXFx0XFx0dGlwY19ncm91cF9wcm90b19yY3YoZ3JwLCBcXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xcbkBAIC0yMjU2LDcgKzIyNjQsNyBAQCBzdGF0aWMgYm9vbCB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRjYXNlIFRJUENfRVNUQUJMSVNIRUQ6XFxuIFxcdFxcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZzay1cXHUwMDNlc2tfd3JpdGVfcXVldWUpKVxcbi1cXHRcXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcXG4rXFx0XFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xcbiBcXHRcXHQvKiBBY2NlcHQgb25seSBjb25uZWN0aW9uLWJhc2VkIG1lc3NhZ2VzIHNlbnQgYnkgcGVlciAqL1xcbiBcXHRcXHRpZiAobGlrZWx5KGNvbl9tc2cgXFx1MDAyNlxcdTAwMjYgIWVyciBcXHUwMDI2XFx1MDAyNiBwcG9ydCA9PSBvcG9ydCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICBwbm9kZSA9PSBvbm9kZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6MjkuMTM4Mjg1NjQxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTM4NDg4Mzk5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NodXRkb3duXCIsXG4gICAgXCJ0aXBjX3JlbGVhc2VcIixcbiAgICBcInRpcGNfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgdG8gc3BsaWNlIHRoZSB0cmFuc21pdCBxdWV1ZSBpbnRvIGEgcHJvdmlkZWQgYHhtaXRxYCBpbnN0ZWFkIG9mIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YCBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgbG9jYWwgbm9kZS4gVGhpcyBhZmZlY3RzIFRJUEMgc29ja2V0IHNodXRkb3duIGFuZCByZWNlaXZlIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZjZlNjlmMzVkYTU0OGY1YzlkMWRkMzYwYjU5NmUyNjViNGQ2YWI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTg6MTg6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9zb2NrZXQuYyBiL25ldC90aXBjL3NvY2tldC5jXG5pbmRleCBlNTY0MzQxZTAyMTZkLi4xNmQ4NDRmYzhjYTU3IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvc29ja2V0LmNcbisrKyBiL25ldC90aXBjL3NvY2tldC5jXG5AQCAtMTU2LDcgKzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcbiBzdGF0aWMgdm9pZCB0aXBjX3NrX3JlbW92ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbi1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKTtcbitzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuK1x0XHRcdFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKTtcbiBzdGF0aWMgaW50IHRpcGNfd2FpdF9mb3JfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBsb25nICp0aW1lb19wKTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzO1xuQEAgLTU2MCw3ICs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxuIFx0XHRcdFx0XHQgICAgIXRza19jb25uX2NvbmcodHNrKSkpO1xuIFxuIFx0LyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovXG4tXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xuIFx0LyogUmVtb3ZlIHBlbmRpbmcgU1lOICovXG4gXHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza193cml0ZV9xdWV1ZSk7XG4gXG5AQCAtMTI2OCw3ICsxMjY5LDggQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4gICovXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcbitzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuK1x0XHRcdFx0IHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxuIHtcbiBcdHN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9IFx1MDAyNnRzay1cdTAwM2Vzay5za193cml0ZV9xdWV1ZTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7XG5AQCAtMTMxMCw2ICsxMzEyLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4gXHRcdHRzay1cdTAwM2Vwa3RfY250ICs9IHNrYl9xdWV1ZV9sZW4odHhxKTtcbiBcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCArPSB0c2stXHUwMDNlc25kX2JhY2tsb2c7XG4gXHR0c2stXHUwMDNlc25kX2JhY2tsb2cgPSAwO1xuK1xuK1x0aWYgKHhtaXRxIFx1MDAyNlx1MDAyNiBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkge1xuK1x0XHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0cmMgPSB0aXBjX25vZGVfeG1pdChuZXQsIHR4cSwgZG5vZGUsIHRzay1cdTAwM2Vwb3J0aWQpO1xuIFx0aWYgKHJjID09IC1FTElOS0NPTkcpXG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250ID0gMTtcbkBAIC0xMzY3LDcgKzEzNzUsNyBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRcdHdhc19jb25nID0gdHNrX2Nvbm5fY29uZyh0c2spO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSk7XG4rXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7XG4gXHRcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCAtPSBtc2dfY29ubl9hY2soaGRyKTtcbiBcdFx0aWYgKHRzay1cdTAwM2VwZWVyX2NhcHMgXHUwMDI2IFRJUENfQkxPQ0tfRkxPV0NUTClcbiBcdFx0XHR0c2stXHUwMDNlc25kX3dpbiA9IG1zZ19hZHZfd2luKGhkcik7XG5AQCAtMjE2NSw3ICsyMTczLDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRzbXBfd21iKCk7XG4gXHRcdHRzay1cdTAwM2Vjb25nX2xpbmtfY250LS07XG4gXHRcdHdha2V1cCA9IHRydWU7XG4tXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBHUk9VUF9QUk9UT0NPTDpcbiBcdFx0dGlwY19ncm91cF9wcm90b19yY3YoZ3JwLCBcdTAwMjZ3YWtldXAsIGhkciwgaW5wdXRxLCB4bWl0cSk7XG5AQCAtMjI1Niw3ICsyMjY0LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdGNhc2UgVElQQ19FU1RBQkxJU0hFRDpcbiBcdFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUpKVxuLVx0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcbiBcdFx0LyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi9cbiBcdFx0aWYgKGxpa2VseShjb25fbXNnIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBwcG9ydCA9PSBvcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICBwbm9kZSA9PSBvbm9kZSkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjI5LjEzODI4NzE4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjczMDU1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVElQQyBTb2NrZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3RpcGMvc29ja2V0LmNgLiBJdCBzZWVtcyB0aGV5J3ZlIG1vZGlmaWVkIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSW50ZXJlc3RpbmcsIHRoZXkncmUgbm93IHBhc3NpbmcgaW4gYSBgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHFgIGFyZ3VtZW50LiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgY2xlYXI6IGl0J3MgYWJvdXQgb3B0aW1pemluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyBsb2NhbC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgcmF0aW9uYWxlPyBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gc2F5cyBpdCBzcGxpY2VzIGB0eHFgIGludG8gYHhtaXRxYCB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBsb2NhbCBhbmQgYHhtaXRxYCBpcyBwcm92aWRlZC4gVGhpcyBhdm9pZHMgZGlyZWN0IGNhbGxzIHRvIGB0aXBjX25vZGVfeG1pdGAgaW4gY2VydGFpbiBzY2VuYXJpb3MuIFJpZ2h0LCB0aGF0IHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIGZpeCBmb3IgYSBsb2NrZGVwIGlzc3VlLCBvciBwZXJoYXBzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgZnVuY3Rpb24gY2FsbHMuIEl0J3MgYWJvdXQgb3B0aW1pemluZyB0aGUgcGFja2V0IGZsb3csIGxpa2VseSB0byBrZWVwIHRoaW5ncyBpbiBhIHNpbmdsZSBxdWV1ZSB3aGVuZXZlciBwb3NzaWJsZS5cblxuTm93LCBiZWZvcmUgSSBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBsb2dpYywgSSBzaG91bGQgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgVElQQyBpcyBjb25maWd1cmVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLiBMZXQncyBzZWUuLi4gSSdsbCBxdWlja2x5IGdyZXAgdGhlIGBuZXQvdGlwYy9LY29uZmlnYCBmaWxlIGZvciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyB0aGV5IG1pZ2h0IHJlbGF0ZSB0byB0aGlzIHBhdGNoLiBLbm93aW5nIHRoZSBlbmFibGVkIGNvbmZpZyBvcHRpb25zIHdpbGwgaGVscCBtZSBxdWlja2x5IHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODozMy45NjU1OTc0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQyNzA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODozNC4wNDMwMjkyOTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjcxMjk0ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBgVElQQ2AsIHJpZ2h0PyBBbmQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdGlwY19za19wdXNoX2JhY2tsb2dgLCBgX190aXBjX3NodXRkb3duYCwgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGljaCBvZiB0aGVzZSBmdW5jdGlvbnMgZGVzZXJ2ZSB0aGUgbW9zdCBzY3J1dGlueT8gTGV0J3Mgem9vbSBpbiBvbiBgX190aXBjX3NodXRkb3duYCBmaXJzdCDigJMgdGhhdCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gTm93LCBgdGlwY19za19jb25uX3Byb3RvX3JjdmAgaXMgZmxhZ2dlZCBhcyBzdGF0aWMsIGJ1dCB0aGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyBpdHMgcm9sZS4gSSdtIHdpbGxpbmcgdG8gYmV0IGl0J3MgY2FsbGVkIGZyb20gc29tZXRoaW5nIGxpa2UgYHRpcGNfc2tfcmN2YC4uLmFuZCBpZiB0aGF0J3MgdGhlIGNhc2UsIHdlIGhhdmUgYSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHBhdGggdGhyb3VnaCB0aGUgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSB0aGluayBJIHdpbGwgY2hlY2sgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIGFuZCBgdGlwY19za19wcm90b19yY3ZgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6MzguNzE0MzI5NjkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDUxMjEwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3NvY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTEyNzI9c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEzMjYtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MTMyNzogKiB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2IC0gcmVjZWl2ZSBhIGNvbm5lY3Rpb24gbW5nIHByb3RvY29sIG1lc3NhZ2VcXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzI4LSAqIEB0c2s6IHJlY2VpdmluZyBzb2NrZXRcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEzMzItICovXFxubmV0L3RpcGMvc29ja2V0LmM6MTMzMzpzdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzM0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTIxNTY9c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjE2Ny1cXHRjYXNlIENPTk5fTUFOQUdFUjpcXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTY4OlxcdFxcdHRpcGNfc2tfY29ubl9wcm90b19yY3YodHNrLCBza2IsIGlucHV0cSwgeG1pdHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTIxNjktXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODozOS4xNTg4NDc4NTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU1OTA3NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGB0aXBjX3NrX3Byb3RvX3JjdmAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgdGlwY19za19wcm90b19yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBUSVBDIGNvZGViYXNlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlZCBteSBpbnRlcmVzdC4gVGhlIFwic3RhdGljXCIga2V5d29yZCBoaW50cyB0aGF0IGl0cyBzY29wZSBpcyBkZWxpYmVyYXRlbHkgbGltaXRlZCwgbGlrZWx5IHRvIHRoZSBmaWxlIGl0J3MgZGVmaW5lZCBpbi4gVGhpcyB1c3VhbGx5IG1lYW5zIGl0J3MgYSBoZWxwZXIgZnVuY3Rpb24sIHRpZ2h0bHkgY291cGxlZCB0byB0aGF0IHNwZWNpZmljIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgZnJvbSBteSBwZXJzcGVjdGl2ZSwgaXMgdG8gZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgVElQQyBwcm90b2NvbCBzdGFjay4gTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBkYXRhIHJlY2VwdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvdGhlciBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgaXQuIEnigJlsbCBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGUgdG8gdHJhY2UgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBnZXRzIHRvIGl0IGFuZCB3aGF0IGl0cyByZXR1cm4gdmFsdWUgdGVsbHMgdGhlIGNhbGxpbmcgZnVuY3Rpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgaW50ZWdyYXRpb24gd2l0aCB0aGUgb3RoZXIgY29tcG9uZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjQyLjQxNDc1OTI1NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzI4Mjc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX3Byb3RvX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz00MDM9c3RhdGljIGludCB0aXBjX3NrX3NvY2tfZXJyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvdXQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy00MzEtXFx0d2hpbGUgKChyY18gPSAhKGNvbmRpdGlvbl8pKSkge1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxubmV0L3RpcGMvc29ja2V0LmM6NDMyOlxcdFxcdC8qIGNvdXBsZWQgd2l0aCBzbXBfd21iKCkgaW4gdGlwY19za19wcm90b19yY3YoKSAqLyAgICAgICAgICAgIFxcXFxcXG5uZXQvdGlwYy9zb2NrZXQuYy00MzMtXFx0XFx0c21wX3JtYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjE1MT1zdGF0aWMgdm9pZCB0aXBjX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjE1NS1cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTU2OnN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTIzNDY9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzNjMtXFx0aWYgKHVubGlrZWx5KCFtc2dfaXNkYXRhKGhkcikpKVxcbm5ldC90aXBjL3NvY2tldC5jOjIzNjQ6XFx0XFx0dGlwY19za19wcm90b19yY3Yoc2ssIFxcdTAwMjZpbnB1dHEsIHhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo0Mi40NzgwNDg4NzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY0NjIwMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipTdGF0aWMgRnVuY3Rpb24gSW52ZXN0aWdhdGlvbjogdGlwY19za19maWx0ZXJfcmN2KipcblxuT2theSwgYHRpcGNfc2tfZmlsdGVyX3JjdmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBzY29wZWQgaW50ZXJuYWxseSwgbGlrZWx5IHRvIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgb3IgbW9kdWxlLiBTaW5jZSBJJ20gd29ya2luZyB3aXRoIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIGNvZGUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIG1lc3NhZ2UgcmVjZXB0aW9uLiBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyBpdHMgY2FsbCBzaXRlcy4gRmluZGluZyB3aGVyZSBpdCdzICpjYWxsZWQqIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyAqaG93KiBhbmQgKndoeSogaXQncyB1c2VkLiBUaGlzIHdpbGwgaGVscCBtZSB1bnJhdmVsIHRoZSBsb2dpYy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjQ1Ljg0MjY3MDc4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzE1NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfc2tfZmlsdGVyX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0yMzE4PXN0YXRpYyB1bnNpZ25lZCBpbnQgcmN2YnVmX2xpbWl0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzMzUtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjMzNjogKiB0aXBjX3NrX2ZpbHRlcl9yY3YgLSB2YWxpZGF0ZSBpbmNvbWluZyBtZXNzYWdlXFxubmV0L3RpcGMvc29ja2V0LmMtMjMzNy0gKiBAc2s6IHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0NS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzQ2OnN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0Ny1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzU3LVxcbm5ldC90aXBjL3NvY2tldC5jOjIzNTg6XFx0dHJhY2VfdGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmMtMjM1OS1cXHRUSVBDX1NLQl9DQihza2IpLVxcdTAwM2VieXRlc19yZWFkID0gMDtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0MTE9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTgtXFxubmV0L3RpcGMvc29ja2V0LmM6MjQxOTpcXHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXFx1MDAyNnhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDIwLVxcdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQzOD1zdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU2LVxcdFxcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xcbm5ldC90aXBjL3NvY2tldC5jOjI0NTc6XFx0XFx0XFx0dGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIHhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU4LVxcdFxcdFxcdGNvbnRpbnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo0NS45NDc5OTI0OTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0OTcyODAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWNvZGluZyB0aGUgVElQQyBSZWNlaXZlIFBhdGh3YXkqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IG1lbnRhbCBtb2RlbCBvZiB0aGUgVElQQyBkYXRhIGZsb3cgaXMgc29saWQsIHNvIHRoZXNlIGNsdWVzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiAqdGlwY19za19iYWNrbG9nX3Jjdiog4oCTIGFoLCB0aGF0J3MgdGhlIGJhY2tsb2cgcmVjZWl2ZSBmdW5jdGlvbi4gQ2xhc3NpYy4gTXkgaW1tZWRpYXRlIGFzc29jaWF0aW9uIGlzIHRoYXQgdGhpcyBpcyB3aGVyZSB3ZSdyZSBob2xkaW5nIHRob3NlIGluY29taW5nIG1lc3NhZ2VzIHRoYXQgY2FuJ3QgYmUgaW1tZWRpYXRlbHkgcHJvY2Vzc2VkLCBwZXJoYXBzIGR1ZSB0byByZXNvdXJjZSBjb25zdHJhaW50cyBvciBsb2NrIGNvbnRlbnRpb24gb24gdGhlIHNvY2tldC4gSXQgaXMgdGhlIHJlY2VpdmUgZnVuY3Rpb24gZm9yIHRoZSBiYWNrbG9nIHF1ZXVlLlxuXG5BbmQgdGhlbiB3ZSBoYXZlICp0aXBjX3NrX2VucXVldWUqLiBJbnRlcmVzdGluZy4gRW5xdWV1ZWluZy4uLiBJIGltbWVkaWF0ZWx5IHRoaW5rIGJhY2sgdG8gdGhlIHNvY2tldCdzIHJlY2VpdmUgcGF0aCBhbmQgaG93IHRoZSBkYXRhIGdldHMgc3RhZ2VkLiBUaGUgbmFtZSBhbG9uZSBoaW50cyBpdCdzIGFib3V0IHB1c2hpbmcgdGhlIHJlY2VpdmVkIGRhdGEgb250byBhIHF1ZXVlLiBUaGUgZmFjdCB0aGF0ICp0aXBjX3NrX2VucXVldWUqIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiAqdGlwY19za19yY3YqIHJlYWxseSBzZWFscyB0aGUgZGVhbC4gV2UncmUgdGFsa2luZyBhYm91dCB0aGUgc3RhbmRhcmQgZGF0YSByZWNlcHRpb24gcGlwZWxpbmUuIEluY29taW5nIGRhdGEgaXMgcmVjZWl2ZWQgdmlhIHRoZSB0cmFuc3BvcnQgbGF5ZXIsIGFuZCB0aGVuICp0aXBjX3NrX3JjdiogaXMgZ29pbmcgdG8gYmUgdGhlIGhhbmRsZXIsIGZyb20gd2l0aGluIHdoaWNoICp0aXBjX3NrX2VucXVldWUqIGlzIGNhbGxlZCB0byBzYWZlbHkgYWRkIHRoZSByZWNlaXZlZCBtZXNzYWdlIHRvIHRoZSBzb2NrZXQncyBiYWNrbG9nIHF1ZXVlLiBUaGlzIGlzIHByb2JhYmx5IHNvbWUgc29ydCBvZiBpbnRlcm5hbCBxdWV1ZS4gVGhpcyBjb25maXJtcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyB3b3JrIGluIGNvbmp1bmN0aW9uIHRvIGhhbmRsZSB0aGUgZGF0YSByZWNlcHRpb24sIHF1ZXVlaW5nLCBhbmQgZXZlbnR1YWwgY29uc3VtcHRpb24gb2YgbWVzc2FnZXMgd2l0aGluIHRoZSBUSVBDIGZyYW1ld29yay4gU291bmRzIGxpa2UgdGhlIHR5cGljYWwgYnVmZmVyaW5nIG1lY2hhbmlzbS4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBlYWNoIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBpdHMgaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo1MC4xOTc3MjQxMzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTQ5MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0xMTkyPXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEyNjUtXFx0fVxcbm5ldC90aXBjL3NvY2tldC5jOjEyNjY6XFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTEyNjctfVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQzOD1zdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDg1LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjI0ODY6ICogdGlwY19za19yY3YgLSBoYW5kbGUgYSBjaGFpbiBvZiBpbmNvbWluZyBidWZmZXJzXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ4Ny0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ5MS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDkyOnZvaWQgdGlwY19za19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEpXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ5My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjUwLjM0MzIyNTQyOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY4MTg4NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdTpcblxuKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX3JjdmAqKlxuXG5Pa2F5LCBzbyBgdGlwY19za19yY3ZgIGlzIGVpdGhlciBleHBvcnRlZCBvciBub3QgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGl0IGJlaW5nIHVzZWQ/IFRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaW1wYWN0LCBJIG5lZWQgdG8gdHJhY2UgaXRzIGNvbm5lY3Rpb25zLiBMZXQncyBzZWUgaWYgaXQncyBjb25uZWN0ZWQgd2l0aCBgdGlwY19za19maWx0ZXJfY29ubmVjdGAuIFRoYXQgZnVuY3Rpb24gaXMgcHJvYmFibHkgaW52b2x2ZWQgaW4gY29ubmVjdGlvbiBmaWx0ZXJpbmcsIHNvIHRoZSByZWxhdGlvbnNoaXAgY291bGQgYmUgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB3aHkgYHRpcGNfc2tfcmN2YCBpcyBvZiBub3RlLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGhvdyB0aGV5IGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzgyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6NTMuNjExNDE5OTcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTIxMDQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX2ZpbHRlcl9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3NvY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTIxNTY9c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjE5NS0vKipcXG5uZXQvdGlwYy9zb2NrZXQuYzoyMTk2OiAqIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3QgLSBjaGVjayBpbmNvbWluZyBtZXNzYWdlIGZvciBhIGNvbm5lY3Rpb24tYmFzZWQgc29ja2V0XFxubmV0L3RpcGMvc29ja2V0LmMtMjE5Ny0gKiBAdHNrOiBUSVBDIHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjIwMS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMjAyOnN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC90aXBjL3NvY2tldC5jLTIyMDMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yMzQ2PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzc1LVxcdFxcdGxpbWl0ID0gcmN2YnVmX2xpbWl0KHNrLCBza2IpO1xcbm5ldC90aXBjL3NvY2tldC5jOjIzNzY6XFx0XFx0aWYgKChza19jb25uIFxcdTAwMjZcXHUwMDI2ICF0aXBjX3NrX2ZpbHRlcl9jb25uZWN0KHRzaywgc2tiLCB4bWl0cSkpIHx8XFxubmV0L3RpcGMvc29ja2V0LmMtMjM3Ny1cXHRcXHQgICAgKCFza19jb25uIFxcdTAwMjZcXHUwMDI2IG1zZ19jb25uZWN0ZWQoaGRyKSkgfHxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTg6NTMuNjkyNjM3MzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxNzk5MjkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgV2VhayBQb2ludHMgaW4gdGhlIFRJUEMgSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBNeSBpbml0aWFsIGh1bmNoLCBmb2N1c2luZyBvbiBgdGlwY19za19yY3ZgLCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEl0J3MgdGhlIHJlY2VpdmUgcGF0aCwgc28gYW55IHZ1bG5lcmFiaWxpdHkgdGhlcmUgY291bGQgYmUgaW1wYWN0ZnVsLiBOb3csIEknbSB0aGlua2luZyBhYm91dCByZWxhdGVkIGZ1bmN0aW9uc+KApiBhbmQgYF9fdGlwY19zaHV0ZG93bmAganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFNodXRkb3duIHByb2NlZHVyZXMgYXJlIGFsd2F5cyBhIHBvdGVudGlhbCBhcmVhIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIHN0YWNrLiBHb3R0YSBkaWcgZGVlcGVyIHRoZXJlLCBjb25zaWRlciBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHNvY2tldCBsYXllciBhbmQgdGhlIG92ZXJhbGwgVElQQyBzdGF0ZS4gQ291bGQgYmUgYW4gaW1wb3J0YW50IHNlY29uZGFyeSBmb2N1cywgb3IgZXZlbiB0aGUgcHJpbWFyeSBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxODo1Ni43MTA2MzQyNzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzI0Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGlwY19zaHV0ZG93blwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxcbm5ldC90aXBjL3NvY2tldC5jLTU1MS17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6NjQyOlxcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0VSUl9OT19QT1JUKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXFx0c2stXFx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI4MDg9c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE4LVxcdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6MjgxOTpcXHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yODIwLVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE4OjU2Ljc2ODk3NDkxNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg3OTI1MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSBhcmUgbXkgaW1tZWRpYXRlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBUSVBDIFNvY2tldCBPcGVyYXRpb25zKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBUSVBDIHNvY2tldCBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGB0aXBjX3JlbGVhc2VgIGFuZCBgdGlwY19zaHV0ZG93bmAgYXJlIGlkZW50aWZpZWQgYXMgdGhlIGtleSBzb2NrZXQgb3BlcmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgdGhvc2UgYXJlIGZ1bmRhbWVudGFsIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4gTm93LCBsZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBzZW5kIG1lY2hhbmlzbXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIHNvIEknbGwgY2hlY2sgb3V0IGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCBuZXh0LiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBvcGVyYXRpb25zIGludGVyZmFjZSB3aXRoIHRoZSBtZXNzYWdpbmcgc3RydWN0dXJlcyBhbmQgd2hhdCBsb2NraW5nIGlzIGdvaW5nIG9uLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyByZWxlYXNlIGFuZCBzaHV0ZG93biBhZmZlY3Qgb25nb2luZyBvciBwZW5kaW5nIHNlbmRzLiBBcmUgdGhleSBncmFjZWZ1bGx5IGhhbmRsZWQsIG9yIGFyZSB0aGV5IG1vcmUgYWJydXB0PyBVbmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRob3NlIHNlbmQgZnVuY3Rpb25zIGlzIGNydWNpYWwgZm9yIG92ZXJhbGwgc3lzdGVtIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgaW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIHdpdGggdGhlIHNodXRkb3duIGNhbGwgYW5kIGlmIHJlbGVhc2UgZG9lcyBhIHByb3BlciBjbGVhbnVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTk6MDAuMzU2OTAzNjAxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4MjMwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19zZW5kbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3NvY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTE1Nz1zdGF0aWMgaW50IF9fdGlwY19zZW5kc3RyZWFtKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xcbm5ldC90aXBjL3NvY2tldC5jOjE1ODpzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xcbm5ldC90aXBjL3NvY2tldC5jLTE1OS1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9NzkxPXN0YXRpYyBfX3BvbGxfdCB0aXBjX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy04MzktICpcXG5uZXQvdGlwYy9zb2NrZXQuYzo4NDA6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXFxubmV0L3RpcGMvc29ja2V0LmMtODQxLSAqIFJldHVybjogdGhlIG51bWJlciBvZiBieXRlcyBzZW50IG9uIHN1Y2Nlc3MsIG9yIGVycm5vXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz05MDY9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfc29jayAqdHNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtOTUzLSAqXFxubmV0L3RpcGMvc29ja2V0LmM6OTU0OiAqIENhbGxlZCBmcm9tIGZ1bmN0aW9uIHRpcGNfc2VuZG1zZygpLCB3aGljaCBoYXMgZG9uZSBhbGwgc2FuaXR5IGNoZWNrc1xcbm5ldC90aXBjL3NvY2tldC5jLTk1NS0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9OTU3PXN0YXRpYyBpbnQgdGlwY19zZW5kX2dyb3VwX3VuaWNhc3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTk5Ny0gKlxcbm5ldC90aXBjL3NvY2tldC5jOjk5ODogKiBDYWxsZWQgZnJvbSBmdW5jdGlvbiB0aXBjX3NlbmRtc2coKSwgd2hpY2ggaGFzIGRvbmUgYWxsIHNhbml0eSBjaGVja3NcXG5uZXQvdGlwYy9zb2NrZXQuYy05OTktICogUmV0dXJuOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgb24gc3VjY2Vzcywgb3IgZXJybm9cXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTEwMDE9c3RhdGljIGludCB0aXBjX3NlbmRfZ3JvdXBfYW55Y2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTA3OC0gKlxcbm5ldC90aXBjL3NvY2tldC5jOjEwNzk6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXFxubmV0L3RpcGMvc29ja2V0LmMtMTA4MC0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MTA4Mj1zdGF0aWMgaW50IHRpcGNfc2VuZF9ncm91cF9iY2FzdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTE1Mi0gKlxcbm5ldC90aXBjL3NvY2tldC5jOjExNTM6ICogQ2FsbGVkIGZyb20gZnVuY3Rpb24gdGlwY19zZW5kbXNnKCksIHdoaWNoIGhhcyBkb25lIGFsbCBzYW5pdHkgY2hlY2tzXFxubmV0L3RpcGMvc29ja2V0LmMtMTE1NC0gKiBSZXR1cm46IHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBvbiBzdWNjZXNzLCBvciBlcnJub1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MTMzMz1zdGF0aWMgdm9pZCB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTEzOTEtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MTM5MjogKiB0aXBjX3NlbmRtc2cgLSBzZW5kIG1lc3NhZ2UgaW4gY29ubmVjdGlvbmxlc3MgbWFubmVyXFxubmV0L3RpcGMvc29ja2V0LmMtMTM5My0gKiBAc29jazogc29ja2V0IHN0cnVjdHVyZVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTQwMy0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoxNDA0OnN0YXRpYyBpbnQgdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxubmV0L3RpcGMvc29ja2V0LmMtMTQwNS1cXHRcXHRcXHRzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTQxMC1cXHRsb2NrX3NvY2soc2spO1xcbm5ldC90aXBjL3NvY2tldC5jOjE0MTE6XFx0cmV0ID0gX190aXBjX3NlbmRtc2coc29jaywgbSwgZHN6KTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDEyLVxcdHJlbGVhc2Vfc29jayhzayk7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDE2LVxcbm5ldC90aXBjL3NvY2tldC5jOjE0MTc6c3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcXG5uZXQvdGlwYy9zb2NrZXQuYy0xNDE4LXtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTE1NjQ9c3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZGxlbilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTE1ODQtXFx0aWYgKHVubGlrZWx5KGRlc3QgXFx1MDAyNlxcdTAwMjYgc2stXFx1MDAzZXNrX3N0YXRlID09IFRJUENfT1BFTikpIHtcXG5uZXQvdGlwYy9zb2NrZXQuYzoxNTg1OlxcdFxcdHJjID0gX190aXBjX3NlbmRtc2coc29jaywgbSwgZGxlbik7XFxubmV0L3RpcGMvc29ja2V0LmMtMTU4Ni1cXHRcXHRpZiAoZGxlbiBcXHUwMDI2XFx1MDAyNiBkbGVuID09IHJjKSB7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yNTgyPXN0YXRpYyBpbnQgdGlwY19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpkZXN0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjYzNi1cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNjM3OlxcdFxcdHJlcyA9IF9fdGlwY19zZW5kbXNnKHNvY2ssIFxcdTAwMjZtLCAwKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNjM4LVxcdFxcdGlmICgocmVzIFxcdTAwM2MgMCkgXFx1MDAyNlxcdTAwMjYgKHJlcyAhPSAtRVdPVUxEQkxPQ0spKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM4MC1cXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxcbm5ldC90aXBjL3NvY2tldC5jOjMzODE6XFx0LnNlbmRtc2dcXHQ9IHRpcGNfc2VuZG1zZyxcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzgyLVxcdC5yZWN2bXNnXFx0PSB0aXBjX3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE5OjAwLjQ1NzczMjg4OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjQzNTMwNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTG9naWMgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgd2FzIHRoYXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIHdlcmUgdGhlIHByaW1hcnkgc29ja2V0IG9wZXJhdGlvbnMgaW52b2x2ZWQsIGJ1dCB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0LiBXaGlsZSB0aG9zZSBhcmUgZGVmaW5pdGVseSAqa2V5KiBzb2NrZXQgb3BlcmF0aW9ucywgdGhlIGNydWNpYWwgY29ubmVjdGlvbiBsaWVzIGVsc2V3aGVyZS4gTXkgaW5pdGlhbCBsaXN0IG9mIFwicmVhY2hhYmxlXCIgZnVuY3Rpb25zLCB0aGF0IGluY2x1ZGVzIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLCBhbmQgYF9fdGlwY19zaHV0ZG93bmAgd2hpY2ggYWxsIGRpcmVjdGx5IGNhbGwgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgaXMgY29ycmVjdCwgYnV0IHRoZSByZWxhdGlvbnNoaXBzIGFyZSBkZWVwZXIuXG5cbldhaXQsIHRoZSBkaWFncmFtIHNob3dzIHRoYXQgYHRpcGNfc2VuZG1zZ2AgYW5kIGB0aXBjX3NlbmRzdHJlYW1gIGRvbid0ICpkaXJlY3RseSogaW52b2tlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEhvd2V2ZXIsIGBfX3RpcGNfc2h1dGRvd25gLCB3aGljaCBpcyByZWFjaGFibGUgdGhyb3VnaCBib3RoIGB0aXBjX3NodXRkb3duYCBhbmQgYHRpcGNfcmVsZWFzZWAsIGRvZXMhIFRoYXQncyBhIGNyaXRpY2FsIHBhdGguIEFuZCBsZXQncyBub3QgZm9yZ2V0IHRoZSBjaGFpbjogYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIC1cdTAwM2UgYHRpcGNfc2tfcHJvdG9fcmN2YCAtXHUwMDNlIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgIC1cdTAwM2UgYHRpcGNfc2tfYmFja2xvZ19yY3ZgIFx1MDAyNiBgdGlwY19za19lbnF1ZXVlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHRpcGNfc2tfcmN2YC4gVGhpcyByZXZlYWxzIHRoYXQgYHRpcGNfc2tfcmN2YCBpcyBhIG11Y2ggbW9yZSBjZW50cmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciB0aGlzIHBhdGNoLiBTbywgYHRpcGNfc2tfcmN2YCBsb29rcyBsaWtlIGEga2V5IGZ1bmN0aW9uIGhlcmUsIGFsb25nIHdpdGggYHRpcGNfc2h1dGRvd25gIGFuZCBgdGlwY19yZWxlYXNlYC5cblxuSSB3YXMgYWxzbyBjb25zaWRlcmluZyBgdGlwY19jb25uZWN0YCwgYnV0IGl0IGNhbGxzIGBfX3RpcGNfc2VuZG1zZ2AsIHdoaWNoIHN0aWxsIGRvZXNuJ3QgY2FsbCBgdGlwY19za19wdXNoX2JhY2tsb2dgLiBTbywgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgYXMgaW1wb3J0YW50LiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBob3dldmVyLCB0aGF0IGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgYWxsIGFib3V0IHNlbmRpbmcgYWNjdW11bGF0ZWQgYnVmZmVycyB3aGVuIGEgc29ja2V0IGlzIGluIE5hZ2xlIG1vZGUuIEFoLCB5ZXMsIGFuZCBOYWdsZSBtb2RlIGlzIGFjdGl2YXRlZCBieSBzZXR0aW5nIHRoZSBgVElQQ19OQUdMRWAgc29ja2V0IG9wdGlvbi4gSSBuZWVkIHRvIGxvb2sgaW50byBgdGlwY19zZXRzb2Nrb3B0YCBhbmQgYW55IGludGVyYWN0aW9ucyBpdCBoYXMgd2l0aCB0aGUgZnVuY3Rpb25zIEkndmUgaWRlbnRpZmllZC4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcyBsaWtlbHkgbGllLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjUwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE5OjA3LjcwMTI2NjczOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ3MzQzMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfc2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9zb2NrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0zMTE4PXN0YXRpYyBpbnQgdGlwY19za19sZWF2ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTM2LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjMxMzc6ICogdGlwY19zZXRzb2Nrb3B0IC0gc2V0IHNvY2tldCBvcHRpb25cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTM4LSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTQ4LSAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjMxNDk6c3RhdGljIGludCB0aXBjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGx2bCwgaW50IG9wdCxcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMTUwLVxcdFxcdFxcdCAgIHNvY2twdHJfdCBvdiwgdW5zaWduZWQgaW50IG9sKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM3OC1cXHQuc2h1dGRvd25cXHQ9IHRpcGNfc2h1dGRvd24sXFxubmV0L3RpcGMvc29ja2V0LmM6MzM3OTpcXHQuc2V0c29ja29wdFxcdD0gdGlwY19zZXRzb2Nrb3B0LFxcbm5ldC90aXBjL3NvY2tldC5jLTMzODAtXFx0LmdldHNvY2tvcHRfaXRlciA9IHRpcGNfZ2V0c29ja29wdCxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTMzODY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTMzOTgtXFx0LnNodXRkb3duXFx0PSB0aXBjX3NodXRkb3duLFxcbm5ldC90aXBjL3NvY2tldC5jOjMzOTk6XFx0LnNldHNvY2tvcHRcXHQ9IHRpcGNfc2V0c29ja29wdCxcXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDAwLVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPSB0aXBjX2dldHNvY2tvcHQsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0zNDA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHN0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDE4LVxcdC5zaHV0ZG93blxcdD0gdGlwY19zaHV0ZG93bixcXG5uZXQvdGlwYy9zb2NrZXQuYzozNDE5OlxcdC5zZXRzb2Nrb3B0XFx0PSB0aXBjX3NldHNvY2tvcHQsXFxubmV0L3RpcGMvc29ja2V0LmMtMzQyMC1cXHQuZ2V0c29ja29wdF9pdGVyID0gdGlwY19nZXRzb2Nrb3B0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOTowOC4xNDg2MTc3MjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MTI5ODI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUSVBDIFNvY2tldCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgYHRpcGNfc2V0c29ja29wdGAgYXMgYW5vdGhlciBpbXBvcnRhbnQgYXJlYSBmb3Igc2NydXRpbnksIHdoaWNoIGlzIGdvb2QuIFRoZSBjb3JlIGNoYW5nZSBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIGFsdGVycyBob3cgdGhlIFRJUEMgc29ja2V0IGxvZ2ljIGhhbmRsZXMgaXRzIGJhY2tsb2cgcXVldWUgaW4gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgdG8gdHJhbnNtaXQgZGF0YSwgaXQncyBub3cgc3BsaWNpbmcgdGhlIHF1ZXVlIGludG8gYHhtaXRxYCAqaWYqIHRoYXQgcXVldWUgaXMgYXZhaWxhYmxlIGFuZCB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCByaWdodCB0aGVyZS4gR2l2ZW4gdGhhdCwgSSdtIG1hcmtpbmcgdGhpcyBmb3IgZnV6emluZzsgc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIHNlZW1zIGFwcHJvcHJpYXRlIGhlcmUuXG5cbkJleW9uZCBgdGlwY19zZXRzb2Nrb3B0YCwgSSd2ZSBhbHNvIGZsYWdnZWQgYHRpcGNfc2tfcmN2YCwgYHRpcGNfc2h1dGRvd25gLCBhbmQgYHRpcGNfcmVsZWFzZWAgYXMgZm9jdXMgc3ltYm9scyB0byBrZWVwIGEgY2xvc2UgZXllIG9uLiBUaGVzZSBhcmVhcyBhcmUgYWxsIGxpa2VseSBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc29ja2V0LiBJJ20gb3BlcmF0aW5nIHVuZGVyIHRoZSBgVElQQ2AgY29uZmlndXJhdGlvbiBjb250ZXh0LCBzbyBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gZGVwZW5kZW5jaWVzIGltcGFjdGluZyB0aGlzIGNvZGUgcGF0aC4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNDksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTg6MTk6MTIuNzE5OTE5MzkzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTA3OTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOToxMi43ODUwMDUxNTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3NzUzNDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkV4YW1pbmluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZS4gSSdtIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgNiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmN5IGNsYXVzZXMgZGVmaW5lZCBmb3IgdGhlIFRJUEMgY29uZmlndXJhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSByb2J1c3QgYW5kIGNvcnJlY3QgaW1wbGVtZW50YXRpb24sIGVzcGVjaWFsbHkgd2hlbiBpbnRlZ3JhdGluZyBpdCB3aXRoIG90aGVyIG5ldHdvcmtpbmcgY29tcG9uZW50cy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IG90aGVyIGZlYXR1cmVzIG9yIG1vZHVsZXMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBUSVBDIGNhbiBiZSBjb25maWd1cmVkLiBJdOKAmXMgdGhlIHVzdWFsIHByb2Nlc3Mgb2YgcmV2ZXJzZS1lbmdpbmVlcmluZyB0byBkaXNjb3ZlciBwcmVyZXF1aXNpdGVzLCBpc24ndCBpdD9cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOToxNi4xNjI1NDEzODFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3RpcGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBUSVBDIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBUSVBDXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhlIFRyYW5zcGFyZW50IEludGVyIFByb2Nlc3MgQ29tbXVuaWNhdGlvbiAoVElQQykgcHJvdG9jb2wgaXNcXG4gIDExOlxcdFxcdCAgc3BlY2lhbGx5IGRlc2lnbmVkIGZvciBpbnRyYSBjbHVzdGVyIGNvbW11bmljYXRpb24uIFRoaXMgcHJvdG9jb2xcXG4gIDEyOlxcdFxcdCAgb3JpZ2luYXRlcyBmcm9tIEVyaWNzc29uIHdoZXJlIGl0IGhhcyBiZWVuIHVzZWQgaW4gY2FycmllciBncmFkZVxcbiAgMTM6XFx0XFx0ICBjbHVzdGVyIGFwcGxpY2F0aW9ucyBmb3IgbWFueSB5ZWFycy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBUSVBDLCBzZWUgaHR0cDovL3RpcGMuc291cmNlZm9yZ2UubmV0LlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRoaXMgcHJvdG9jb2wgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaFxcbiAgMTg6XFx0XFx0ICBjYW4gYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XFxuICAxOTpcXHRcXHQgIHdhbnQpLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRpcGMuIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXRcXG4gIDIwOlxcdFxcdCAgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcXHUwMDNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxODoxOToxNi4xNjI1OTkxMzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY4OTI1MzgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVElQQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhpcyBpcyBhbGwgY29udGluZ2VudCBvbiB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24sIHRoYXQncyB0aGUga2V5LiBGcm9tIHdoYXQgSSBzZWUsIGl0IGxvb2tzIGxpa2UgYFRJUENgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gZWxlbWVudCBoZXJlLiBJJ2xsIG5lZWQgdG8gc2V0IGBFbmFibGVDb25maWdzOiBbXCJUSVBDXCJdYC5cblxuTm93LCBkaWdnaW5nIGRlZXBlciwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgdGlwY19za19yY3ZgLCBgdGlwY19zaHV0ZG93bmAsIGB0aXBjX3JlbGVhc2VgLCBhbmQgYHRpcGNfc2V0c29ja29wdGAuIFRoZXNlIGFyZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgbG9jYWwsIGl0J3Mgc3BsaWNpbmcgdGhlIHRyYW5zbWl0IHF1ZXVlIGludG8gYSBzdXBwbGllZCBgeG1pdHFgLiBUaGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyB0aGUgdHJhbnNtaXQgcXVldWUgaXMgaGFuZGxlZCwgcGFydGljdWxhcmx5IGZvciBsb2NhbCBub2RlIGNvbW11bmljYXRpb24uIFRoaXMgc3BsaWNpbmcgYXBwcm9hY2ggaXMgY2hhbmdpbmcgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIHNodXRkb3duIG9mIHRoZSBUSVBDIHNvY2tldCBhbmQgdGhlIHJlY2VpcHQgb2YgZGF0YS4gU28sIHRoZSBpbXBsaWNhdGlvbnMgYXJlIGxpa2VseSBmb3VuZCBpbiB0aG9zZSBwYXRocyAtIGFuZCBJIGV4cGVjdCB0aG9zZSBwYXRocyB0byBiZSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXG5cbkkgdGhpbmsgaXQncyB0aW1lIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzQzLCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE4OjE5OjIyLjg1MTg1NjMyMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTI2MzU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NodXRkb3duXCIsXG4gICAgXCJ0aXBjX3JlbGVhc2VcIixcbiAgICBcInRpcGNfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgdG8gc3BsaWNlIHRoZSB0cmFuc21pdCBxdWV1ZSBpbnRvIGEgcHJvdmlkZWQgYHhtaXRxYCBpbnN0ZWFkIG9mIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YCBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgbG9jYWwgbm9kZS4gVGhpcyBhZmZlY3RzIFRJUEMgc29ja2V0IHNodXRkb3duIGFuZCByZWNlaXZlIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3NrX3JjdlwiLFxuICAgIFwidGlwY19zaHV0ZG93blwiLFxuICAgIFwidGlwY19yZWxlYXNlXCIsXG4gICAgXCJ0aXBjX3NldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgIHRvIHNwbGljZSB0aGUgdHJhbnNtaXQgcXVldWUgaW50byBhIHByb3ZpZGVkIGB4bWl0cWAgaW5zdGVhZCBvZiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgdGhlIGxvY2FsIG5vZGUuIFRoaXMgYWZmZWN0cyBUSVBDIHNvY2tldCBzaHV0ZG93biBhbmQgcmVjZWl2ZSBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[1] Phase: Succeeded StartedAt: 2026-07-29 18:19:34 +0000 UTC FinishedAt: 2026-07-29 18:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 18:19:34 +0000 UTC FinishedAt: 2026-07-29 18:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2] Phase: Succeeded StartedAt: 2026-07-29 18:19:34 +0000 UTC FinishedAt: 2026-07-29 22:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:19:34 +0000 UTC FinishedAt: 2026-07-29 22:14:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:19:34 +0000 UTC FinishedAt: 2026-07-29 18:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:19:34 +0000 UTC FinishedAt: 2026-07-29 18:19:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-workflowrdfbc/series-workflowrdfbc-convert-artifact-556775295/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:19:45 +0000 UTC FinishedAt: 2026-07-29 18:41:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:19:45 +0000 UTC FinishedAt: 2026-07-29 18:41:41 +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:*c16f753b-a4a2-4bb2-8c3e-8b1235ae8841,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-workflowrdfbc/series-workflowrdfbc-convert-artifact-556775295/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": "e98f7476-7764-4003-b59b-38584b712df7", "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-workflowrdfbc/series-workflowrdfbc-build-action-2527498757/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:19:45 +0000 UTC FinishedAt: 2026-07-29 18:41:30 +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:*c16f753b-a4a2-4bb2-8c3e-8b1235ae8841,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-workflowrdfbc/series-workflowrdfbc-convert-artifact-556775295/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": "e98f7476-7764-4003-b59b-38584b712df7", "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-workflowrdfbc/series-workflowrdfbc-build-action-2527498757/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:41:41 +0000 UTC FinishedAt: 2026-07-29 18:41:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:41:41 +0000 UTC FinishedAt: 2026-07-29 18:41:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:41:41 +0000 UTC FinishedAt: 2026-07-29 18:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:41:41 +0000 UTC FinishedAt: 2026-07-29 18:41:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-workflowrdfbc/series-workflowrdfbc-convert-artifact-1619264654/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:41:51 +0000 UTC FinishedAt: 2026-07-29 18:43:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:41:51 +0000 UTC FinishedAt: 2026-07-29 18:43:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e98f7476-7764-4003-b59b-38584b712df7,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-workflowrdfbc/series-workflowrdfbc-build-action-2527498757/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-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:43:52 +0000 UTC FinishedAt: 2026-07-29 18:43:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:43:52 +0000 UTC FinishedAt: 2026-07-29 18:43:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:43:52 +0000 UTC FinishedAt: 2026-07-29 19:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:43:52 +0000 UTC FinishedAt: 2026-07-29 19:06:14 +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:*c16f753b-a4a2-4bb2-8c3e-8b1235ae8841,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-workflowrdfbc/series-workflowrdfbc-convert-artifact-1619264654/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": "6915e94a-25a3-45a0-a4b3-13704563db07", "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-workflowrdfbc/series-workflowrdfbc-build-action-122640930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 18:43:52 +0000 UTC FinishedAt: 2026-07-29 19:06:04 +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:*c16f753b-a4a2-4bb2-8c3e-8b1235ae8841,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-workflowrdfbc/series-workflowrdfbc-convert-artifact-1619264654/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": "6915e94a-25a3-45a0-a4b3-13704563db07", "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-workflowrdfbc/series-workflowrdfbc-build-action-122640930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:06:14 +0000 UTC FinishedAt: 2026-07-29 19:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:06:14 +0000 UTC FinishedAt: 2026-07-29 19:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:06:14 +0000 UTC FinishedAt: 2026-07-29 19:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:06:14 +0000 UTC FinishedAt: 2026-07-29 19:08:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6915e94a-25a3-45a0-a4b3-13704563db07,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-workflowrdfbc/series-workflowrdfbc-build-action-122640930/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-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 22:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 22:14:02 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"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:*e98f7476-7764-4003-b59b-38584b712df7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6915e94a-25a3-45a0-a4b3-13704563db07,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-workflowrdfbc/series-workflowrdfbc-build-action-2527498757/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-workflowrdfbc/series-workflowrdfbc-build-action-122640930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 19:08:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 19:08:35 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"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-workflowrdfbc/series-workflowrdfbc-convert-artifact-1956186035/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 19:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 19:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:30 +0000 UTC FinishedAt: 2026-07-29 19:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:40 +0000 UTC FinishedAt: 2026-07-29 22:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdfbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["tipc_sk_rcv","tipc_shutdown","tipc_release","tipc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"6c78a2fc-37ab-4b65-a652-2d159290117c","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-07-29 19:08:40 +0000 UTC FinishedAt: 2026-07-29 22:13:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e98f7476-7764-4003-b59b-38584b712df7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6915e94a-25a3-45a0-a4b3-13704563db07,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-workflowrdfbc/series-workflowrdfbc-build-action-2527498757/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-workflowrdfbc/series-workflowrdfbc-build-action-122640930/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-workflowrdfbc/series-workflowrdfbc-convert-artifact-1956186035/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,}