Name: series-workflowzx2zj Phase: Succeeded StartedAt: 2026-07-20 13:14:23 +0000 UTC FinishedAt: 2026-07-20 17:50:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[0] Phase: Succeeded StartedAt: 2026-07-20 13:14:23 +0000 UTC FinishedAt: 2026-07-20 13:34:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 13:14:23 +0000 UTC FinishedAt: 2026-07-20 13:34:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "bfd0e09c-595e-4770-bbae-36b0b0333332" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_assoc_bh_rcv", "sctp_endpoint_bh_rcv", "sctp_auth_chunk_verify" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX2Fzc29jX2JoX3JjdiYjMzQ7LAogICAgJiMzNDtzY3RwX2VuZHBvaW50X2JoX3JjdiYjMzQ7LAogICAgJiMzNDtzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHNrYl9jbG9uZSBmYWlscyBkdXJpbmcgU0NUUCBjaHVuayBhdXRoZW50aWNhdGlvbi4gSXQgbW9kaWZpZXMgY29yZSBTQ1RQIHJlY2VpdmUgcGF0aCBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmIzOTE3ZTkzYjRkMjJlMWIxYWNmM2JlNzNjMGMwZDZmNzg1MmJjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDEzOjMyOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IDYyZDNjYzE1NTgwOWM3Li5lNTQwNjgzMDUzOTYwZSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuQEAgLTk5OSw3ICYjNDM7OTk5LDggQEAgc3RhdGljIHZvaWQgc2N0cF9hc3NvY19iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdGlmIChuZXh0X2hkci1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9FQ0hPKSB7XG4gXHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoX2NodW5rID0gc2tiX2Nsb25lKGNodW5rLVx1MDAzZXNrYixcbiBcdFx0XHRcdFx0XHRcdCAgICAgIEdGUF9BVE9NSUMpO1xuLVx0XHRcdFx0Y2h1bmstXHUwMDNlYXV0aCA9IDE7XG4mIzQzO1x0XHRcdFx0aWYgKGNodW5rLVx1MDAzZWF1dGhfY2h1bmspXG4mIzQzO1x0XHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoID0gMTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmMgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXG5pbmRleCBkZmIxNzE5Mjc1ZGJhNy4uMzQxOTc0OGM2NmJjMTQgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXG5AQCAtMzY4LDcgJiM0MzszNjgsOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0aWYgKG5leHRfaGRyLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0VDSE8pIHtcbiBcdFx0XHRcdGNodW5rLVx1MDAzZWF1dGhfY2h1bmsgPSBza2JfY2xvbmUoY2h1bmstXHUwMDNlc2tiLFxuIFx0XHRcdFx0XHRcdFx0XHRHRlBfQVRPTUlDKTtcbi1cdFx0XHRcdGNodW5rLVx1MDAzZWF1dGggPSAxO1xuJiM0MztcdFx0XHRcdGlmIChjaHVuay1cdTAwM2VhdXRoX2NodW5rKVxuJiM0MztcdFx0XHRcdFx0Y2h1bmstXHUwMDNlYXV0aCA9IDE7XG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHR9XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCBkMjNkOTM1ZTEyOGU5Ni4uODllZDYxOGIxZGUzMGYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbkBAIC02NDIsNyAmIzQzOzY0Miw3IEBAIHN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayBhdXRoO1xuIFxuIFx0aWYgKCFjaHVuay1cdTAwM2VhdXRoX2NodW5rKVxuLVx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRcdHJldHVybiAhc2N0cF9hdXRoX3JlY3ZfY2lkKGNodW5rLVx1MDAzZWNodW5rX2hkci1cdTAwM2V0eXBlLCBhc29jKTtcbiBcbiBcdC8qIFNDVFAtQVVUSDogIGF1dGhfY2h1bmsgcG9pbnRlciBpcyBvbmx5IHNldCB3aGVuIHRoZSBjb29raWUtZWNob1xuIFx0ICogaXMgc3VwcG9zZWQgdG8gYmUgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0byBkbyBkZWxheWVkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfZW5kcG9pbnRfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfYXV0aF9jaHVua192ZXJpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZiMzkxN2U5M2I0ZDIyZTFiMWFjZjNiZTczYzBjMGQ2Zjc4NTJiY2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAxMzozMjoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKaW5kZXggNjJkM2NjMTU1ODA5YzcuLmU1NDA2ODMwNTM5NjBlIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtOTk5LDcgJiM0Mzs5OTksOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2Fzc29jX2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlpZiAobmV4dF9oZHItJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0VDSE8pIHsKIAkJCQljaHVuay0mZ3Q7YXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay0mZ3Q7c2tiLAogCQkJCQkJCSAgICAgIEdGUF9BVE9NSUMpOwotCQkJCWNodW5rLSZndDthdXRoID0gMTsKJiM0MzsJCQkJaWYgKGNodW5rLSZndDthdXRoX2NodW5rKQomIzQzOwkJCQkJY2h1bmstJmd0O2F1dGggPSAxOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9lbmRwb2ludG9sYS5jIGIvbmV0L3NjdHAvZW5kcG9pbnRvbGEuYwppbmRleCBkZmIxNzE5Mjc1ZGJhNy4uMzQxOTc0OGM2NmJjMTQgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvZW5kcG9pbnRvbGEuYwpAQCAtMzY4LDcgJiM0MzszNjgsOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlpZiAobmV4dF9oZHItJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0VDSE8pIHsKIAkJCQljaHVuay0mZ3Q7YXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay0mZ3Q7c2tiLAogCQkJCQkJCQlHRlBfQVRPTUlDKTsKLQkJCQljaHVuay0mZ3Q7YXV0aCA9IDE7CiYjNDM7CQkJCWlmIChjaHVuay0mZ3Q7YXV0aF9jaHVuaykKJiM0MzsJCQkJCWNodW5rLSZndDthdXRoID0gMTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCBkMjNkOTM1ZTEyOGU5Ni4uODllZDYxOGIxZGUzMGYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCkBAIC02NDIsNyAmIzQzOzY0Miw3IEBAIHN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssCiAJc3RydWN0IHNjdHBfY2h1bmsgYXV0aDsKIAogCWlmICghY2h1bmstJmd0O2F1dGhfY2h1bmspCi0JCXJldHVybiB0cnVlOwomIzQzOwkJcmV0dXJuICFzY3RwX2F1dGhfcmVjdl9jaWQoY2h1bmstJmd0O2NodW5rX2hkci0mZ3Q7dHlwZSwgYXNvYyk7CiAKIAkvKiBTQ1RQLUFVVEg6ICBhdXRoX2NodW5rIHBvaW50ZXIgaXMgb25seSBzZXQgd2hlbiB0aGUgY29va2llLWVjaG8KIAkgKiBpcyBzdXBwb3NlZCB0byBiZSBhdXRoZW50aWNhdGVkIGFuZCB3ZSBoYXZlIHRvIGRvIGRlbGF5ZWQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIFBhdGNoIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gdG91Y2ggc29tZSBjcml0aWNhbCBhdXRoZW50aWNhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIFNDVFAgc3RhY2ssIHNwZWNpZmljYWxseSBpbiBgbmV0L3NjdHAvYXNzb2Npb2xhLmNgLCBgbmV0L3NjdHAvZW5kcG9pbnRvbGEuY2AsIGFuZCBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgZm9jdXNlZCBvbiBlbnN1cmluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSBjbG9uZWQgc2tiLiBJIGNhbiBzZWUgdGhleSYjMzk7cmUgdmVyaWZ5aW5nIHRoZSByZXR1cm4gb2YgYHNrYl9jbG9uZWAgYmVmb3JlIHNldHRpbmcgYGNodW5rLSZndDthdXRoID0gMWAuIFRoYXTigJlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYXBwcm9hY2g7IGF2b2lkaW5nIG51bGwgZGVyZWZlcmVuY2UgaXMgYWx3YXlzIGEgd2luLgoKQWxzbywgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBtb2RpZmllZCB0aGUgYmVoYXZpb3Igb2YgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgLiBUaGUgb3JpZ2luYWwgbG9naWMgbWlnaHQgaGF2ZSBiZWVuIG92ZXJseSBwZXJtaXNzaXZlLCBidXQgbm93IGl0IHNlZW1zIHRoYXQgdGhlIGNoZWNrIGAhY2h1bmstJmd0O2F1dGhfY2h1bmtgIHdpbGwgcmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoZSBgc2N0cF9hdXRoX3JlY3ZfY2lkYCBjYWxsLCB3aGljaCBpcyBzZW5zaWJsZS4gQSBwcm9wZXIgYXV0aGVudGljYXRpb24gY2hlY2sgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGEgbm9uLWF1dGhlbnRpY2F0aW9uIGNodW5rIHR5cGUgaXMgcHJlc2VudC4gVGhlIG9yaWdpbmFsIGNvZGUgY291bGQgaGF2ZSBwYXNzZWQgYXV0aGVudGljYXRpb24gdG8gYW4gdW5hdXRob3JpemVkIGNodW5rLCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiB0aGlzIGNhbGwgdG8gYmUgc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGlzIHNhZmUuCgpCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBOYXR1cmFsbHksIGBJUF9TQ1RQYCB3aWxsIGJlIHRoZSBwcmltYXJ5IG9uZS4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbnZvbHZlZCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgU0NUUC1yZWxhdGVkIGNvbmZpZ3MgdG8gc2VlIHdoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBhdGNoIGludGVyYWN0cyB3aXRoIG90aGVyIHNlY3VyaXR5IGZlYXR1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzYKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTQ1RQIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBJUF9TQ1RQYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQgcmVsYXRlZCB0byB0aGF0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBjaGFuZ2VkIHdpdGhpbiBgc2N0cF9hc3NvY19iaF9yY3ZgLCBgc2N0cF9lbmRwb2ludF9iaF9yY3ZgLCBhbmQgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgU0NUUCBwYWNrZXQgaGFuZGxpbmcgYW5kIGF1dGhlbnRpY2F0aW9uLCB3aGljaCB3b3VsZCBiZSBpbXBhY3RlZCBieSBwcm90b2NvbC1sZXZlbCBjb25maWd1cmF0aW9uIGNoYW5nZXMuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgZ29vZCBoYW5kbGUgb24gKmhvdyogdGhleSYjMzk7dmUgYmVlbiBtb2RpZmllZC4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwbHksIEkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGVyZSYjMzk7cyBhbG1vc3QgYWx3YXlzIHNvbWV0aGluZyByZWxhdGVkIHRvIHNlY3VyaXR5IHRoYXQgbmVlZHMgYSBkb3VibGUtY2hlY2suIFRpbWUgdG8gdmVyaWZ5IGlmIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IGhhdmUgYWxzbyBiZWVuIGNoYW5nZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hc3NvY19iaF9yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvYXNzb2Npb2xhLmM9NDM9c3RhdGljIHZvaWQgc2N0cF9zZWxlY3RfYWN0aXZlX2FuZF9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYzo0NDpzdGF0aWMgdm9pZCBzY3RwX2Fzc29jX2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xubmV0L3NjdHAvYXNzb2Npb2xhLmMtNDUtc3RhdGljIHZvaWQgc2N0cF9hc3NvY19mcmVlX2FzY29uZl9hY2tzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz01MT1zdGF0aWMgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfYXNzb2NpYXRpb25faW5pdChcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0yMjQtXHRzY3RwX2lucV9pbml0KFx1MDAyNmFzb2MtXHUwMDNlYmFzZS5pbnF1ZXVlKTtcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjIyNTpcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFx1MDAyNmFzb2MtXHUwMDNlYmFzZS5pbnF1ZXVlLCBzY3RwX2Fzc29jX2JoX3Jjdik7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0yMjYtXG4tLVxubmV0L3NjdHAvYXNzb2Npb2xhLmM9OTA1PXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqc2N0cF9hc3NvY19sb29rdXBfdHNuKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTk2MC0vKiBEbyBkZWxheWVkIGlucHV0IHByb2Nlc3NpbmcuICBUaGlzIGlzIHNjaGVkdWxlZCBieSBzY3RwX3JjdigpLiAqL1xubmV0L3NjdHAvYXNzb2Npb2xhLmM6OTYxOnN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTk2Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9lbmRwb2ludF9iaF9yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zNS0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaW50ZXJuYWwgaGVscGVycy4gKi9cbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM6MzY6c3RhdGljIHZvaWQgc2N0cF9lbmRwb2ludF9iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmMtMzctXG4tLVxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYz01MD1zdGF0aWMgc3RydWN0IHNjdHBfZW5kcG9pbnQgKnNjdHBfZW5kcG9pbnRfaW5pdChzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4tLVxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy03OS1cdC8qIFNldCBpdHMgdG9wLWhhbGYgaGFuZGxlciAqL1xubmV0L3NjdHAvZW5kcG9pbnRvbGEuYzo4MDpcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFx1MDAyNmVwLVx1MDAzZWJhc2UuaW5xdWV1ZSwgc2N0cF9lbmRwb2ludF9iaF9yY3YpO1xubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy04MS1cbi0tXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jPTMwMj1ib29sIHNjdHBfZW5kcG9pbnRfaXNfcGVlbGVkX29mZihzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4tLVxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zMjUtICovXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jOjMyNjpzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jLTMyNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hdXRoX2NodW5rX3ZlcmlmeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz01MjA9ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xQ19hY2soc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYzOC1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjYzOTpzdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjQwLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NzAyPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTgyNy1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjgyODpcdGlmICghc2N0cF9hdXRoX2NodW5rX3ZlcmlmeShuZXQsIGNodW5rLCBuZXdfYXNvYykpIHtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTgyOS1cdFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xODgxPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2EoXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMTkwNS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE5MDY6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMTkwNy1cdFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMDA0PXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2IoXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjAyNS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIwMjY6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjAyNy1cdFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMTExPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2QoXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjEyOC1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIxMjk6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgYXNvYykpXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMTMwLVx0XHRyZXR1cm4gU0NUUF9ESVNQT1NJVElPTl9ESVNDQVJEO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFNlY3VyaXR5IFZ1bG5lcmFiaWxpdHkgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBjYW4gc2VlIGl0IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlIHJlbGF0ZWQgdG8gU0NUUCBoYW5kbGluZy4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhhdCBgc2tiX2Nsb25lYCBjYW4gcmV0dXJuIE5VTEwsIHlldCB0aGUgYGNodW5rLSZndDthdXRoYCBmbGFnIGlzIGJlaW5nIHNldCByZWdhcmRsZXNzLCB3aGljaCBpcyBhIHRleHRib29rIHJlY2lwZSBmb3IgYSBjcmFzaCBvciBzb21lIHJlYWxseSBuYXN0eSwgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIHJlZCBmbGFnLiBUaGUgcGF0Y2ggaXRzZWxmIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGlzIGJ5IG1vZGlmeWluZyBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAgdG8gcGVyZm9ybSBhIGNoZWNrIG9uIGBzY3RwX2F1dGhfcmVjdl9jaWRgIGlmIGBjaHVuay0mZ3Q7YXV0aF9jaHVua2AgaXMgTlVMTC4gVGhpcyBpcyBhIHNvbGlkLCB0YXJnZXRlZCBhcHByb2FjaC4KCkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBJIGFtIGNvbmZpZGVudCB0aGlzIGlzIHJlYWNoYWJsZS4gVGhlIHBhdGNoIGRpcmVjdGx5IHRvdWNoZXMgY3JpdGljYWwgY29tcG9uZW50cy4gTXkgbWVudGFsIGNoZWNrbGlzdCBzYXlzIHRoZSByZWxldmFudCBjb25maWcgaXMgYElQX1NDVFBgLCB3aGljaCBJIHdvdWxkIGV4cGVjdC4gTm93LCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zLCBteSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgYXJlOiBgc2N0cF9hc3NvY19iaF9yY3ZgLCBgc2N0cF9lbmRwb2ludF9iaF9yY3ZgLCBhbmQgb2YgY291cnNlLCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZ29pbmcgdG8gYmUgd2hlcmUgSSBuZWVkIHRvIGRpZyBpbiB0byBjb25maXJtIHRoZSBpbXBhY3QgYW5kIGVuc3VyZSB0aGUgZml4IGlzIGNvbXBsZXRlLiBJIGFsc28gaGF2ZSB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3MgZm9yIGBTQ1RQX0FVVEhgIHRoYXQgbWlnaHQgZnVydGhlciBjbGFyaWZ5IHRoaW5ncy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMsIHNvIEkmIzM5O2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGNoYW5nZXMgYWdhaW5zdCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ1RQX0FVVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjgyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHNwZWFraW5nIGFzIGFuIGV4cGVydDoKCioqU0NUUCBBdXRoZW50aWNhdGlvbiBDb251bmRydW0qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBTQ1RQIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgc2VlbXMgdGhlcmUmIzM5O3Mgbm8gZXhwbGljaXQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGBTQ1RQX0FVVEhgIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBvciBhbnl0aGluZyBzaW1pbGFyLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgZWl0aGVyIGJha2VkIGluIGJ5IGRlZmF1bHQsIGFsd2F5cyBlbmFibGVkLCBvciBwZXJoYXBzIGl0JiMzOTtzIGVudGlyZWx5IG1hbmFnZWQgdGhyb3VnaCB0aG9zZSBnb29kIG9sZCBgc3lzY3RsYCBrbm9icywgd2hpY2ggd291bGQgbWFrZSBzZW5zZSBmcm9tIGEgZGVzaWduIHN0YW5kcG9pbnQuIEtlZXBzIGl0IG1vcmUgZmxleGlibGUsIHlvdSBrbm93PwoKTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHRob3VnaDsgSSBzaG91bGQgcmVhbGx5IG1ha2Ugc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSBvYnNjdXJlIGNvbmZpZyBidXJpZWQgZWxzZXdoZXJlLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9zY3RwL0tjb25maWdgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCBtaWdodCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcyBhdXRoZW50aWNhdGlvbiBiZWhhdmlvci4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz0zOT1pZiBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxubmV0L3NjdHAvS2NvbmZpZzo0MTpjb25maWcgU0NUUF9EQkdfT0JKQ05UXG5uZXQvc2N0cC9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz01Mj1jaG9pY2Vcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxubmV0L3NjdHAvS2NvbmZpZzo2Mjpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxubmV0L3NjdHAvS2NvbmZpZy02My1cdGJvb2wgXCYjMzQ7SE1BQy1TSEEyNTZcJiMzNDtcbm5ldC9zY3RwL0tjb25maWctNjQtXG5uZXQvc2N0cC9LY29uZmlnOjY1OmNvbmZpZyBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVxubmV0L3NjdHAvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbm5ldC9zY3RwL0tjb25maWc9Njg9ZW5kY2hvaWNlXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzEtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTAzCgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBSZWZpbmVkIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBJUF9TQ1RQYCBpcyB0aGUgY3J1Y2lhbCBmb2N1cyBoZXJlLCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlc2UgdGFyZ2V0IHN5bWJvbHM6IGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFVubGlrZSB0aGUgbW9yZSBnZW5lcmFsIGVudHJ5IHBvaW50cyBsaWtlIGBzY3RwX3JjdmAgb3IgYGlwX3JjdmAsIHRoZXNlIHNlZW0gaGlnaGx5IHJlbGV2YW50IHRvIGFzc29jaWF0aW9uLCBlbmRwb2ludCByZWNlaXZlIHByb2Nlc3NpbmcgKGluIHRoZSBib3R0b20gaGFsZiBvZiB0aGUgc3RhY2spLCBhbmQgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIHNwZWNpZmljYWxseSB3aXRoaW4gU0NUUC4gVGhpcyBpcyBnb29kLCBhIG1vcmUgdGFyZ2V0ZWQgYXR0YWNrIHN1cmZhY2UgaXMgaWRlYWwuCgpOZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IGEgZGV0YWlsLiBBcmUgdGhvc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCwgc3RhdGljPyBBIHF1aWNrIGNoZWNrLi4uIHllcCwgYW5kIGBzY3RwX2Fzc29jX2JoX3JjdmAsIGFzIHdlbGwgYXMgYHNjdHBfZW5kcG9pbnRfYmhfcmN2YCBhcmUgYWxzbyBzdGF0aWMuIFBlcmZlY3QuIFRoZXkgYXJlIGV4YWN0bHkgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSB1bmRlciBzY3J1dGlueSBpbiBteSBtb2RpZmljYXRpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSBpZGVhbCBmdXp6aW5nIHRhcmdldHMuCgpBbHJpZ2h0LCB0aGF0IHNldHRsZXMgaXQuIFRpbWUgdG8gcmVjb3JkIHRoZXNlIGZpbmRpbmdzIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9hc3NvY19iaF9yY3YmIzM0OywKICAgICYjMzQ7c2N0cF9lbmRwb2ludF9iaF9yY3YmIzM0OywKICAgICYjMzQ7c2N0cF9hdXRoX2NodW5rX3ZlcmlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBza2JfY2xvbmUgZmFpbHMgZHVyaW5nIFNDVFAgY2h1bmsgYXV0aGVudGljYXRpb24uIEl0IG1vZGlmaWVzIGNvcmUgU0NUUCByZWNlaXZlIHBhdGggbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfZW5kcG9pbnRfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfYXV0aF9jaHVua192ZXJpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjoyMi40NDk3NzA3NzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzEwODkzOTUxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgICBcInNjdHBfZW5kcG9pbnRfYmhfcmN2XCIsXG4gICAgXCJzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjIyLjQ0OTc3OTUzMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwMTI5NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmIzOTE3ZTkzYjRkMjJlMWIxYWNmM2JlNzNjMGMwZDZmNzg1MmJjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyMCAxMzozMjoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXFxuaW5kZXggNjJkM2NjMTU1ODA5YzcuLmU1NDA2ODMwNTM5NjBlIDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXFxuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG5AQCAtOTk5LDcgKzk5OSw4IEBAIHN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0aWYgKG5leHRfaGRyLVxcdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9FQ0hPKSB7XFxuIFxcdFxcdFxcdFxcdGNodW5rLVxcdTAwM2VhdXRoX2NodW5rID0gc2tiX2Nsb25lKGNodW5rLVxcdTAwM2Vza2IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIEdGUF9BVE9NSUMpO1xcbi1cXHRcXHRcXHRcXHRjaHVuay1cXHUwMDNlYXV0aCA9IDE7XFxuK1xcdFxcdFxcdFxcdGlmIChjaHVuay1cXHUwMDNlYXV0aF9jaHVuaylcXG4rXFx0XFx0XFx0XFx0XFx0Y2h1bmstXFx1MDAzZWF1dGggPSAxO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmMgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXFxuaW5kZXggZGZiMTcxOTI3NWRiYTcuLjM0MTk3NDhjNjZiYzE0IDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcXG4rKysgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXFxuQEAgLTM2OCw3ICszNjgsOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdFxcdGlmIChuZXh0X2hkci1cXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfRUNITykge1xcbiBcXHRcXHRcXHRcXHRjaHVuay1cXHUwMDNlYXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay1cXHUwMDNlc2tiLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4tXFx0XFx0XFx0XFx0Y2h1bmstXFx1MDAzZWF1dGggPSAxO1xcbitcXHRcXHRcXHRcXHRpZiAoY2h1bmstXFx1MDAzZWF1dGhfY2h1bmspXFxuK1xcdFxcdFxcdFxcdFxcdGNodW5rLVxcdTAwM2VhdXRoID0gMTtcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuaW5kZXggZDIzZDkzNWUxMjhlOTYuLjg5ZWQ2MThiMWRlMzBmIDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcXG5AQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXFxuIFxcdHN0cnVjdCBzY3RwX2NodW5rIGF1dGg7XFxuIFxcbiBcXHRpZiAoIWNodW5rLVxcdTAwM2VhdXRoX2NodW5rKVxcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0XFx0cmV0dXJuICFzY3RwX2F1dGhfcmVjdl9jaWQoY2h1bmstXFx1MDAzZWNodW5rX2hkci1cXHUwMDNldHlwZSwgYXNvYyk7XFxuIFxcbiBcXHQvKiBTQ1RQLUFVVEg6ICBhdXRoX2NodW5rIHBvaW50ZXIgaXMgb25seSBzZXQgd2hlbiB0aGUgY29va2llLWVjaG9cXG4gXFx0ICogaXMgc3VwcG9zZWQgdG8gYmUgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0byBkbyBkZWxheWVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjIzLjAzMDc5MDM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUyNzkwNzMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgICBcInNjdHBfZW5kcG9pbnRfYmhfcmN2XCIsXG4gICAgXCJzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmIzOTE3ZTkzYjRkMjJlMWIxYWNmM2JlNzNjMGMwZDZmNzg1MmJjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDEzOjMyOjIxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuaW5kZXggNjJkM2NjMTU1ODA5YzcuLmU1NDA2ODMwNTM5NjBlIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbisrKyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5AQCAtOTk5LDcgKzk5OSw4IEBAIHN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHRpZiAobmV4dF9oZHItXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfRUNITykge1xuIFx0XHRcdFx0Y2h1bmstXHUwMDNlYXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay1cdTAwM2Vza2IsXG4gXHRcdFx0XHRcdFx0XHQgICAgICBHRlBfQVRPTUlDKTtcbi1cdFx0XHRcdGNodW5rLVx1MDAzZWF1dGggPSAxO1xuK1x0XHRcdFx0aWYgKGNodW5rLVx1MDAzZWF1dGhfY2h1bmspXG4rXHRcdFx0XHRcdGNodW5rLVx1MDAzZWF1dGggPSAxO1xuIFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvZW5kcG9pbnRvbGEuYyBiL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcbmluZGV4IGRmYjE3MTkyNzVkYmE3Li4zNDE5NzQ4YzY2YmMxNCAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcbisrKyBiL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcbkBAIC0zNjgsNyArMzY4LDggQEAgc3RhdGljIHZvaWQgc2N0cF9lbmRwb2ludF9iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdGlmIChuZXh0X2hkci1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9FQ0hPKSB7XG4gXHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoX2NodW5rID0gc2tiX2Nsb25lKGNodW5rLVx1MDAzZXNrYixcbiBcdFx0XHRcdFx0XHRcdFx0R0ZQX0FUT01JQyk7XG4tXHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoID0gMTtcbitcdFx0XHRcdGlmIChjaHVuay1cdTAwM2VhdXRoX2NodW5rKVxuK1x0XHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoID0gMTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbmluZGV4IGQyM2Q5MzVlMTI4ZTk2Li44OWVkNjE4YjFkZTMwZiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG4rKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxuIFx0c3RydWN0IHNjdHBfY2h1bmsgYXV0aDtcbiBcbiBcdGlmICghY2h1bmstXHUwMDNlYXV0aF9jaHVuaylcbi1cdFx0cmV0dXJuIHRydWU7XG4rXHRcdHJldHVybiAhc2N0cF9hdXRoX3JlY3ZfY2lkKGNodW5rLVx1MDAzZWNodW5rX2hkci1cdTAwM2V0eXBlLCBhc29jKTtcbiBcbiBcdC8qIFNDVFAtQVVUSDogIGF1dGhfY2h1bmsgcG9pbnRlciBpcyBvbmx5IHNldCB3aGVuIHRoZSBjb29raWUtZWNob1xuIFx0ICogaXMgc3VwcG9zZWQgdG8gYmUgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0byBkbyBkZWxheWVkXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjoyMy4wMzA3OTI3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTAwODI3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0NUUCBQYXRjaCBSZXZpZXcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyB0byB0b3VjaCBzb21lIGNyaXRpY2FsIGF1dGhlbnRpY2F0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgU0NUUCBzdGFjaywgc3BlY2lmaWNhbGx5IGluIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AsIGBuZXQvc2N0cC9lbmRwb2ludG9sYS5jYCwgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBmb2N1c2VkIG9uIGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNsb25lZCBza2IuIEkgY2FuIHNlZSB0aGV5J3JlIHZlcmlmeWluZyB0aGUgcmV0dXJuIG9mIGBza2JfY2xvbmVgIGJlZm9yZSBzZXR0aW5nIGBjaHVuay1cdTAwM2VhdXRoID0gMWAuIFRoYXTigJlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYXBwcm9hY2g7IGF2b2lkaW5nIG51bGwgZGVyZWZlcmVuY2UgaXMgYWx3YXlzIGEgd2luLlxuXG5BbHNvLCBpdCBsb29rcyBsaWtlIHRoZXkndmUgbW9kaWZpZWQgdGhlIGJlaGF2aW9yIG9mIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YC4gVGhlIG9yaWdpbmFsIGxvZ2ljIG1pZ2h0IGhhdmUgYmVlbiBvdmVybHkgcGVybWlzc2l2ZSwgYnV0IG5vdyBpdCBzZWVtcyB0aGF0IHRoZSBjaGVjayBgIWNodW5rLVx1MDAzZWF1dGhfY2h1bmtgIHdpbGwgcmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoZSBgc2N0cF9hdXRoX3JlY3ZfY2lkYCBjYWxsLCB3aGljaCBpcyBzZW5zaWJsZS4gQSBwcm9wZXIgYXV0aGVudGljYXRpb24gY2hlY2sgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGEgbm9uLWF1dGhlbnRpY2F0aW9uIGNodW5rIHR5cGUgaXMgcHJlc2VudC4gVGhlIG9yaWdpbmFsIGNvZGUgY291bGQgaGF2ZSBwYXNzZWQgYXV0aGVudGljYXRpb24gdG8gYW4gdW5hdXRob3JpemVkIGNodW5rLCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiB0aGlzIGNhbGwgdG8gYmUgc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGlzIHNhZmUuXG5cbkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTmF0dXJhbGx5LCBgSVBfU0NUUGAgd2lsbCBiZSB0aGUgcHJpbWFyeSBvbmUuIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbnZvbHZlZCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgU0NUUC1yZWxhdGVkIGNvbmZpZ3MgdG8gc2VlIHdoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBhdGNoIGludGVyYWN0cyB3aXRoIG90aGVyIHNlY3VyaXR5IGZlYXR1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6MjguNzgwODc4NDkyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDM1MDM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6MjkuMTg1MjM4OTcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk5ODY1NzYyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNDVFAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBJUF9TQ1RQYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQgcmVsYXRlZCB0byB0aGF0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgd2hhdCdzIGNoYW5nZWQgd2l0aGluIGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgd2hlbiB3ZSdyZSB0YWxraW5nIGFib3V0IFNDVFAgcGFja2V0IGhhbmRsaW5nIGFuZCBhdXRoZW50aWNhdGlvbiwgd2hpY2ggd291bGQgYmUgaW1wYWN0ZWQgYnkgcHJvdG9jb2wtbGV2ZWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGdvb2QgaGFuZGxlIG9uICpob3cqIHRoZXkndmUgYmVlbiBtb2RpZmllZC5cblxuTm93LCBiZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXBseSwgSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGVyZSdzIGFsbW9zdCBhbHdheXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gc2VjdXJpdHkgdGhhdCBuZWVkcyBhIGRvdWJsZS1jaGVjay4gVGltZSB0byB2ZXJpZnkgaWYgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgaGF2ZSBhbHNvIGJlZW4gY2hhbmdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzNiwiT3V0cHV0VG9rZW5zIjoxMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjozNy4xODM5MDAyNDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3NzM5NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL2Fzc29jaW9sYS5jPTQzPXN0YXRpYyB2b2lkIHNjdHBfc2VsZWN0X2FjdGl2ZV9hbmRfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjQ0OnN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L3NjdHAvYXNzb2Npb2xhLmMtNDUtc3RhdGljIHZvaWQgc2N0cF9hc3NvY19mcmVlX2FzY29uZl9hY2tzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jPTUxPXN0YXRpYyBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF9hc3NvY2lhdGlvbl9pbml0KFxcbi0tXFxubmV0L3NjdHAvYXNzb2Npb2xhLmMtMjI0LVxcdHNjdHBfaW5xX2luaXQoXFx1MDAyNmFzb2MtXFx1MDAzZWJhc2UuaW5xdWV1ZSk7XFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6MjI1OlxcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFxcdTAwMjZhc29jLVxcdTAwM2ViYXNlLmlucXVldWUsIHNjdHBfYXNzb2NfYmhfcmN2KTtcXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0yMjYtXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz05MDU9c3RydWN0IHNjdHBfdHJhbnNwb3J0ICpzY3RwX2Fzc29jX2xvb2t1cF90c24oc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy05NjAtLyogRG8gZGVsYXllZCBpbnB1dCBwcm9jZXNzaW5nLiAgVGhpcyBpcyBzY2hlZHVsZWQgYnkgc2N0cF9yY3YoKS4gKi9cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzo5NjE6c3RhdGljIHZvaWQgc2N0cF9hc3NvY19iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTk2Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjM3LjI2ODY4MzAyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDY0MzE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX2VuZHBvaW50X2JoX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zNS0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaW50ZXJuYWwgaGVscGVycy4gKi9cXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jOjM2OnN0YXRpYyB2b2lkIHNjdHBfZW5kcG9pbnRfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zNy1cXG4tLVxcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM9NTA9c3RhdGljIHN0cnVjdCBzY3RwX2VuZHBvaW50ICpzY3RwX2VuZHBvaW50X2luaXQoc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxcbi0tXFxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy03OS1cXHQvKiBTZXQgaXRzIHRvcC1oYWxmIGhhbmRsZXIgKi9cXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jOjgwOlxcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFxcdTAwMjZlcC1cXHUwMDNlYmFzZS5pbnF1ZXVlLCBzY3RwX2VuZHBvaW50X2JoX3Jjdik7XFxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy04MS1cXG4tLVxcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM9MzAyPWJvb2wgc2N0cF9lbmRwb2ludF9pc19wZWVsZWRfb2ZmKHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcXG4tLVxcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmMtMzI1LSAqL1xcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM6MzI2OnN0YXRpYyB2b2lkIHNjdHBfZW5kcG9pbnRfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jLTMyNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjM3LjMzMzMzNDYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTQwNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXV0aF9jaHVua192ZXJpZnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTUyMD1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFDX2FjayhzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02MzgtXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NjM5OnN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjQwLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NzAyPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODI3LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjgyODpcXHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKSB7XFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODI5LVxcdFxcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xODgxPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2EoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA1LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE5MDY6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA3LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMDA0PXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2IoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI1LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIwMjY6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI3LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMTExPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2QoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMTI4LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIxMjk6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIGFzb2MpKVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIxMzAtXFx0XFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6MzcuMzk5NDkwMTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwNTc0NDk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgU2VjdXJpdHkgVnVsbmVyYWJpbGl0eSBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBjYW4gc2VlIGl0IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlIHJlbGF0ZWQgdG8gU0NUUCBoYW5kbGluZy4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhhdCBgc2tiX2Nsb25lYCBjYW4gcmV0dXJuIE5VTEwsIHlldCB0aGUgYGNodW5rLVx1MDAzZWF1dGhgIGZsYWcgaXMgYmVpbmcgc2V0IHJlZ2FyZGxlc3MsIHdoaWNoIGlzIGEgdGV4dGJvb2sgcmVjaXBlIGZvciBhIGNyYXNoIG9yIHNvbWUgcmVhbGx5IG5hc3R5LCB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLiBUaGF0J3MgYSBkZWZpbml0ZSByZWQgZmxhZy4gVGhlIHBhdGNoIGl0c2VsZiBkaXJlY3RseSBhZGRyZXNzZXMgdGhpcyBieSBtb2RpZnlpbmcgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgIHRvIHBlcmZvcm0gYSBjaGVjayBvbiBgc2N0cF9hdXRoX3JlY3ZfY2lkYCBpZiBgY2h1bmstXHUwMDNlYXV0aF9jaHVua2AgaXMgTlVMTC4gVGhpcyBpcyBhIHNvbGlkLCB0YXJnZXRlZCBhcHByb2FjaC5cblxuRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIEkgYW0gY29uZmlkZW50IHRoaXMgaXMgcmVhY2hhYmxlLiBUaGUgcGF0Y2ggZGlyZWN0bHkgdG91Y2hlcyBjcml0aWNhbCBjb21wb25lbnRzLiBNeSBtZW50YWwgY2hlY2tsaXN0IHNheXMgdGhlIHJlbGV2YW50IGNvbmZpZyBpcyBgSVBfU0NUUGAsIHdoaWNoIEkgd291bGQgZXhwZWN0LiBOb3csIHRvIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMsIG15IGluaXRpYWwgZm9jdXMgc3ltYm9scyBhcmU6IGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBvZiBjb3Vyc2UsIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBnb2luZyB0byBiZSB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIHRvIGNvbmZpcm0gdGhlIGltcGFjdCBhbmQgZW5zdXJlIHRoZSBmaXggaXMgY29tcGxldGUuIEkgYWxzbyBoYXZlIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyBmb3IgYFNDVFBfQVVUSGAgdGhhdCBtaWdodCBmdXJ0aGVyIGNsYXJpZnkgdGhpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLCBzbyBJJ2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGNoYW5nZXMgYWdhaW5zdCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6NDIuMzA1MjM5NDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY1ODg3MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQ1RQX0FVVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjo0Mi43MzE4NDM0OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3Mzc1NzM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzcGVha2luZyBhcyBhbiBleHBlcnQ6XG5cbioqU0NUUCBBdXRoZW50aWNhdGlvbiBDb251bmRydW0qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgU0NUUCBpbXBsZW1lbnRhdGlvbiwgYW5kIGl0IHNlZW1zIHRoZXJlJ3Mgbm8gZXhwbGljaXQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGBTQ1RQX0FVVEhgIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBvciBhbnl0aGluZyBzaW1pbGFyLiBUaGF0J3MgYSBiaXQgb2RkLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBpdCdzIGVpdGhlciBiYWtlZCBpbiBieSBkZWZhdWx0LCBhbHdheXMgZW5hYmxlZCwgb3IgcGVyaGFwcyBpdCdzIGVudGlyZWx5IG1hbmFnZWQgdGhyb3VnaCB0aG9zZSBnb29kIG9sZCBgc3lzY3RsYCBrbm9icywgd2hpY2ggd291bGQgbWFrZSBzZW5zZSBmcm9tIGEgZGVzaWduIHN0YW5kcG9pbnQuIEtlZXBzIGl0IG1vcmUgZmxleGlibGUsIHlvdSBrbm93P1xuXG5MZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucyB0aG91Z2g7IEkgc2hvdWxkIHJlYWxseSBtYWtlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSBvYnNjdXJlIGNvbmZpZyBidXJpZWQgZWxzZXdoZXJlLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9zY3RwL0tjb25maWdgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCBtaWdodCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcyBhdXRoZW50aWNhdGlvbiBiZWhhdmlvci4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjo0OC41MDU2MDUzNjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTY5ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTM5PWlmIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxcbm5ldC9zY3RwL0tjb25maWc6NDE6Y29uZmlnIFNDVFBfREJHX09CSkNOVFxcbm5ldC9zY3RwL0tjb25maWctNDItXFx0Ym9vbCBcXFwiU0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1xcXCJcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NTI9Y2hvaWNlXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxcbm5ldC9zY3RwL0tjb25maWc6NjI6Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG5uZXQvc2N0cC9LY29uZmlnLTYzLVxcdGJvb2wgXFxcIkhNQUMtU0hBMjU2XFxcIlxcbm5ldC9zY3RwL0tjb25maWctNjQtXFxubmV0L3NjdHAvS2NvbmZpZzo2NTpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG5uZXQvc2N0cC9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTY4PWVuZGNob2ljZVxcbm5ldC9zY3RwL0tjb25maWctNjktXFxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnLTcxLVxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjQ4LjU3OTU4NTk4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODczNjk3NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRm9jdXM6IFJlZmluZWQgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgSVBfU0NUUGAgaXMgdGhlIGNydWNpYWwgZm9jdXMgaGVyZSwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gTm93LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlc2UgdGFyZ2V0IHN5bWJvbHM6IGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFVubGlrZSB0aGUgbW9yZSBnZW5lcmFsIGVudHJ5IHBvaW50cyBsaWtlIGBzY3RwX3JjdmAgb3IgYGlwX3JjdmAsIHRoZXNlIHNlZW0gaGlnaGx5IHJlbGV2YW50IHRvIGFzc29jaWF0aW9uLCBlbmRwb2ludCByZWNlaXZlIHByb2Nlc3NpbmcgKGluIHRoZSBib3R0b20gaGFsZiBvZiB0aGUgc3RhY2spLCBhbmQgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIHNwZWNpZmljYWxseSB3aXRoaW4gU0NUUC4gVGhpcyBpcyBnb29kLCBhIG1vcmUgdGFyZ2V0ZWQgYXR0YWNrIHN1cmZhY2UgaXMgaWRlYWwuXG5cbk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgYSBkZXRhaWwuIEFyZSB0aG9zZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgLCBzdGF0aWM/IEEgcXVpY2sgY2hlY2suLi4geWVwLCBhbmQgYHNjdHBfYXNzb2NfYmhfcmN2YCwgYXMgd2VsbCBhcyBgc2N0cF9lbmRwb2ludF9iaF9yY3ZgIGFyZSBhbHNvIHN0YXRpYy4gUGVyZmVjdC4gVGhleSBhcmUgZXhhY3RseSB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIHVuZGVyIHNjcnV0aW55IGluIG15IG1vZGlmaWNhdGlvbnMuIFN0YXRpYyBmdW5jdGlvbnMgYXJlIGlkZWFsIGZ1enppbmcgdGFyZ2V0cy5cblxuQWxyaWdodCwgdGhhdCBzZXR0bGVzIGl0LiBUaW1lIHRvIHJlY29yZCB0aGVzZSBmaW5kaW5ncyBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTAzLCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjo1NS40NTMyODc5MTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU0MDA2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2Fzc29jX2JoX3JjdlwiLFxuICAgIFwic2N0cF9lbmRwb2ludF9iaF9yY3ZcIixcbiAgICBcInNjdHBfYXV0aF9jaHVua192ZXJpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBza2JfY2xvbmUgZmFpbHMgZHVyaW5nIFNDVFAgY2h1bmsgYXV0aGVudGljYXRpb24uIEl0IG1vZGlmaWVzIGNvcmUgU0NUUCByZWNlaXZlIHBhdGggbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgICBcInNjdHBfZW5kcG9pbnRfYmhfcmN2XCIsXG4gICAgXCJzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 13:14:23 +0000 UTC FinishedAt: 2026-07-20 13:32:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "bfd0e09c-595e-4770-bbae-36b0b0333332" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_assoc_bh_rcv", "sctp_endpoint_bh_rcv", "sctp_auth_chunk_verify" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX2Fzc29jX2JoX3JjdiYjMzQ7LAogICAgJiMzNDtzY3RwX2VuZHBvaW50X2JoX3JjdiYjMzQ7LAogICAgJiMzNDtzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHNrYl9jbG9uZSBmYWlscyBkdXJpbmcgU0NUUCBjaHVuayBhdXRoZW50aWNhdGlvbi4gSXQgbW9kaWZpZXMgY29yZSBTQ1RQIHJlY2VpdmUgcGF0aCBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmIzOTE3ZTkzYjRkMjJlMWIxYWNmM2JlNzNjMGMwZDZmNzg1MmJjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDEzOjMyOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IDYyZDNjYzE1NTgwOWM3Li5lNTQwNjgzMDUzOTYwZSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuQEAgLTk5OSw3ICYjNDM7OTk5LDggQEAgc3RhdGljIHZvaWQgc2N0cF9hc3NvY19iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdGlmIChuZXh0X2hkci1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9FQ0hPKSB7XG4gXHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoX2NodW5rID0gc2tiX2Nsb25lKGNodW5rLVx1MDAzZXNrYixcbiBcdFx0XHRcdFx0XHRcdCAgICAgIEdGUF9BVE9NSUMpO1xuLVx0XHRcdFx0Y2h1bmstXHUwMDNlYXV0aCA9IDE7XG4mIzQzO1x0XHRcdFx0aWYgKGNodW5rLVx1MDAzZWF1dGhfY2h1bmspXG4mIzQzO1x0XHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoID0gMTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmMgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXG5pbmRleCBkZmIxNzE5Mjc1ZGJhNy4uMzQxOTc0OGM2NmJjMTQgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXG5AQCAtMzY4LDcgJiM0MzszNjgsOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0aWYgKG5leHRfaGRyLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0VDSE8pIHtcbiBcdFx0XHRcdGNodW5rLVx1MDAzZWF1dGhfY2h1bmsgPSBza2JfY2xvbmUoY2h1bmstXHUwMDNlc2tiLFxuIFx0XHRcdFx0XHRcdFx0XHRHRlBfQVRPTUlDKTtcbi1cdFx0XHRcdGNodW5rLVx1MDAzZWF1dGggPSAxO1xuJiM0MztcdFx0XHRcdGlmIChjaHVuay1cdTAwM2VhdXRoX2NodW5rKVxuJiM0MztcdFx0XHRcdFx0Y2h1bmstXHUwMDNlYXV0aCA9IDE7XG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHR9XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCBkMjNkOTM1ZTEyOGU5Ni4uODllZDYxOGIxZGUzMGYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbkBAIC02NDIsNyAmIzQzOzY0Miw3IEBAIHN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayBhdXRoO1xuIFxuIFx0aWYgKCFjaHVuay1cdTAwM2VhdXRoX2NodW5rKVxuLVx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRcdHJldHVybiAhc2N0cF9hdXRoX3JlY3ZfY2lkKGNodW5rLVx1MDAzZWNodW5rX2hkci1cdTAwM2V0eXBlLCBhc29jKTtcbiBcbiBcdC8qIFNDVFAtQVVUSDogIGF1dGhfY2h1bmsgcG9pbnRlciBpcyBvbmx5IHNldCB3aGVuIHRoZSBjb29raWUtZWNob1xuIFx0ICogaXMgc3VwcG9zZWQgdG8gYmUgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0byBkbyBkZWxheWVkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfZW5kcG9pbnRfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfYXV0aF9jaHVua192ZXJpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZiMzkxN2U5M2I0ZDIyZTFiMWFjZjNiZTczYzBjMGQ2Zjc4NTJiY2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAxMzozMjoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKaW5kZXggNjJkM2NjMTU1ODA5YzcuLmU1NDA2ODMwNTM5NjBlIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtOTk5LDcgJiM0Mzs5OTksOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2Fzc29jX2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlpZiAobmV4dF9oZHItJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0VDSE8pIHsKIAkJCQljaHVuay0mZ3Q7YXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay0mZ3Q7c2tiLAogCQkJCQkJCSAgICAgIEdGUF9BVE9NSUMpOwotCQkJCWNodW5rLSZndDthdXRoID0gMTsKJiM0MzsJCQkJaWYgKGNodW5rLSZndDthdXRoX2NodW5rKQomIzQzOwkJCQkJY2h1bmstJmd0O2F1dGggPSAxOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9lbmRwb2ludG9sYS5jIGIvbmV0L3NjdHAvZW5kcG9pbnRvbGEuYwppbmRleCBkZmIxNzE5Mjc1ZGJhNy4uMzQxOTc0OGM2NmJjMTQgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvZW5kcG9pbnRvbGEuYwpAQCAtMzY4LDcgJiM0MzszNjgsOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlpZiAobmV4dF9oZHItJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0VDSE8pIHsKIAkJCQljaHVuay0mZ3Q7YXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay0mZ3Q7c2tiLAogCQkJCQkJCQlHRlBfQVRPTUlDKTsKLQkJCQljaHVuay0mZ3Q7YXV0aCA9IDE7CiYjNDM7CQkJCWlmIChjaHVuay0mZ3Q7YXV0aF9jaHVuaykKJiM0MzsJCQkJCWNodW5rLSZndDthdXRoID0gMTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCBkMjNkOTM1ZTEyOGU5Ni4uODllZDYxOGIxZGUzMGYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCkBAIC02NDIsNyAmIzQzOzY0Miw3IEBAIHN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssCiAJc3RydWN0IHNjdHBfY2h1bmsgYXV0aDsKIAogCWlmICghY2h1bmstJmd0O2F1dGhfY2h1bmspCi0JCXJldHVybiB0cnVlOwomIzQzOwkJcmV0dXJuICFzY3RwX2F1dGhfcmVjdl9jaWQoY2h1bmstJmd0O2NodW5rX2hkci0mZ3Q7dHlwZSwgYXNvYyk7CiAKIAkvKiBTQ1RQLUFVVEg6ICBhdXRoX2NodW5rIHBvaW50ZXIgaXMgb25seSBzZXQgd2hlbiB0aGUgY29va2llLWVjaG8KIAkgKiBpcyBzdXBwb3NlZCB0byBiZSBhdXRoZW50aWNhdGVkIGFuZCB3ZSBoYXZlIHRvIGRvIGRlbGF5ZWQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIFBhdGNoIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gdG91Y2ggc29tZSBjcml0aWNhbCBhdXRoZW50aWNhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIFNDVFAgc3RhY2ssIHNwZWNpZmljYWxseSBpbiBgbmV0L3NjdHAvYXNzb2Npb2xhLmNgLCBgbmV0L3NjdHAvZW5kcG9pbnRvbGEuY2AsIGFuZCBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgZm9jdXNlZCBvbiBlbnN1cmluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSBjbG9uZWQgc2tiLiBJIGNhbiBzZWUgdGhleSYjMzk7cmUgdmVyaWZ5aW5nIHRoZSByZXR1cm4gb2YgYHNrYl9jbG9uZWAgYmVmb3JlIHNldHRpbmcgYGNodW5rLSZndDthdXRoID0gMWAuIFRoYXTigJlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYXBwcm9hY2g7IGF2b2lkaW5nIG51bGwgZGVyZWZlcmVuY2UgaXMgYWx3YXlzIGEgd2luLgoKQWxzbywgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBtb2RpZmllZCB0aGUgYmVoYXZpb3Igb2YgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgLiBUaGUgb3JpZ2luYWwgbG9naWMgbWlnaHQgaGF2ZSBiZWVuIG92ZXJseSBwZXJtaXNzaXZlLCBidXQgbm93IGl0IHNlZW1zIHRoYXQgdGhlIGNoZWNrIGAhY2h1bmstJmd0O2F1dGhfY2h1bmtgIHdpbGwgcmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoZSBgc2N0cF9hdXRoX3JlY3ZfY2lkYCBjYWxsLCB3aGljaCBpcyBzZW5zaWJsZS4gQSBwcm9wZXIgYXV0aGVudGljYXRpb24gY2hlY2sgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGEgbm9uLWF1dGhlbnRpY2F0aW9uIGNodW5rIHR5cGUgaXMgcHJlc2VudC4gVGhlIG9yaWdpbmFsIGNvZGUgY291bGQgaGF2ZSBwYXNzZWQgYXV0aGVudGljYXRpb24gdG8gYW4gdW5hdXRob3JpemVkIGNodW5rLCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiB0aGlzIGNhbGwgdG8gYmUgc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGlzIHNhZmUuCgpCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBOYXR1cmFsbHksIGBJUF9TQ1RQYCB3aWxsIGJlIHRoZSBwcmltYXJ5IG9uZS4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbnZvbHZlZCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgU0NUUC1yZWxhdGVkIGNvbmZpZ3MgdG8gc2VlIHdoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBhdGNoIGludGVyYWN0cyB3aXRoIG90aGVyIHNlY3VyaXR5IGZlYXR1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzYKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTQ1RQIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBJUF9TQ1RQYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQgcmVsYXRlZCB0byB0aGF0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBjaGFuZ2VkIHdpdGhpbiBgc2N0cF9hc3NvY19iaF9yY3ZgLCBgc2N0cF9lbmRwb2ludF9iaF9yY3ZgLCBhbmQgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgU0NUUCBwYWNrZXQgaGFuZGxpbmcgYW5kIGF1dGhlbnRpY2F0aW9uLCB3aGljaCB3b3VsZCBiZSBpbXBhY3RlZCBieSBwcm90b2NvbC1sZXZlbCBjb25maWd1cmF0aW9uIGNoYW5nZXMuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgZ29vZCBoYW5kbGUgb24gKmhvdyogdGhleSYjMzk7dmUgYmVlbiBtb2RpZmllZC4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwbHksIEkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGVyZSYjMzk7cyBhbG1vc3QgYWx3YXlzIHNvbWV0aGluZyByZWxhdGVkIHRvIHNlY3VyaXR5IHRoYXQgbmVlZHMgYSBkb3VibGUtY2hlY2suIFRpbWUgdG8gdmVyaWZ5IGlmIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IGhhdmUgYWxzbyBiZWVuIGNoYW5nZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hc3NvY19iaF9yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvYXNzb2Npb2xhLmM9NDM9c3RhdGljIHZvaWQgc2N0cF9zZWxlY3RfYWN0aXZlX2FuZF9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYzo0NDpzdGF0aWMgdm9pZCBzY3RwX2Fzc29jX2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xubmV0L3NjdHAvYXNzb2Npb2xhLmMtNDUtc3RhdGljIHZvaWQgc2N0cF9hc3NvY19mcmVlX2FzY29uZl9hY2tzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz01MT1zdGF0aWMgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfYXNzb2NpYXRpb25faW5pdChcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0yMjQtXHRzY3RwX2lucV9pbml0KFx1MDAyNmFzb2MtXHUwMDNlYmFzZS5pbnF1ZXVlKTtcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjIyNTpcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFx1MDAyNmFzb2MtXHUwMDNlYmFzZS5pbnF1ZXVlLCBzY3RwX2Fzc29jX2JoX3Jjdik7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0yMjYtXG4tLVxubmV0L3NjdHAvYXNzb2Npb2xhLmM9OTA1PXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqc2N0cF9hc3NvY19sb29rdXBfdHNuKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTk2MC0vKiBEbyBkZWxheWVkIGlucHV0IHByb2Nlc3NpbmcuICBUaGlzIGlzIHNjaGVkdWxlZCBieSBzY3RwX3JjdigpLiAqL1xubmV0L3NjdHAvYXNzb2Npb2xhLmM6OTYxOnN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTk2Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9lbmRwb2ludF9iaF9yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zNS0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaW50ZXJuYWwgaGVscGVycy4gKi9cbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM6MzY6c3RhdGljIHZvaWQgc2N0cF9lbmRwb2ludF9iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmMtMzctXG4tLVxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYz01MD1zdGF0aWMgc3RydWN0IHNjdHBfZW5kcG9pbnQgKnNjdHBfZW5kcG9pbnRfaW5pdChzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4tLVxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy03OS1cdC8qIFNldCBpdHMgdG9wLWhhbGYgaGFuZGxlciAqL1xubmV0L3NjdHAvZW5kcG9pbnRvbGEuYzo4MDpcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFx1MDAyNmVwLVx1MDAzZWJhc2UuaW5xdWV1ZSwgc2N0cF9lbmRwb2ludF9iaF9yY3YpO1xubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy04MS1cbi0tXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jPTMwMj1ib29sIHNjdHBfZW5kcG9pbnRfaXNfcGVlbGVkX29mZihzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4tLVxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zMjUtICovXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jOjMyNjpzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jLTMyNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hdXRoX2NodW5rX3ZlcmlmeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz01MjA9ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xQ19hY2soc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTYzOC1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjYzOTpzdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjQwLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NzAyPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTgyNy1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjgyODpcdGlmICghc2N0cF9hdXRoX2NodW5rX3ZlcmlmeShuZXQsIGNodW5rLCBuZXdfYXNvYykpIHtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTgyOS1cdFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xODgxPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2EoXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMTkwNS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE5MDY6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMTkwNy1cdFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMDA0PXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2IoXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjAyNS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIwMjY6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjAyNy1cdFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMTExPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2QoXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjEyOC1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIxMjk6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgYXNvYykpXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMTMwLVx0XHRyZXR1cm4gU0NUUF9ESVNQT1NJVElPTl9ESVNDQVJEO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFNlY3VyaXR5IFZ1bG5lcmFiaWxpdHkgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBjYW4gc2VlIGl0IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlIHJlbGF0ZWQgdG8gU0NUUCBoYW5kbGluZy4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhhdCBgc2tiX2Nsb25lYCBjYW4gcmV0dXJuIE5VTEwsIHlldCB0aGUgYGNodW5rLSZndDthdXRoYCBmbGFnIGlzIGJlaW5nIHNldCByZWdhcmRsZXNzLCB3aGljaCBpcyBhIHRleHRib29rIHJlY2lwZSBmb3IgYSBjcmFzaCBvciBzb21lIHJlYWxseSBuYXN0eSwgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIHJlZCBmbGFnLiBUaGUgcGF0Y2ggaXRzZWxmIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGlzIGJ5IG1vZGlmeWluZyBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAgdG8gcGVyZm9ybSBhIGNoZWNrIG9uIGBzY3RwX2F1dGhfcmVjdl9jaWRgIGlmIGBjaHVuay0mZ3Q7YXV0aF9jaHVua2AgaXMgTlVMTC4gVGhpcyBpcyBhIHNvbGlkLCB0YXJnZXRlZCBhcHByb2FjaC4KCkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBJIGFtIGNvbmZpZGVudCB0aGlzIGlzIHJlYWNoYWJsZS4gVGhlIHBhdGNoIGRpcmVjdGx5IHRvdWNoZXMgY3JpdGljYWwgY29tcG9uZW50cy4gTXkgbWVudGFsIGNoZWNrbGlzdCBzYXlzIHRoZSByZWxldmFudCBjb25maWcgaXMgYElQX1NDVFBgLCB3aGljaCBJIHdvdWxkIGV4cGVjdC4gTm93LCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zLCBteSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgYXJlOiBgc2N0cF9hc3NvY19iaF9yY3ZgLCBgc2N0cF9lbmRwb2ludF9iaF9yY3ZgLCBhbmQgb2YgY291cnNlLCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZ29pbmcgdG8gYmUgd2hlcmUgSSBuZWVkIHRvIGRpZyBpbiB0byBjb25maXJtIHRoZSBpbXBhY3QgYW5kIGVuc3VyZSB0aGUgZml4IGlzIGNvbXBsZXRlLiBJIGFsc28gaGF2ZSB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3MgZm9yIGBTQ1RQX0FVVEhgIHRoYXQgbWlnaHQgZnVydGhlciBjbGFyaWZ5IHRoaW5ncy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMsIHNvIEkmIzM5O2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGNoYW5nZXMgYWdhaW5zdCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ1RQX0FVVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjgyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHNwZWFraW5nIGFzIGFuIGV4cGVydDoKCioqU0NUUCBBdXRoZW50aWNhdGlvbiBDb251bmRydW0qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBTQ1RQIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgc2VlbXMgdGhlcmUmIzM5O3Mgbm8gZXhwbGljaXQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGBTQ1RQX0FVVEhgIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBvciBhbnl0aGluZyBzaW1pbGFyLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgZWl0aGVyIGJha2VkIGluIGJ5IGRlZmF1bHQsIGFsd2F5cyBlbmFibGVkLCBvciBwZXJoYXBzIGl0JiMzOTtzIGVudGlyZWx5IG1hbmFnZWQgdGhyb3VnaCB0aG9zZSBnb29kIG9sZCBgc3lzY3RsYCBrbm9icywgd2hpY2ggd291bGQgbWFrZSBzZW5zZSBmcm9tIGEgZGVzaWduIHN0YW5kcG9pbnQuIEtlZXBzIGl0IG1vcmUgZmxleGlibGUsIHlvdSBrbm93PwoKTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHRob3VnaDsgSSBzaG91bGQgcmVhbGx5IG1ha2Ugc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSBvYnNjdXJlIGNvbmZpZyBidXJpZWQgZWxzZXdoZXJlLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9zY3RwL0tjb25maWdgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCBtaWdodCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcyBhdXRoZW50aWNhdGlvbiBiZWhhdmlvci4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz0zOT1pZiBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxubmV0L3NjdHAvS2NvbmZpZzo0MTpjb25maWcgU0NUUF9EQkdfT0JKQ05UXG5uZXQvc2N0cC9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz01Mj1jaG9pY2Vcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxubmV0L3NjdHAvS2NvbmZpZzo2Mjpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxubmV0L3NjdHAvS2NvbmZpZy02My1cdGJvb2wgXCYjMzQ7SE1BQy1TSEEyNTZcJiMzNDtcbm5ldC9zY3RwL0tjb25maWctNjQtXG5uZXQvc2N0cC9LY29uZmlnOjY1OmNvbmZpZyBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVxubmV0L3NjdHAvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbm5ldC9zY3RwL0tjb25maWc9Njg9ZW5kY2hvaWNlXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzEtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTAzCgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBSZWZpbmVkIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBJUF9TQ1RQYCBpcyB0aGUgY3J1Y2lhbCBmb2N1cyBoZXJlLCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlc2UgdGFyZ2V0IHN5bWJvbHM6IGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFVubGlrZSB0aGUgbW9yZSBnZW5lcmFsIGVudHJ5IHBvaW50cyBsaWtlIGBzY3RwX3JjdmAgb3IgYGlwX3JjdmAsIHRoZXNlIHNlZW0gaGlnaGx5IHJlbGV2YW50IHRvIGFzc29jaWF0aW9uLCBlbmRwb2ludCByZWNlaXZlIHByb2Nlc3NpbmcgKGluIHRoZSBib3R0b20gaGFsZiBvZiB0aGUgc3RhY2spLCBhbmQgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIHNwZWNpZmljYWxseSB3aXRoaW4gU0NUUC4gVGhpcyBpcyBnb29kLCBhIG1vcmUgdGFyZ2V0ZWQgYXR0YWNrIHN1cmZhY2UgaXMgaWRlYWwuCgpOZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IGEgZGV0YWlsLiBBcmUgdGhvc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCwgc3RhdGljPyBBIHF1aWNrIGNoZWNrLi4uIHllcCwgYW5kIGBzY3RwX2Fzc29jX2JoX3JjdmAsIGFzIHdlbGwgYXMgYHNjdHBfZW5kcG9pbnRfYmhfcmN2YCBhcmUgYWxzbyBzdGF0aWMuIFBlcmZlY3QuIFRoZXkgYXJlIGV4YWN0bHkgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSB1bmRlciBzY3J1dGlueSBpbiBteSBtb2RpZmljYXRpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSBpZGVhbCBmdXp6aW5nIHRhcmdldHMuCgpBbHJpZ2h0LCB0aGF0IHNldHRsZXMgaXQuIFRpbWUgdG8gcmVjb3JkIHRoZXNlIGZpbmRpbmdzIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9hc3NvY19iaF9yY3YmIzM0OywKICAgICYjMzQ7c2N0cF9lbmRwb2ludF9iaF9yY3YmIzM0OywKICAgICYjMzQ7c2N0cF9hdXRoX2NodW5rX3ZlcmlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBza2JfY2xvbmUgZmFpbHMgZHVyaW5nIFNDVFAgY2h1bmsgYXV0aGVudGljYXRpb24uIEl0IG1vZGlmaWVzIGNvcmUgU0NUUCByZWNlaXZlIHBhdGggbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfZW5kcG9pbnRfYmhfcmN2JiMzNDssCiAgICAmIzM0O3NjdHBfYXV0aF9jaHVua192ZXJpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjoyMi40NDk3NzA3NzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzEwODkzOTUxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgICBcInNjdHBfZW5kcG9pbnRfYmhfcmN2XCIsXG4gICAgXCJzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjIyLjQ0OTc3OTUzMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwMTI5NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmIzOTE3ZTkzYjRkMjJlMWIxYWNmM2JlNzNjMGMwZDZmNzg1MmJjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyMCAxMzozMjoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXFxuaW5kZXggNjJkM2NjMTU1ODA5YzcuLmU1NDA2ODMwNTM5NjBlIDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXFxuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG5AQCAtOTk5LDcgKzk5OSw4IEBAIHN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0aWYgKG5leHRfaGRyLVxcdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9FQ0hPKSB7XFxuIFxcdFxcdFxcdFxcdGNodW5rLVxcdTAwM2VhdXRoX2NodW5rID0gc2tiX2Nsb25lKGNodW5rLVxcdTAwM2Vza2IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIEdGUF9BVE9NSUMpO1xcbi1cXHRcXHRcXHRcXHRjaHVuay1cXHUwMDNlYXV0aCA9IDE7XFxuK1xcdFxcdFxcdFxcdGlmIChjaHVuay1cXHUwMDNlYXV0aF9jaHVuaylcXG4rXFx0XFx0XFx0XFx0XFx0Y2h1bmstXFx1MDAzZWF1dGggPSAxO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmMgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXFxuaW5kZXggZGZiMTcxOTI3NWRiYTcuLjM0MTk3NDhjNjZiYzE0IDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcXG4rKysgYi9uZXQvc2N0cC9lbmRwb2ludG9sYS5jXFxuQEAgLTM2OCw3ICszNjgsOCBAQCBzdGF0aWMgdm9pZCBzY3RwX2VuZHBvaW50X2JoX3JjdihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdFxcdGlmIChuZXh0X2hkci1cXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfRUNITykge1xcbiBcXHRcXHRcXHRcXHRjaHVuay1cXHUwMDNlYXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay1cXHUwMDNlc2tiLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4tXFx0XFx0XFx0XFx0Y2h1bmstXFx1MDAzZWF1dGggPSAxO1xcbitcXHRcXHRcXHRcXHRpZiAoY2h1bmstXFx1MDAzZWF1dGhfY2h1bmspXFxuK1xcdFxcdFxcdFxcdFxcdGNodW5rLVxcdTAwM2VhdXRoID0gMTtcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuaW5kZXggZDIzZDkzNWUxMjhlOTYuLjg5ZWQ2MThiMWRlMzBmIDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcXG5AQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXFxuIFxcdHN0cnVjdCBzY3RwX2NodW5rIGF1dGg7XFxuIFxcbiBcXHRpZiAoIWNodW5rLVxcdTAwM2VhdXRoX2NodW5rKVxcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0XFx0cmV0dXJuICFzY3RwX2F1dGhfcmVjdl9jaWQoY2h1bmstXFx1MDAzZWNodW5rX2hkci1cXHUwMDNldHlwZSwgYXNvYyk7XFxuIFxcbiBcXHQvKiBTQ1RQLUFVVEg6ICBhdXRoX2NodW5rIHBvaW50ZXIgaXMgb25seSBzZXQgd2hlbiB0aGUgY29va2llLWVjaG9cXG4gXFx0ICogaXMgc3VwcG9zZWQgdG8gYmUgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0byBkbyBkZWxheWVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjIzLjAzMDc5MDM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUyNzkwNzMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgICBcInNjdHBfZW5kcG9pbnRfYmhfcmN2XCIsXG4gICAgXCJzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmIzOTE3ZTkzYjRkMjJlMWIxYWNmM2JlNzNjMGMwZDZmNzg1MmJjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDEzOjMyOjIxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuaW5kZXggNjJkM2NjMTU1ODA5YzcuLmU1NDA2ODMwNTM5NjBlIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbisrKyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5AQCAtOTk5LDcgKzk5OSw4IEBAIHN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHRpZiAobmV4dF9oZHItXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfRUNITykge1xuIFx0XHRcdFx0Y2h1bmstXHUwMDNlYXV0aF9jaHVuayA9IHNrYl9jbG9uZShjaHVuay1cdTAwM2Vza2IsXG4gXHRcdFx0XHRcdFx0XHQgICAgICBHRlBfQVRPTUlDKTtcbi1cdFx0XHRcdGNodW5rLVx1MDAzZWF1dGggPSAxO1xuK1x0XHRcdFx0aWYgKGNodW5rLVx1MDAzZWF1dGhfY2h1bmspXG4rXHRcdFx0XHRcdGNodW5rLVx1MDAzZWF1dGggPSAxO1xuIFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvZW5kcG9pbnRvbGEuYyBiL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcbmluZGV4IGRmYjE3MTkyNzVkYmE3Li4zNDE5NzQ4YzY2YmMxNCAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcbisrKyBiL25ldC9zY3RwL2VuZHBvaW50b2xhLmNcbkBAIC0zNjgsNyArMzY4LDggQEAgc3RhdGljIHZvaWQgc2N0cF9lbmRwb2ludF9iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdGlmIChuZXh0X2hkci1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9FQ0hPKSB7XG4gXHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoX2NodW5rID0gc2tiX2Nsb25lKGNodW5rLVx1MDAzZXNrYixcbiBcdFx0XHRcdFx0XHRcdFx0R0ZQX0FUT01JQyk7XG4tXHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoID0gMTtcbitcdFx0XHRcdGlmIChjaHVuay1cdTAwM2VhdXRoX2NodW5rKVxuK1x0XHRcdFx0XHRjaHVuay1cdTAwM2VhdXRoID0gMTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbmluZGV4IGQyM2Q5MzVlMTI4ZTk2Li44OWVkNjE4YjFkZTMwZiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG4rKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxuIFx0c3RydWN0IHNjdHBfY2h1bmsgYXV0aDtcbiBcbiBcdGlmICghY2h1bmstXHUwMDNlYXV0aF9jaHVuaylcbi1cdFx0cmV0dXJuIHRydWU7XG4rXHRcdHJldHVybiAhc2N0cF9hdXRoX3JlY3ZfY2lkKGNodW5rLVx1MDAzZWNodW5rX2hkci1cdTAwM2V0eXBlLCBhc29jKTtcbiBcbiBcdC8qIFNDVFAtQVVUSDogIGF1dGhfY2h1bmsgcG9pbnRlciBpcyBvbmx5IHNldCB3aGVuIHRoZSBjb29raWUtZWNob1xuIFx0ICogaXMgc3VwcG9zZWQgdG8gYmUgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0byBkbyBkZWxheWVkXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjoyMy4wMzA3OTI3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTAwODI3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0NUUCBQYXRjaCBSZXZpZXcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyB0byB0b3VjaCBzb21lIGNyaXRpY2FsIGF1dGhlbnRpY2F0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgU0NUUCBzdGFjaywgc3BlY2lmaWNhbGx5IGluIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AsIGBuZXQvc2N0cC9lbmRwb2ludG9sYS5jYCwgYW5kIGBuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBmb2N1c2VkIG9uIGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNsb25lZCBza2IuIEkgY2FuIHNlZSB0aGV5J3JlIHZlcmlmeWluZyB0aGUgcmV0dXJuIG9mIGBza2JfY2xvbmVgIGJlZm9yZSBzZXR0aW5nIGBjaHVuay1cdTAwM2VhdXRoID0gMWAuIFRoYXTigJlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYXBwcm9hY2g7IGF2b2lkaW5nIG51bGwgZGVyZWZlcmVuY2UgaXMgYWx3YXlzIGEgd2luLlxuXG5BbHNvLCBpdCBsb29rcyBsaWtlIHRoZXkndmUgbW9kaWZpZWQgdGhlIGJlaGF2aW9yIG9mIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YC4gVGhlIG9yaWdpbmFsIGxvZ2ljIG1pZ2h0IGhhdmUgYmVlbiBvdmVybHkgcGVybWlzc2l2ZSwgYnV0IG5vdyBpdCBzZWVtcyB0aGF0IHRoZSBjaGVjayBgIWNodW5rLVx1MDAzZWF1dGhfY2h1bmtgIHdpbGwgcmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoZSBgc2N0cF9hdXRoX3JlY3ZfY2lkYCBjYWxsLCB3aGljaCBpcyBzZW5zaWJsZS4gQSBwcm9wZXIgYXV0aGVudGljYXRpb24gY2hlY2sgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGEgbm9uLWF1dGhlbnRpY2F0aW9uIGNodW5rIHR5cGUgaXMgcHJlc2VudC4gVGhlIG9yaWdpbmFsIGNvZGUgY291bGQgaGF2ZSBwYXNzZWQgYXV0aGVudGljYXRpb24gdG8gYW4gdW5hdXRob3JpemVkIGNodW5rLCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiB0aGlzIGNhbGwgdG8gYmUgc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGlzIHNhZmUuXG5cbkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTmF0dXJhbGx5LCBgSVBfU0NUUGAgd2lsbCBiZSB0aGUgcHJpbWFyeSBvbmUuIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbnZvbHZlZCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgU0NUUC1yZWxhdGVkIGNvbmZpZ3MgdG8gc2VlIHdoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBhdGNoIGludGVyYWN0cyB3aXRoIG90aGVyIHNlY3VyaXR5IGZlYXR1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6MjguNzgwODc4NDkyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDM1MDM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6MjkuMTg1MjM4OTcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk5ODY1NzYyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNDVFAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBJUF9TQ1RQYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQgcmVsYXRlZCB0byB0aGF0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgd2hhdCdzIGNoYW5nZWQgd2l0aGluIGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgd2hlbiB3ZSdyZSB0YWxraW5nIGFib3V0IFNDVFAgcGFja2V0IGhhbmRsaW5nIGFuZCBhdXRoZW50aWNhdGlvbiwgd2hpY2ggd291bGQgYmUgaW1wYWN0ZWQgYnkgcHJvdG9jb2wtbGV2ZWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGdvb2QgaGFuZGxlIG9uICpob3cqIHRoZXkndmUgYmVlbiBtb2RpZmllZC5cblxuTm93LCBiZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXBseSwgSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGVyZSdzIGFsbW9zdCBhbHdheXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gc2VjdXJpdHkgdGhhdCBuZWVkcyBhIGRvdWJsZS1jaGVjay4gVGltZSB0byB2ZXJpZnkgaWYgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgaGF2ZSBhbHNvIGJlZW4gY2hhbmdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzNiwiT3V0cHV0VG9rZW5zIjoxMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjozNy4xODM5MDAyNDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3NzM5NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL2Fzc29jaW9sYS5jPTQzPXN0YXRpYyB2b2lkIHNjdHBfc2VsZWN0X2FjdGl2ZV9hbmRfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjQ0OnN0YXRpYyB2b2lkIHNjdHBfYXNzb2NfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L3NjdHAvYXNzb2Npb2xhLmMtNDUtc3RhdGljIHZvaWQgc2N0cF9hc3NvY19mcmVlX2FzY29uZl9hY2tzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jPTUxPXN0YXRpYyBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF9hc3NvY2lhdGlvbl9pbml0KFxcbi0tXFxubmV0L3NjdHAvYXNzb2Npb2xhLmMtMjI0LVxcdHNjdHBfaW5xX2luaXQoXFx1MDAyNmFzb2MtXFx1MDAzZWJhc2UuaW5xdWV1ZSk7XFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6MjI1OlxcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFxcdTAwMjZhc29jLVxcdTAwM2ViYXNlLmlucXVldWUsIHNjdHBfYXNzb2NfYmhfcmN2KTtcXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0yMjYtXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz05MDU9c3RydWN0IHNjdHBfdHJhbnNwb3J0ICpzY3RwX2Fzc29jX2xvb2t1cF90c24oc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy05NjAtLyogRG8gZGVsYXllZCBpbnB1dCBwcm9jZXNzaW5nLiAgVGhpcyBpcyBzY2hlZHVsZWQgYnkgc2N0cF9yY3YoKS4gKi9cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzo5NjE6c3RhdGljIHZvaWQgc2N0cF9hc3NvY19iaF9yY3Yoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTk2Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjM3LjI2ODY4MzAyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDY0MzE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX2VuZHBvaW50X2JoX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zNS0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaW50ZXJuYWwgaGVscGVycy4gKi9cXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jOjM2OnN0YXRpYyB2b2lkIHNjdHBfZW5kcG9pbnRfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy0zNy1cXG4tLVxcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM9NTA9c3RhdGljIHN0cnVjdCBzY3RwX2VuZHBvaW50ICpzY3RwX2VuZHBvaW50X2luaXQoc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxcbi0tXFxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy03OS1cXHQvKiBTZXQgaXRzIHRvcC1oYWxmIGhhbmRsZXIgKi9cXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jOjgwOlxcdHNjdHBfaW5xX3NldF90aF9oYW5kbGVyKFxcdTAwMjZlcC1cXHUwMDNlYmFzZS5pbnF1ZXVlLCBzY3RwX2VuZHBvaW50X2JoX3Jjdik7XFxubmV0L3NjdHAvZW5kcG9pbnRvbGEuYy04MS1cXG4tLVxcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM9MzAyPWJvb2wgc2N0cF9lbmRwb2ludF9pc19wZWVsZWRfb2ZmKHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcXG4tLVxcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmMtMzI1LSAqL1xcbm5ldC9zY3RwL2VuZHBvaW50b2xhLmM6MzI2OnN0YXRpYyB2b2lkIHNjdHBfZW5kcG9pbnRfYmhfcmN2KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc2N0cC9lbmRwb2ludG9sYS5jLTMyNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjM3LjMzMzMzNDYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTQwNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXV0aF9jaHVua192ZXJpZnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTUyMD1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFDX2FjayhzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02MzgtXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NjM5OnN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjQwLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NzAyPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODI3LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjgyODpcXHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKSB7XFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODI5LVxcdFxcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xODgxPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2EoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA1LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE5MDY6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA3LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMDA0PXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2IoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI1LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIwMjY6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI3LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMTExPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2QoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMTI4LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIxMjk6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIGFzb2MpKVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIxMzAtXFx0XFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6MzcuMzk5NDkwMTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwNTc0NDk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgU2VjdXJpdHkgVnVsbmVyYWJpbGl0eSBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBjYW4gc2VlIGl0IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlIHJlbGF0ZWQgdG8gU0NUUCBoYW5kbGluZy4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhhdCBgc2tiX2Nsb25lYCBjYW4gcmV0dXJuIE5VTEwsIHlldCB0aGUgYGNodW5rLVx1MDAzZWF1dGhgIGZsYWcgaXMgYmVpbmcgc2V0IHJlZ2FyZGxlc3MsIHdoaWNoIGlzIGEgdGV4dGJvb2sgcmVjaXBlIGZvciBhIGNyYXNoIG9yIHNvbWUgcmVhbGx5IG5hc3R5LCB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLiBUaGF0J3MgYSBkZWZpbml0ZSByZWQgZmxhZy4gVGhlIHBhdGNoIGl0c2VsZiBkaXJlY3RseSBhZGRyZXNzZXMgdGhpcyBieSBtb2RpZnlpbmcgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgIHRvIHBlcmZvcm0gYSBjaGVjayBvbiBgc2N0cF9hdXRoX3JlY3ZfY2lkYCBpZiBgY2h1bmstXHUwMDNlYXV0aF9jaHVua2AgaXMgTlVMTC4gVGhpcyBpcyBhIHNvbGlkLCB0YXJnZXRlZCBhcHByb2FjaC5cblxuRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIEkgYW0gY29uZmlkZW50IHRoaXMgaXMgcmVhY2hhYmxlLiBUaGUgcGF0Y2ggZGlyZWN0bHkgdG91Y2hlcyBjcml0aWNhbCBjb21wb25lbnRzLiBNeSBtZW50YWwgY2hlY2tsaXN0IHNheXMgdGhlIHJlbGV2YW50IGNvbmZpZyBpcyBgSVBfU0NUUGAsIHdoaWNoIEkgd291bGQgZXhwZWN0LiBOb3csIHRvIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMsIG15IGluaXRpYWwgZm9jdXMgc3ltYm9scyBhcmU6IGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBvZiBjb3Vyc2UsIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBnb2luZyB0byBiZSB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIHRvIGNvbmZpcm0gdGhlIGltcGFjdCBhbmQgZW5zdXJlIHRoZSBmaXggaXMgY29tcGxldGUuIEkgYWxzbyBoYXZlIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyBmb3IgYFNDVFBfQVVUSGAgdGhhdCBtaWdodCBmdXJ0aGVyIGNsYXJpZnkgdGhpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLCBzbyBJJ2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGNoYW5nZXMgYWdhaW5zdCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTM6MzI6NDIuMzA1MjM5NDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY1ODg3MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQ1RQX0FVVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjo0Mi43MzE4NDM0OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3Mzc1NzM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzcGVha2luZyBhcyBhbiBleHBlcnQ6XG5cbioqU0NUUCBBdXRoZW50aWNhdGlvbiBDb251bmRydW0qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgU0NUUCBpbXBsZW1lbnRhdGlvbiwgYW5kIGl0IHNlZW1zIHRoZXJlJ3Mgbm8gZXhwbGljaXQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGBTQ1RQX0FVVEhgIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBvciBhbnl0aGluZyBzaW1pbGFyLiBUaGF0J3MgYSBiaXQgb2RkLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBpdCdzIGVpdGhlciBiYWtlZCBpbiBieSBkZWZhdWx0LCBhbHdheXMgZW5hYmxlZCwgb3IgcGVyaGFwcyBpdCdzIGVudGlyZWx5IG1hbmFnZWQgdGhyb3VnaCB0aG9zZSBnb29kIG9sZCBgc3lzY3RsYCBrbm9icywgd2hpY2ggd291bGQgbWFrZSBzZW5zZSBmcm9tIGEgZGVzaWduIHN0YW5kcG9pbnQuIEtlZXBzIGl0IG1vcmUgZmxleGlibGUsIHlvdSBrbm93P1xuXG5MZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucyB0aG91Z2g7IEkgc2hvdWxkIHJlYWxseSBtYWtlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSBvYnNjdXJlIGNvbmZpZyBidXJpZWQgZWxzZXdoZXJlLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9zY3RwL0tjb25maWdgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCBtaWdodCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcyBhdXRoZW50aWNhdGlvbiBiZWhhdmlvci4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjo0OC41MDU2MDUzNjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTY5ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTM5PWlmIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxcbm5ldC9zY3RwL0tjb25maWc6NDE6Y29uZmlnIFNDVFBfREJHX09CSkNOVFxcbm5ldC9zY3RwL0tjb25maWctNDItXFx0Ym9vbCBcXFwiU0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1xcXCJcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NTI9Y2hvaWNlXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxcbm5ldC9zY3RwL0tjb25maWc6NjI6Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG5uZXQvc2N0cC9LY29uZmlnLTYzLVxcdGJvb2wgXFxcIkhNQUMtU0hBMjU2XFxcIlxcbm5ldC9zY3RwL0tjb25maWctNjQtXFxubmV0L3NjdHAvS2NvbmZpZzo2NTpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG5uZXQvc2N0cC9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTY4PWVuZGNob2ljZVxcbm5ldC9zY3RwL0tjb25maWctNjktXFxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnLTcxLVxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDEzOjMyOjQ4LjU3OTU4NTk4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODczNjk3NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRm9jdXM6IFJlZmluZWQgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgSVBfU0NUUGAgaXMgdGhlIGNydWNpYWwgZm9jdXMgaGVyZSwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gTm93LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlc2UgdGFyZ2V0IHN5bWJvbHM6IGBzY3RwX2Fzc29jX2JoX3JjdmAsIGBzY3RwX2VuZHBvaW50X2JoX3JjdmAsIGFuZCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAuIFVubGlrZSB0aGUgbW9yZSBnZW5lcmFsIGVudHJ5IHBvaW50cyBsaWtlIGBzY3RwX3JjdmAgb3IgYGlwX3JjdmAsIHRoZXNlIHNlZW0gaGlnaGx5IHJlbGV2YW50IHRvIGFzc29jaWF0aW9uLCBlbmRwb2ludCByZWNlaXZlIHByb2Nlc3NpbmcgKGluIHRoZSBib3R0b20gaGFsZiBvZiB0aGUgc3RhY2spLCBhbmQgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIHNwZWNpZmljYWxseSB3aXRoaW4gU0NUUC4gVGhpcyBpcyBnb29kLCBhIG1vcmUgdGFyZ2V0ZWQgYXR0YWNrIHN1cmZhY2UgaXMgaWRlYWwuXG5cbk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgYSBkZXRhaWwuIEFyZSB0aG9zZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgLCBzdGF0aWM/IEEgcXVpY2sgY2hlY2suLi4geWVwLCBhbmQgYHNjdHBfYXNzb2NfYmhfcmN2YCwgYXMgd2VsbCBhcyBgc2N0cF9lbmRwb2ludF9iaF9yY3ZgIGFyZSBhbHNvIHN0YXRpYy4gUGVyZmVjdC4gVGhleSBhcmUgZXhhY3RseSB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIHVuZGVyIHNjcnV0aW55IGluIG15IG1vZGlmaWNhdGlvbnMuIFN0YXRpYyBmdW5jdGlvbnMgYXJlIGlkZWFsIGZ1enppbmcgdGFyZ2V0cy5cblxuQWxyaWdodCwgdGhhdCBzZXR0bGVzIGl0LiBUaW1lIHRvIHJlY29yZCB0aGVzZSBmaW5kaW5ncyBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTAzLCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxMzozMjo1NS40NTMyODc5MTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU0MDA2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2Fzc29jX2JoX3JjdlwiLFxuICAgIFwic2N0cF9lbmRwb2ludF9iaF9yY3ZcIixcbiAgICBcInNjdHBfYXV0aF9jaHVua192ZXJpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBza2JfY2xvbmUgZmFpbHMgZHVyaW5nIFNDVFAgY2h1bmsgYXV0aGVudGljYXRpb24uIEl0IG1vZGlmaWVzIGNvcmUgU0NUUCByZWNlaXZlIHBhdGggbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY19iaF9yY3ZcIixcbiAgICBcInNjdHBfZW5kcG9pbnRfYmhfcmN2XCIsXG4gICAgXCJzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gc2tiX2Nsb25lIGZhaWxzIGR1cmluZyBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uLiBJdCBtb2RpZmllcyBjb3JlIFNDVFAgcmVjZWl2ZSBwYXRoIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[1] Phase: Succeeded StartedAt: 2026-07-20 13:34:22 +0000 UTC FinishedAt: 2026-07-20 13:34:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-20 13:34:22 +0000 UTC FinishedAt: 2026-07-20 13:34:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2] Phase: Succeeded StartedAt: 2026-07-20 13:34:22 +0000 UTC FinishedAt: 2026-07-20 17:50:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-20 13:34:22 +0000 UTC FinishedAt: 2026-07-20 17:50:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-20 13:34:22 +0000 UTC FinishedAt: 2026-07-20 13:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-20 13:34:22 +0000 UTC FinishedAt: 2026-07-20 13:34:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowzx2zj/series-workflowzx2zj-convert-artifact-2181678947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-20 13:34:43 +0000 UTC FinishedAt: 2026-07-20 14:04:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-20 13:34:43 +0000 UTC FinishedAt: 2026-07-20 14:04:19 +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:*80924f03-ca60-42c3-bc3e-07e7d4b9e9f7,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-workflowzx2zj/series-workflowzx2zj-convert-artifact-2181678947/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": "7fd1ced4-9af0-48b7-8543-ca6e7b164c80", "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-workflowzx2zj/series-workflowzx2zj-build-action-1109779153/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-20 13:34:43 +0000 UTC FinishedAt: 2026-07-20 14:04:09 +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:*80924f03-ca60-42c3-bc3e-07e7d4b9e9f7,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-workflowzx2zj/series-workflowzx2zj-convert-artifact-2181678947/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": "7fd1ced4-9af0-48b7-8543-ca6e7b164c80", "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-workflowzx2zj/series-workflowzx2zj-build-action-1109779153/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-20 14:04:19 +0000 UTC FinishedAt: 2026-07-20 14:04:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-20 14:04:19 +0000 UTC FinishedAt: 2026-07-20 14:04:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-20 14:04:19 +0000 UTC FinishedAt: 2026-07-20 14:04:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-20 14:04:19 +0000 UTC FinishedAt: 2026-07-20 14:04:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowzx2zj/series-workflowzx2zj-convert-artifact-7369114/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-20 14:04:30 +0000 UTC FinishedAt: 2026-07-20 14:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-20 14:04:30 +0000 UTC FinishedAt: 2026-07-20 14:06:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7fd1ced4-9af0-48b7-8543-ca6e7b164c80,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-workflowzx2zj/series-workflowzx2zj-build-action-1109779153/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-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-20 14:06:46 +0000 UTC FinishedAt: 2026-07-20 14:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-20 14:06:46 +0000 UTC FinishedAt: 2026-07-20 14:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-20 14:06:46 +0000 UTC FinishedAt: 2026-07-20 14:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-20 14:06:46 +0000 UTC FinishedAt: 2026-07-20 14:41:50 +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:*80924f03-ca60-42c3-bc3e-07e7d4b9e9f7,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-workflowzx2zj/series-workflowzx2zj-convert-artifact-7369114/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": "a5bfbf1e-0ca3-4f2f-acfa-3e15e02d9889", "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-workflowzx2zj/series-workflowzx2zj-build-action-385359230/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-20 14:06:46 +0000 UTC FinishedAt: 2026-07-20 14:41:40 +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:*80924f03-ca60-42c3-bc3e-07e7d4b9e9f7,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-workflowzx2zj/series-workflowzx2zj-convert-artifact-7369114/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": "a5bfbf1e-0ca3-4f2f-acfa-3e15e02d9889", "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-workflowzx2zj/series-workflowzx2zj-build-action-385359230/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-20 14:41:50 +0000 UTC FinishedAt: 2026-07-20 14:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-20 14:41:50 +0000 UTC FinishedAt: 2026-07-20 14:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-20 14:41:50 +0000 UTC FinishedAt: 2026-07-20 14:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-20 14:41:50 +0000 UTC FinishedAt: 2026-07-20 14:43:59 +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:*a5bfbf1e-0ca3-4f2f-acfa-3e15e02d9889,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-workflowzx2zj/series-workflowzx2zj-build-action-385359230/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-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 17:50:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 17:50:56 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"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:*7fd1ced4-9af0-48b7-8543-ca6e7b164c80,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a5bfbf1e-0ca3-4f2f-acfa-3e15e02d9889,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-workflowzx2zj/series-workflowzx2zj-build-action-1109779153/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-workflowzx2zj/series-workflowzx2zj-build-action-385359230/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 14:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 14:44:37 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"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-workflowzx2zj/series-workflowzx2zj-convert-artifact-3534248271/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 14:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 14:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-20 14:44:09 +0000 UTC FinishedAt: 2026-07-20 14:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-20 14:46:09 +0000 UTC FinishedAt: 2026-07-20 17:50:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzx2zj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_bh_rcv","sctp_endpoint_bh_rcv","sctp_auth_chunk_verify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"bfd0e09c-595e-4770-bbae-36b0b0333332","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-20 14:46:09 +0000 UTC FinishedAt: 2026-07-20 17:50:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7fd1ced4-9af0-48b7-8543-ca6e7b164c80,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a5bfbf1e-0ca3-4f2f-acfa-3e15e02d9889,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-workflowzx2zj/series-workflowzx2zj-build-action-1109779153/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-workflowzx2zj/series-workflowzx2zj-build-action-385359230/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-workflowzx2zj/series-workflowzx2zj-convert-artifact-3534248271/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,}