Name: series-workflowg8qvf Phase: Succeeded StartedAt: 2026-07-01 12:06:11 +0000 UTC FinishedAt: 2026-07-01 16:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[0] Phase: Succeeded StartedAt: 2026-07-01 12:06:11 +0000 UTC FinishedAt: 2026-07-01 12:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 12:06:12 +0000 UTC FinishedAt: 2026-07-01 12:15:43 +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": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "a3eae175-662c-46d6-9074-33095baa5e1c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_in_icmp" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTBiOTljZDJmZTk2NjVjYjcyZDE1OWNiZmZhZWYyODRmNGRlMTQxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTI6MTQ6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li45MDZmMmMzNjE2NzYzOCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCYjMzQ7SVBJUFwmIzM0OztcbiYjNDM7XHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG4gXG5AQCAtMTgzMSw3ICYjNDM7MTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0ICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi9cbiBcdFx0ICAgKHNrYl9ydGFibGUoc2tiKS1cdTAwM2VydF9mbGFncyBcdTAwMjYgUlRDRl9MT0NBTCkpIHtcbiBcdFx0X191OCBpcHJvdG87XG4tXHRcdGludCB1bGVuO1xuIFxuIFx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG4gXHRcdGlmICh1bmxpa2VseShjaWgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxuQEAgLTE5MzYsOCAmIzQzOzE5MzYsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRpZiAoZGVzdF9kc3QpXG4gXHRcdFx0XHRcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4mIzQzO1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pXG4mIzQzO1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47XG4gXHRcdFx0aW5mbyA9IGh0b25sKG10dSk7XG4gXHRcdH1cbiBcdFx0LyogU3RyaXAgb3V0ZXIgSVAsIElDTVAgYW5kIElQSVAvVURQL0dSRSwgZ28gdG8gSVAgaGVhZGVyIG9mXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19pbl9pY21wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwYjk5Y2QyZmU5NjY1Y2I3MmQxNTljYmZmYWVmMjg0ZjRkZTE0MWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDEyOjE0OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTE3NjcsNiAmIzQzOzE3NjcsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJYm9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlOwogCXVuaW9uIG5mX2luZXRfYWRkciAqcmFkZHI7CiAJY2hhciAqb3V0ZXJfcHJvdG8gPSAmIzM0O0lQSVAmIzM0OzsKJiM0MzsJaW50IHVsZW4gPSAwOwogCiAJKnJlbGF0ZWQgPSAxOwogCkBAIC0xODMxLDcgJiM0MzsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCQkgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqLwogCQkgICAoc2tiX3J0YWJsZShza2IpLSZndDtydF9mbGFncyAmYW1wOyBSVENGX0xPQ0FMKSkgewogCQlfX3U4IGlwcm90bzsKLQkJaW50IHVsZW47CiAKIAkJLyogTm9uLWZpcnN0IGZyYWdtZW50IGhhcyBubyBVRFAvR1JFIGhlYWRlciAqLwogCQlpZiAodW5saWtlbHkoY2loLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9PRkZTRVQpKSkKQEAgLTE5MzYsOCAmIzQzOzE5MzYsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCQkJaWYgKGRlc3RfZHN0KQogCQkJCQltdHUgPSBkc3RfbXR1KGRlc3RfZHN0LSZndDtkc3RfY2FjaGUpOwogCQkJfQotCQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpKQotCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKTsKJiM0MzsJCQlpZiAobXR1ICZndDsgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbikKJiM0MzsJCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47CiAJCQlpbmZvID0gaHRvbmwobXR1KTsKIAkJfQogCQkvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2YKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBIYW5kbGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlwX3ZzX2NvcmUuY2AgaW4gdGhlIG5ldGZpbHRlci9pcHZzIG1vZHVsZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBtb3ZpbmcgdGhlIGBpbnQgdWxlbiA9IDA7YCBkZWNsYXJhdGlvbiB0byBhIHdpZGVyIHNjb3BlIHdpdGhpbiB0aGUgZnVuY3Rpb24sIHdoaWNoIHRoZW4gYWZmZWN0cyB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uLiBUaGUga2V5IGxpbmUgY2hhbmdlIGlzIHRoaXM6CgpgYGBjCi0JCQlpZiAobXR1ICZndDsgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpCi0JCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpOwomIzQzOwkJCWlmIChtdHUgJmd0OyA2OCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuKQomIzQzOwkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbjsKYGBgCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCAoTVRVKSBpcyBhZGp1c3RlZCB3aGVuIGhhbmRsaW5nIElDTVAgcGFja2V0cy4gUHJldmlvdXNseSwgaXQgc2ltcGx5IHN1YnRyYWN0ZWQgdGhlIHNpemUgb2YgdGhlIElQIGhlYWRlciAoYHNpemVvZihzdHJ1Y3QgaXBoZHIpYCkuIE5vdywgaXQgYWxzbyBzdWJ0cmFjdHMgYHVsZW5gIHdoaWNoIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkIHRvIDAuIEl0IG11c3QgYmUgaW50ZW5kZWQgZm9yIGB1bGVuYCB0byBjaGFuZ2UsIGhvd2V2ZXIuIFRoaXMgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJpdCBtb3JlIHRoYW4ganVzdCBhIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB1bGVuYCByZXByZXNlbnRzIGFuZCBob3cgdGhpcyBhZmZlY3RzIHRoZSBNVFUgY2FsY3VsYXRpb24uIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHVsZW5gIGludG8gdGhpcyBlcXVhdGlvbiBpbXBsaWVzIHNvbWUgc29ydCBvZiBvZmZzZXQgb3IgbGVuZ3RoIGFkanVzdG1lbnQgaXMgYmVpbmcgYWRkZWQgaW50byB0aGUgY29uc2lkZXJhdGlvbiBvZiBNVFUgc2l6ZXMgb2YgSUNNUCBwYWNrZXRzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2YgdGhhdCBhZGp1c3RtZW50LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgY29udGV4dCBvZiBgaXBfdnNfaW5faWNtcGAgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1vZGlmaWNhdGlvbiBhbmQgdGhlIHJvbGUgYHVsZW5gIHBsYXlzIGluIHRoZSBvdmVyYWxsIElQVlMgZGVzaWduLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyBgdWxlbmAgaXMgc2V0IGFuZCB3aGF0IHZhbHVlIGl0IHRha2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MTc1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE3NTY6aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU3LVx0ICAgICAgdW5zaWduZWQgaW50IGhvb2tudW0pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTc4LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTc5OnN0YXRpYyBpbnQgaXBfdnNfaW5faWNtcF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4MC1cdFx0XHQgICAgaW50ICpyZWxhdGVkLCB1bnNpZ25lZCBpbnQgaG9va251bSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODY9aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTM1LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTM2Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxMzctXHRcdFx0XHRcdFx0ICAgICAgIGhvb2tudW0sIFx1MDAyNmlwaCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ1LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTQ2Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDctXHRcdFx0XHRcdFx0ICAgIGhvb2tudW0pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI3NC0gKiAgICAgIGJ1dCBJQ01QIGRlc3RpbmVkIGZvciAwLjAuMC4wLzAgY2Fubm90IG5vdCBiZSBlYXNpbHkgbWFya2VkIGFuZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjc1OiAqICAgICAgc2VudCB0byBpcF92c19pbl9pY21wLiBTbywgY2F0Y2ggdGhlbSBhdCB0aGUgTkZfSU5FVF9GT1JXQVJEIGNoYWluXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyNzY6ICogICAgICBhbmQgc2VuZCB0aGVtIHRvIGlwX3ZzX2luX2ljbXAuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNzctICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMjc5PWlwX3ZzX2ZvcndhcmRfaWNtcCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwMC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMwMTpcdFx0cmV0dXJuIGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rLCBcdTAwMjZpcGhkcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDItI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzA0LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzA1Olx0cmV0dXJuIGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGNoYW5nZXM6CgoqKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24gaGFzIGJlZW4gdG91Y2hlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBjaGFuZ2VkLCBhbmQgaG93IGRvZXMgaXQgcmVsYXRlIHRvIHRoZSBicm9hZGVyIElQIFZpcnR1YWwgU2VydmVyIHNldHVwPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMuIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIHRoZSBjb25maWcgb3B0aW9ucyBmb3IgSVBWUy4gSSB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgZmxhZ3Mgb3Igc2V0dGluZ3MgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiBgaXBfdnNfaW5faWNtcGAsIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGNoYW5nZXMgaW1wbHkgYSBtb2RpZmljYXRpb24gdG8gZGVmYXVsdCBiZWhhdmlvciwgb3IgaWYgdGhlc2UgY2hhbmdlcyBhcmUgbm93IGNvbmZpZ3VyYWJsZSB2aWEgYW4gYWRkZWQgb3B0aW9uLiBBcmUgdGhlcmUgYW55IG5ldyBvcHRpb25zIGludHJvZHVjZWQ/IERpZCB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTEyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIGBJUF9WU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGhlcmU/JiMzNDsgQmVmb3JlIEkgZGVsdmUgdG9vIGRlZXBseSBpbnRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgYElQX1ZTYCwgSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgc2NvcGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LCBvciB0aGF0IGNvdWxkIGluZmx1ZW5jZSBob3cgYElQX1ZTYCBpcyBvcGVyYXRpbmcuIEl0JiMzOTtzIGJlc3QgcHJhY3RpY2UgdG8gcnVsZSBvdXQgYW55IHBvdGVudGlhbCBjb25mbGljdGluZyBvciBjb21wbGVtZW50YXJ5IHNldHRpbmdzIGVhcmx5IG9uLiBBIHRob3JvdWdoIHNjYW4gd2lsbCBzYXZlIHRpbWUgYW5kIHBvdGVudGlhbCBoZWFkYWNoZXMgZG93biB0aGUgbGluZS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqUmVhY2hpbmcgYGlwX3ZzX2luX2ljbXBgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgaXBfdnNfaW5faWNtcGAgaXMgYmVpbmcgY2FsbGVkLiBMZXQmIzM5O3Mgc2VlLi4uIEFoYSEgSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBpcF92c19pbl9ob29rYCBhbmQgYGlwX3ZzX2ZvcndhcmRfaWNtcGAuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBwbG90IHRoaWNrZW5zLi4uIGBpcF92c19pbl9ob29rYCBpcyByZWdpc3RlcmVkIGFzIGEgbmV0ZmlsdGVyIGhvb2suIFRoYXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgY29udGV4dCBvZiB0aGF0IGhvb2sgdG8gZnVsbHkgZ3Jhc3AgdGhlIGV4ZWN1dGlvbiBwYXRoLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYGlwX3ZzX2NvcmUuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRldGFpbHMgb2YgaG93IHRoYXQgbmV0ZmlsdGVyIGhvb2sgaXMgc2V0IHVwLCBzcGVjaWZpY2FsbHkgdGhlIGBuZl9ob29rX29wc2Agc3RydWN0dXJlIHdoaWNoIGhvbGRzIGFsbCB0aGUgaG9vayBkZXRhaWxzLiBUaGF0IHNob3VsZCBjbGFyaWZ5IHRoZSBwcmlvcml0eSwgdGhlIGhvb2sgcG9pbnQsIGFuZCB0aGUgZnVuY3Rpb24gYmVpbmcgcmVnaXN0ZXJlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBgaXBfdnNfaW5faWNtcGAgZml0cyBpbnRvIHRoZSBicm9hZGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGZvcndhcmRpbmcgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfaG9va19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjI3OT1pcF92c19mb3J3YXJkX2ljbXAodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMDg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM0W10gPSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDktXHQvKiBBZnRlciBwYWNrZXQgZmlsdGVyaW5nLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM1Ni0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM1NzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM1OC1cdC8qIEFmdGVyIHBhY2tldCBmaWx0ZXJpbmcsIGNoYW5nZSBzb3VyY2Ugb25seSBmb3IgVlMvTkFUICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yNDA2PWludCBpcF92c19yZWdpc3Rlcl9ob29rcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgdW5zaWduZWQgaW50IGFmKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDA3LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjQwODpcdGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyAqb3BzO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDA5LVx0dW5zaWduZWQgaW50IGNvdW50O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjQzNT12b2lkIGlwX3ZzX3VucmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZilcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzNi17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI0Mzc6XHRjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgKm9wcztcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzOC1cdHVuc2lnbmVkIGludCBjb3VudDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpcF92c19pbl9pY21wYCBWdWxuZXJhYmlsaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjb2RlIHBhdGggZm9yIGBpcF92c19pbl9pY21wYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gTm93LCBkaXZpbmcgaW50byB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciBpdCBhZGRyZXNzZXMgYW4gTVRVIGNhbGN1bGF0aW9uIGlzc3VlLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgYHVsZW5gLCB3aGljaCByZXByZXNlbnRzIHRoZSBVRFAgb3IgR1JFIHBheWxvYWQgbGVuZ3RoLCB3YXMgZWl0aGVyIGJlaW5nIHVzZWQgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZCwgb3IgdGhlIG9yaWdpbmFsIGNvZGUgd2FzbiYjMzk7dCBjb3JyZWN0bHkgaW5jb3Jwb3JhdGluZyBpdCBpbnRvIHRoZSBNVFUgY2FsY3VsYXRpb24uCgpMb29raW5nIGF0IHRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQsIGl0JiMzOTtzIHByZXR0eSBvYnZpb3VzLiBgdWxlbmAgYW5kIGBpcHJvdG9gIGFyZSBkZWNsYXJlZCAqaW5zaWRlKiBhIG5lc3RlZCBgaWYvZWxzZWAgYmxvY2sgYmFzZWQgb24gdGhlIElQIGhlYWRlci4gVGhlIGNvZGUgcmVhZHM6CgpgYGBjCgkJX191OCBpcHJvdG87CgkJaW50IHVsZW47CmBgYApgYGBjCglpZiAoaXBfaXNfZnJhZ21lbnQoaXBoKSkgewoJCS4uLgoJfSBlbHNlIGlmICh1bmxpa2VseShjaWgtJmd0O2ZyYWdfb2ZmICZhbXA7IGh0b25zKElQX09GRlNFVCkpKSB7CgkJLyogTm9uLWZpcnN0IGZyYWdtZW50IGhhcyBubyBVRFAvR1JFIGhlYWRlciAqLwoJCS4uLgoJfSBlbHNlIHsKCQkuLi4KCQlpZiAoaXByb3RvID09IElQUFJPVE9fVURQKSB7CgkJCS4uLgoJCQl1bGVuID0gbnRvaHModWgtJmd0O2xlbik7CgkJfSBlbHNlIGlmIChpcHJvdG8gPT0gSVBQUk9UT19HUkUpIHsKCQkJLi4uCgkJCXVsZW4gPSAuLi4KCQl9Cgl9CmBgYAoKVGhlbiwgbGF0ZXIsIHRoZSBjb2RlIHBlcmZvcm1zIHRoZSBNVFUgYWRqdXN0bWVudCB1c2luZyBgbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO2AuIFRoZSBmaXggY2hhbmdlcyB0aGlzIE1UVSBhZGp1c3RtZW50IHRvOgoKYGBgYwoJCQlpZiAobXR1ICZndDsgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbikKCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuOwpgYGAKCkNydWNpYWxseSwgaXQgKmFsc28qIG1vdmVzIHRoZSBgdWxlbmAgZGVjbGFyYXRpb24gdG8gdGhlIG91dGVyIHNjb3BlIHRvIGVuc3VyZSBpdCYjMzk7cyBhbHdheXMgaW5pdGlhbGl6ZWQgYW5kIGNvbnNpZGVyZWQgaW4gdGhlIGNhbGN1bGF0aW9uLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGltcHJvdmluZyB0aGUgYWNjdXJhY3kgb2YgTVRVIGhhbmRsaW5nIGZvciB0aGVzZSB0eXBlcyBvZiBwYWNrZXRzLiBNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgaXBfdnNfaW5faWNtcGAuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBzeW1ib2wgYGlwX3ZzX2luX2ljbXBgIGl0c2VsZiBpcyBsb2NhdGVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gQXMgZXhwZWN0ZWQsIHRoZSBjb2RlIGlzIHVuZGVyIGBJUF9WU2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgSVBfVlNgIGlzIGVuYWJsZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVgIGNvbmZpcm1zIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGllZCBqdXN0IHRvIHRoZSBJQ01QIHNpZGUgb2YgSVBWUywganVzdCB0aGUgZ2VuZXJhbCBgSVBfVlNgIGNvbmZpZy4gRXhjZWxsZW50LiBUaGF0IGNvdmVycyB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xND1pcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICYjNDM7PSBpcF92c19uZmN0Lm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNjppcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTctXHRcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cdCAgIFx0XHQgICBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA2CgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUFZTIElDTVAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24sIGZvdW5kIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGluZGljYXRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBob3cgSVBWUyBoYW5kbGVzIElDTVAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGluIHRoZSBjYWxjdWxhdGlvbiBvZiBNVFUuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gaG93IGB1bGVuYCBpcyBoYW5kbGVkLiBJdCYjMzk7cyBub3cgZGVjbGFyZWQgYXQgdGhlIGZ1bmN0aW9uJiMzOTtzIG91dGVyIHNjb3BlIGFuZCBpbml0aWFsaXplZCB0byB6ZXJvLiBDcnVjaWFsbHksIHRoaXMgYHVsZW5gIHZhcmlhYmxlIGlzIHRoZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhlIE1UVSBjYWxjdWxhdGlvbjoKCmBgYGMKLQkJCWlmIChtdHUgJmd0OyA2OCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSkKLQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7CiYjNDM7CQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pCiYjNDM7CQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuOwpgYGAKClRoaXMgc3VnZ2VzdHMgdGhlIGNvZGUgbm93IGFjY291bnRzIGZvciBwb3RlbnRpYWwgVURQIG9yIEdSRSBoZWFkZXIgbGVuZ3RocyB3aGVuIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHRyYW5zbWl0dGFibGUgdW5pdCBmb3IgSUNNUCBlcnJvciBoYW5kbGluZy4gVGhlIGlzc3VlIHRoZSBwYXRjaCBmaXhlcyBpcyB0aGF0IGB1bGVuYCB3YXMgcHJldmlvdXNseSBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgYmxvY2suCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIGl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIExldCYjMzk7cyBleGFtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBDT05GSUdfSVBfVlNgIGlzIG9idmlvdXNseSB0aGUgcHJpbWFyeSBlbmFibGVyIGZvciBJUFZTLiBXaGlsZSBgQ09ORklHX0lQX1ZTX0lQVjZgIG1pZ2h0IGJlIHJlbGV2YW50IGlmIHRoaXMgd2VyZSBJUHY2LXNwZWNpZmljLCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gKGBpcF92c19pbl9pY21wYCkgaXMgZGVmaW5pdGl2ZWx5IElQdjQsIHNvIElQdjYgY29uY2VybnMgYXJlIHNlY29uZGFyeSBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC4gRnJvbSB3aGF0IEkgcmVjYWxsLCBgaXBfdnNfaW5faWNtcGAgaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2luX2hvb2tgIGFuZCBgaXBfdnNfZm9yd2FyZF9pY21wYC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgcGF0Y2ggb25seSBhZmZlY3RzIGBpcF92c19pbl9pY21wYCwgYW5kIHllcywgaXQmIzM5O3MgdGhlIG9ubHkgZnVuY3Rpb24gY2hhbmdlZC4KCkdpdmVuIHRoZSBpbXBhY3Qgb24gSUNNUCBwYWNrZXQgaGFuZGxpbmcgYW5kIHRoZSBjaGFuZ2UgaW4gTVRVIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBhIGNyaXRpY2FsIGFzcGVjdCBvZiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgd2FycmFudGVkLiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4KCkkmIzM5O2xsIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgc3BlY2lmaWNhbGx5IG9uIGBpcF92c19pbl9pY21wYCwgbWFraW5nIGl0IHRoZSBgRm9jdXNTeW1ib2xzYC4KCkkgd2lsbCBzZXQgdGhlIGBFbmFibGVDb25maWdzYCB0byBgWyYjMzQ7SVBfVlMmIzM0O11gLCBhcyBpdCYjMzk7cyBhIHByZXJlcXVpc2l0ZS4KCk15IGBSZWFzb25pbmdgIHdpbGwgYmU6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBjYWxjdWxhdGlvbiBsb2dpYyBmb3IgSUNNUCBwYWNrZXRzIGluIElQVlMgYnkgaW5jbHVkaW5nIHRoZSBVRFAvR1JFIGhlYWRlciBsZW5ndGggKGB1bGVuYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRoIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjQ3LjExNjQ5NzQ4NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODkyMTEwNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjQ3LjExNjUwOTQ0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0NjczNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTBiOTljZDJmZTk2NjVjYjcyZDE1OWNiZmZhZWYyODRmNGRlMTQxYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDEyOjE0OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuQEAgLTE3NjcsNiArMTc2Nyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xcbiBcXHR1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyO1xcbiBcXHRjaGFyICpvdXRlcl9wcm90byA9IFxcXCJJUElQXFxcIjtcXG4rXFx0aW50IHVsZW4gPSAwO1xcbiBcXG4gXFx0KnJlbGF0ZWQgPSAxO1xcbiBcXG5AQCAtMTgzMSw3ICsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHQgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqL1xcbiBcXHRcXHQgICAoc2tiX3J0YWJsZShza2IpLVxcdTAwM2VydF9mbGFncyBcXHUwMDI2IFJUQ0ZfTE9DQUwpKSB7XFxuIFxcdFxcdF9fdTggaXByb3RvO1xcbi1cXHRcXHRpbnQgdWxlbjtcXG4gXFxuIFxcdFxcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cXG4gXFx0XFx0aWYgKHVubGlrZWx5KGNpaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9PRkZTRVQpKSlcXG5AQCAtMTkzNiw4ICsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHRcXHRcXHRpZiAoZGVzdF9kc3QpXFxuIFxcdFxcdFxcdFxcdFxcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXFx1MDAzZWRzdF9jYWNoZSk7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXFxuLVxcdFxcdFxcdFxcdG10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKTtcXG4rXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxcbitcXHRcXHRcXHRcXHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xcbiBcXHRcXHRcXHRpbmZvID0gaHRvbmwobXR1KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTI6MTQ6NDcuNjcyMzY3MThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM2MjIyNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTBiOTljZDJmZTk2NjVjYjcyZDE1OWNiZmZhZWYyODRmNGRlMTQxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTI6MTQ6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuQEAgLTE3NjcsNiArMTc2Nyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdGJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTtcbiBcdHVuaW9uIG5mX2luZXRfYWRkciAqcmFkZHI7XG4gXHRjaGFyICpvdXRlcl9wcm90byA9IFwiSVBJUFwiO1xuK1x0aW50IHVsZW4gPSAwO1xuIFxuIFx0KnJlbGF0ZWQgPSAxO1xuIFxuQEAgLTE4MzEsNyArMTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0ICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi9cbiBcdFx0ICAgKHNrYl9ydGFibGUoc2tiKS1cdTAwM2VydF9mbGFncyBcdTAwMjYgUlRDRl9MT0NBTCkpIHtcbiBcdFx0X191OCBpcHJvdG87XG4tXHRcdGludCB1bGVuO1xuIFxuIFx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG4gXHRcdGlmICh1bmxpa2VseShjaWgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxuQEAgLTE5MzYsOCArMTkzNiw4IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0XHRcdGlmIChkZXN0X2RzdClcbiBcdFx0XHRcdFx0bXR1ID0gZHN0X210dShkZXN0X2RzdC1cdTAwM2Vkc3RfY2FjaGUpO1xuIFx0XHRcdH1cbi1cdFx0XHRpZiAobXR1IFx1MDAzZSA2OCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpKVxuLVx0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuK1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxuK1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbjtcbiBcdFx0XHRpbmZvID0gaHRvbmwobXR1KTtcbiBcdFx0fVxuIFx0XHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjQ3LjY3MjM3MTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1NDkwMjY4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBIYW5kbGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBpcF92c19jb3JlLmNgIGluIHRoZSBuZXRmaWx0ZXIvaXB2cyBtb2R1bGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBtb3ZpbmcgdGhlIGBpbnQgdWxlbiA9IDA7YCBkZWNsYXJhdGlvbiB0byBhIHdpZGVyIHNjb3BlIHdpdGhpbiB0aGUgZnVuY3Rpb24sIHdoaWNoIHRoZW4gYWZmZWN0cyB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uLiBUaGUga2V5IGxpbmUgY2hhbmdlIGlzIHRoaXM6XG5cbmBgYGNcbi1cdFx0XHRpZiAobXR1IFx1MDAzZSA2OCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpKVxuLVx0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuK1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxuK1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbjtcbmBgYFxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCAoTVRVKSBpcyBhZGp1c3RlZCB3aGVuIGhhbmRsaW5nIElDTVAgcGFja2V0cy4gUHJldmlvdXNseSwgaXQgc2ltcGx5IHN1YnRyYWN0ZWQgdGhlIHNpemUgb2YgdGhlIElQIGhlYWRlciAoYHNpemVvZihzdHJ1Y3QgaXBoZHIpYCkuIE5vdywgaXQgYWxzbyBzdWJ0cmFjdHMgYHVsZW5gIHdoaWNoIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkIHRvIDAuIEl0IG11c3QgYmUgaW50ZW5kZWQgZm9yIGB1bGVuYCB0byBjaGFuZ2UsIGhvd2V2ZXIuIFRoaXMgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJpdCBtb3JlIHRoYW4ganVzdCBhIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB1bGVuYCByZXByZXNlbnRzIGFuZCBob3cgdGhpcyBhZmZlY3RzIHRoZSBNVFUgY2FsY3VsYXRpb24uIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHVsZW5gIGludG8gdGhpcyBlcXVhdGlvbiBpbXBsaWVzIHNvbWUgc29ydCBvZiBvZmZzZXQgb3IgbGVuZ3RoIGFkanVzdG1lbnQgaXMgYmVpbmcgYWRkZWQgaW50byB0aGUgY29uc2lkZXJhdGlvbiBvZiBNVFUgc2l6ZXMgb2YgSUNNUCBwYWNrZXRzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2YgdGhhdCBhZGp1c3RtZW50LiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBjb250ZXh0IG9mIGBpcF92c19pbl9pY21wYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbW9kaWZpY2F0aW9uIGFuZCB0aGUgcm9sZSBgdWxlbmAgcGxheXMgaW4gdGhlIG92ZXJhbGwgSVBWUyBkZXNpZ24uIEknbSBnb2luZyB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgYHVsZW5gIGlzIHNldCBhbmQgd2hhdCB2YWx1ZSBpdCB0YWtlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjUzLjQyNzI3NzY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTA1MDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19pbl9pY21wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNzU1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE3NTY6aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTc1Ny1cXHQgICAgICB1bnNpZ25lZCBpbnQgaG9va251bSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk3OC0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Nzk6c3RhdGljIGludCBpcF92c19pbl9pY21wX3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4MC1cXHRcXHRcXHQgICAgaW50ICpyZWxhdGVkLCB1bnNpZ25lZCBpbnQgaG9va251bSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjA4Nj1pcF92c19pbl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjEzNS1cXHRcXHRcXHRpbnQgcmVsYXRlZDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxMzY6XFx0XFx0XFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wX3Y2KGlwdnMsIHNrYiwgXFx1MDAyNnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTM3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBob29rbnVtLCBcXHUwMDI2aXBoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjE0NS1cXHRcXHRcXHRpbnQgcmVsYXRlZDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxNDY6XFx0XFx0XFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wKGlwdnMsIHNrYiwgXFx1MDAyNnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBob29rbnVtKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI3NC0gKiAgICAgIGJ1dCBJQ01QIGRlc3RpbmVkIGZvciAwLjAuMC4wLzAgY2Fubm90IG5vdCBiZSBlYXNpbHkgbWFya2VkIGFuZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI3NTogKiAgICAgIHNlbnQgdG8gaXBfdnNfaW5faWNtcC4gU28sIGNhdGNoIHRoZW0gYXQgdGhlIE5GX0lORVRfRk9SV0FSRCBjaGFpblxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI3NjogKiAgICAgIGFuZCBzZW5kIHRoZW0gdG8gaXBfdnNfaW5faWNtcC5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNzctICovXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIyNzk9aXBfdnNfZm9yd2FyZF9pY21wKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDAtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzAxOlxcdFxcdHJldHVybiBpcF92c19pbl9pY21wX3Y2KGlwdnMsIHNrYiwgXFx1MDAyNnIsIHN0YXRlLVxcdTAwM2Vob29rLCBcXHUwMDI2aXBoZHIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwMi0jZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwNC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMDU6XFx0cmV0dXJuIGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcXHUwMDI2ciwgc3RhdGUtXFx1MDAzZWhvb2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwNi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjUzLjY3NjMzODIwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MjAyNTc0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBjaGFuZ2VzOlxuXG4qKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGBpcF92c19pbl9pY21wYCBmdW5jdGlvbiBoYXMgYmVlbiB0b3VjaGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0J3MgY2hhbmdlZCwgYW5kIGhvdyBkb2VzIGl0IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBJUCBWaXJ0dWFsIFNlcnZlciBzZXR1cD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGVzZSBtb2RpZmljYXRpb25zLiBJJ2xsIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIHRoZSBjb25maWcgb3B0aW9ucyBmb3IgSVBWUy4gSSB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgZmxhZ3Mgb3Igc2V0dGluZ3MgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiBgaXBfdnNfaW5faWNtcGAsIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGNoYW5nZXMgaW1wbHkgYSBtb2RpZmljYXRpb24gdG8gZGVmYXVsdCBiZWhhdmlvciwgb3IgaWYgdGhlc2UgY2hhbmdlcyBhcmUgbm93IGNvbmZpZ3VyYWJsZSB2aWEgYW4gYWRkZWQgb3B0aW9uLiBBcmUgdGhlcmUgYW55IG5ldyBvcHRpb25zIGludHJvZHVjZWQ/IERpZCB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZT9cblxuXG4iLCJJbnB1dFRva2VucyI6MzYzMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjAxLjU5NjU5OTQxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2OTUxODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjAxLjc0MDMwMzgwMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NDEyNjIwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIGBJUF9WU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIklzIHRoaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZT9cIiBCZWZvcmUgSSBkZWx2ZSB0b28gZGVlcGx5IGludG8gdGhlIGltcGxpY2F0aW9ucyBvZiBgSVBfVlNgLCBJIG5lZWQgdG8gZXN0YWJsaXNoIHRoZSBzY29wZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheSwgb3IgdGhhdCBjb3VsZCBpbmZsdWVuY2UgaG93IGBJUF9WU2AgaXMgb3BlcmF0aW5nLiBJdCdzIGJlc3QgcHJhY3RpY2UgdG8gcnVsZSBvdXQgYW55IHBvdGVudGlhbCBjb25mbGljdGluZyBvciBjb21wbGVtZW50YXJ5IHNldHRpbmdzIGVhcmx5IG9uLiBBIHRob3JvdWdoIHNjYW4gd2lsbCBzYXZlIHRpbWUgYW5kIHBvdGVudGlhbCBoZWFkYWNoZXMgZG93biB0aGUgbGluZS4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTEyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTI6MTU6MDQuMjgxNTY5NTI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzYwMDE0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMjoxNTowNC40MzUxNzkyNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzcxMjU4MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqUmVhY2hpbmcgYGlwX3ZzX2luX2ljbXBgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBpcF92c19pbl9pY21wYCBpcyBiZWluZyBjYWxsZWQuIExldCdzIHNlZS4uLiBBaGEhIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSBib3RoIGBpcF92c19pbl9ob29rYCBhbmQgYGlwX3ZzX2ZvcndhcmRfaWNtcGAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIHBsb3QgdGhpY2tlbnMuLi4gYGlwX3ZzX2luX2hvb2tgIGlzIHJlZ2lzdGVyZWQgYXMgYSBuZXRmaWx0ZXIgaG9vay4gVGhhdCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBjb250ZXh0IG9mIHRoYXQgaG9vayB0byBmdWxseSBncmFzcCB0aGUgZXhlY3V0aW9uIHBhdGguXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBpcF92c19jb3JlLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGF0IG5ldGZpbHRlciBob29rIGlzIHNldCB1cCwgc3BlY2lmaWNhbGx5IHRoZSBgbmZfaG9va19vcHNgIHN0cnVjdHVyZSB3aGljaCBob2xkcyBhbGwgdGhlIGhvb2sgZGV0YWlscy4gVGhhdCBzaG91bGQgY2xhcmlmeSB0aGUgcHJpb3JpdHksIHRoZSBob29rIHBvaW50LCBhbmQgdGhlIGZ1bmN0aW9uIGJlaW5nIHJlZ2lzdGVyZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgYGlwX3ZzX2luX2ljbXBgIGZpdHMgaW50byB0aGUgYnJvYWRlciBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBmb3J3YXJkaW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMjoxNTowOC44MDY0NDE4MzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjY2MjUzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfaG9va19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIyNzk9aXBfdnNfZm9yd2FyZF9pY21wKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDctXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzA4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgaXBfdnNfb3BzNFtdID0ge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwOS1cXHQvKiBBZnRlciBwYWNrZXQgZmlsdGVyaW5nLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzU2LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM1NzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNTgtXFx0LyogQWZ0ZXIgcGFja2V0IGZpbHRlcmluZywgY2hhbmdlIHNvdXJjZSBvbmx5IGZvciBWUy9OQVQgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjQwNj1pbnQgaXBfdnNfcmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI0MDcte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjQwODpcXHRjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgKm9wcztcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI0MDktXFx0dW5zaWduZWQgaW50IGNvdW50O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yNDM1PXZvaWQgaXBfdnNfdW5yZWdpc3Rlcl9ob29rcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgdW5zaWduZWQgaW50IGFmKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzNi17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNDM3OlxcdGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyAqb3BzO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzOC1cXHR1bnNpZ25lZCBpbnQgY291bnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjEwLjQ3MzExMjY4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU4NzUxMzk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBpcF92c19pbl9pY21wYCBWdWxuZXJhYmlsaXR5IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29kZSBwYXRoIGZvciBgaXBfdnNfaW5faWNtcGAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIE5vdywgZGl2aW5nIGludG8gdGhpcyBwYXRjaCwgaXQncyBjbGVhciBpdCBhZGRyZXNzZXMgYW4gTVRVIGNhbGN1bGF0aW9uIGlzc3VlLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgYHVsZW5gLCB3aGljaCByZXByZXNlbnRzIHRoZSBVRFAgb3IgR1JFIHBheWxvYWQgbGVuZ3RoLCB3YXMgZWl0aGVyIGJlaW5nIHVzZWQgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZCwgb3IgdGhlIG9yaWdpbmFsIGNvZGUgd2Fzbid0IGNvcnJlY3RseSBpbmNvcnBvcmF0aW5nIGl0IGludG8gdGhlIE1UVSBjYWxjdWxhdGlvbi5cblxuTG9va2luZyBhdCB0aGUgb3JpZ2luYWwgY29kZSBzbmlwcGV0LCBpdCdzIHByZXR0eSBvYnZpb3VzLiBgdWxlbmAgYW5kIGBpcHJvdG9gIGFyZSBkZWNsYXJlZCAqaW5zaWRlKiBhIG5lc3RlZCBgaWYvZWxzZWAgYmxvY2sgYmFzZWQgb24gdGhlIElQIGhlYWRlci4gVGhlIGNvZGUgcmVhZHM6XG5cbmBgYGNcblx0XHRfX3U4IGlwcm90bztcblx0XHRpbnQgdWxlbjtcbmBgYFxuYGBgY1xuXHRpZiAoaXBfaXNfZnJhZ21lbnQoaXBoKSkge1xuXHRcdC4uLlxuXHR9IGVsc2UgaWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpIHtcblx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG5cdFx0Li4uXG5cdH0gZWxzZSB7XG5cdFx0Li4uXG5cdFx0aWYgKGlwcm90byA9PSBJUFBST1RPX1VEUCkge1xuXHRcdFx0Li4uXG5cdFx0XHR1bGVuID0gbnRvaHModWgtXHUwMDNlbGVuKTtcblx0XHR9IGVsc2UgaWYgKGlwcm90byA9PSBJUFBST1RPX0dSRSkge1xuXHRcdFx0Li4uXG5cdFx0XHR1bGVuID0gLi4uXG5cdFx0fVxuXHR9XG5gYGBcblxuVGhlbiwgbGF0ZXIsIHRoZSBjb2RlIHBlcmZvcm1zIHRoZSBNVFUgYWRqdXN0bWVudCB1c2luZyBgbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO2AuIFRoZSBmaXggY2hhbmdlcyB0aGlzIE1UVSBhZGp1c3RtZW50IHRvOlxuXG5gYGBjXG5cdFx0XHRpZiAobXR1IFx1MDAzZSA2OCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbilcblx0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbjtcbmBgYFxuXG5DcnVjaWFsbHksIGl0ICphbHNvKiBtb3ZlcyB0aGUgYHVsZW5gIGRlY2xhcmF0aW9uIHRvIHRoZSBvdXRlciBzY29wZSB0byBlbnN1cmUgaXQncyBhbHdheXMgaW5pdGlhbGl6ZWQgYW5kIGNvbnNpZGVyZWQgaW4gdGhlIGNhbGN1bGF0aW9uLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGltcHJvdmluZyB0aGUgYWNjdXJhY3kgb2YgTVRVIGhhbmRsaW5nIGZvciB0aGVzZSB0eXBlcyBvZiBwYWNrZXRzLiBNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgaXBfdnNfaW5faWNtcGAuXG5cbkknbSBtYWtpbmcgc3VyZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgc3ltYm9sIGBpcF92c19pbl9pY21wYCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY2AuIEFzIGV4cGVjdGVkLCB0aGUgY29kZSBpcyB1bmRlciBgSVBfVlNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYElQX1ZTYCBpcyBlbmFibGVkLiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlYCBjb25maXJtcyB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRpZWQganVzdCB0byB0aGUgSUNNUCBzaWRlIG9mIElQVlMsIGp1c3QgdGhlIGdlbmVyYWwgYElQX1ZTYCBjb25maWcuIEV4Y2VsbGVudC4gVGhhdCBjb3ZlcnMgdGhlIGJ1aWxkIHJlcXVpcmVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMjoxNToyMS4wNjA2MzAwNDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzg5MTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTQ9aXBfdnMtZXh0cmFfb2Jqcy0kKENPTkZJR19JUF9WU19ORkNUKSArPSBpcF92c19uZmN0Lm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTUtXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjE2OmlwX3ZzLW9ianMgOj1cXHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cXHQgICBcXFxcXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTE3LVxcdFxcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cXHQgICBcXHRcXHQgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjIxLjU4ODUzMTYxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE3MzU2MjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBJQ01QIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24sIGZvdW5kIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGluZGljYXRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBob3cgSVBWUyBoYW5kbGVzIElDTVAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGluIHRoZSBjYWxjdWxhdGlvbiBvZiBNVFUuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBob3cgYHVsZW5gIGlzIGhhbmRsZWQuIEl0J3Mgbm93IGRlY2xhcmVkIGF0IHRoZSBmdW5jdGlvbidzIG91dGVyIHNjb3BlIGFuZCBpbml0aWFsaXplZCB0byB6ZXJvLiBDcnVjaWFsbHksIHRoaXMgYHVsZW5gIHZhcmlhYmxlIGlzIHRoZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhlIE1UVSBjYWxjdWxhdGlvbjpcblxuYGBgY1xuLVx0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4rXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXG4rXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xuYGBgXG5cblRoaXMgc3VnZ2VzdHMgdGhlIGNvZGUgbm93IGFjY291bnRzIGZvciBwb3RlbnRpYWwgVURQIG9yIEdSRSBoZWFkZXIgbGVuZ3RocyB3aGVuIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHRyYW5zbWl0dGFibGUgdW5pdCBmb3IgSUNNUCBlcnJvciBoYW5kbGluZy4gVGhlIGlzc3VlIHRoZSBwYXRjaCBmaXhlcyBpcyB0aGF0IGB1bGVuYCB3YXMgcHJldmlvdXNseSBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgYmxvY2suXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0LiBMZXQncyBleGFtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBDT05GSUdfSVBfVlNgIGlzIG9idmlvdXNseSB0aGUgcHJpbWFyeSBlbmFibGVyIGZvciBJUFZTLiBXaGlsZSBgQ09ORklHX0lQX1ZTX0lQVjZgIG1pZ2h0IGJlIHJlbGV2YW50IGlmIHRoaXMgd2VyZSBJUHY2LXNwZWNpZmljLCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gKGBpcF92c19pbl9pY21wYCkgaXMgZGVmaW5pdGl2ZWx5IElQdjQsIHNvIElQdjYgY29uY2VybnMgYXJlIHNlY29uZGFyeSBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC4gRnJvbSB3aGF0IEkgcmVjYWxsLCBgaXBfdnNfaW5faWNtcGAgaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2luX2hvb2tgIGFuZCBgaXBfdnNfZm9yd2FyZF9pY21wYC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IHRoZSBwYXRjaCBvbmx5IGFmZmVjdHMgYGlwX3ZzX2luX2ljbXBgLCBhbmQgeWVzLCBpdCdzIHRoZSBvbmx5IGZ1bmN0aW9uIGNoYW5nZWQuXG5cbkdpdmVuIHRoZSBpbXBhY3Qgb24gSUNNUCBwYWNrZXQgaGFuZGxpbmcgYW5kIHRoZSBjaGFuZ2UgaW4gTVRVIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBhIGNyaXRpY2FsIGFzcGVjdCBvZiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgd2FycmFudGVkLiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC5cblxuSSdsbCBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzIHNwZWNpZmljYWxseSBvbiBgaXBfdnNfaW5faWNtcGAsIG1ha2luZyBpdCB0aGUgYEZvY3VzU3ltYm9sc2AuXG5cbkkgd2lsbCBzZXQgdGhlIGBFbmFibGVDb25maWdzYCB0byBgW1wiSVBfVlNcIl1gLCBhcyBpdCdzIGEgcHJlcmVxdWlzaXRlLlxuXG5NeSBgUmVhc29uaW5nYCB3aWxsIGJlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDYsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTI6MTU6MzEuNzYyMDk4NDQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2NDgzNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2luX2ljbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowg8qvf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 12:06:12 +0000 UTC FinishedAt: 2026-07-01 12:15:33 +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": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "a3eae175-662c-46d6-9074-33095baa5e1c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_in_icmp" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTBiOTljZDJmZTk2NjVjYjcyZDE1OWNiZmZhZWYyODRmNGRlMTQxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTI6MTQ6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li45MDZmMmMzNjE2NzYzOCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCYjMzQ7SVBJUFwmIzM0OztcbiYjNDM7XHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG4gXG5AQCAtMTgzMSw3ICYjNDM7MTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0ICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi9cbiBcdFx0ICAgKHNrYl9ydGFibGUoc2tiKS1cdTAwM2VydF9mbGFncyBcdTAwMjYgUlRDRl9MT0NBTCkpIHtcbiBcdFx0X191OCBpcHJvdG87XG4tXHRcdGludCB1bGVuO1xuIFxuIFx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG4gXHRcdGlmICh1bmxpa2VseShjaWgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxuQEAgLTE5MzYsOCAmIzQzOzE5MzYsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRpZiAoZGVzdF9kc3QpXG4gXHRcdFx0XHRcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4mIzQzO1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pXG4mIzQzO1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47XG4gXHRcdFx0aW5mbyA9IGh0b25sKG10dSk7XG4gXHRcdH1cbiBcdFx0LyogU3RyaXAgb3V0ZXIgSVAsIElDTVAgYW5kIElQSVAvVURQL0dSRSwgZ28gdG8gSVAgaGVhZGVyIG9mXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19pbl9pY21wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwYjk5Y2QyZmU5NjY1Y2I3MmQxNTljYmZmYWVmMjg0ZjRkZTE0MWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDEyOjE0OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTE3NjcsNiAmIzQzOzE3NjcsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJYm9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlOwogCXVuaW9uIG5mX2luZXRfYWRkciAqcmFkZHI7CiAJY2hhciAqb3V0ZXJfcHJvdG8gPSAmIzM0O0lQSVAmIzM0OzsKJiM0MzsJaW50IHVsZW4gPSAwOwogCiAJKnJlbGF0ZWQgPSAxOwogCkBAIC0xODMxLDcgJiM0MzsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCQkgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqLwogCQkgICAoc2tiX3J0YWJsZShza2IpLSZndDtydF9mbGFncyAmYW1wOyBSVENGX0xPQ0FMKSkgewogCQlfX3U4IGlwcm90bzsKLQkJaW50IHVsZW47CiAKIAkJLyogTm9uLWZpcnN0IGZyYWdtZW50IGhhcyBubyBVRFAvR1JFIGhlYWRlciAqLwogCQlpZiAodW5saWtlbHkoY2loLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9PRkZTRVQpKSkKQEAgLTE5MzYsOCAmIzQzOzE5MzYsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCQkJaWYgKGRlc3RfZHN0KQogCQkJCQltdHUgPSBkc3RfbXR1KGRlc3RfZHN0LSZndDtkc3RfY2FjaGUpOwogCQkJfQotCQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpKQotCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKTsKJiM0MzsJCQlpZiAobXR1ICZndDsgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbikKJiM0MzsJCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47CiAJCQlpbmZvID0gaHRvbmwobXR1KTsKIAkJfQogCQkvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2YKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBIYW5kbGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlwX3ZzX2NvcmUuY2AgaW4gdGhlIG5ldGZpbHRlci9pcHZzIG1vZHVsZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBtb3ZpbmcgdGhlIGBpbnQgdWxlbiA9IDA7YCBkZWNsYXJhdGlvbiB0byBhIHdpZGVyIHNjb3BlIHdpdGhpbiB0aGUgZnVuY3Rpb24sIHdoaWNoIHRoZW4gYWZmZWN0cyB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uLiBUaGUga2V5IGxpbmUgY2hhbmdlIGlzIHRoaXM6CgpgYGBjCi0JCQlpZiAobXR1ICZndDsgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpCi0JCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpOwomIzQzOwkJCWlmIChtdHUgJmd0OyA2OCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuKQomIzQzOwkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbjsKYGBgCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCAoTVRVKSBpcyBhZGp1c3RlZCB3aGVuIGhhbmRsaW5nIElDTVAgcGFja2V0cy4gUHJldmlvdXNseSwgaXQgc2ltcGx5IHN1YnRyYWN0ZWQgdGhlIHNpemUgb2YgdGhlIElQIGhlYWRlciAoYHNpemVvZihzdHJ1Y3QgaXBoZHIpYCkuIE5vdywgaXQgYWxzbyBzdWJ0cmFjdHMgYHVsZW5gIHdoaWNoIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkIHRvIDAuIEl0IG11c3QgYmUgaW50ZW5kZWQgZm9yIGB1bGVuYCB0byBjaGFuZ2UsIGhvd2V2ZXIuIFRoaXMgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJpdCBtb3JlIHRoYW4ganVzdCBhIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB1bGVuYCByZXByZXNlbnRzIGFuZCBob3cgdGhpcyBhZmZlY3RzIHRoZSBNVFUgY2FsY3VsYXRpb24uIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHVsZW5gIGludG8gdGhpcyBlcXVhdGlvbiBpbXBsaWVzIHNvbWUgc29ydCBvZiBvZmZzZXQgb3IgbGVuZ3RoIGFkanVzdG1lbnQgaXMgYmVpbmcgYWRkZWQgaW50byB0aGUgY29uc2lkZXJhdGlvbiBvZiBNVFUgc2l6ZXMgb2YgSUNNUCBwYWNrZXRzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2YgdGhhdCBhZGp1c3RtZW50LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgY29udGV4dCBvZiBgaXBfdnNfaW5faWNtcGAgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1vZGlmaWNhdGlvbiBhbmQgdGhlIHJvbGUgYHVsZW5gIHBsYXlzIGluIHRoZSBvdmVyYWxsIElQVlMgZGVzaWduLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyBgdWxlbmAgaXMgc2V0IGFuZCB3aGF0IHZhbHVlIGl0IHRha2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MTc1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE3NTY6aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU3LVx0ICAgICAgdW5zaWduZWQgaW50IGhvb2tudW0pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTc4LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTc5OnN0YXRpYyBpbnQgaXBfdnNfaW5faWNtcF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4MC1cdFx0XHQgICAgaW50ICpyZWxhdGVkLCB1bnNpZ25lZCBpbnQgaG9va251bSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODY9aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTM1LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTM2Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxMzctXHRcdFx0XHRcdFx0ICAgICAgIGhvb2tudW0sIFx1MDAyNmlwaCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ1LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTQ2Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDctXHRcdFx0XHRcdFx0ICAgIGhvb2tudW0pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI3NC0gKiAgICAgIGJ1dCBJQ01QIGRlc3RpbmVkIGZvciAwLjAuMC4wLzAgY2Fubm90IG5vdCBiZSBlYXNpbHkgbWFya2VkIGFuZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjc1OiAqICAgICAgc2VudCB0byBpcF92c19pbl9pY21wLiBTbywgY2F0Y2ggdGhlbSBhdCB0aGUgTkZfSU5FVF9GT1JXQVJEIGNoYWluXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyNzY6ICogICAgICBhbmQgc2VuZCB0aGVtIHRvIGlwX3ZzX2luX2ljbXAuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNzctICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMjc5PWlwX3ZzX2ZvcndhcmRfaWNtcCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwMC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMwMTpcdFx0cmV0dXJuIGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rLCBcdTAwMjZpcGhkcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDItI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzA0LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzA1Olx0cmV0dXJuIGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGNoYW5nZXM6CgoqKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24gaGFzIGJlZW4gdG91Y2hlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBjaGFuZ2VkLCBhbmQgaG93IGRvZXMgaXQgcmVsYXRlIHRvIHRoZSBicm9hZGVyIElQIFZpcnR1YWwgU2VydmVyIHNldHVwPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMuIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIHRoZSBjb25maWcgb3B0aW9ucyBmb3IgSVBWUy4gSSB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgZmxhZ3Mgb3Igc2V0dGluZ3MgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiBgaXBfdnNfaW5faWNtcGAsIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGNoYW5nZXMgaW1wbHkgYSBtb2RpZmljYXRpb24gdG8gZGVmYXVsdCBiZWhhdmlvciwgb3IgaWYgdGhlc2UgY2hhbmdlcyBhcmUgbm93IGNvbmZpZ3VyYWJsZSB2aWEgYW4gYWRkZWQgb3B0aW9uLiBBcmUgdGhlcmUgYW55IG5ldyBvcHRpb25zIGludHJvZHVjZWQ/IERpZCB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTEyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIGBJUF9WU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGhlcmU/JiMzNDsgQmVmb3JlIEkgZGVsdmUgdG9vIGRlZXBseSBpbnRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgYElQX1ZTYCwgSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgc2NvcGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LCBvciB0aGF0IGNvdWxkIGluZmx1ZW5jZSBob3cgYElQX1ZTYCBpcyBvcGVyYXRpbmcuIEl0JiMzOTtzIGJlc3QgcHJhY3RpY2UgdG8gcnVsZSBvdXQgYW55IHBvdGVudGlhbCBjb25mbGljdGluZyBvciBjb21wbGVtZW50YXJ5IHNldHRpbmdzIGVhcmx5IG9uLiBBIHRob3JvdWdoIHNjYW4gd2lsbCBzYXZlIHRpbWUgYW5kIHBvdGVudGlhbCBoZWFkYWNoZXMgZG93biB0aGUgbGluZS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqUmVhY2hpbmcgYGlwX3ZzX2luX2ljbXBgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgaXBfdnNfaW5faWNtcGAgaXMgYmVpbmcgY2FsbGVkLiBMZXQmIzM5O3Mgc2VlLi4uIEFoYSEgSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBpcF92c19pbl9ob29rYCBhbmQgYGlwX3ZzX2ZvcndhcmRfaWNtcGAuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBwbG90IHRoaWNrZW5zLi4uIGBpcF92c19pbl9ob29rYCBpcyByZWdpc3RlcmVkIGFzIGEgbmV0ZmlsdGVyIGhvb2suIFRoYXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgY29udGV4dCBvZiB0aGF0IGhvb2sgdG8gZnVsbHkgZ3Jhc3AgdGhlIGV4ZWN1dGlvbiBwYXRoLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYGlwX3ZzX2NvcmUuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRldGFpbHMgb2YgaG93IHRoYXQgbmV0ZmlsdGVyIGhvb2sgaXMgc2V0IHVwLCBzcGVjaWZpY2FsbHkgdGhlIGBuZl9ob29rX29wc2Agc3RydWN0dXJlIHdoaWNoIGhvbGRzIGFsbCB0aGUgaG9vayBkZXRhaWxzLiBUaGF0IHNob3VsZCBjbGFyaWZ5IHRoZSBwcmlvcml0eSwgdGhlIGhvb2sgcG9pbnQsIGFuZCB0aGUgZnVuY3Rpb24gYmVpbmcgcmVnaXN0ZXJlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBgaXBfdnNfaW5faWNtcGAgZml0cyBpbnRvIHRoZSBicm9hZGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGZvcndhcmRpbmcgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfaG9va19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjI3OT1pcF92c19mb3J3YXJkX2ljbXAodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMDg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM0W10gPSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDktXHQvKiBBZnRlciBwYWNrZXQgZmlsdGVyaW5nLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM1Ni0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM1NzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM1OC1cdC8qIEFmdGVyIHBhY2tldCBmaWx0ZXJpbmcsIGNoYW5nZSBzb3VyY2Ugb25seSBmb3IgVlMvTkFUICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yNDA2PWludCBpcF92c19yZWdpc3Rlcl9ob29rcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgdW5zaWduZWQgaW50IGFmKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDA3LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjQwODpcdGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyAqb3BzO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDA5LVx0dW5zaWduZWQgaW50IGNvdW50O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjQzNT12b2lkIGlwX3ZzX3VucmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZilcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzNi17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI0Mzc6XHRjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgKm9wcztcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzOC1cdHVuc2lnbmVkIGludCBjb3VudDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpcF92c19pbl9pY21wYCBWdWxuZXJhYmlsaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjb2RlIHBhdGggZm9yIGBpcF92c19pbl9pY21wYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gTm93LCBkaXZpbmcgaW50byB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciBpdCBhZGRyZXNzZXMgYW4gTVRVIGNhbGN1bGF0aW9uIGlzc3VlLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgYHVsZW5gLCB3aGljaCByZXByZXNlbnRzIHRoZSBVRFAgb3IgR1JFIHBheWxvYWQgbGVuZ3RoLCB3YXMgZWl0aGVyIGJlaW5nIHVzZWQgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZCwgb3IgdGhlIG9yaWdpbmFsIGNvZGUgd2FzbiYjMzk7dCBjb3JyZWN0bHkgaW5jb3Jwb3JhdGluZyBpdCBpbnRvIHRoZSBNVFUgY2FsY3VsYXRpb24uCgpMb29raW5nIGF0IHRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQsIGl0JiMzOTtzIHByZXR0eSBvYnZpb3VzLiBgdWxlbmAgYW5kIGBpcHJvdG9gIGFyZSBkZWNsYXJlZCAqaW5zaWRlKiBhIG5lc3RlZCBgaWYvZWxzZWAgYmxvY2sgYmFzZWQgb24gdGhlIElQIGhlYWRlci4gVGhlIGNvZGUgcmVhZHM6CgpgYGBjCgkJX191OCBpcHJvdG87CgkJaW50IHVsZW47CmBgYApgYGBjCglpZiAoaXBfaXNfZnJhZ21lbnQoaXBoKSkgewoJCS4uLgoJfSBlbHNlIGlmICh1bmxpa2VseShjaWgtJmd0O2ZyYWdfb2ZmICZhbXA7IGh0b25zKElQX09GRlNFVCkpKSB7CgkJLyogTm9uLWZpcnN0IGZyYWdtZW50IGhhcyBubyBVRFAvR1JFIGhlYWRlciAqLwoJCS4uLgoJfSBlbHNlIHsKCQkuLi4KCQlpZiAoaXByb3RvID09IElQUFJPVE9fVURQKSB7CgkJCS4uLgoJCQl1bGVuID0gbnRvaHModWgtJmd0O2xlbik7CgkJfSBlbHNlIGlmIChpcHJvdG8gPT0gSVBQUk9UT19HUkUpIHsKCQkJLi4uCgkJCXVsZW4gPSAuLi4KCQl9Cgl9CmBgYAoKVGhlbiwgbGF0ZXIsIHRoZSBjb2RlIHBlcmZvcm1zIHRoZSBNVFUgYWRqdXN0bWVudCB1c2luZyBgbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO2AuIFRoZSBmaXggY2hhbmdlcyB0aGlzIE1UVSBhZGp1c3RtZW50IHRvOgoKYGBgYwoJCQlpZiAobXR1ICZndDsgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbikKCQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuOwpgYGAKCkNydWNpYWxseSwgaXQgKmFsc28qIG1vdmVzIHRoZSBgdWxlbmAgZGVjbGFyYXRpb24gdG8gdGhlIG91dGVyIHNjb3BlIHRvIGVuc3VyZSBpdCYjMzk7cyBhbHdheXMgaW5pdGlhbGl6ZWQgYW5kIGNvbnNpZGVyZWQgaW4gdGhlIGNhbGN1bGF0aW9uLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGltcHJvdmluZyB0aGUgYWNjdXJhY3kgb2YgTVRVIGhhbmRsaW5nIGZvciB0aGVzZSB0eXBlcyBvZiBwYWNrZXRzLiBNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgaXBfdnNfaW5faWNtcGAuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBzeW1ib2wgYGlwX3ZzX2luX2ljbXBgIGl0c2VsZiBpcyBsb2NhdGVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gQXMgZXhwZWN0ZWQsIHRoZSBjb2RlIGlzIHVuZGVyIGBJUF9WU2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgSVBfVlNgIGlzIGVuYWJsZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVgIGNvbmZpcm1zIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGllZCBqdXN0IHRvIHRoZSBJQ01QIHNpZGUgb2YgSVBWUywganVzdCB0aGUgZ2VuZXJhbCBgSVBfVlNgIGNvbmZpZy4gRXhjZWxsZW50LiBUaGF0IGNvdmVycyB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xND1pcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICYjNDM7PSBpcF92c19uZmN0Lm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNjppcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTctXHRcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cdCAgIFx0XHQgICBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA2CgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUFZTIElDTVAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24sIGZvdW5kIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGluZGljYXRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBob3cgSVBWUyBoYW5kbGVzIElDTVAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGluIHRoZSBjYWxjdWxhdGlvbiBvZiBNVFUuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gaG93IGB1bGVuYCBpcyBoYW5kbGVkLiBJdCYjMzk7cyBub3cgZGVjbGFyZWQgYXQgdGhlIGZ1bmN0aW9uJiMzOTtzIG91dGVyIHNjb3BlIGFuZCBpbml0aWFsaXplZCB0byB6ZXJvLiBDcnVjaWFsbHksIHRoaXMgYHVsZW5gIHZhcmlhYmxlIGlzIHRoZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhlIE1UVSBjYWxjdWxhdGlvbjoKCmBgYGMKLQkJCWlmIChtdHUgJmd0OyA2OCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSkKLQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7CiYjNDM7CQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pCiYjNDM7CQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuOwpgYGAKClRoaXMgc3VnZ2VzdHMgdGhlIGNvZGUgbm93IGFjY291bnRzIGZvciBwb3RlbnRpYWwgVURQIG9yIEdSRSBoZWFkZXIgbGVuZ3RocyB3aGVuIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHRyYW5zbWl0dGFibGUgdW5pdCBmb3IgSUNNUCBlcnJvciBoYW5kbGluZy4gVGhlIGlzc3VlIHRoZSBwYXRjaCBmaXhlcyBpcyB0aGF0IGB1bGVuYCB3YXMgcHJldmlvdXNseSBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgYmxvY2suCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIGl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIExldCYjMzk7cyBleGFtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBDT05GSUdfSVBfVlNgIGlzIG9idmlvdXNseSB0aGUgcHJpbWFyeSBlbmFibGVyIGZvciBJUFZTLiBXaGlsZSBgQ09ORklHX0lQX1ZTX0lQVjZgIG1pZ2h0IGJlIHJlbGV2YW50IGlmIHRoaXMgd2VyZSBJUHY2LXNwZWNpZmljLCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gKGBpcF92c19pbl9pY21wYCkgaXMgZGVmaW5pdGl2ZWx5IElQdjQsIHNvIElQdjYgY29uY2VybnMgYXJlIHNlY29uZGFyeSBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC4gRnJvbSB3aGF0IEkgcmVjYWxsLCBgaXBfdnNfaW5faWNtcGAgaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2luX2hvb2tgIGFuZCBgaXBfdnNfZm9yd2FyZF9pY21wYC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgcGF0Y2ggb25seSBhZmZlY3RzIGBpcF92c19pbl9pY21wYCwgYW5kIHllcywgaXQmIzM5O3MgdGhlIG9ubHkgZnVuY3Rpb24gY2hhbmdlZC4KCkdpdmVuIHRoZSBpbXBhY3Qgb24gSUNNUCBwYWNrZXQgaGFuZGxpbmcgYW5kIHRoZSBjaGFuZ2UgaW4gTVRVIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBhIGNyaXRpY2FsIGFzcGVjdCBvZiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgd2FycmFudGVkLiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4KCkkmIzM5O2xsIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgc3BlY2lmaWNhbGx5IG9uIGBpcF92c19pbl9pY21wYCwgbWFraW5nIGl0IHRoZSBgRm9jdXNTeW1ib2xzYC4KCkkgd2lsbCBzZXQgdGhlIGBFbmFibGVDb25maWdzYCB0byBgWyYjMzQ7SVBfVlMmIzM0O11gLCBhcyBpdCYjMzk7cyBhIHByZXJlcXVpc2l0ZS4KCk15IGBSZWFzb25pbmdgIHdpbGwgYmU6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBjYWxjdWxhdGlvbiBsb2dpYyBmb3IgSUNNUCBwYWNrZXRzIGluIElQVlMgYnkgaW5jbHVkaW5nIHRoZSBVRFAvR1JFIGhlYWRlciBsZW5ndGggKGB1bGVuYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRoIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjQ3LjExNjQ5NzQ4NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODkyMTEwNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjQ3LjExNjUwOTQ0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0NjczNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTBiOTljZDJmZTk2NjVjYjcyZDE1OWNiZmZhZWYyODRmNGRlMTQxYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDEyOjE0OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuQEAgLTE3NjcsNiArMTc2Nyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xcbiBcXHR1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyO1xcbiBcXHRjaGFyICpvdXRlcl9wcm90byA9IFxcXCJJUElQXFxcIjtcXG4rXFx0aW50IHVsZW4gPSAwO1xcbiBcXG4gXFx0KnJlbGF0ZWQgPSAxO1xcbiBcXG5AQCAtMTgzMSw3ICsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHQgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqL1xcbiBcXHRcXHQgICAoc2tiX3J0YWJsZShza2IpLVxcdTAwM2VydF9mbGFncyBcXHUwMDI2IFJUQ0ZfTE9DQUwpKSB7XFxuIFxcdFxcdF9fdTggaXByb3RvO1xcbi1cXHRcXHRpbnQgdWxlbjtcXG4gXFxuIFxcdFxcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cXG4gXFx0XFx0aWYgKHVubGlrZWx5KGNpaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9PRkZTRVQpKSlcXG5AQCAtMTkzNiw4ICsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHRcXHRcXHRpZiAoZGVzdF9kc3QpXFxuIFxcdFxcdFxcdFxcdFxcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXFx1MDAzZWRzdF9jYWNoZSk7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXFxuLVxcdFxcdFxcdFxcdG10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKTtcXG4rXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxcbitcXHRcXHRcXHRcXHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xcbiBcXHRcXHRcXHRpbmZvID0gaHRvbmwobXR1KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTI6MTQ6NDcuNjcyMzY3MThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM2MjIyNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTBiOTljZDJmZTk2NjVjYjcyZDE1OWNiZmZhZWYyODRmNGRlMTQxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTI6MTQ6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuQEAgLTE3NjcsNiArMTc2Nyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdGJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTtcbiBcdHVuaW9uIG5mX2luZXRfYWRkciAqcmFkZHI7XG4gXHRjaGFyICpvdXRlcl9wcm90byA9IFwiSVBJUFwiO1xuK1x0aW50IHVsZW4gPSAwO1xuIFxuIFx0KnJlbGF0ZWQgPSAxO1xuIFxuQEAgLTE4MzEsNyArMTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0ICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi9cbiBcdFx0ICAgKHNrYl9ydGFibGUoc2tiKS1cdTAwM2VydF9mbGFncyBcdTAwMjYgUlRDRl9MT0NBTCkpIHtcbiBcdFx0X191OCBpcHJvdG87XG4tXHRcdGludCB1bGVuO1xuIFxuIFx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG4gXHRcdGlmICh1bmxpa2VseShjaWgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxuQEAgLTE5MzYsOCArMTkzNiw4IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0XHRcdGlmIChkZXN0X2RzdClcbiBcdFx0XHRcdFx0bXR1ID0gZHN0X210dShkZXN0X2RzdC1cdTAwM2Vkc3RfY2FjaGUpO1xuIFx0XHRcdH1cbi1cdFx0XHRpZiAobXR1IFx1MDAzZSA2OCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpKVxuLVx0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuK1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxuK1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbjtcbiBcdFx0XHRpbmZvID0gaHRvbmwobXR1KTtcbiBcdFx0fVxuIFx0XHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjQ3LjY3MjM3MTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1NDkwMjY4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBIYW5kbGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBpcF92c19jb3JlLmNgIGluIHRoZSBuZXRmaWx0ZXIvaXB2cyBtb2R1bGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBtb3ZpbmcgdGhlIGBpbnQgdWxlbiA9IDA7YCBkZWNsYXJhdGlvbiB0byBhIHdpZGVyIHNjb3BlIHdpdGhpbiB0aGUgZnVuY3Rpb24sIHdoaWNoIHRoZW4gYWZmZWN0cyB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uLiBUaGUga2V5IGxpbmUgY2hhbmdlIGlzIHRoaXM6XG5cbmBgYGNcbi1cdFx0XHRpZiAobXR1IFx1MDAzZSA2OCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpKVxuLVx0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuK1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxuK1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbjtcbmBgYFxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCAoTVRVKSBpcyBhZGp1c3RlZCB3aGVuIGhhbmRsaW5nIElDTVAgcGFja2V0cy4gUHJldmlvdXNseSwgaXQgc2ltcGx5IHN1YnRyYWN0ZWQgdGhlIHNpemUgb2YgdGhlIElQIGhlYWRlciAoYHNpemVvZihzdHJ1Y3QgaXBoZHIpYCkuIE5vdywgaXQgYWxzbyBzdWJ0cmFjdHMgYHVsZW5gIHdoaWNoIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkIHRvIDAuIEl0IG11c3QgYmUgaW50ZW5kZWQgZm9yIGB1bGVuYCB0byBjaGFuZ2UsIGhvd2V2ZXIuIFRoaXMgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJpdCBtb3JlIHRoYW4ganVzdCBhIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB1bGVuYCByZXByZXNlbnRzIGFuZCBob3cgdGhpcyBhZmZlY3RzIHRoZSBNVFUgY2FsY3VsYXRpb24uIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHVsZW5gIGludG8gdGhpcyBlcXVhdGlvbiBpbXBsaWVzIHNvbWUgc29ydCBvZiBvZmZzZXQgb3IgbGVuZ3RoIGFkanVzdG1lbnQgaXMgYmVpbmcgYWRkZWQgaW50byB0aGUgY29uc2lkZXJhdGlvbiBvZiBNVFUgc2l6ZXMgb2YgSUNNUCBwYWNrZXRzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2YgdGhhdCBhZGp1c3RtZW50LiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBjb250ZXh0IG9mIGBpcF92c19pbl9pY21wYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbW9kaWZpY2F0aW9uIGFuZCB0aGUgcm9sZSBgdWxlbmAgcGxheXMgaW4gdGhlIG92ZXJhbGwgSVBWUyBkZXNpZ24uIEknbSBnb2luZyB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgYHVsZW5gIGlzIHNldCBhbmQgd2hhdCB2YWx1ZSBpdCB0YWtlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjUzLjQyNzI3NzY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTA1MDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19pbl9pY21wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNzU1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE3NTY6aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTc1Ny1cXHQgICAgICB1bnNpZ25lZCBpbnQgaG9va251bSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk3OC0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Nzk6c3RhdGljIGludCBpcF92c19pbl9pY21wX3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4MC1cXHRcXHRcXHQgICAgaW50ICpyZWxhdGVkLCB1bnNpZ25lZCBpbnQgaG9va251bSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjA4Nj1pcF92c19pbl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjEzNS1cXHRcXHRcXHRpbnQgcmVsYXRlZDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxMzY6XFx0XFx0XFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wX3Y2KGlwdnMsIHNrYiwgXFx1MDAyNnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTM3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBob29rbnVtLCBcXHUwMDI2aXBoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjE0NS1cXHRcXHRcXHRpbnQgcmVsYXRlZDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxNDY6XFx0XFx0XFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wKGlwdnMsIHNrYiwgXFx1MDAyNnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBob29rbnVtKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI3NC0gKiAgICAgIGJ1dCBJQ01QIGRlc3RpbmVkIGZvciAwLjAuMC4wLzAgY2Fubm90IG5vdCBiZSBlYXNpbHkgbWFya2VkIGFuZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI3NTogKiAgICAgIHNlbnQgdG8gaXBfdnNfaW5faWNtcC4gU28sIGNhdGNoIHRoZW0gYXQgdGhlIE5GX0lORVRfRk9SV0FSRCBjaGFpblxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI3NjogKiAgICAgIGFuZCBzZW5kIHRoZW0gdG8gaXBfdnNfaW5faWNtcC5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNzctICovXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIyNzk9aXBfdnNfZm9yd2FyZF9pY21wKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDAtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzAxOlxcdFxcdHJldHVybiBpcF92c19pbl9pY21wX3Y2KGlwdnMsIHNrYiwgXFx1MDAyNnIsIHN0YXRlLVxcdTAwM2Vob29rLCBcXHUwMDI2aXBoZHIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwMi0jZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwNC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMDU6XFx0cmV0dXJuIGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcXHUwMDI2ciwgc3RhdGUtXFx1MDAzZWhvb2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwNi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE0OjUzLjY3NjMzODIwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MjAyNTc0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBjaGFuZ2VzOlxuXG4qKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGBpcF92c19pbl9pY21wYCBmdW5jdGlvbiBoYXMgYmVlbiB0b3VjaGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0J3MgY2hhbmdlZCwgYW5kIGhvdyBkb2VzIGl0IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBJUCBWaXJ0dWFsIFNlcnZlciBzZXR1cD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGVzZSBtb2RpZmljYXRpb25zLiBJJ2xsIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIHRoZSBjb25maWcgb3B0aW9ucyBmb3IgSVBWUy4gSSB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgZmxhZ3Mgb3Igc2V0dGluZ3MgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiBgaXBfdnNfaW5faWNtcGAsIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGNoYW5nZXMgaW1wbHkgYSBtb2RpZmljYXRpb24gdG8gZGVmYXVsdCBiZWhhdmlvciwgb3IgaWYgdGhlc2UgY2hhbmdlcyBhcmUgbm93IGNvbmZpZ3VyYWJsZSB2aWEgYW4gYWRkZWQgb3B0aW9uLiBBcmUgdGhlcmUgYW55IG5ldyBvcHRpb25zIGludHJvZHVjZWQ/IERpZCB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZT9cblxuXG4iLCJJbnB1dFRva2VucyI6MzYzMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjAxLjU5NjU5OTQxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2OTUxODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjAxLjc0MDMwMzgwMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NDEyNjIwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIGBJUF9WU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIklzIHRoaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZT9cIiBCZWZvcmUgSSBkZWx2ZSB0b28gZGVlcGx5IGludG8gdGhlIGltcGxpY2F0aW9ucyBvZiBgSVBfVlNgLCBJIG5lZWQgdG8gZXN0YWJsaXNoIHRoZSBzY29wZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheSwgb3IgdGhhdCBjb3VsZCBpbmZsdWVuY2UgaG93IGBJUF9WU2AgaXMgb3BlcmF0aW5nLiBJdCdzIGJlc3QgcHJhY3RpY2UgdG8gcnVsZSBvdXQgYW55IHBvdGVudGlhbCBjb25mbGljdGluZyBvciBjb21wbGVtZW50YXJ5IHNldHRpbmdzIGVhcmx5IG9uLiBBIHRob3JvdWdoIHNjYW4gd2lsbCBzYXZlIHRpbWUgYW5kIHBvdGVudGlhbCBoZWFkYWNoZXMgZG93biB0aGUgbGluZS4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTEyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTI6MTU6MDQuMjgxNTY5NTI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzYwMDE0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMjoxNTowNC40MzUxNzkyNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzcxMjU4MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqUmVhY2hpbmcgYGlwX3ZzX2luX2ljbXBgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBpcF92c19pbl9pY21wYCBpcyBiZWluZyBjYWxsZWQuIExldCdzIHNlZS4uLiBBaGEhIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSBib3RoIGBpcF92c19pbl9ob29rYCBhbmQgYGlwX3ZzX2ZvcndhcmRfaWNtcGAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIHBsb3QgdGhpY2tlbnMuLi4gYGlwX3ZzX2luX2hvb2tgIGlzIHJlZ2lzdGVyZWQgYXMgYSBuZXRmaWx0ZXIgaG9vay4gVGhhdCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBjb250ZXh0IG9mIHRoYXQgaG9vayB0byBmdWxseSBncmFzcCB0aGUgZXhlY3V0aW9uIHBhdGguXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBpcF92c19jb3JlLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGF0IG5ldGZpbHRlciBob29rIGlzIHNldCB1cCwgc3BlY2lmaWNhbGx5IHRoZSBgbmZfaG9va19vcHNgIHN0cnVjdHVyZSB3aGljaCBob2xkcyBhbGwgdGhlIGhvb2sgZGV0YWlscy4gVGhhdCBzaG91bGQgY2xhcmlmeSB0aGUgcHJpb3JpdHksIHRoZSBob29rIHBvaW50LCBhbmQgdGhlIGZ1bmN0aW9uIGJlaW5nIHJlZ2lzdGVyZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgYGlwX3ZzX2luX2ljbXBgIGZpdHMgaW50byB0aGUgYnJvYWRlciBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBmb3J3YXJkaW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMjoxNTowOC44MDY0NDE4MzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjY2MjUzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfaG9va19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIyNzk9aXBfdnNfZm9yd2FyZF9pY21wKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMDctXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzA4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgaXBfdnNfb3BzNFtdID0ge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwOS1cXHQvKiBBZnRlciBwYWNrZXQgZmlsdGVyaW5nLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzU2LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM1NzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNTgtXFx0LyogQWZ0ZXIgcGFja2V0IGZpbHRlcmluZywgY2hhbmdlIHNvdXJjZSBvbmx5IGZvciBWUy9OQVQgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjQwNj1pbnQgaXBfdnNfcmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI0MDcte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjQwODpcXHRjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgKm9wcztcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI0MDktXFx0dW5zaWduZWQgaW50IGNvdW50O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yNDM1PXZvaWQgaXBfdnNfdW5yZWdpc3Rlcl9ob29rcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgdW5zaWduZWQgaW50IGFmKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzNi17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNDM3OlxcdGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyAqb3BzO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQzOC1cXHR1bnNpZ25lZCBpbnQgY291bnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjEwLjQ3MzExMjY4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU4NzUxMzk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBpcF92c19pbl9pY21wYCBWdWxuZXJhYmlsaXR5IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29kZSBwYXRoIGZvciBgaXBfdnNfaW5faWNtcGAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIE5vdywgZGl2aW5nIGludG8gdGhpcyBwYXRjaCwgaXQncyBjbGVhciBpdCBhZGRyZXNzZXMgYW4gTVRVIGNhbGN1bGF0aW9uIGlzc3VlLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgYHVsZW5gLCB3aGljaCByZXByZXNlbnRzIHRoZSBVRFAgb3IgR1JFIHBheWxvYWQgbGVuZ3RoLCB3YXMgZWl0aGVyIGJlaW5nIHVzZWQgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZCwgb3IgdGhlIG9yaWdpbmFsIGNvZGUgd2Fzbid0IGNvcnJlY3RseSBpbmNvcnBvcmF0aW5nIGl0IGludG8gdGhlIE1UVSBjYWxjdWxhdGlvbi5cblxuTG9va2luZyBhdCB0aGUgb3JpZ2luYWwgY29kZSBzbmlwcGV0LCBpdCdzIHByZXR0eSBvYnZpb3VzLiBgdWxlbmAgYW5kIGBpcHJvdG9gIGFyZSBkZWNsYXJlZCAqaW5zaWRlKiBhIG5lc3RlZCBgaWYvZWxzZWAgYmxvY2sgYmFzZWQgb24gdGhlIElQIGhlYWRlci4gVGhlIGNvZGUgcmVhZHM6XG5cbmBgYGNcblx0XHRfX3U4IGlwcm90bztcblx0XHRpbnQgdWxlbjtcbmBgYFxuYGBgY1xuXHRpZiAoaXBfaXNfZnJhZ21lbnQoaXBoKSkge1xuXHRcdC4uLlxuXHR9IGVsc2UgaWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpIHtcblx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG5cdFx0Li4uXG5cdH0gZWxzZSB7XG5cdFx0Li4uXG5cdFx0aWYgKGlwcm90byA9PSBJUFBST1RPX1VEUCkge1xuXHRcdFx0Li4uXG5cdFx0XHR1bGVuID0gbnRvaHModWgtXHUwMDNlbGVuKTtcblx0XHR9IGVsc2UgaWYgKGlwcm90byA9PSBJUFBST1RPX0dSRSkge1xuXHRcdFx0Li4uXG5cdFx0XHR1bGVuID0gLi4uXG5cdFx0fVxuXHR9XG5gYGBcblxuVGhlbiwgbGF0ZXIsIHRoZSBjb2RlIHBlcmZvcm1zIHRoZSBNVFUgYWRqdXN0bWVudCB1c2luZyBgbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpO2AuIFRoZSBmaXggY2hhbmdlcyB0aGlzIE1UVSBhZGp1c3RtZW50IHRvOlxuXG5gYGBjXG5cdFx0XHRpZiAobXR1IFx1MDAzZSA2OCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbilcblx0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWxlbjtcbmBgYFxuXG5DcnVjaWFsbHksIGl0ICphbHNvKiBtb3ZlcyB0aGUgYHVsZW5gIGRlY2xhcmF0aW9uIHRvIHRoZSBvdXRlciBzY29wZSB0byBlbnN1cmUgaXQncyBhbHdheXMgaW5pdGlhbGl6ZWQgYW5kIGNvbnNpZGVyZWQgaW4gdGhlIGNhbGN1bGF0aW9uLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGltcHJvdmluZyB0aGUgYWNjdXJhY3kgb2YgTVRVIGhhbmRsaW5nIGZvciB0aGVzZSB0eXBlcyBvZiBwYWNrZXRzLiBNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgaXBfdnNfaW5faWNtcGAuXG5cbkknbSBtYWtpbmcgc3VyZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgc3ltYm9sIGBpcF92c19pbl9pY21wYCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY2AuIEFzIGV4cGVjdGVkLCB0aGUgY29kZSBpcyB1bmRlciBgSVBfVlNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYElQX1ZTYCBpcyBlbmFibGVkLiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlYCBjb25maXJtcyB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRpZWQganVzdCB0byB0aGUgSUNNUCBzaWRlIG9mIElQVlMsIGp1c3QgdGhlIGdlbmVyYWwgYElQX1ZTYCBjb25maWcuIEV4Y2VsbGVudC4gVGhhdCBjb3ZlcnMgdGhlIGJ1aWxkIHJlcXVpcmVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMjoxNToyMS4wNjA2MzAwNDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzg5MTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTQ9aXBfdnMtZXh0cmFfb2Jqcy0kKENPTkZJR19JUF9WU19ORkNUKSArPSBpcF92c19uZmN0Lm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTUtXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjE2OmlwX3ZzLW9ianMgOj1cXHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cXHQgICBcXFxcXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTE3LVxcdFxcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cXHQgICBcXHRcXHQgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEyOjE1OjIxLjU4ODUzMTYxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE3MzU2MjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBJQ01QIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24sIGZvdW5kIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGluZGljYXRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdGluZyBob3cgSVBWUyBoYW5kbGVzIElDTVAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGluIHRoZSBjYWxjdWxhdGlvbiBvZiBNVFUuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBob3cgYHVsZW5gIGlzIGhhbmRsZWQuIEl0J3Mgbm93IGRlY2xhcmVkIGF0IHRoZSBmdW5jdGlvbidzIG91dGVyIHNjb3BlIGFuZCBpbml0aWFsaXplZCB0byB6ZXJvLiBDcnVjaWFsbHksIHRoaXMgYHVsZW5gIHZhcmlhYmxlIGlzIHRoZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhlIE1UVSBjYWxjdWxhdGlvbjpcblxuYGBgY1xuLVx0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4rXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXG4rXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xuYGBgXG5cblRoaXMgc3VnZ2VzdHMgdGhlIGNvZGUgbm93IGFjY291bnRzIGZvciBwb3RlbnRpYWwgVURQIG9yIEdSRSBoZWFkZXIgbGVuZ3RocyB3aGVuIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHRyYW5zbWl0dGFibGUgdW5pdCBmb3IgSUNNUCBlcnJvciBoYW5kbGluZy4gVGhlIGlzc3VlIHRoZSBwYXRjaCBmaXhlcyBpcyB0aGF0IGB1bGVuYCB3YXMgcHJldmlvdXNseSBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgYmxvY2suXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0LiBMZXQncyBleGFtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBDT05GSUdfSVBfVlNgIGlzIG9idmlvdXNseSB0aGUgcHJpbWFyeSBlbmFibGVyIGZvciBJUFZTLiBXaGlsZSBgQ09ORklHX0lQX1ZTX0lQVjZgIG1pZ2h0IGJlIHJlbGV2YW50IGlmIHRoaXMgd2VyZSBJUHY2LXNwZWNpZmljLCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gKGBpcF92c19pbl9pY21wYCkgaXMgZGVmaW5pdGl2ZWx5IElQdjQsIHNvIElQdjYgY29uY2VybnMgYXJlIHNlY29uZGFyeSBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC4gRnJvbSB3aGF0IEkgcmVjYWxsLCBgaXBfdnNfaW5faWNtcGAgaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2luX2hvb2tgIGFuZCBgaXBfdnNfZm9yd2FyZF9pY21wYC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IHRoZSBwYXRjaCBvbmx5IGFmZmVjdHMgYGlwX3ZzX2luX2ljbXBgLCBhbmQgeWVzLCBpdCdzIHRoZSBvbmx5IGZ1bmN0aW9uIGNoYW5nZWQuXG5cbkdpdmVuIHRoZSBpbXBhY3Qgb24gSUNNUCBwYWNrZXQgaGFuZGxpbmcgYW5kIHRoZSBjaGFuZ2UgaW4gTVRVIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBhIGNyaXRpY2FsIGFzcGVjdCBvZiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgd2FycmFudGVkLiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC5cblxuSSdsbCBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzIHNwZWNpZmljYWxseSBvbiBgaXBfdnNfaW5faWNtcGAsIG1ha2luZyBpdCB0aGUgYEZvY3VzU3ltYm9sc2AuXG5cbkkgd2lsbCBzZXQgdGhlIGBFbmFibGVDb25maWdzYCB0byBgW1wiSVBfVlNcIl1gLCBhcyBpdCdzIGEgcHJlcmVxdWlzaXRlLlxuXG5NeSBgUmVhc29uaW5nYCB3aWxsIGJlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDYsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTI6MTU6MzEuNzYyMDk4NDQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2NDgzNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2luX2ljbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGNhbGN1bGF0aW9uIGxvZ2ljIGZvciBJQ01QIHBhY2tldHMgaW4gSVBWUyBieSBpbmNsdWRpbmcgdGhlIFVEUC9HUkUgaGVhZGVyIGxlbmd0aCAoYHVsZW5gKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgY2FsY3VsYXRpb24gbG9naWMgZm9yIElDTVAgcGFja2V0cyBpbiBJUFZTIGJ5IGluY2x1ZGluZyB0aGUgVURQL0dSRSBoZWFkZXIgbGVuZ3RoIChgdWxlbmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowg8qvf[1] Phase: Succeeded StartedAt: 2026-07-01 12:15:43 +0000 UTC FinishedAt: 2026-07-01 12:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 12:15:43 +0000 UTC FinishedAt: 2026-07-01 12:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2] Phase: Succeeded StartedAt: 2026-07-01 12:15:43 +0000 UTC FinishedAt: 2026-07-01 16:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:15:43 +0000 UTC FinishedAt: 2026-07-01 16:22:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:15:43 +0000 UTC FinishedAt: 2026-07-01 12:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:15:43 +0000 UTC FinishedAt: 2026-07-01 12:16:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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-workflowg8qvf/series-workflowg8qvf-convert-artifact-1988603465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:16:38 +0000 UTC FinishedAt: 2026-07-01 12:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:16:38 +0000 UTC FinishedAt: 2026-07-01 12:45:47 +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:*04767092-7612-4bc4-9f95-2f7bc08a72db,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-workflowg8qvf/series-workflowg8qvf-convert-artifact-1988603465/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": "0bcfbb2a-5df4-4854-8a1d-4a7e962966ee", "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-workflowg8qvf/series-workflowg8qvf-build-action-3582536999/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:16:38 +0000 UTC FinishedAt: 2026-07-01 12:45:37 +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:*04767092-7612-4bc4-9f95-2f7bc08a72db,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-workflowg8qvf/series-workflowg8qvf-convert-artifact-1988603465/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": "0bcfbb2a-5df4-4854-8a1d-4a7e962966ee", "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-workflowg8qvf/series-workflowg8qvf-build-action-3582536999/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:45:47 +0000 UTC FinishedAt: 2026-07-01 12:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:45:47 +0000 UTC FinishedAt: 2026-07-01 12:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:45:47 +0000 UTC FinishedAt: 2026-07-01 12:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:45:47 +0000 UTC FinishedAt: 2026-07-01 12:45:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-workflowg8qvf/series-workflowg8qvf-convert-artifact-879892060/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:46:07 +0000 UTC FinishedAt: 2026-07-01 12:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:46:07 +0000 UTC FinishedAt: 2026-07-01 12:48:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0bcfbb2a-5df4-4854-8a1d-4a7e962966ee,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-workflowg8qvf/series-workflowg8qvf-build-action-3582536999/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-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:48:12 +0000 UTC FinishedAt: 2026-07-01 12:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:48:12 +0000 UTC FinishedAt: 2026-07-01 12:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:48:12 +0000 UTC FinishedAt: 2026-07-01 13:18:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:48:12 +0000 UTC FinishedAt: 2026-07-01 13:18:56 +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:*04767092-7612-4bc4-9f95-2f7bc08a72db,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-workflowg8qvf/series-workflowg8qvf-convert-artifact-879892060/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": "22babb13-3f47-4d8a-ba6a-c02253665af1", "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-workflowg8qvf/series-workflowg8qvf-build-action-1192811192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 12:48:12 +0000 UTC FinishedAt: 2026-07-01 13:18:10 +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:*04767092-7612-4bc4-9f95-2f7bc08a72db,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-workflowg8qvf/series-workflowg8qvf-convert-artifact-879892060/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": "22babb13-3f47-4d8a-ba6a-c02253665af1", "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-workflowg8qvf/series-workflowg8qvf-build-action-1192811192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:18:56 +0000 UTC FinishedAt: 2026-07-01 13:18:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:18:56 +0000 UTC FinishedAt: 2026-07-01 13:18:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:18:56 +0000 UTC FinishedAt: 2026-07-01 13:21:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:18:56 +0000 UTC FinishedAt: 2026-07-01 13:21:01 +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:*22babb13-3f47-4d8a-ba6a-c02253665af1,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-workflowg8qvf/series-workflowg8qvf-build-action-1192811192/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-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 16:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 16:22:53 +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":["ip_vs_in_icmp"],"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:*0bcfbb2a-5df4-4854-8a1d-4a7e962966ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*22babb13-3f47-4d8a-ba6a-c02253665af1,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-workflowg8qvf/series-workflowg8qvf-build-action-3582536999/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-workflowg8qvf/series-workflowg8qvf-build-action-1192811192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 13:21:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 13:21:19 +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":["ip_vs_in_icmp"],"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-workflowg8qvf/series-workflowg8qvf-convert-artifact-3429438757/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 13:21:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 13:21:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:10 +0000 UTC FinishedAt: 2026-07-01 13:21:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:30 +0000 UTC FinishedAt: 2026-07-01 16:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8qvf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"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":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"a3eae175-662c-46d6-9074-33095baa5e1c","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-01 13:21:30 +0000 UTC FinishedAt: 2026-07-01 16:22:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0bcfbb2a-5df4-4854-8a1d-4a7e962966ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*22babb13-3f47-4d8a-ba6a-c02253665af1,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-workflowg8qvf/series-workflowg8qvf-build-action-3582536999/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-workflowg8qvf/series-workflowg8qvf-build-action-1192811192/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-workflowg8qvf/series-workflowg8qvf-convert-artifact-3429438757/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,}