Name: series-workflowsmgsc Phase: Succeeded StartedAt: 2026-07-10 10:50:51 +0000 UTC FinishedAt: 2026-07-10 15:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[0] Phase: Succeeded StartedAt: 2026-07-10 10:50:51 +0000 UTC FinishedAt: 2026-07-10 11:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 10:50:51 +0000 UTC FinishedAt: 2026-07-10 11:18:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "30832730-1564-4d4f-a7f6-9f68336ac4ae" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_init_orphan_info" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2luaXRfb3JwaGFuX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgaGVhZCBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGV4dDRfaW5pdF9vcnBoYW5faW5mbygpIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiBJZiBhbiBvcnBoYW4gYmxvY2sgaGFzIGEgYmFkIG1hZ2ljIG51bWJlciBvciBjaGVja3N1bSwgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJ1ZmZlciBoZWFkIGZvciB0aGF0IGJsb2NrIHdhcyBsZWFrZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbW91bnRpbmcgYSBjb3JydXB0ZWQgZXh0NCBpbWFnZSB3aXRoIHRoZSBvcnBoYW5fZmlsZSBmZWF0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDZmMGZiYTJhZGEzYTYxMDYxNWM0ZDA5MDZkZWM0MmNhNDY4ODliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDExOjE3OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jXG5pbmRleCA2NGVhNDc2MjQyMzM4Ni4uNzA5NWJhMTU2NGY2NWUgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L29ycGhhbi5jXG5AQCAtNTcyLDYgJiM0Mzs1NzIsNyBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRpbnQgaSwgajtcbiBcdGludCByZXQ7XG4gXHRpbnQgZnJlZTtcbiYjNDM7XHRpbnQgbG9hZGVkID0gMDtcbiBcdF9fbGUzMiAqYmRhdGE7XG4gXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwgKm90O1xuQEAgLTYxMyw2ICYjNDM7NjE0LDcgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuIFx0XHRcdHJldCA9IC1FSU87XG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcdFx0fVxuJiM0MztcdFx0bG9hZGVkJiM0MzsmIzQzOztcbiBcdFx0b3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4gXHRcdGlmIChsZTMyX3RvX2NwdShvdC1cdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcbiBcdFx0XHRleHQ0X2Vycm9yKHNiLCBcJiMzNDtvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIG1hZ2ljXCYjMzQ7LCBpKTtcbkBAIC02MzUsOCAmIzQzOzYzNywxMCBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRpcHV0KGlub2RlKTtcbiBcdHJldHVybiAwO1xuIG91dF9mcmVlOlxuLVx0Zm9yIChpLS07IGkgXHUwMDNlPSAwOyBpLS0pXG4tXHRcdGJyZWxzZShvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4mIzQzO1x0d2hpbGUgKGxvYWRlZCBcdTAwM2UgMCkge1xuJiM0MztcdFx0bG9hZGVkLS07XG4mIzQzO1x0XHRicmVsc2Uob2ktXHUwMDNlb2ZfYmluZm9bbG9hZGVkXS5vYl9iaCk7XG4mIzQzO1x0fVxuIFx0a3ZmcmVlKG9pLVx1MDAzZW9mX2JpbmZvKTtcbiBvdXRfcHV0OlxuIFx0aXB1dChpbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfaW5pdF9vcnBoYW5faW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBoZWFkIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgZXh0NF9pbml0X29ycGhhbl9pbmZvKCkgZHVyaW5nIGZpbGVzeXN0ZW0gbW91bnQuIElmIGFuIG9ycGhhbiBibG9jayBoYXMgYSBiYWQgbWFnaWMgbnVtYmVyIG9yIGNoZWNrc3VtLCB0aGUgcHJldmlvdXNseSBsb2FkZWQgYnVmZmVyIGhlYWQgZm9yIHRoYXQgYmxvY2sgd2FzIGxlYWtlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIG1lbW9yeSBsZWFrIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBtb3VudGluZyBhIGNvcnJ1cHRlZCBleHQ0IGltYWdlIHdpdGggdGhlIG9ycGhhbl9maWxlIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA2ZjBmYmEyYWRhM2E2MTA2MTVjNGQwOTA2ZGVjNDJjYTQ2ODg5YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxMToxNzoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jCmluZGV4IDY0ZWE0NzYyNDIzMzg2Li43MDk1YmExNTY0ZjY1ZSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9vcnBoYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L29ycGhhbi5jCkBAIC01NzIsNiAmIzQzOzU3Miw3IEBAIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAlpbnQgaSwgajsKIAlpbnQgcmV0OwogCWludCBmcmVlOwomIzQzOwlpbnQgbG9hZGVkID0gMDsKIAlfX2xlMzIgKmJkYXRhOwogCWludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7CiAJc3RydWN0IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwgKm90OwpAQCAtNjEzLDYgJiM0Mzs2MTQsNyBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJCQlyZXQgPSAtRUlPOwogCQkJZ290byBvdXRfZnJlZTsKIAkJfQomIzQzOwkJbG9hZGVkJiM0MzsmIzQzOzsKIAkJb3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS0mZ3Q7b2ZfYmluZm9baV0ub2JfYmgpOwogCQlpZiAobGUzMl90b19jcHUob3QtJmd0O29iX21hZ2ljKSAhPSBFWFQ0X09SUEhBTl9CTE9DS19NQUdJQykgewogCQkJZXh0NF9lcnJvcihzYiwgJiMzNDtvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIG1hZ2ljJiMzNDssIGkpOwpAQCAtNjM1LDggJiM0Mzs2MzcsMTAgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCWlwdXQoaW5vZGUpOwogCXJldHVybiAwOwogb3V0X2ZyZWU6Ci0JZm9yIChpLS07IGkgJmd0Oz0gMDsgaS0tKQotCQlicmVsc2Uob2ktJmd0O29mX2JpbmZvW2ldLm9iX2JoKTsKJiM0MzsJd2hpbGUgKGxvYWRlZCAmZ3Q7IDApIHsKJiM0MzsJCWxvYWRlZC0tOwomIzQzOwkJYnJlbHNlKG9pLSZndDtvZl9iaW5mb1tsb2FkZWRdLm9iX2JoKTsKJiM0MzsJfQogCWt2ZnJlZShvaS0mZ3Q7b2ZfYmluZm8pOwogb3V0X3B1dDoKIAlpcHV0KGlub2RlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBmcy9leHQ0L29ycGhhbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gLiBUaGV5JiMzOTt2ZSBhZGRlZCB0aGlzIGBsb2FkZWRgIHZhcmlhYmxlLCB3aGljaCBpcyBpbW1lZGlhdGVseSBhIGdvb2Qgc2lnbi4gSXQmIzM5O3MgZGVzaWduZWQgdG8gdHJhY2sgaG93IG1hbnkgb3JwaGFuIGJsb2NrcyB3ZSYjMzk7dmUgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBtdWNoIG1vcmUgcm9idXN0IHdheSB0byBoYW5kbGUgZXJyb3IgY2FzZXMgYW5kIGVuc3VyZXMgd2UgcmVsZWFzZSBldmVyeXRoaW5nIGNvcnJlY3RseS4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7V2h5IHRoZSBjaGFuZ2U/IFdoYXQgd2FzIHRoZSBwcm9ibGVtIHdpdGggdGhlIG9yaWdpbmFsIGxvb3A/JiMzNDsgVGhlbiBJIHJlLXJlYWQgdGhlIGNvZGUgYW5kIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGZvciAoaS0tOyBpICZndDs9IDA7IGktLSkgYnJlbHNlKG9pLSZndDtvZl9iaW5mb1tpXS5vYl9iaCk7YC4gVGhhdOKAmXMgcmlnaHQsIGl0IHdhcyBkZWNyZW1lbnRpbmcgYGlgICpiZWZvcmUqIHRoZSBsb29wIGV4ZWN1dGVkLCB3aGljaCBpcyBqdXN04oCmIHdyb25nLiBJdCBsb29rZWQgbGlrZSB0aGUgaW50ZW50aW9uIHdhcyB0byBmcmVlIGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyLiBTbyB0aGUgZGVjcmVtZW50IHdhcyBoYXBwZW5pbmcgKmJlZm9yZSogdGhlIGNoZWNrIGFnYWluc3QgYGlgLiBUaGUgb3JpZ2luYWwgY29kZSBhc3N1bWVkIGlmIHNvbWV0aGluZyBmYWlsZWQgbWlkd2F5IHRocm91Z2ggdGhlIGxvb3AsIGBpYCB3b3VsZCBwb2ludCB0byB0aGUgbGFzdCAqc3VjY2Vzc2Z1bGx5KiBsb2FkZWQgYmxvY2ssIHdoaWNoIGlzbiYjMzk7dCBndWFyYW50ZWVkLgoKVGhlIG5ldyBsb29wIGlzIG11Y2ggY2xlYW5lci4gSSBzZWUgdGhhdCBpdCBpdGVyYXRlcyB1cCB0byBgb2ktJmd0O29mX2Jsb2Nrc2AuIGBleHQ0X2JyZWFkYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBsb29wLCBhbmQgdGhlIGluZGV4IGBpYCBjbGVhcmx5IGNvcnJlc3BvbmRzIHRvIHRoZSBibG9jayB3ZSYjMzk7cmUgdHJ5aW5nIHRvIGxvYWQuIEFoLCBJIGdldCBpdCBub3cuIElmIGBleHQ0X2JyZWFkYCBmYWlscywgYGlgIGlzIHRoZSBpbmRleCBvZiB0aGUgKmZhaWxlZCogYmxvY2suIFNvIHByZXZpb3VzbHksIGRlY3JlbWVudGluZyBgaWAgd291bGQgbGVhZCB0byB0aGUgbG9vcCBmcmVlaW5nIGJsb2NrIGBpLTFgIGFsbCB0aGUgd2F5IGRvd24uIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgc2tpcHBpbmcgdGhlIGNvcnJlY3QgYmxvY2sgYW5kIGZyZWVpbmcgdGhlIHdyb25nIG9uZXMuCgpCdXQgSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBhYm91dCBvdGhlciBmYWlsdXJlIHNjZW5hcmlvcywgdG9vLiBJZiBgZXh0NF9icmVhZGAgc3VjY2VlZHMsIGFuZCAqc29tZXRoaW5nIGVsc2UqIGZhaWxzIHdpdGhpbiB0aGF0IGxvb3AsIHRoZSBvbGQgY29kZSB3b3VsZCByZWxlYXNlIHRoZSB3cm9uZyBibG9ja3MsIG9yIGF0IGxlYXN0IG9uZSBsZXNzIHRoYW4gaXQgc2hvdWxkLiBOb3csIHdpdGggdGhlIGBsb2FkZWRgIGNvdW50ZXIsIHdlIGhhdmUgYSBjbGVhciByZWNvcmQgb2Ygd2hhdCYjMzk7cyBiZWVuIGxvYWRlZC4gVGhhdCYjMzk7cyAqbXVjaCogYmV0dGVyLiBJdCBtZWFucyB3ZSByZWxlYXNlICpvbmx5KiB0aGUgYmxvY2tzIHRoYXQgd2VyZSBzdWNjZXNzZnVsbHkgbG9hZGVkIHVwIHRvIHRoYXQgcG9pbnQuIFRoZSBgbG9hZGVkYCB2YXJpYWJsZSBpcyBnb2luZyB0byBnaXZlIHVzIGEgbXVjaCBtb3JlIHByZWNpc2UgY2xlYW4tdXAgaW4gdGhvc2UgZXJyb3IgcGF0aHMuIEkgbmVlZCB0byBrZWVwIHJlYWRpbmcgdGhlIHJlc3Qgb2YgYGV4dDRfaW5pdF9vcnBoYW5faW5mb2AgdG8gbWFrZSBzdXJlIGl0IGlzIHJlYWxseSBiZWluZyB1c2VkIGFuZCB0aGVyZSBhcmUgbm8gbmV3IHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L29ycGhhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTcwOlx0XHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyAqb2kgPSBcdTAwMjZFWFQ0X1NCKHNiKS1cdTAwM2VzX29ycGhhbl9pbmZvO1xuIDU3MTpcdFx0c3RydWN0IGlub2RlICppbm9kZTtcbiA1NzI6XHRcdGludCBpLCBqO1xuIDU3MzpcdFx0aW50IHJldDtcbiA1NzQ6XHRcdGludCBmcmVlO1xuIDU3NTpcdFx0aW50IGxvYWRlZCA9IDA7XG4gNTc2Olx0XHRfX2xlMzIgKmJkYXRhO1xuIDU3NzpcdFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcbiA1Nzg6XHRcdHN0cnVjdCBleHQ0X29ycGhhbl9ibG9ja190YWlsICpvdDtcbiA1Nzk6XHRcdGlub190IG9ycGhhbl9pbm8gPSBsZTMyX3RvX2NwdShFWFQ0X1NCKHNiKS1cdTAwM2VzX2VzLVx1MDAzZXNfb3JwaGFuX2ZpbGVfaW51bSk7XG4gNTgwOlx0XG4gNTgxOlx0XHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxuIDU4MjpcdFx0XHRyZXR1cm4gMDtcbiA1ODM6XHRcbiA1ODQ6XHRcdGlub2RlID0gZXh0NF9pZ2V0KHNiLCBvcnBoYW5faW5vLCBFWFQ0X0lHRVRfU1BFQ0lBTCk7XG4gNTg1Olx0XHRpZiAoSVNfRVJSKGlub2RlKSkge1xuIDU4NjpcdFx0XHRleHQ0X21zZyhzYiwgS0VSTl9FUlIsIFwmIzM0O2dldCBvcnBoYW4gaW5vZGUgZmFpbGVkXCYjMzQ7KTtcbiA1ODc6XHRcdFx0cmV0dXJuIFBUUl9FUlIoaW5vZGUpO1xuIDU4ODpcdFx0fVxuIDU4OTpcdFx0LypcbiA1OTA6XHRcdCAqIFRoaXMgaXMganVzdCBhbiBhcnRpZmljaWFsIGxpbWl0IHRvIHByZXZlbnQgY29ycnVwdGVkIGZzIGZyb21cbiA1OTE6XHRcdCAqIGNvbnN1bWluZyBhYnN1cmQgYW1vdW50cyBvZiBtZW1vcnkgd2hlbiBwaW5uaW5nIGJsb2NrcyBvZiBvcnBoYW5cbiA1OTI6XHRcdCAqIGZpbGUgaW4gbWVtb3J5LlxuIDU5MzpcdFx0ICovXG4gNTk0Olx0XHRpZiAoaW5vZGUtXHUwMDNlaV9zaXplIFx1MDAzZSAoRVhUNF9NQVhfT1JQSEFOX0ZJTEVfQkxPQ0tTIFx1MDAzY1x1MDAzYyBpbm9kZS1cdTAwM2VpX2Jsa2JpdHMpKSB7XG4gNTk1Olx0XHRcdGV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgXCYjMzQ7b3JwaGFuIGZpbGUgdG9vIGJpZzogJWxsdVwmIzM0OyxcbiA1OTY6XHRcdFx0XHQgKHVuc2lnbmVkIGxvbmcgbG9uZylpbm9kZS1cdTAwM2VpX3NpemUpO1xuIDU5NzpcdFx0XHRyZXQgPSAtRUZTQ09SUlVQVEVEO1xuIDU5ODpcdFx0XHRnb3RvIG91dF9wdXQ7XG4gNTk5Olx0XHR9XG4gNjAwOlx0XHRvaS1cdTAwM2VvZl9ibG9ja3MgPSBpbm9kZS1cdTAwM2VpX3NpemUgXHUwMDNlXHUwMDNlIHNiLVx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XG4gNjAxOlx0XHRvaS1cdTAwM2VvZl9jc3VtX3NlZWQgPSBFWFQ0X0koaW5vZGUpLVx1MDAzZWlfY3N1bV9zZWVkO1xuIDYwMjpcdFx0b2ktXHUwMDNlb2ZfYmluZm8gPSBrdm1hbGxvY19vYmpzKHN0cnVjdCBleHQ0X29ycGhhbl9ibG9jaywgb2ktXHUwMDNlb2ZfYmxvY2tzKTtcbiA2MDM6XHRcdGlmICghb2ktXHUwMDNlb2ZfYmluZm8pIHtcbiA2MDQ6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA2MDU6XHRcdFx0Z290byBvdXRfcHV0O1xuIDYwNjpcdFx0fVxuIDYwNzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb2ktXHUwMDNlb2ZfYmxvY2tzOyBpJiM0MzsmIzQzOykge1xuIDYwODpcdFx0XHRvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCA9IGV4dDRfYnJlYWQoTlVMTCwgaW5vZGUsIGksIDApO1xuIDYwOTpcdFx0XHRpZiAoSVNfRVJSKG9pLVx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKSkge1xuIDYxMDpcdFx0XHRcdHJldCA9IFBUUl9FUlIob2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO1xuIDYxMTpcdFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gNjEyOlx0XHRcdH1cbiA2MTM6XHRcdFx0aWYgKCFvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCkge1xuIDYxNDpcdFx0XHRcdHJldCA9IC1FSU87XG4gNjE1Olx0XHRcdFx0Z290byBvdXRfZnJlZTtcbiA2MTY6XHRcdFx0fVxuIDYxNzpcdFx0XHRsb2FkZWQmIzQzOyYjNDM7O1xuIDYxODpcdFx0XHRvdCA9IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwoc2IsIG9pLVx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKTtcbiA2MTk6XHRcdFx0aWYgKGxlMzJfdG9fY3B1KG90LVx1MDAzZW9iX21hZ2ljKSAhPSBFWFQ0X09SUEhBTl9CTE9DS19NQUdJQykge1xuIDYyMDpcdFx0XHRcdGV4dDRfZXJyb3Ioc2IsIFwmIzM0O29ycGhhbiBmaWxlIGJsb2NrICVkOiBiYWQgbWFnaWNcJiMzNDssIGkpO1xuIDYyMTpcdFx0XHRcdHJldCA9IC1FSU87XG4gNjIyOlx0XHRcdFx0Z290byBvdXRfZnJlZTtcbiA2MjM6XHRcdFx0fVxuIDYyNDpcdFx0XHRpZiAoIWV4dDRfb3JwaGFuX2ZpbGVfYmxvY2tfY3N1bV92ZXJpZnkoc2IsXG4gNjI1Olx0XHRcdFx0XHRcdFx0b2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpKSB7XG4gNjI2Olx0XHRcdFx0ZXh0NF9lcnJvcihzYiwgXCYjMzQ7b3JwaGFuIGZpbGUgYmxvY2sgJWQ6IGJhZCBjaGVja3N1bVwmIzM0OywgaSk7XG4gNjI3Olx0XHRcdFx0cmV0ID0gLUVJTztcbiA2Mjg6XHRcdFx0XHRnb3RvIG91dF9mcmVlO1xuIDYyOTpcdFx0XHR9XG4gNjMwOlx0XHRcdGJkYXRhID0gKF9fbGUzMiAqKShvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaC1cdTAwM2ViX2RhdGEpO1xuIDYzMTpcdFx0XHRmcmVlID0gMDtcbiA2MzI6XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5vZGVzX3Blcl9vYjsgaiYjNDM7JiM0MzspXG4gNjMzOlx0XHRcdFx0aWYgKGJkYXRhW2pdID09IDApXG4gNjM0Olx0XHRcdFx0XHRmcmVlJiM0MzsmIzQzOztcbiA2MzU6XHRcdFx0YXRvbWljX3NldChcdTAwMjZvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9mcmVlX2VudHJpZXMsIGZyZWUpO1xuIDYzNjpcdFx0fVxuIDYzNzpcdFx0aXB1dChpbm9kZSk7XG4gNjM4Olx0XHRyZXR1cm4gMDtcbiA2Mzk6XHRvdXRfZnJlZTpcbiA2NDA6XHRcdHdoaWxlIChsb2FkZWQgXHUwMDNlIDApIHtcbiA2NDE6XHRcdFx0bG9hZGVkLS07XG4gNjQyOlx0XHRcdGJyZWxzZShvaS1cdTAwM2VvZl9iaW5mb1tsb2FkZWRdLm9iX2JoKTtcbiA2NDM6XHRcdH1cbiA2NDQ6XHRcdGt2ZnJlZShvaS1cdTAwM2VvZl9iaW5mbyk7XG4gNjQ1Olx0b3V0X3B1dDpcbiA2NDY6XHRcdGlwdXQoaW5vZGUpO1xuIDY0NzpcdFx0cmV0dXJuIHJldDtcbiA2NDg6XHR9XG4gNjQ5Olx0XG4gNjUwOlx0aW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiA2NTE6XHR7XG4gNjUyOlx0XHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyAqb2kgPSBcdTAwMjZFWFQ0X1NCKHNiKS1cdTAwM2VzX29ycGhhbl9pbmZvO1xuIDY1MzpcdFx0aW50IGk7XG4gNjU0Olx0XHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xuIDY1NTpcdFxuIDY1NjpcdFx0aWYgKCFleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9maWxlKHNiKSlcbiA2NTc6XHRcdFx0cmV0dXJuIDE7XG4gNjU4Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBvaS1cdTAwM2VvZl9ibG9ja3M7IGkmIzQzOyYjNDM7KVxuIDY1OTpcdFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2b2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfZnJlZV9lbnRyaWVzKSAhPVxuIDY2MDpcdFx0XHQgICAgaW5vZGVzX3Blcl9vYilcbiA2NjE6XHRcdFx0XHRyZXR1cm4gMDtcbiA2NjI6XHRcdHJldHVybiAxO1xuIDY2MzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjczCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBNZW1vcnkgTGVhayBpbiBleHQ0IE9ycGhhbiBCbG9jayBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbGAgY2hlY2ssIGFuZCBJIHRoaW5rIEkmIzM5O3ZlIHNwb3R0ZWQgYSBwcm9ibGVtLiBJZiBgZXh0NF9icmVhZGAgZmFpbHMsIHRoZSBsb29wIGNvcnJlY3RseSByZWxlYXNlcyB0aGUgYmxvY2tzIHRoYXQgd2VyZSBzdWNjZXNzZnVsbHkgcmVhZCwgc3RhcnRpbmcgZnJvbSBgaS0xYCBkb3duIHRvIDAuIEJ1dCwgd2hhdCBpZiB0aGUgbWFnaWMgbnVtYmVyIGNoZWNrIHdpdGhpbiBgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbGAgZmFpbHM/CgpTcGVjaWZpY2FsbHksIGlmIHRoZSBtYWdpYyBjaGVjayBgaWYgKGxlMzJfdG9fY3B1KG90LSZndDtvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpYCBmYWlscywgaXQgbWVhbnMgdGhlcmUmIzM5O3MgYSBwcm9ibGVtIHdpdGggYSBibG9jayByZWFkIGJ5IGBleHQ0X2JyZWFkYC4gVGhlIGltcG9ydGFudCBkZXRhaWwgaXMgdGhhdCBgaWAgKmlzKiB0aGUgaW5kZXggb2YgdGhlIGJsb2NrIHRoYXQgd2FzIHN1Y2Nlc3NmdWxseSByZWFkICpiZWZvcmUqIHRoZSBjaGVjayBmYWlsZWQuCgpUaGVuLCB0aGUgbG9vcCBwcm9jZWVkcyB0byBgZm9yIChpLS07IGkgJmd0Oz0gMDsgaS0tKWAuIFNlZSwgYmVjYXVzZSBvZiB0aGUgcHJlLWRlY3JlbWVudCBgaS0tYCwgdGhlIGNvZGUgc2tpcHMgcmVsZWFzaW5nIHRoZSBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIGluZGV4IGBpYC4gSXQgaXRlcmF0ZXMgZnJvbSBgaS0xYCBkb3duLiBUaGF0IGBvaS0mZ3Q7b2ZfYmluZm9baV0ub2JfYmhgIGJsb2NrLCB0aGUgb25lIHRoYXQgdHJpZ2dlcmVkIHRoZSBlcnJvciwgaXMgZWZmZWN0aXZlbHkgbGVha2VkISBUaGF0JiMzOTtzIGEgYnVmZmVyIGhlYWQgbGVhay4gSXQmIzM5O3MgYSBzdWJ0bGUgYnV0IHNpZ25pZmljYW50IGlzc3VlLgoKVGhpcyBpcyBhIGNsZWFyIG1lbW9yeSBsZWFrIG9uIGFuIGVycm9yIHBhdGggd2l0aGluIHRoZSBvcnBoYW4gaGFuZGxpbmcgY29kZS4gVGhpcyAqZGVmaW5pdGVseSogd2FycmFudHMgc29tZSBmdXp6aW5nIGFuZCBmdXJ0aGVyIHRlc3RpbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gcmVsaWFibHkgdHJpZ2dlciBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCB0byBwdXQgdGhpcyB1bmRlciB0aGUgbWljcm9zY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X2luaXRfb3JwaGFuX2luZm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9Mzk2Nz1leHRlcm4gdm9pZCBleHQ0X3JlbGVhc2Vfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG5mcy9leHQ0L2V4dDQuaDozOTY4OmV4dGVybiBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xuZnMvZXh0NC9leHQ0LmgtMzk2OS1leHRlcm4gaW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG4tLVxuZnMvZXh0NC9vcnBoYW4uYz01NTA9dm9pZCBleHQ0X29ycGhhbl9maWxlX2Jsb2NrX3RyaWdnZXIoc3RydWN0IGpiZDJfYnVmZmVyX3RyaWdnZXJfdHlwZSAqdHJpZ2dlcnMsXG4tLVxuZnMvZXh0NC9vcnBoYW4uYy01NjctXG5mcy9leHQ0L29ycGhhbi5jOjU2ODppbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L29ycGhhbi5jLTU2OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUzMzg9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU2ODUtXG5mcy9leHQ0L3N1cGVyLmM6NTY4NjpcdGVyciA9IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTY4Ny1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT3JwaGFuIEZpbGUgRmVhdHVyZSBEdXJpbmcgTW91bnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gYF9fZXh0NF9maWxsX3N1cGVyYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGhhcHBlbmluZyBkdXJpbmcgdGhlIG1vdW50IHByb2Nlc3Mg4oCTIGdvb2QgdG8ga25vdy4gVGhlIGtleSBwaWVjZSBzZWVtcyB0byBiZSB0aGlzIGZ1bmN0aW9uOiBgZXh0NF9oYXNfZmVhdHVyZV9vcnBoYW5fZmlsZShzYilgLiBUaGF0IGluZGljYXRlcyBpdCYjMzk7cyBjaGVja2luZyBmb3IgdGhlIGV4aXN0ZW5jZSBhbmQvb3IgZW5hYmxpbmcgb2YgYSByZWxhdGl2ZWx5IG5ldyBmZWF0dXJlLCB0aGUgJiMzOTtvcnBoYW5fZmlsZSYjMzk7IGZlYXR1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgb3IgY29uZmlndXJlcyBpdC4KClNpbmNlIEkgYW0gYWxyZWFkeSBsb29raW5nIGF0IHRoZSBleHQ0IGZpbGVzeXN0ZW0sIEkmIzM5O2xsIGZpcnN0IGNoZWNrIHRoZSBiYXNpYyBFWFQ0X0ZTIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIGl0JiMzOTtzIGdlbmVyYWxseSBlbmFibGVkLiBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55ICpzcGVjaWZpYyogY29uZmlndXJhdGlvbiBrbm9iLCBsaWtlIGEgY29tcGlsZS10aW1lIG9wdGlvbiBvciBhIG1vdW50IG9wdGlvbiwgZGlyZWN0bHkgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBgb3JwaGFuX2ZpbGVgIGZlYXR1cmU/IFRoYXQmIzM5O3MgdGhlIG5leHQgYXZlbnVlIEkgbmVlZCB0byBleHBsb3JlLiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvcnBoYW5fZmlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4dDQgSW5pdGlhbGl6YXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBleHQ0LCBhbmQgaXQgc2VlbXMgdGhlcmUmIzM5O3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGRlZmluZWQgaW4gdGhlIG1haW4gYEtjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgZmluZTsgYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBCdXQgd2FpdCBhIG1pbnV0ZeKApkkmIzM5O20gcmVtZW1iZXJpbmcgdGhhdCBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBkZWZpbmVkIGluIGBmcy9leHQ0L29ycGhhbi5jYCwgcmlnaHQ/IEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIHNob3VsZCByZWFsbHkgZG91YmxlLWNoZWNrIHRoZSBgZnMvZXh0NC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggaXQgdG8gbWFrZSBjZXJ0YWluIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRVhUNF9GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNTpcdFx0c2VsZWN0IEpCRDJcbiAgIDY6XHRcdHNlbGVjdCBDUkMxNlxuICAgNzpcdFx0c2VsZWN0IENSQzMyXG4gICA4Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDk6XHRcdHNlbGVjdCBGU19FTkNSWVBUSU9OX0FMR1MgaWYgRlNfRU5DUllQVElPTlxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgdGhlIGV4dDMgZmlsZXN5c3RlbS5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVW5saWtlIHRoZSBjaGFuZ2UgZnJvbSBleHQyIGZpbGVzeXN0ZW0gdG8gZXh0MyBmaWxlc3lzdGVtLFxuICAxNDpcdFx0ICB0aGUgb24tZGlzayBmb3JtYXQgb2YgZXh0NCBpcyBub3QgZm9yd2FyZHMgY29tcGF0aWJsZSB3aXRoXG4gIDE1Olx0XHQgIGV4dDM7IGl0IGlzIGJhc2VkIG9uIGV4dGVudCBtYXBzIGFuZCBpdCBzdXBwb3J0cyA0OC1iaXRcbiAgMTY6XHRcdCAgcGh5c2ljYWwgYmxvY2sgbnVtYmVycy4gIFRoZSBleHQ0IGZpbGVzeXN0ZW0gYWxzbyBzdXBwb3J0cyBkZWxheWVkXG4gIDE3Olx0XHQgIGFsbG9jYXRpb24sIHBlcnNpc3RlbnQgcHJlYWxsb2NhdGlvbiwgaGlnaCByZXNvbHV0aW9uIHRpbWUgc3RhbXBzLFxuICAxODpcdFx0ICBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgZmVhdHVyZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgc3BlZWRcbiAgMTk6XHRcdCAgdXAgZnNjayB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIHdlYiBwYWdlcyBhdFxuICAyMDpcdFx0ICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFRoZSBleHQ0IGZpbGVzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgYW4gZXh0MyBmaWxlc3lzdGVtOyB3aGlsZSB0aGVyZVxuICAyMzpcdFx0ICBhcmUgc29tZSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kIGlub2RlXG4gIDI0Olx0XHQgIHRhYmxlIHJlYWRhaGVhZCwgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZ2FpbnMgcmVxdWlyZSBlbmFibGluZyBleHQ0XG4gIDI1Olx0XHQgIGZlYXR1cmVzIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHR1bmUyZnMsIG9yIGZvcm1hdHRpbmcgYSBuZXdcbiAgMjY6XHRcdCAgZmlsZXN5c3RlbSBhcyBhbiBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGx5LiBXaXRob3V0IGV4cGxpY2l0IGVuYWJsaW5nXG4gIDI3Olx0XHQgIG9mIGV4dDQgZmVhdHVyZXMsIHRoZSBvbiBkaXNrIGZpbGVzeXN0ZW0gZm9ybWF0IHN0YXlzIGZ1bGx5IGJhY2t3YXJkXG4gIDI4Olx0XHQgIGNvbXBhdGlibGUuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGVcbiAgMzE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGV4dDQuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4gIDM2Olx0XHRib29sIFwmIzM0O1VzZSBleHQ0IGZvciBleHQyIGZpbGUgc3lzdGVtc1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXG4gIDM4Olx0XHRkZXBlbmRzIG9uIEVYVDJfRlM9blxuICAzOTpcdFx0ZGVmYXVsdCB5XG4gIDQwOlx0XHRoZWxwXG4gIDQxOlx0XHQgIEFsbG93IHRoZSBleHQ0IGZpbGUgc3lzdGVtIGRyaXZlciBjb2RlIHRvIGJlIHVzZWQgZm9yIGV4dDJcbiAgNDI6XHRcdCAgZmlsZSBzeXN0ZW0gbW91bnRzLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gcmVkdWNlIHRoZWlyXG4gIDQzOlx0XHQgIGNvbXBpbGVkIGtlcm5lbCBzaXplIGJ5IHVzaW5nIG9uZSBmaWxlIHN5c3RlbSBkcml2ZXIgZm9yXG4gIDQ0Olx0XHQgIGV4dDIsIGV4dDMsIGFuZCBleHQ0IGZpbGUgc3lzdGVtcy5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcbiAgNDc6XHRcdGJvb2wgXCYjMzQ7RXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICA0ODpcdFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXG4gIDQ5Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IHBlcm1pc3Npb25zIGZvciB1c2VycyBhbmRcbiAgNTI6XHRcdCAgZ3JvdXBzIGJleW9uZCB0aGUgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxuICA1MzpcdFxuICA1NDpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcbiAgNTc6XHRcdGJvb2wgXCYjMzQ7RXh0NCBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbiAgNTg6XHRcdGRlcGVuZHMgb24gRVhUNF9GU1xuICA1OTpcdFx0aGVscFxuICA2MDpcdFx0ICBTZWN1cml0eSBsYWJlbHMgc3VwcG9ydCBhbHRlcm5hdGl2ZSBhY2Nlc3MgY29udHJvbCBtb2RlbHNcbiAgNjE6XHRcdCAgaW1wbGVtZW50ZWQgYnkgc2VjdXJpdHkgbW9kdWxlcyBsaWtlIFNFTGludXguICBUaGlzIG9wdGlvblxuICA2MjpcdFx0ICBlbmFibGVzIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBoYW5kbGVyIGZvciBmaWxlIHNlY3VyaXR5XG4gIDYzOlx0XHQgIGxhYmVscyBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLlxuICA2NDpcdFxuICA2NTpcdFx0ICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHNlY3VyaXR5IG1vZHVsZSB0aGF0IHJlcXVpcmVzIHVzaW5nXG4gIDY2Olx0XHQgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIGZpbGUgc2VjdXJpdHkgbGFiZWxzLCBzYXkgTi5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgRVhUNF9ERUJVR1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtFeHQ0IGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4gIDcwOlx0XHRkZXBlbmRzIG9uIEVYVDRfRlNcbiAgNzE6XHRcdGhlbHBcbiAgNzI6XHRcdCAgRW5hYmxlcyBydW4tdGltZSBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbS5cbiAgNzM6XHRcbiAgNzQ6XHRcdCAgSWYgeW91IHNlbGVjdCBZIGhlcmUsIHRoZW4geW91IHdpbGwgYmUgYWJsZSB0byB0dXJuIG9uIGRlYnVnZ2luZ1xuICA3NTpcdFx0ICB1c2luZyBkeW5hbWljIGRlYnVnIGNvbnRyb2wgZm9yIG1iX2RlYnVnKCkgLyBleHRfZGVidWcoKSBtc2dzLlxuICA3NjpcdFxuICA3NzpcdGNvbmZpZyBFWFQ0X0tVTklUX1RFU1RTXG4gIDc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgZXh0NFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDc5Olx0XHRkZXBlbmRzIG9uIEVYVDRfRlMgXHUwMDI2XHUwMDI2IEtVTklUXG4gIDgwOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICA4MTpcdFx0aGVscFxuICA4MjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZXh0NCBLVW5pdCB0ZXN0cy5cbiAgODM6XHRcbiAgODQ6XHRcdCAgS1VuaXQgdGVzdHMgcnVuIGR1cmluZyBib290IGFuZCBvdXRwdXQgdGhlIHJlc3VsdHMgdG8gdGhlIGRlYnVnIGxvZ1xuICA4NTpcdFx0ICBpbiBUQVAgZm9ybWF0IChodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvKS4gT25seSB1c2VmdWwgZm9yIGtlcm5lbCBkZXZzXG4gIDg2Olx0XHQgIHJ1bm5pbmcgS1VuaXQgdGVzdCBoYXJuZXNzIGFuZCBhcmUgbm90IGZvciBpbmNsdXNpb24gaW50byBhIHByb2R1Y3Rpb25cbiAgODc6XHRcdCAgYnVpbGQuXG4gIDg4Olx0XG4gIDg5Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwgcGxlYXNlIHJlZmVyXG4gIDkwOlx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uIGluIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0Ly5cbiAgOTE6XHRcbiAgOTI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU4MwoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiA5MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFWFQ0IE9ycGhhbiBCbG9jayBJbml0aWFsaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdXNpbmcgYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBMZXQmIzM5O3MgZGlnIGluLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbG9naWMuCgpUaGUgb3JpZ2luYWwgY29kZSYjMzk7cyBgZm9yYCBsb29wLCBzcGVjaWZpY2FsbHkgYGZvciAoaS0tOyBpICZndDs9IDA7IGktLSlgLCBmb3IgcmVsZWFzaW5nIGJ1ZmZlciBoZWFkcyBpbiB0aGUgYG91dF9mcmVlYCBwYXRoIGlzIHdoYXQgY2F1Z2h0IG15IGV5ZS4gIEl0IGxvb2tzIGxpa2UgaWYgYGV4dDRfYnJlYWRgIGZhaWxzIChyZXR1cm5zIGFuIGVycm9yIG9yIE5VTEwpLCB0aGUgbG9vcCBjb3JyZWN0bHkgc2tpcHMgcmVsZWFzaW5nIHRoZSBwcm9ibGVtYXRpYyBidWZmZXIgaGVhZCBiZWNhdXNlIGBpYCBpcyBhdCB0aGUgaW5kZXggb2YgdGhlIGJhZCBgb2JfYmhgIGJsb2NrLiBIb3dldmVyLCBpZiB0aGUgbWFnaWMgY2hlY2sgaW4gYGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWxgIGZhaWxzLCB0aGF0IG1lYW5zIHdlIGhhdmUgYSB2YWxpZCBgb2JfYmhgIGF0IGBvaS0mZ3Q7b2ZfYmluZm9baV1gICh3aGVyZSBgaWAgaXMgdGhlIGN1cnJlbnQgaW5kZXgpIHdoaWNoICpzaG91bGQqIGJlIHJlbGVhc2VkLCBidXQgdGhlIGxvb3Agd291bGQgc2tpcCBpdCwgd2hpY2ggaW50cm9kdWNlcyBhIGJ1ZmZlciBoZWFkIGxlYWsuIFRoZSBwYXRjaCYjMzk7cyBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBsb2FkZWRgIHZhcmlhYmxlIHRvIHRyYWNrIHN1Y2Nlc3NmdWwgYGV4dDRfYnJlYWRgIGNhbGxzIGlzIHdoYXQgc2VlbXMgdG8gZml4IHRoZSBwcm9ibGVtIGJ5IGVuc3VyaW5nIHRoZSBgd2hpbGVgIGxvb3AgcmVsZWFzZXMgYWxsIHZhbGlkIGJsb2Nrcy4KClNvIHRoZSBwYXRjaCBwcm92aWRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpdCBhZGRyZXNzZXMgYSBidWZmZXIgaGVhZCBsZWFrIHRoYXQgb2NjdXJzIG9uIGFuIGVycm9yIHBhdGggZHVyaW5nIG1vdW50LCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouIEkgc2hvdWxkIGZvY3VzIG9uIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGl0c2VsZi4gSXQgc2VlbXMgdGhlIHByb2JsZW0gbGllcyBleGNsdXNpdmVseSB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gTWF5YmUgYF9fZXh0NF9maWxsX3N1cGVyYCBvciBgZXh0NF9maWxsX3N1cGVyYCBjb3VsZCBiZSByZWxldmFudCwgYnV0IGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGlzIHRoZSBvbmUgdGhhdCYjMzk7cyBkaXJlY3RseSBtb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBsZWFrIGNhbiBvY2N1ci4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBvbmx5IGFmZmVjdHMgYGV4dDRfaW5pdF9vcnBoYW5faW5mb2AuCgpJJiMzOTt2ZSBkZWNpZGVkIHRvIHNldCBgRm9jdXNTeW1ib2xzOiBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGFuZCBgRW5hYmxlQ29uZmlnczogRVhUNF9GU2AuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGlzIHJlYWNoYWJsZS4gWWVzLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgX19leHQ0X2ZpbGxfc3VwZXJgLCB3aGljaCBpcyBpbnZva2VkIGR1cmluZyB0aGUgbW91bnQgcHJvY2Vzcy4gSSBiZWxpZXZlIHRoYXQgbW91bnRpbmcgYSBjcmFmdGVkIGV4dDQgaW1hZ2UgY29udGFpbmluZyB0aGUgYG9ycGhhbl9maWxlYCBmZWF0dXJlIGFuZCBkZWxpYmVyYXRlbHkgY29ycnVwdGVkIG9ycGhhbiBibG9ja3Mgd2lsbCB0cmlnZ2VyIHRoZSByZWxldmFudCBlcnJvciBwYXRoIGFuZCB0aGUgbGVhaywgKG9yIHRoZSBwYXRjaGVkIGNvZGUgYW5kIHRyaWdnZXIgdGhlIGZpeCksIG1ha2luZyB0aGlzIGFyZWEgdmVyeSB2YWx1YWJsZSBmb3IgZnV6emluZy4KQWxyaWdodCwgSSYjMzk7bGwgc2V0IHRoZSBmdXp6aW5nIHRhcmdldHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9pbml0X29ycGhhbl9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGhlYWQgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBleHQ0X2luaXRfb3JwaGFuX2luZm8oKSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4gSWYgYW4gb3JwaGFuIGJsb2NrIGhhcyBhIGJhZCBtYWdpYyBudW1iZXIgb3IgY2hlY2tzdW0sIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBidWZmZXIgaGVhZCBmb3IgdGhhdCBibG9jayB3YXMgbGVha2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGEgY29ycnVwdGVkIGV4dDQgaW1hZ2Ugd2l0aCB0aGUgb3JwaGFuX2ZpbGUgZmVhdHVyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfaW5pdF9vcnBoYW5faW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBoZWFkIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgZXh0NF9pbml0X29ycGhhbl9pbmZvKCkgZHVyaW5nIGZpbGVzeXN0ZW0gbW91bnQuIElmIGFuIG9ycGhhbiBibG9jayBoYXMgYSBiYWQgbWFnaWMgbnVtYmVyIG9yIGNoZWNrc3VtLCB0aGUgcHJldmlvdXNseSBsb2FkZWQgYnVmZmVyIGhlYWQgZm9yIHRoYXQgYmxvY2sgd2FzIGxlYWtlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIG1lbW9yeSBsZWFrIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBtb3VudGluZyBhIGNvcnJ1cHRlZCBleHQ0IGltYWdlIHdpdGggdGhlIG9ycGhhbl9maWxlIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMToxNzoyMi43MTg1MjQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMDEzNDY0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfaW5pdF9vcnBoYW5faW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGhlYWQgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBleHQ0X2luaXRfb3JwaGFuX2luZm8oKSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4gSWYgYW4gb3JwaGFuIGJsb2NrIGhhcyBhIGJhZCBtYWdpYyBudW1iZXIgb3IgY2hlY2tzdW0sIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBidWZmZXIgaGVhZCBmb3IgdGhhdCBibG9jayB3YXMgbGVha2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGEgY29ycnVwdGVkIGV4dDQgaW1hZ2Ugd2l0aCB0aGUgb3JwaGFuX2ZpbGUgZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MjIuNzE4NTM0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1NDkyNjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDZmMGZiYTJhZGEzYTYxMDYxNWM0ZDA5MDZkZWM0MmNhNDY4ODliMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMToxNzoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L29ycGhhbi5jIGIvZnMvZXh0NC9vcnBoYW4uY1xcbmluZGV4IDY0ZWE0NzYyNDIzMzg2Li43MDk1YmExNTY0ZjY1ZSAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXFxuKysrIGIvZnMvZXh0NC9vcnBoYW4uY1xcbkBAIC01NzIsNiArNTcyLDcgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRpbnQgaSwgajtcXG4gXFx0aW50IHJldDtcXG4gXFx0aW50IGZyZWU7XFxuK1xcdGludCBsb2FkZWQgPSAwO1xcbiBcXHRfX2xlMzIgKmJkYXRhO1xcbiBcXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xcbiBcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbCAqb3Q7XFxuQEAgLTYxMyw2ICs2MTQsNyBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuIFxcdFxcdFxcdHJldCA9IC1FSU87XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWU7XFxuIFxcdFxcdH1cXG4rXFx0XFx0bG9hZGVkKys7XFxuIFxcdFxcdG90ID0gZXh0NF9vcnBoYW5fYmxvY2tfdGFpbChzYiwgb2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKTtcXG4gXFx0XFx0aWYgKGxlMzJfdG9fY3B1KG90LVxcdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcXG4gXFx0XFx0XFx0ZXh0NF9lcnJvcihzYiwgXFxcIm9ycGhhbiBmaWxlIGJsb2NrICVkOiBiYWQgbWFnaWNcXFwiLCBpKTtcXG5AQCAtNjM1LDggKzYzNywxMCBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuIFxcdGlwdXQoaW5vZGUpO1xcbiBcXHRyZXR1cm4gMDtcXG4gb3V0X2ZyZWU6XFxuLVxcdGZvciAoaS0tOyBpIFxcdTAwM2U9IDA7IGktLSlcXG4tXFx0XFx0YnJlbHNlKG9pLVxcdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XFxuK1xcdHdoaWxlIChsb2FkZWQgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdGxvYWRlZC0tO1xcbitcXHRcXHRicmVsc2Uob2ktXFx1MDAzZW9mX2JpbmZvW2xvYWRlZF0ub2JfYmgpO1xcbitcXHR9XFxuIFxcdGt2ZnJlZShvaS1cXHUwMDNlb2ZfYmluZm8pO1xcbiBvdXRfcHV0OlxcbiBcXHRpcHV0KGlub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MjMuMjM0ODczNjk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQ4NDk4NzM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9pbml0X29ycGhhbl9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgaGVhZCBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGV4dDRfaW5pdF9vcnBoYW5faW5mbygpIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiBJZiBhbiBvcnBoYW4gYmxvY2sgaGFzIGEgYmFkIG1hZ2ljIG51bWJlciBvciBjaGVja3N1bSwgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJ1ZmZlciBoZWFkIGZvciB0aGF0IGJsb2NrIHdhcyBsZWFrZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbW91bnRpbmcgYSBjb3JydXB0ZWQgZXh0NCBpbWFnZSB3aXRoIHRoZSBvcnBoYW5fZmlsZSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA2ZjBmYmEyYWRhM2E2MTA2MTVjNGQwOTA2ZGVjNDJjYTQ2ODg5YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMToxNzoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jXG5pbmRleCA2NGVhNDc2MjQyMzM4Ni4uNzA5NWJhMTU2NGY2NWUgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXG4rKysgYi9mcy9leHQ0L29ycGhhbi5jXG5AQCAtNTcyLDYgKzU3Miw3IEBAIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdGludCBpLCBqO1xuIFx0aW50IHJldDtcbiBcdGludCBmcmVlO1xuK1x0aW50IGxvYWRlZCA9IDA7XG4gXHRfX2xlMzIgKmJkYXRhO1xuIFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcbiBcdHN0cnVjdCBleHQ0X29ycGhhbl9ibG9ja190YWlsICpvdDtcbkBAIC02MTMsNiArNjE0LDcgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuIFx0XHRcdHJldCA9IC1FSU87XG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcdFx0fVxuK1x0XHRsb2FkZWQrKztcbiBcdFx0b3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4gXHRcdGlmIChsZTMyX3RvX2NwdShvdC1cdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcbiBcdFx0XHRleHQ0X2Vycm9yKHNiLCBcIm9ycGhhbiBmaWxlIGJsb2NrICVkOiBiYWQgbWFnaWNcIiwgaSk7XG5AQCAtNjM1LDggKzYzNywxMCBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRpcHV0KGlub2RlKTtcbiBcdHJldHVybiAwO1xuIG91dF9mcmVlOlxuLVx0Zm9yIChpLS07IGkgXHUwMDNlPSAwOyBpLS0pXG4tXHRcdGJyZWxzZShvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4rXHR3aGlsZSAobG9hZGVkIFx1MDAzZSAwKSB7XG4rXHRcdGxvYWRlZC0tO1xuK1x0XHRicmVsc2Uob2ktXHUwMDNlb2ZfYmluZm9bbG9hZGVkXS5vYl9iaCk7XG4rXHR9XG4gXHRrdmZyZWUob2ktXHUwMDNlb2ZfYmluZm8pO1xuIG91dF9wdXQ6XG4gXHRpcHV0KGlub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjIzLjIzNDg3NTA1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjczOTkzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGZzL2V4dDQvb3JwaGFuLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGNoYW5nZXMgdG8gYGV4dDRfaW5pdF9vcnBoYW5faW5mb2AuIFRoZXkndmUgYWRkZWQgdGhpcyBgbG9hZGVkYCB2YXJpYWJsZSwgd2hpY2ggaXMgaW1tZWRpYXRlbHkgYSBnb29kIHNpZ24uIEl0J3MgZGVzaWduZWQgdG8gdHJhY2sgaG93IG1hbnkgb3JwaGFuIGJsb2NrcyB3ZSd2ZSBzdWNjZXNzZnVsbHkgbG9hZGVkLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIGEgbXVjaCBtb3JlIHJvYnVzdCB3YXkgdG8gaGFuZGxlIGVycm9yIGNhc2VzIGFuZCBlbnN1cmVzIHdlIHJlbGVhc2UgZXZlcnl0aGluZyBjb3JyZWN0bHkuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiV2h5IHRoZSBjaGFuZ2U/IFdoYXQgd2FzIHRoZSBwcm9ibGVtIHdpdGggdGhlIG9yaWdpbmFsIGxvb3A/XCIgVGhlbiBJIHJlLXJlYWQgdGhlIGNvZGUgYW5kIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGZvciAoaS0tOyBpIFx1MDAzZT0gMDsgaS0tKSBicmVsc2Uob2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO2AuIFRoYXTigJlzIHJpZ2h0LCBpdCB3YXMgZGVjcmVtZW50aW5nIGBpYCAqYmVmb3JlKiB0aGUgbG9vcCBleGVjdXRlZCwgd2hpY2ggaXMganVzdOKApiB3cm9uZy4gSXQgbG9va2VkIGxpa2UgdGhlIGludGVudGlvbiB3YXMgdG8gZnJlZSBibG9ja3MgaW4gcmV2ZXJzZSBvcmRlci4gU28gdGhlIGRlY3JlbWVudCB3YXMgaGFwcGVuaW5nICpiZWZvcmUqIHRoZSBjaGVjayBhZ2FpbnN0IGBpYC4gVGhlIG9yaWdpbmFsIGNvZGUgYXNzdW1lZCBpZiBzb21ldGhpbmcgZmFpbGVkIG1pZHdheSB0aHJvdWdoIHRoZSBsb29wLCBgaWAgd291bGQgcG9pbnQgdG8gdGhlIGxhc3QgKnN1Y2Nlc3NmdWxseSogbG9hZGVkIGJsb2NrLCB3aGljaCBpc24ndCBndWFyYW50ZWVkLlxuXG5UaGUgbmV3IGxvb3AgaXMgbXVjaCBjbGVhbmVyLiBJIHNlZSB0aGF0IGl0IGl0ZXJhdGVzIHVwIHRvIGBvaS1cdTAwM2VvZl9ibG9ja3NgLiBgZXh0NF9icmVhZGAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgbG9vcCwgYW5kIHRoZSBpbmRleCBgaWAgY2xlYXJseSBjb3JyZXNwb25kcyB0byB0aGUgYmxvY2sgd2UncmUgdHJ5aW5nIHRvIGxvYWQuIEFoLCBJIGdldCBpdCBub3cuIElmIGBleHQ0X2JyZWFkYCBmYWlscywgYGlgIGlzIHRoZSBpbmRleCBvZiB0aGUgKmZhaWxlZCogYmxvY2suIFNvIHByZXZpb3VzbHksIGRlY3JlbWVudGluZyBgaWAgd291bGQgbGVhZCB0byB0aGUgbG9vcCBmcmVlaW5nIGJsb2NrIGBpLTFgIGFsbCB0aGUgd2F5IGRvd24uIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgc2tpcHBpbmcgdGhlIGNvcnJlY3QgYmxvY2sgYW5kIGZyZWVpbmcgdGhlIHdyb25nIG9uZXMuXG5cbkJ1dCBJJ20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgb3RoZXIgZmFpbHVyZSBzY2VuYXJpb3MsIHRvby4gSWYgYGV4dDRfYnJlYWRgIHN1Y2NlZWRzLCBhbmQgKnNvbWV0aGluZyBlbHNlKiBmYWlscyB3aXRoaW4gdGhhdCBsb29wLCB0aGUgb2xkIGNvZGUgd291bGQgcmVsZWFzZSB0aGUgd3JvbmcgYmxvY2tzLCBvciBhdCBsZWFzdCBvbmUgbGVzcyB0aGFuIGl0IHNob3VsZC4gTm93LCB3aXRoIHRoZSBgbG9hZGVkYCBjb3VudGVyLCB3ZSBoYXZlIGEgY2xlYXIgcmVjb3JkIG9mIHdoYXQncyBiZWVuIGxvYWRlZC4gVGhhdCdzICptdWNoKiBiZXR0ZXIuIEl0IG1lYW5zIHdlIHJlbGVhc2UgKm9ubHkqIHRoZSBibG9ja3MgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxseSBsb2FkZWQgdXAgdG8gdGhhdCBwb2ludC4gVGhlIGBsb2FkZWRgIHZhcmlhYmxlIGlzIGdvaW5nIHRvIGdpdmUgdXMgYSBtdWNoIG1vcmUgcHJlY2lzZSBjbGVhbi11cCBpbiB0aG9zZSBlcnJvciBwYXRocy4gSSBuZWVkIHRvIGtlZXAgcmVhZGluZyB0aGUgcmVzdCBvZiBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCB0byBtYWtlIHN1cmUgaXQgaXMgcmVhbGx5IGJlaW5nIHVzZWQgYW5kIHRoZXJlIGFyZSBubyBuZXcgcG90ZW50aWFsIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjMwLjMwMjI3NjEyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvb3JwaGFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU3MDpcXHRcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyAqb2kgPSBcXHUwMDI2RVhUNF9TQihzYiktXFx1MDAzZXNfb3JwaGFuX2luZm87XFxuIDU3MTpcXHRcXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbiA1NzI6XFx0XFx0aW50IGksIGo7XFxuIDU3MzpcXHRcXHRpbnQgcmV0O1xcbiA1NzQ6XFx0XFx0aW50IGZyZWU7XFxuIDU3NTpcXHRcXHRpbnQgbG9hZGVkID0gMDtcXG4gNTc2OlxcdFxcdF9fbGUzMiAqYmRhdGE7XFxuIDU3NzpcXHRcXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xcbiA1Nzg6XFx0XFx0c3RydWN0IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwgKm90O1xcbiA1Nzk6XFx0XFx0aW5vX3Qgb3JwaGFuX2lubyA9IGxlMzJfdG9fY3B1KEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2VzLVxcdTAwM2VzX29ycGhhbl9maWxlX2ludW0pO1xcbiA1ODA6XFx0XFxuIDU4MTpcXHRcXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxcbiA1ODI6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDU4MzpcXHRcXG4gNTg0OlxcdFxcdGlub2RlID0gZXh0NF9pZ2V0KHNiLCBvcnBoYW5faW5vLCBFWFQ0X0lHRVRfU1BFQ0lBTCk7XFxuIDU4NTpcXHRcXHRpZiAoSVNfRVJSKGlub2RlKSkge1xcbiA1ODY6XFx0XFx0XFx0ZXh0NF9tc2coc2IsIEtFUk5fRVJSLCBcXFwiZ2V0IG9ycGhhbiBpbm9kZSBmYWlsZWRcXFwiKTtcXG4gNTg3OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGlub2RlKTtcXG4gNTg4OlxcdFxcdH1cXG4gNTg5OlxcdFxcdC8qXFxuIDU5MDpcXHRcXHQgKiBUaGlzIGlzIGp1c3QgYW4gYXJ0aWZpY2lhbCBsaW1pdCB0byBwcmV2ZW50IGNvcnJ1cHRlZCBmcyBmcm9tXFxuIDU5MTpcXHRcXHQgKiBjb25zdW1pbmcgYWJzdXJkIGFtb3VudHMgb2YgbWVtb3J5IHdoZW4gcGlubmluZyBibG9ja3Mgb2Ygb3JwaGFuXFxuIDU5MjpcXHRcXHQgKiBmaWxlIGluIG1lbW9yeS5cXG4gNTkzOlxcdFxcdCAqL1xcbiA1OTQ6XFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX3NpemUgXFx1MDAzZSAoRVhUNF9NQVhfT1JQSEFOX0ZJTEVfQkxPQ0tTIFxcdTAwM2NcXHUwMDNjIGlub2RlLVxcdTAwM2VpX2Jsa2JpdHMpKSB7XFxuIDU5NTpcXHRcXHRcXHRleHQ0X21zZyhzYiwgS0VSTl9FUlIsIFxcXCJvcnBoYW4gZmlsZSB0b28gYmlnOiAlbGx1XFxcIixcXG4gNTk2OlxcdFxcdFxcdFxcdCAodW5zaWduZWQgbG9uZyBsb25nKWlub2RlLVxcdTAwM2VpX3NpemUpO1xcbiA1OTc6XFx0XFx0XFx0cmV0ID0gLUVGU0NPUlJVUFRFRDtcXG4gNTk4OlxcdFxcdFxcdGdvdG8gb3V0X3B1dDtcXG4gNTk5OlxcdFxcdH1cXG4gNjAwOlxcdFxcdG9pLVxcdTAwM2VvZl9ibG9ja3MgPSBpbm9kZS1cXHUwMDNlaV9zaXplIFxcdTAwM2VcXHUwMDNlIHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZV9iaXRzO1xcbiA2MDE6XFx0XFx0b2ktXFx1MDAzZW9mX2NzdW1fc2VlZCA9IEVYVDRfSShpbm9kZSktXFx1MDAzZWlfY3N1bV9zZWVkO1xcbiA2MDI6XFx0XFx0b2ktXFx1MDAzZW9mX2JpbmZvID0ga3ZtYWxsb2Nfb2JqcyhzdHJ1Y3QgZXh0NF9vcnBoYW5fYmxvY2ssIG9pLVxcdTAwM2VvZl9ibG9ja3MpO1xcbiA2MDM6XFx0XFx0aWYgKCFvaS1cXHUwMDNlb2ZfYmluZm8pIHtcXG4gNjA0OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDYwNTpcXHRcXHRcXHRnb3RvIG91dF9wdXQ7XFxuIDYwNjpcXHRcXHR9XFxuIDYwNzpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb2ktXFx1MDAzZW9mX2Jsb2NrczsgaSsrKSB7XFxuIDYwODpcXHRcXHRcXHRvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmggPSBleHQ0X2JyZWFkKE5VTEwsIGlub2RlLCBpLCAwKTtcXG4gNjA5OlxcdFxcdFxcdGlmIChJU19FUlIob2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKSkge1xcbiA2MTA6XFx0XFx0XFx0XFx0cmV0ID0gUFRSX0VSUihvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO1xcbiA2MTE6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjEyOlxcdFxcdFxcdH1cXG4gNjEzOlxcdFxcdFxcdGlmICghb2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKSB7XFxuIDYxNDpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2MTU6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjE2OlxcdFxcdFxcdH1cXG4gNjE3OlxcdFxcdFxcdGxvYWRlZCsrO1xcbiA2MTg6XFx0XFx0XFx0b3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO1xcbiA2MTk6XFx0XFx0XFx0aWYgKGxlMzJfdG9fY3B1KG90LVxcdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcXG4gNjIwOlxcdFxcdFxcdFxcdGV4dDRfZXJyb3Ioc2IsIFxcXCJvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIG1hZ2ljXFxcIiwgaSk7XFxuIDYyMTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2MjI6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjIzOlxcdFxcdFxcdH1cXG4gNjI0OlxcdFxcdFxcdGlmICghZXh0NF9vcnBoYW5fZmlsZV9ibG9ja19jc3VtX3ZlcmlmeShzYixcXG4gNjI1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdG9pLVxcdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCkpIHtcXG4gNjI2OlxcdFxcdFxcdFxcdGV4dDRfZXJyb3Ioc2IsIFxcXCJvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIGNoZWNrc3VtXFxcIiwgaSk7XFxuIDYyNzpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2Mjg6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjI5OlxcdFxcdFxcdH1cXG4gNjMwOlxcdFxcdFxcdGJkYXRhID0gKF9fbGUzMiAqKShvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgtXFx1MDAzZWJfZGF0YSk7XFxuIDYzMTpcXHRcXHRcXHRmcmVlID0gMDtcXG4gNjMyOlxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbm9kZXNfcGVyX29iOyBqKyspXFxuIDYzMzpcXHRcXHRcXHRcXHRpZiAoYmRhdGFbal0gPT0gMClcXG4gNjM0OlxcdFxcdFxcdFxcdFxcdGZyZWUrKztcXG4gNjM1OlxcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNm9pLVxcdTAwM2VvZl9iaW5mb1tpXS5vYl9mcmVlX2VudHJpZXMsIGZyZWUpO1xcbiA2MzY6XFx0XFx0fVxcbiA2Mzc6XFx0XFx0aXB1dChpbm9kZSk7XFxuIDYzODpcXHRcXHRyZXR1cm4gMDtcXG4gNjM5OlxcdG91dF9mcmVlOlxcbiA2NDA6XFx0XFx0d2hpbGUgKGxvYWRlZCBcXHUwMDNlIDApIHtcXG4gNjQxOlxcdFxcdFxcdGxvYWRlZC0tO1xcbiA2NDI6XFx0XFx0XFx0YnJlbHNlKG9pLVxcdTAwM2VvZl9iaW5mb1tsb2FkZWRdLm9iX2JoKTtcXG4gNjQzOlxcdFxcdH1cXG4gNjQ0OlxcdFxcdGt2ZnJlZShvaS1cXHUwMDNlb2ZfYmluZm8pO1xcbiA2NDU6XFx0b3V0X3B1dDpcXG4gNjQ2OlxcdFxcdGlwdXQoaW5vZGUpO1xcbiA2NDc6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjQ4OlxcdH1cXG4gNjQ5OlxcdFxcbiA2NTA6XFx0aW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4gNjUxOlxcdHtcXG4gNjUyOlxcdFxcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9IFxcdTAwMjZFWFQ0X1NCKHNiKS1cXHUwMDNlc19vcnBoYW5faW5mbztcXG4gNjUzOlxcdFxcdGludCBpO1xcbiA2NTQ6XFx0XFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcXG4gNjU1OlxcdFxcbiA2NTY6XFx0XFx0aWYgKCFleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9maWxlKHNiKSlcXG4gNjU3OlxcdFxcdFxcdHJldHVybiAxO1xcbiA2NTg6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG9pLVxcdTAwM2VvZl9ibG9ja3M7IGkrKylcXG4gNjU5OlxcdFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2b2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2ZyZWVfZW50cmllcykgIT1cXG4gNjYwOlxcdFxcdFxcdCAgICBpbm9kZXNfcGVyX29iKVxcbiA2NjE6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDY2MjpcXHRcXHRyZXR1cm4gMTtcXG4gNjYzOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MzAuMzAyMzc2MDQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0ODY5NDkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgTWVtb3J5IExlYWsgaW4gZXh0NCBPcnBoYW4gQmxvY2sgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBleHQ0X29ycGhhbl9ibG9ja190YWlsYCBjaGVjaywgYW5kIEkgdGhpbmsgSSd2ZSBzcG90dGVkIGEgcHJvYmxlbS4gSWYgYGV4dDRfYnJlYWRgIGZhaWxzLCB0aGUgbG9vcCBjb3JyZWN0bHkgcmVsZWFzZXMgdGhlIGJsb2NrcyB0aGF0IHdlcmUgc3VjY2Vzc2Z1bGx5IHJlYWQsIHN0YXJ0aW5nIGZyb20gYGktMWAgZG93biB0byAwLiBCdXQsIHdoYXQgaWYgdGhlIG1hZ2ljIG51bWJlciBjaGVjayB3aXRoaW4gYGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWxgIGZhaWxzP1xuXG5TcGVjaWZpY2FsbHksIGlmIHRoZSBtYWdpYyBjaGVjayBgaWYgKGxlMzJfdG9fY3B1KG90LVx1MDAzZW9iX21hZ2ljKSAhPSBFWFQ0X09SUEhBTl9CTE9DS19NQUdJQylgIGZhaWxzLCBpdCBtZWFucyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIGEgYmxvY2sgcmVhZCBieSBgZXh0NF9icmVhZGAuIFRoZSBpbXBvcnRhbnQgZGV0YWlsIGlzIHRoYXQgYGlgICppcyogdGhlIGluZGV4IG9mIHRoZSBibG9jayB0aGF0IHdhcyBzdWNjZXNzZnVsbHkgcmVhZCAqYmVmb3JlKiB0aGUgY2hlY2sgZmFpbGVkLlxuXG5UaGVuLCB0aGUgbG9vcCBwcm9jZWVkcyB0byBgZm9yIChpLS07IGkgXHUwMDNlPSAwOyBpLS0pYC4gU2VlLCBiZWNhdXNlIG9mIHRoZSBwcmUtZGVjcmVtZW50IGBpLS1gLCB0aGUgY29kZSBza2lwcyByZWxlYXNpbmcgdGhlIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgaW5kZXggYGlgLiBJdCBpdGVyYXRlcyBmcm9tIGBpLTFgIGRvd24uIFRoYXQgYG9pLVx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoYCBibG9jaywgdGhlIG9uZSB0aGF0IHRyaWdnZXJlZCB0aGUgZXJyb3IsIGlzIGVmZmVjdGl2ZWx5IGxlYWtlZCEgVGhhdCdzIGEgYnVmZmVyIGhlYWQgbGVhay4gSXQncyBhIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgaXNzdWUuXG5cblRoaXMgaXMgYSBjbGVhciBtZW1vcnkgbGVhayBvbiBhbiBlcnJvciBwYXRoIHdpdGhpbiB0aGUgb3JwaGFuIGhhbmRsaW5nIGNvZGUuIFRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIHNvbWUgZnV6emluZyBhbmQgZnVydGhlciB0ZXN0aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gcmVsaWFibHkgdHJpZ2dlciBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCB0byBwdXQgdGhpcyB1bmRlciB0aGUgbWljcm9zY29wZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjM2LjE1MTA3MzExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzE0Mzg0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF9pbml0X29ycGhhbl9pbmZvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTM5Njc9ZXh0ZXJuIHZvaWQgZXh0NF9yZWxlYXNlX29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xcbmZzL2V4dDQvZXh0NC5oOjM5Njg6ZXh0ZXJuIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XFxuZnMvZXh0NC9leHQ0LmgtMzk2OS1leHRlcm4gaW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jPTU1MD12b2lkIGV4dDRfb3JwaGFuX2ZpbGVfYmxvY2tfdHJpZ2dlcihzdHJ1Y3QgamJkMl9idWZmZXJfdHJpZ2dlcl90eXBlICp0cmlnZ2VycyxcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtNTY3LVxcbmZzL2V4dDQvb3JwaGFuLmM6NTY4OmludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L29ycGhhbi5jLTU2OS17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTMzOD1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01Njg1LVxcbmZzL2V4dDQvc3VwZXIuYzo1Njg2OlxcdGVyciA9IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzYik7XFxuZnMvZXh0NC9zdXBlci5jLTU2ODctXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MzguMzIyNTE3MTA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMDEzNTUzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPcnBoYW4gRmlsZSBGZWF0dXJlIER1cmluZyBNb3VudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBiZWluZyBjYWxsZWQgZnJvbSBgX19leHQ0X2ZpbGxfc3VwZXJgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGUgbW91bnQgcHJvY2VzcyDigJMgZ29vZCB0byBrbm93LiBUaGUga2V5IHBpZWNlIHNlZW1zIHRvIGJlIHRoaXMgZnVuY3Rpb246IGBleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9maWxlKHNiKWAuIFRoYXQgaW5kaWNhdGVzIGl0J3MgY2hlY2tpbmcgZm9yIHRoZSBleGlzdGVuY2UgYW5kL29yIGVuYWJsaW5nIG9mIGEgcmVsYXRpdmVseSBuZXcgZmVhdHVyZSwgdGhlICdvcnBoYW5fZmlsZScgZmVhdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyBvciBjb25maWd1cmVzIGl0LlxuXG5TaW5jZSBJIGFtIGFscmVhZHkgbG9va2luZyBhdCB0aGUgZXh0NCBmaWxlc3lzdGVtLCBJJ2xsIGZpcnN0IGNoZWNrIHRoZSBiYXNpYyBFWFQ0X0ZTIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIGl0J3MgZ2VuZXJhbGx5IGVuYWJsZWQuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9uIGtub2IsIGxpa2UgYSBjb21waWxlLXRpbWUgb3B0aW9uIG9yIGEgbW91bnQgb3B0aW9uLCBkaXJlY3RseSByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzIGBvcnBoYW5fZmlsZWAgZmVhdHVyZT8gVGhhdCdzIHRoZSBuZXh0IGF2ZW51ZSBJIG5lZWQgdG8gZXhwbG9yZS4gSSBuZWVkIHRvIGZpbmQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njc3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6NTAuNjIzODc1NjY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTUyNjMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvcnBoYW5fZmlsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjUwLjY4MDgzNDQ2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NDM3NzU1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXh0NCBJbml0aWFsaXphdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBleHQ0LCBhbmQgaXQgc2VlbXMgdGhlcmUncyBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGl0ZW0gZGVmaW5lZCBpbiB0aGUgbWFpbiBgS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIGZpbmU7IGBFWFQ0X0ZTYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gQnV0IHdhaXQgYSBtaW51dGXigKZJJ20gcmVtZW1iZXJpbmcgdGhhdCBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBmdW5jdGlvbi4gVGhhdCdzIGRlZmluZWQgaW4gYGZzL2V4dDQvb3JwaGFuLmNgLCByaWdodD8gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgc2hvdWxkIHJlYWxseSBkb3VibGUtY2hlY2sgdGhlIGBmcy9leHQ0L0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIGl0IHRvIG1ha2UgY2VydGFpbiBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDEzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6NTYuMjI0NjExODE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBFWFQ0X0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gICA1OlxcdFxcdHNlbGVjdCBKQkQyXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JDMTZcXG4gICA3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDg6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgOTpcXHRcXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBpcyB0aGUgbmV4dCBnZW5lcmF0aW9uIG9mIHRoZSBleHQzIGZpbGVzeXN0ZW0uXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgVW5saWtlIHRoZSBjaGFuZ2UgZnJvbSBleHQyIGZpbGVzeXN0ZW0gdG8gZXh0MyBmaWxlc3lzdGVtLFxcbiAgMTQ6XFx0XFx0ICB0aGUgb24tZGlzayBmb3JtYXQgb2YgZXh0NCBpcyBub3QgZm9yd2FyZHMgY29tcGF0aWJsZSB3aXRoXFxuICAxNTpcXHRcXHQgIGV4dDM7IGl0IGlzIGJhc2VkIG9uIGV4dGVudCBtYXBzIGFuZCBpdCBzdXBwb3J0cyA0OC1iaXRcXG4gIDE2OlxcdFxcdCAgcGh5c2ljYWwgYmxvY2sgbnVtYmVycy4gIFRoZSBleHQ0IGZpbGVzeXN0ZW0gYWxzbyBzdXBwb3J0cyBkZWxheWVkXFxuICAxNzpcXHRcXHQgIGFsbG9jYXRpb24sIHBlcnNpc3RlbnQgcHJlYWxsb2NhdGlvbiwgaGlnaCByZXNvbHV0aW9uIHRpbWUgc3RhbXBzLFxcbiAgMTg6XFx0XFx0ICBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgZmVhdHVyZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgc3BlZWRcXG4gIDE5OlxcdFxcdCAgdXAgZnNjayB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIHdlYiBwYWdlcyBhdFxcbiAgMjA6XFx0XFx0ICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgVGhlIGV4dDQgZmlsZXN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyBhbiBleHQzIGZpbGVzeXN0ZW07IHdoaWxlIHRoZXJlXFxuICAyMzpcXHRcXHQgIGFyZSBzb21lIHBlcmZvcm1hbmNlIGdhaW5zIGZyb20gdGhlIGRlbGF5ZWQgYWxsb2NhdGlvbiBhbmQgaW5vZGVcXG4gIDI0OlxcdFxcdCAgdGFibGUgcmVhZGFoZWFkLCB0aGUgYmVzdCBwZXJmb3JtYW5jZSBnYWlucyByZXF1aXJlIGVuYWJsaW5nIGV4dDRcXG4gIDI1OlxcdFxcdCAgZmVhdHVyZXMgaW4gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgdHVuZTJmcywgb3IgZm9ybWF0dGluZyBhIG5ld1xcbiAgMjY6XFx0XFx0ICBmaWxlc3lzdGVtIGFzIGFuIGV4dDQgZmlsZXN5c3RlbSBpbml0aWFsbHkuIFdpdGhvdXQgZXhwbGljaXQgZW5hYmxpbmdcXG4gIDI3OlxcdFxcdCAgb2YgZXh0NCBmZWF0dXJlcywgdGhlIG9uIGRpc2sgZmlsZXN5c3RlbSBmb3JtYXQgc3RheXMgZnVsbHkgYmFja3dhcmRcXG4gIDI4OlxcdFxcdCAgY29tcGF0aWJsZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlXFxuICAzMTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBleHQ0LlxcbiAgMzI6XFx0XFxuICAzMzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiVXNlIGV4dDQgZm9yIGV4dDIgZmlsZSBzeXN0ZW1zXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXFxuICAzODpcXHRcXHRkZXBlbmRzIG9uIEVYVDJfRlM9blxcbiAgMzk6XFx0XFx0ZGVmYXVsdCB5XFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIEFsbG93IHRoZSBleHQ0IGZpbGUgc3lzdGVtIGRyaXZlciBjb2RlIHRvIGJlIHVzZWQgZm9yIGV4dDJcXG4gIDQyOlxcdFxcdCAgZmlsZSBzeXN0ZW0gbW91bnRzLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gcmVkdWNlIHRoZWlyXFxuICA0MzpcXHRcXHQgIGNvbXBpbGVkIGtlcm5lbCBzaXplIGJ5IHVzaW5nIG9uZSBmaWxlIHN5c3RlbSBkcml2ZXIgZm9yXFxuICA0NDpcXHRcXHQgIGV4dDIsIGV4dDMsIGFuZCBleHQ0IGZpbGUgc3lzdGVtcy5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuICA0NzpcXHRcXHRib29sIFxcXCJFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXFxuICA0OTpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IHBlcm1pc3Npb25zIGZvciB1c2VycyBhbmRcXG4gIDUyOlxcdFxcdCAgZ3JvdXBzIGJleW9uZCB0aGUgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgRVhUNF9GU19TRUNVUklUWVxcbiAgNTc6XFx0XFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG4gIDU5OlxcdFxcdGhlbHBcXG4gIDYwOlxcdFxcdCAgU2VjdXJpdHkgbGFiZWxzIHN1cHBvcnQgYWx0ZXJuYXRpdmUgYWNjZXNzIGNvbnRyb2wgbW9kZWxzXFxuICA2MTpcXHRcXHQgIGltcGxlbWVudGVkIGJ5IHNlY3VyaXR5IG1vZHVsZXMgbGlrZSBTRUxpbnV4LiAgVGhpcyBvcHRpb25cXG4gIDYyOlxcdFxcdCAgZW5hYmxlcyBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxlciBmb3IgZmlsZSBzZWN1cml0eVxcbiAgNjM6XFx0XFx0ICBsYWJlbHMgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS5cXG4gIDY0OlxcdFxcbiAgNjU6XFx0XFx0ICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHNlY3VyaXR5IG1vZHVsZSB0aGF0IHJlcXVpcmVzIHVzaW5nXFxuICA2NjpcXHRcXHQgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIGZpbGUgc2VjdXJpdHkgbGFiZWxzLCBzYXkgTi5cXG4gIDY3OlxcdFxcbiAgNjg6XFx0Y29uZmlnIEVYVDRfREVCVUdcXG4gIDY5OlxcdFxcdGJvb2wgXFxcIkV4dDQgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG4gIDcxOlxcdFxcdGhlbHBcXG4gIDcyOlxcdFxcdCAgRW5hYmxlcyBydW4tdGltZSBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbS5cXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0ICBJZiB5b3Ugc2VsZWN0IFkgaGVyZSwgdGhlbiB5b3Ugd2lsbCBiZSBhYmxlIHRvIHR1cm4gb24gZGVidWdnaW5nXFxuICA3NTpcXHRcXHQgIHVzaW5nIGR5bmFtaWMgZGVidWcgY29udHJvbCBmb3IgbWJfZGVidWcoKSAvIGV4dF9kZWJ1ZygpIG1zZ3MuXFxuICA3NjpcXHRcXG4gIDc3OlxcdGNvbmZpZyBFWFQ0X0tVTklUX1RFU1RTXFxuICA3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGV4dDRcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gRVhUNF9GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbiAgODA6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDgxOlxcdFxcdGhlbHBcXG4gIDgyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIGV4dDQgS1VuaXQgdGVzdHMuXFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdCAgS1VuaXQgdGVzdHMgcnVuIGR1cmluZyBib290IGFuZCBvdXRwdXQgdGhlIHJlc3VsdHMgdG8gdGhlIGRlYnVnIGxvZ1xcbiAgODU6XFx0XFx0ICBpbiBUQVAgZm9ybWF0IChodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvKS4gT25seSB1c2VmdWwgZm9yIGtlcm5lbCBkZXZzXFxuICA4NjpcXHRcXHQgIHJ1bm5pbmcgS1VuaXQgdGVzdCBoYXJuZXNzIGFuZCBhcmUgbm90IGZvciBpbmNsdXNpb24gaW50byBhIHByb2R1Y3Rpb25cXG4gIDg3OlxcdFxcdCAgYnVpbGQuXFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCBwbGVhc2UgcmVmZXJcXG4gIDkwOlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvLlxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjU2LjIyNDY5NTg3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQxNTg1NTM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVYVDQgT3JwaGFuIEJsb2NrIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdXNpbmcgYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBMZXQncyBkaWcgaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsb2dpYy5cblxuVGhlIG9yaWdpbmFsIGNvZGUncyBgZm9yYCBsb29wLCBzcGVjaWZpY2FsbHkgYGZvciAoaS0tOyBpIFx1MDAzZT0gMDsgaS0tKWAsIGZvciByZWxlYXNpbmcgYnVmZmVyIGhlYWRzIGluIHRoZSBgb3V0X2ZyZWVgIHBhdGggaXMgd2hhdCBjYXVnaHQgbXkgZXllLiAgSXQgbG9va3MgbGlrZSBpZiBgZXh0NF9icmVhZGAgZmFpbHMgKHJldHVybnMgYW4gZXJyb3Igb3IgTlVMTCksIHRoZSBsb29wIGNvcnJlY3RseSBza2lwcyByZWxlYXNpbmcgdGhlIHByb2JsZW1hdGljIGJ1ZmZlciBoZWFkIGJlY2F1c2UgYGlgIGlzIGF0IHRoZSBpbmRleCBvZiB0aGUgYmFkIGBvYl9iaGAgYmxvY2suIEhvd2V2ZXIsIGlmIHRoZSBtYWdpYyBjaGVjayBpbiBgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbGAgZmFpbHMsIHRoYXQgbWVhbnMgd2UgaGF2ZSBhIHZhbGlkIGBvYl9iaGAgYXQgYG9pLVx1MDAzZW9mX2JpbmZvW2ldYCAod2hlcmUgYGlgIGlzIHRoZSBjdXJyZW50IGluZGV4KSB3aGljaCAqc2hvdWxkKiBiZSByZWxlYXNlZCwgYnV0IHRoZSBsb29wIHdvdWxkIHNraXAgaXQsIHdoaWNoIGludHJvZHVjZXMgYSBidWZmZXIgaGVhZCBsZWFrLiBUaGUgcGF0Y2gncyBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBsb2FkZWRgIHZhcmlhYmxlIHRvIHRyYWNrIHN1Y2Nlc3NmdWwgYGV4dDRfYnJlYWRgIGNhbGxzIGlzIHdoYXQgc2VlbXMgdG8gZml4IHRoZSBwcm9ibGVtIGJ5IGVuc3VyaW5nIHRoZSBgd2hpbGVgIGxvb3AgcmVsZWFzZXMgYWxsIHZhbGlkIGJsb2Nrcy5cblxuU28gdGhlIHBhdGNoIHByb3ZpZGVzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IGFkZHJlc3NlcyBhIGJ1ZmZlciBoZWFkIGxlYWsgdGhhdCBvY2N1cnMgb24gYW4gZXJyb3IgcGF0aCBkdXJpbmcgbW91bnQsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBmdXp6LiBJIHNob3VsZCBmb2N1cyBvbiBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBpdHNlbGYuIEl0IHNlZW1zIHRoZSBwcm9ibGVtIGxpZXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoaXMgZnVuY3Rpb24uIE1heWJlIGBfX2V4dDRfZmlsbF9zdXBlcmAgb3IgYGV4dDRfZmlsbF9zdXBlcmAgY291bGQgYmUgcmVsZXZhbnQsIGJ1dCBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBpcyB0aGUgb25lIHRoYXQncyBkaXJlY3RseSBtb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBsZWFrIGNhbiBvY2N1ci5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgcGF0Y2ggb25seSBhZmZlY3RzIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gLlxuXG5JJ3ZlIGRlY2lkZWQgdG8gc2V0IGBGb2N1c1N5bWJvbHM6IGV4dDRfaW5pdF9vcnBoYW5faW5mb2AgYW5kIGBFbmFibGVDb25maWdzOiBFWFQ0X0ZTYC5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGlzIHJlYWNoYWJsZS4gWWVzLCBpdCdzIGNhbGxlZCBmcm9tIGBfX2V4dDRfZmlsbF9zdXBlcmAsIHdoaWNoIGlzIGludm9rZWQgZHVyaW5nIHRoZSBtb3VudCBwcm9jZXNzLiBJIGJlbGlldmUgdGhhdCBtb3VudGluZyBhIGNyYWZ0ZWQgZXh0NCBpbWFnZSBjb250YWluaW5nIHRoZSBgb3JwaGFuX2ZpbGVgIGZlYXR1cmUgYW5kIGRlbGliZXJhdGVseSBjb3JydXB0ZWQgb3JwaGFuIGJsb2NrcyB3aWxsIHRyaWdnZXIgdGhlIHJlbGV2YW50IGVycm9yIHBhdGggYW5kIHRoZSBsZWFrLCAob3IgdGhlIHBhdGNoZWQgY29kZSBhbmQgdHJpZ2dlciB0aGUgZml4KSwgbWFraW5nIHRoaXMgYXJlYSB2ZXJ5IHZhbHVhYmxlIGZvciBmdXp6aW5nLlxuQWxyaWdodCwgSSdsbCBzZXQgdGhlIGZ1enppbmcgdGFyZ2V0cyBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MywiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMToxODowNy42NDA1NTM1NjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTMwMzU1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfaW5pdF9vcnBoYW5faW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGhlYWQgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBleHQ0X2luaXRfb3JwaGFuX2luZm8oKSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4gSWYgYW4gb3JwaGFuIGJsb2NrIGhhcyBhIGJhZCBtYWdpYyBudW1iZXIgb3IgY2hlY2tzdW0sIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBidWZmZXIgaGVhZCBmb3IgdGhhdCBibG9jayB3YXMgbGVha2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGEgY29ycnVwdGVkIGV4dDQgaW1hZ2Ugd2l0aCB0aGUgb3JwaGFuX2ZpbGUgZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9pbml0X29ycGhhbl9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgaGVhZCBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGV4dDRfaW5pdF9vcnBoYW5faW5mbygpIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiBJZiBhbiBvcnBoYW4gYmxvY2sgaGFzIGEgYmFkIG1hZ2ljIG51bWJlciBvciBjaGVja3N1bSwgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJ1ZmZlciBoZWFkIGZvciB0aGF0IGJsb2NrIHdhcyBsZWFrZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbW91bnRpbmcgYSBjb3JydXB0ZWQgZXh0NCBpbWFnZSB3aXRoIHRoZSBvcnBoYW5fZmlsZSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 10:50:51 +0000 UTC FinishedAt: 2026-07-10 11:18:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "30832730-1564-4d4f-a7f6-9f68336ac4ae" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_init_orphan_info" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2luaXRfb3JwaGFuX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgaGVhZCBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGV4dDRfaW5pdF9vcnBoYW5faW5mbygpIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiBJZiBhbiBvcnBoYW4gYmxvY2sgaGFzIGEgYmFkIG1hZ2ljIG51bWJlciBvciBjaGVja3N1bSwgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJ1ZmZlciBoZWFkIGZvciB0aGF0IGJsb2NrIHdhcyBsZWFrZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbW91bnRpbmcgYSBjb3JydXB0ZWQgZXh0NCBpbWFnZSB3aXRoIHRoZSBvcnBoYW5fZmlsZSBmZWF0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDZmMGZiYTJhZGEzYTYxMDYxNWM0ZDA5MDZkZWM0MmNhNDY4ODliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDExOjE3OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jXG5pbmRleCA2NGVhNDc2MjQyMzM4Ni4uNzA5NWJhMTU2NGY2NWUgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L29ycGhhbi5jXG5AQCAtNTcyLDYgJiM0Mzs1NzIsNyBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRpbnQgaSwgajtcbiBcdGludCByZXQ7XG4gXHRpbnQgZnJlZTtcbiYjNDM7XHRpbnQgbG9hZGVkID0gMDtcbiBcdF9fbGUzMiAqYmRhdGE7XG4gXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwgKm90O1xuQEAgLTYxMyw2ICYjNDM7NjE0LDcgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuIFx0XHRcdHJldCA9IC1FSU87XG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcdFx0fVxuJiM0MztcdFx0bG9hZGVkJiM0MzsmIzQzOztcbiBcdFx0b3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4gXHRcdGlmIChsZTMyX3RvX2NwdShvdC1cdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcbiBcdFx0XHRleHQ0X2Vycm9yKHNiLCBcJiMzNDtvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIG1hZ2ljXCYjMzQ7LCBpKTtcbkBAIC02MzUsOCAmIzQzOzYzNywxMCBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRpcHV0KGlub2RlKTtcbiBcdHJldHVybiAwO1xuIG91dF9mcmVlOlxuLVx0Zm9yIChpLS07IGkgXHUwMDNlPSAwOyBpLS0pXG4tXHRcdGJyZWxzZShvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4mIzQzO1x0d2hpbGUgKGxvYWRlZCBcdTAwM2UgMCkge1xuJiM0MztcdFx0bG9hZGVkLS07XG4mIzQzO1x0XHRicmVsc2Uob2ktXHUwMDNlb2ZfYmluZm9bbG9hZGVkXS5vYl9iaCk7XG4mIzQzO1x0fVxuIFx0a3ZmcmVlKG9pLVx1MDAzZW9mX2JpbmZvKTtcbiBvdXRfcHV0OlxuIFx0aXB1dChpbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfaW5pdF9vcnBoYW5faW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBoZWFkIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgZXh0NF9pbml0X29ycGhhbl9pbmZvKCkgZHVyaW5nIGZpbGVzeXN0ZW0gbW91bnQuIElmIGFuIG9ycGhhbiBibG9jayBoYXMgYSBiYWQgbWFnaWMgbnVtYmVyIG9yIGNoZWNrc3VtLCB0aGUgcHJldmlvdXNseSBsb2FkZWQgYnVmZmVyIGhlYWQgZm9yIHRoYXQgYmxvY2sgd2FzIGxlYWtlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIG1lbW9yeSBsZWFrIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBtb3VudGluZyBhIGNvcnJ1cHRlZCBleHQ0IGltYWdlIHdpdGggdGhlIG9ycGhhbl9maWxlIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA2ZjBmYmEyYWRhM2E2MTA2MTVjNGQwOTA2ZGVjNDJjYTQ2ODg5YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxMToxNzoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jCmluZGV4IDY0ZWE0NzYyNDIzMzg2Li43MDk1YmExNTY0ZjY1ZSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9vcnBoYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L29ycGhhbi5jCkBAIC01NzIsNiAmIzQzOzU3Miw3IEBAIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAlpbnQgaSwgajsKIAlpbnQgcmV0OwogCWludCBmcmVlOwomIzQzOwlpbnQgbG9hZGVkID0gMDsKIAlfX2xlMzIgKmJkYXRhOwogCWludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7CiAJc3RydWN0IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwgKm90OwpAQCAtNjEzLDYgJiM0Mzs2MTQsNyBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJCQlyZXQgPSAtRUlPOwogCQkJZ290byBvdXRfZnJlZTsKIAkJfQomIzQzOwkJbG9hZGVkJiM0MzsmIzQzOzsKIAkJb3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS0mZ3Q7b2ZfYmluZm9baV0ub2JfYmgpOwogCQlpZiAobGUzMl90b19jcHUob3QtJmd0O29iX21hZ2ljKSAhPSBFWFQ0X09SUEhBTl9CTE9DS19NQUdJQykgewogCQkJZXh0NF9lcnJvcihzYiwgJiMzNDtvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIG1hZ2ljJiMzNDssIGkpOwpAQCAtNjM1LDggJiM0Mzs2MzcsMTAgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCWlwdXQoaW5vZGUpOwogCXJldHVybiAwOwogb3V0X2ZyZWU6Ci0JZm9yIChpLS07IGkgJmd0Oz0gMDsgaS0tKQotCQlicmVsc2Uob2ktJmd0O29mX2JpbmZvW2ldLm9iX2JoKTsKJiM0MzsJd2hpbGUgKGxvYWRlZCAmZ3Q7IDApIHsKJiM0MzsJCWxvYWRlZC0tOwomIzQzOwkJYnJlbHNlKG9pLSZndDtvZl9iaW5mb1tsb2FkZWRdLm9iX2JoKTsKJiM0MzsJfQogCWt2ZnJlZShvaS0mZ3Q7b2ZfYmluZm8pOwogb3V0X3B1dDoKIAlpcHV0KGlub2RlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBmcy9leHQ0L29ycGhhbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gLiBUaGV5JiMzOTt2ZSBhZGRlZCB0aGlzIGBsb2FkZWRgIHZhcmlhYmxlLCB3aGljaCBpcyBpbW1lZGlhdGVseSBhIGdvb2Qgc2lnbi4gSXQmIzM5O3MgZGVzaWduZWQgdG8gdHJhY2sgaG93IG1hbnkgb3JwaGFuIGJsb2NrcyB3ZSYjMzk7dmUgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBtdWNoIG1vcmUgcm9idXN0IHdheSB0byBoYW5kbGUgZXJyb3IgY2FzZXMgYW5kIGVuc3VyZXMgd2UgcmVsZWFzZSBldmVyeXRoaW5nIGNvcnJlY3RseS4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7V2h5IHRoZSBjaGFuZ2U/IFdoYXQgd2FzIHRoZSBwcm9ibGVtIHdpdGggdGhlIG9yaWdpbmFsIGxvb3A/JiMzNDsgVGhlbiBJIHJlLXJlYWQgdGhlIGNvZGUgYW5kIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGZvciAoaS0tOyBpICZndDs9IDA7IGktLSkgYnJlbHNlKG9pLSZndDtvZl9iaW5mb1tpXS5vYl9iaCk7YC4gVGhhdOKAmXMgcmlnaHQsIGl0IHdhcyBkZWNyZW1lbnRpbmcgYGlgICpiZWZvcmUqIHRoZSBsb29wIGV4ZWN1dGVkLCB3aGljaCBpcyBqdXN04oCmIHdyb25nLiBJdCBsb29rZWQgbGlrZSB0aGUgaW50ZW50aW9uIHdhcyB0byBmcmVlIGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyLiBTbyB0aGUgZGVjcmVtZW50IHdhcyBoYXBwZW5pbmcgKmJlZm9yZSogdGhlIGNoZWNrIGFnYWluc3QgYGlgLiBUaGUgb3JpZ2luYWwgY29kZSBhc3N1bWVkIGlmIHNvbWV0aGluZyBmYWlsZWQgbWlkd2F5IHRocm91Z2ggdGhlIGxvb3AsIGBpYCB3b3VsZCBwb2ludCB0byB0aGUgbGFzdCAqc3VjY2Vzc2Z1bGx5KiBsb2FkZWQgYmxvY2ssIHdoaWNoIGlzbiYjMzk7dCBndWFyYW50ZWVkLgoKVGhlIG5ldyBsb29wIGlzIG11Y2ggY2xlYW5lci4gSSBzZWUgdGhhdCBpdCBpdGVyYXRlcyB1cCB0byBgb2ktJmd0O29mX2Jsb2Nrc2AuIGBleHQ0X2JyZWFkYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBsb29wLCBhbmQgdGhlIGluZGV4IGBpYCBjbGVhcmx5IGNvcnJlc3BvbmRzIHRvIHRoZSBibG9jayB3ZSYjMzk7cmUgdHJ5aW5nIHRvIGxvYWQuIEFoLCBJIGdldCBpdCBub3cuIElmIGBleHQ0X2JyZWFkYCBmYWlscywgYGlgIGlzIHRoZSBpbmRleCBvZiB0aGUgKmZhaWxlZCogYmxvY2suIFNvIHByZXZpb3VzbHksIGRlY3JlbWVudGluZyBgaWAgd291bGQgbGVhZCB0byB0aGUgbG9vcCBmcmVlaW5nIGJsb2NrIGBpLTFgIGFsbCB0aGUgd2F5IGRvd24uIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgc2tpcHBpbmcgdGhlIGNvcnJlY3QgYmxvY2sgYW5kIGZyZWVpbmcgdGhlIHdyb25nIG9uZXMuCgpCdXQgSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBhYm91dCBvdGhlciBmYWlsdXJlIHNjZW5hcmlvcywgdG9vLiBJZiBgZXh0NF9icmVhZGAgc3VjY2VlZHMsIGFuZCAqc29tZXRoaW5nIGVsc2UqIGZhaWxzIHdpdGhpbiB0aGF0IGxvb3AsIHRoZSBvbGQgY29kZSB3b3VsZCByZWxlYXNlIHRoZSB3cm9uZyBibG9ja3MsIG9yIGF0IGxlYXN0IG9uZSBsZXNzIHRoYW4gaXQgc2hvdWxkLiBOb3csIHdpdGggdGhlIGBsb2FkZWRgIGNvdW50ZXIsIHdlIGhhdmUgYSBjbGVhciByZWNvcmQgb2Ygd2hhdCYjMzk7cyBiZWVuIGxvYWRlZC4gVGhhdCYjMzk7cyAqbXVjaCogYmV0dGVyLiBJdCBtZWFucyB3ZSByZWxlYXNlICpvbmx5KiB0aGUgYmxvY2tzIHRoYXQgd2VyZSBzdWNjZXNzZnVsbHkgbG9hZGVkIHVwIHRvIHRoYXQgcG9pbnQuIFRoZSBgbG9hZGVkYCB2YXJpYWJsZSBpcyBnb2luZyB0byBnaXZlIHVzIGEgbXVjaCBtb3JlIHByZWNpc2UgY2xlYW4tdXAgaW4gdGhvc2UgZXJyb3IgcGF0aHMuIEkgbmVlZCB0byBrZWVwIHJlYWRpbmcgdGhlIHJlc3Qgb2YgYGV4dDRfaW5pdF9vcnBoYW5faW5mb2AgdG8gbWFrZSBzdXJlIGl0IGlzIHJlYWxseSBiZWluZyB1c2VkIGFuZCB0aGVyZSBhcmUgbm8gbmV3IHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L29ycGhhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTcwOlx0XHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyAqb2kgPSBcdTAwMjZFWFQ0X1NCKHNiKS1cdTAwM2VzX29ycGhhbl9pbmZvO1xuIDU3MTpcdFx0c3RydWN0IGlub2RlICppbm9kZTtcbiA1NzI6XHRcdGludCBpLCBqO1xuIDU3MzpcdFx0aW50IHJldDtcbiA1NzQ6XHRcdGludCBmcmVlO1xuIDU3NTpcdFx0aW50IGxvYWRlZCA9IDA7XG4gNTc2Olx0XHRfX2xlMzIgKmJkYXRhO1xuIDU3NzpcdFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcbiA1Nzg6XHRcdHN0cnVjdCBleHQ0X29ycGhhbl9ibG9ja190YWlsICpvdDtcbiA1Nzk6XHRcdGlub190IG9ycGhhbl9pbm8gPSBsZTMyX3RvX2NwdShFWFQ0X1NCKHNiKS1cdTAwM2VzX2VzLVx1MDAzZXNfb3JwaGFuX2ZpbGVfaW51bSk7XG4gNTgwOlx0XG4gNTgxOlx0XHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxuIDU4MjpcdFx0XHRyZXR1cm4gMDtcbiA1ODM6XHRcbiA1ODQ6XHRcdGlub2RlID0gZXh0NF9pZ2V0KHNiLCBvcnBoYW5faW5vLCBFWFQ0X0lHRVRfU1BFQ0lBTCk7XG4gNTg1Olx0XHRpZiAoSVNfRVJSKGlub2RlKSkge1xuIDU4NjpcdFx0XHRleHQ0X21zZyhzYiwgS0VSTl9FUlIsIFwmIzM0O2dldCBvcnBoYW4gaW5vZGUgZmFpbGVkXCYjMzQ7KTtcbiA1ODc6XHRcdFx0cmV0dXJuIFBUUl9FUlIoaW5vZGUpO1xuIDU4ODpcdFx0fVxuIDU4OTpcdFx0LypcbiA1OTA6XHRcdCAqIFRoaXMgaXMganVzdCBhbiBhcnRpZmljaWFsIGxpbWl0IHRvIHByZXZlbnQgY29ycnVwdGVkIGZzIGZyb21cbiA1OTE6XHRcdCAqIGNvbnN1bWluZyBhYnN1cmQgYW1vdW50cyBvZiBtZW1vcnkgd2hlbiBwaW5uaW5nIGJsb2NrcyBvZiBvcnBoYW5cbiA1OTI6XHRcdCAqIGZpbGUgaW4gbWVtb3J5LlxuIDU5MzpcdFx0ICovXG4gNTk0Olx0XHRpZiAoaW5vZGUtXHUwMDNlaV9zaXplIFx1MDAzZSAoRVhUNF9NQVhfT1JQSEFOX0ZJTEVfQkxPQ0tTIFx1MDAzY1x1MDAzYyBpbm9kZS1cdTAwM2VpX2Jsa2JpdHMpKSB7XG4gNTk1Olx0XHRcdGV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgXCYjMzQ7b3JwaGFuIGZpbGUgdG9vIGJpZzogJWxsdVwmIzM0OyxcbiA1OTY6XHRcdFx0XHQgKHVuc2lnbmVkIGxvbmcgbG9uZylpbm9kZS1cdTAwM2VpX3NpemUpO1xuIDU5NzpcdFx0XHRyZXQgPSAtRUZTQ09SUlVQVEVEO1xuIDU5ODpcdFx0XHRnb3RvIG91dF9wdXQ7XG4gNTk5Olx0XHR9XG4gNjAwOlx0XHRvaS1cdTAwM2VvZl9ibG9ja3MgPSBpbm9kZS1cdTAwM2VpX3NpemUgXHUwMDNlXHUwMDNlIHNiLVx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XG4gNjAxOlx0XHRvaS1cdTAwM2VvZl9jc3VtX3NlZWQgPSBFWFQ0X0koaW5vZGUpLVx1MDAzZWlfY3N1bV9zZWVkO1xuIDYwMjpcdFx0b2ktXHUwMDNlb2ZfYmluZm8gPSBrdm1hbGxvY19vYmpzKHN0cnVjdCBleHQ0X29ycGhhbl9ibG9jaywgb2ktXHUwMDNlb2ZfYmxvY2tzKTtcbiA2MDM6XHRcdGlmICghb2ktXHUwMDNlb2ZfYmluZm8pIHtcbiA2MDQ6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA2MDU6XHRcdFx0Z290byBvdXRfcHV0O1xuIDYwNjpcdFx0fVxuIDYwNzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb2ktXHUwMDNlb2ZfYmxvY2tzOyBpJiM0MzsmIzQzOykge1xuIDYwODpcdFx0XHRvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCA9IGV4dDRfYnJlYWQoTlVMTCwgaW5vZGUsIGksIDApO1xuIDYwOTpcdFx0XHRpZiAoSVNfRVJSKG9pLVx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKSkge1xuIDYxMDpcdFx0XHRcdHJldCA9IFBUUl9FUlIob2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO1xuIDYxMTpcdFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gNjEyOlx0XHRcdH1cbiA2MTM6XHRcdFx0aWYgKCFvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCkge1xuIDYxNDpcdFx0XHRcdHJldCA9IC1FSU87XG4gNjE1Olx0XHRcdFx0Z290byBvdXRfZnJlZTtcbiA2MTY6XHRcdFx0fVxuIDYxNzpcdFx0XHRsb2FkZWQmIzQzOyYjNDM7O1xuIDYxODpcdFx0XHRvdCA9IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwoc2IsIG9pLVx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKTtcbiA2MTk6XHRcdFx0aWYgKGxlMzJfdG9fY3B1KG90LVx1MDAzZW9iX21hZ2ljKSAhPSBFWFQ0X09SUEhBTl9CTE9DS19NQUdJQykge1xuIDYyMDpcdFx0XHRcdGV4dDRfZXJyb3Ioc2IsIFwmIzM0O29ycGhhbiBmaWxlIGJsb2NrICVkOiBiYWQgbWFnaWNcJiMzNDssIGkpO1xuIDYyMTpcdFx0XHRcdHJldCA9IC1FSU87XG4gNjIyOlx0XHRcdFx0Z290byBvdXRfZnJlZTtcbiA2MjM6XHRcdFx0fVxuIDYyNDpcdFx0XHRpZiAoIWV4dDRfb3JwaGFuX2ZpbGVfYmxvY2tfY3N1bV92ZXJpZnkoc2IsXG4gNjI1Olx0XHRcdFx0XHRcdFx0b2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpKSB7XG4gNjI2Olx0XHRcdFx0ZXh0NF9lcnJvcihzYiwgXCYjMzQ7b3JwaGFuIGZpbGUgYmxvY2sgJWQ6IGJhZCBjaGVja3N1bVwmIzM0OywgaSk7XG4gNjI3Olx0XHRcdFx0cmV0ID0gLUVJTztcbiA2Mjg6XHRcdFx0XHRnb3RvIG91dF9mcmVlO1xuIDYyOTpcdFx0XHR9XG4gNjMwOlx0XHRcdGJkYXRhID0gKF9fbGUzMiAqKShvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaC1cdTAwM2ViX2RhdGEpO1xuIDYzMTpcdFx0XHRmcmVlID0gMDtcbiA2MzI6XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5vZGVzX3Blcl9vYjsgaiYjNDM7JiM0MzspXG4gNjMzOlx0XHRcdFx0aWYgKGJkYXRhW2pdID09IDApXG4gNjM0Olx0XHRcdFx0XHRmcmVlJiM0MzsmIzQzOztcbiA2MzU6XHRcdFx0YXRvbWljX3NldChcdTAwMjZvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9mcmVlX2VudHJpZXMsIGZyZWUpO1xuIDYzNjpcdFx0fVxuIDYzNzpcdFx0aXB1dChpbm9kZSk7XG4gNjM4Olx0XHRyZXR1cm4gMDtcbiA2Mzk6XHRvdXRfZnJlZTpcbiA2NDA6XHRcdHdoaWxlIChsb2FkZWQgXHUwMDNlIDApIHtcbiA2NDE6XHRcdFx0bG9hZGVkLS07XG4gNjQyOlx0XHRcdGJyZWxzZShvaS1cdTAwM2VvZl9iaW5mb1tsb2FkZWRdLm9iX2JoKTtcbiA2NDM6XHRcdH1cbiA2NDQ6XHRcdGt2ZnJlZShvaS1cdTAwM2VvZl9iaW5mbyk7XG4gNjQ1Olx0b3V0X3B1dDpcbiA2NDY6XHRcdGlwdXQoaW5vZGUpO1xuIDY0NzpcdFx0cmV0dXJuIHJldDtcbiA2NDg6XHR9XG4gNjQ5Olx0XG4gNjUwOlx0aW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiA2NTE6XHR7XG4gNjUyOlx0XHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyAqb2kgPSBcdTAwMjZFWFQ0X1NCKHNiKS1cdTAwM2VzX29ycGhhbl9pbmZvO1xuIDY1MzpcdFx0aW50IGk7XG4gNjU0Olx0XHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xuIDY1NTpcdFxuIDY1NjpcdFx0aWYgKCFleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9maWxlKHNiKSlcbiA2NTc6XHRcdFx0cmV0dXJuIDE7XG4gNjU4Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBvaS1cdTAwM2VvZl9ibG9ja3M7IGkmIzQzOyYjNDM7KVxuIDY1OTpcdFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2b2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfZnJlZV9lbnRyaWVzKSAhPVxuIDY2MDpcdFx0XHQgICAgaW5vZGVzX3Blcl9vYilcbiA2NjE6XHRcdFx0XHRyZXR1cm4gMDtcbiA2NjI6XHRcdHJldHVybiAxO1xuIDY2MzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjczCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBNZW1vcnkgTGVhayBpbiBleHQ0IE9ycGhhbiBCbG9jayBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbGAgY2hlY2ssIGFuZCBJIHRoaW5rIEkmIzM5O3ZlIHNwb3R0ZWQgYSBwcm9ibGVtLiBJZiBgZXh0NF9icmVhZGAgZmFpbHMsIHRoZSBsb29wIGNvcnJlY3RseSByZWxlYXNlcyB0aGUgYmxvY2tzIHRoYXQgd2VyZSBzdWNjZXNzZnVsbHkgcmVhZCwgc3RhcnRpbmcgZnJvbSBgaS0xYCBkb3duIHRvIDAuIEJ1dCwgd2hhdCBpZiB0aGUgbWFnaWMgbnVtYmVyIGNoZWNrIHdpdGhpbiBgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbGAgZmFpbHM/CgpTcGVjaWZpY2FsbHksIGlmIHRoZSBtYWdpYyBjaGVjayBgaWYgKGxlMzJfdG9fY3B1KG90LSZndDtvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpYCBmYWlscywgaXQgbWVhbnMgdGhlcmUmIzM5O3MgYSBwcm9ibGVtIHdpdGggYSBibG9jayByZWFkIGJ5IGBleHQ0X2JyZWFkYC4gVGhlIGltcG9ydGFudCBkZXRhaWwgaXMgdGhhdCBgaWAgKmlzKiB0aGUgaW5kZXggb2YgdGhlIGJsb2NrIHRoYXQgd2FzIHN1Y2Nlc3NmdWxseSByZWFkICpiZWZvcmUqIHRoZSBjaGVjayBmYWlsZWQuCgpUaGVuLCB0aGUgbG9vcCBwcm9jZWVkcyB0byBgZm9yIChpLS07IGkgJmd0Oz0gMDsgaS0tKWAuIFNlZSwgYmVjYXVzZSBvZiB0aGUgcHJlLWRlY3JlbWVudCBgaS0tYCwgdGhlIGNvZGUgc2tpcHMgcmVsZWFzaW5nIHRoZSBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIGluZGV4IGBpYC4gSXQgaXRlcmF0ZXMgZnJvbSBgaS0xYCBkb3duLiBUaGF0IGBvaS0mZ3Q7b2ZfYmluZm9baV0ub2JfYmhgIGJsb2NrLCB0aGUgb25lIHRoYXQgdHJpZ2dlcmVkIHRoZSBlcnJvciwgaXMgZWZmZWN0aXZlbHkgbGVha2VkISBUaGF0JiMzOTtzIGEgYnVmZmVyIGhlYWQgbGVhay4gSXQmIzM5O3MgYSBzdWJ0bGUgYnV0IHNpZ25pZmljYW50IGlzc3VlLgoKVGhpcyBpcyBhIGNsZWFyIG1lbW9yeSBsZWFrIG9uIGFuIGVycm9yIHBhdGggd2l0aGluIHRoZSBvcnBoYW4gaGFuZGxpbmcgY29kZS4gVGhpcyAqZGVmaW5pdGVseSogd2FycmFudHMgc29tZSBmdXp6aW5nIGFuZCBmdXJ0aGVyIHRlc3RpbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gcmVsaWFibHkgdHJpZ2dlciBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCB0byBwdXQgdGhpcyB1bmRlciB0aGUgbWljcm9zY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X2luaXRfb3JwaGFuX2luZm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9Mzk2Nz1leHRlcm4gdm9pZCBleHQ0X3JlbGVhc2Vfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG5mcy9leHQ0L2V4dDQuaDozOTY4OmV4dGVybiBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xuZnMvZXh0NC9leHQ0LmgtMzk2OS1leHRlcm4gaW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG4tLVxuZnMvZXh0NC9vcnBoYW4uYz01NTA9dm9pZCBleHQ0X29ycGhhbl9maWxlX2Jsb2NrX3RyaWdnZXIoc3RydWN0IGpiZDJfYnVmZmVyX3RyaWdnZXJfdHlwZSAqdHJpZ2dlcnMsXG4tLVxuZnMvZXh0NC9vcnBoYW4uYy01NjctXG5mcy9leHQ0L29ycGhhbi5jOjU2ODppbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L29ycGhhbi5jLTU2OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUzMzg9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU2ODUtXG5mcy9leHQ0L3N1cGVyLmM6NTY4NjpcdGVyciA9IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTY4Ny1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT3JwaGFuIEZpbGUgRmVhdHVyZSBEdXJpbmcgTW91bnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gYF9fZXh0NF9maWxsX3N1cGVyYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGhhcHBlbmluZyBkdXJpbmcgdGhlIG1vdW50IHByb2Nlc3Mg4oCTIGdvb2QgdG8ga25vdy4gVGhlIGtleSBwaWVjZSBzZWVtcyB0byBiZSB0aGlzIGZ1bmN0aW9uOiBgZXh0NF9oYXNfZmVhdHVyZV9vcnBoYW5fZmlsZShzYilgLiBUaGF0IGluZGljYXRlcyBpdCYjMzk7cyBjaGVja2luZyBmb3IgdGhlIGV4aXN0ZW5jZSBhbmQvb3IgZW5hYmxpbmcgb2YgYSByZWxhdGl2ZWx5IG5ldyBmZWF0dXJlLCB0aGUgJiMzOTtvcnBoYW5fZmlsZSYjMzk7IGZlYXR1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgb3IgY29uZmlndXJlcyBpdC4KClNpbmNlIEkgYW0gYWxyZWFkeSBsb29raW5nIGF0IHRoZSBleHQ0IGZpbGVzeXN0ZW0sIEkmIzM5O2xsIGZpcnN0IGNoZWNrIHRoZSBiYXNpYyBFWFQ0X0ZTIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIGl0JiMzOTtzIGdlbmVyYWxseSBlbmFibGVkLiBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55ICpzcGVjaWZpYyogY29uZmlndXJhdGlvbiBrbm9iLCBsaWtlIGEgY29tcGlsZS10aW1lIG9wdGlvbiBvciBhIG1vdW50IG9wdGlvbiwgZGlyZWN0bHkgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBgb3JwaGFuX2ZpbGVgIGZlYXR1cmU/IFRoYXQmIzM5O3MgdGhlIG5leHQgYXZlbnVlIEkgbmVlZCB0byBleHBsb3JlLiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvcnBoYW5fZmlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4dDQgSW5pdGlhbGl6YXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBleHQ0LCBhbmQgaXQgc2VlbXMgdGhlcmUmIzM5O3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGRlZmluZWQgaW4gdGhlIG1haW4gYEtjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgZmluZTsgYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBCdXQgd2FpdCBhIG1pbnV0ZeKApkkmIzM5O20gcmVtZW1iZXJpbmcgdGhhdCBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBkZWZpbmVkIGluIGBmcy9leHQ0L29ycGhhbi5jYCwgcmlnaHQ/IEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIHNob3VsZCByZWFsbHkgZG91YmxlLWNoZWNrIHRoZSBgZnMvZXh0NC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggaXQgdG8gbWFrZSBjZXJ0YWluIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRVhUNF9GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNTpcdFx0c2VsZWN0IEpCRDJcbiAgIDY6XHRcdHNlbGVjdCBDUkMxNlxuICAgNzpcdFx0c2VsZWN0IENSQzMyXG4gICA4Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDk6XHRcdHNlbGVjdCBGU19FTkNSWVBUSU9OX0FMR1MgaWYgRlNfRU5DUllQVElPTlxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgdGhlIGV4dDMgZmlsZXN5c3RlbS5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVW5saWtlIHRoZSBjaGFuZ2UgZnJvbSBleHQyIGZpbGVzeXN0ZW0gdG8gZXh0MyBmaWxlc3lzdGVtLFxuICAxNDpcdFx0ICB0aGUgb24tZGlzayBmb3JtYXQgb2YgZXh0NCBpcyBub3QgZm9yd2FyZHMgY29tcGF0aWJsZSB3aXRoXG4gIDE1Olx0XHQgIGV4dDM7IGl0IGlzIGJhc2VkIG9uIGV4dGVudCBtYXBzIGFuZCBpdCBzdXBwb3J0cyA0OC1iaXRcbiAgMTY6XHRcdCAgcGh5c2ljYWwgYmxvY2sgbnVtYmVycy4gIFRoZSBleHQ0IGZpbGVzeXN0ZW0gYWxzbyBzdXBwb3J0cyBkZWxheWVkXG4gIDE3Olx0XHQgIGFsbG9jYXRpb24sIHBlcnNpc3RlbnQgcHJlYWxsb2NhdGlvbiwgaGlnaCByZXNvbHV0aW9uIHRpbWUgc3RhbXBzLFxuICAxODpcdFx0ICBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgZmVhdHVyZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgc3BlZWRcbiAgMTk6XHRcdCAgdXAgZnNjayB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIHdlYiBwYWdlcyBhdFxuICAyMDpcdFx0ICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFRoZSBleHQ0IGZpbGVzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgYW4gZXh0MyBmaWxlc3lzdGVtOyB3aGlsZSB0aGVyZVxuICAyMzpcdFx0ICBhcmUgc29tZSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kIGlub2RlXG4gIDI0Olx0XHQgIHRhYmxlIHJlYWRhaGVhZCwgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZ2FpbnMgcmVxdWlyZSBlbmFibGluZyBleHQ0XG4gIDI1Olx0XHQgIGZlYXR1cmVzIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHR1bmUyZnMsIG9yIGZvcm1hdHRpbmcgYSBuZXdcbiAgMjY6XHRcdCAgZmlsZXN5c3RlbSBhcyBhbiBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGx5LiBXaXRob3V0IGV4cGxpY2l0IGVuYWJsaW5nXG4gIDI3Olx0XHQgIG9mIGV4dDQgZmVhdHVyZXMsIHRoZSBvbiBkaXNrIGZpbGVzeXN0ZW0gZm9ybWF0IHN0YXlzIGZ1bGx5IGJhY2t3YXJkXG4gIDI4Olx0XHQgIGNvbXBhdGlibGUuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGVcbiAgMzE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGV4dDQuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4gIDM2Olx0XHRib29sIFwmIzM0O1VzZSBleHQ0IGZvciBleHQyIGZpbGUgc3lzdGVtc1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXG4gIDM4Olx0XHRkZXBlbmRzIG9uIEVYVDJfRlM9blxuICAzOTpcdFx0ZGVmYXVsdCB5XG4gIDQwOlx0XHRoZWxwXG4gIDQxOlx0XHQgIEFsbG93IHRoZSBleHQ0IGZpbGUgc3lzdGVtIGRyaXZlciBjb2RlIHRvIGJlIHVzZWQgZm9yIGV4dDJcbiAgNDI6XHRcdCAgZmlsZSBzeXN0ZW0gbW91bnRzLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gcmVkdWNlIHRoZWlyXG4gIDQzOlx0XHQgIGNvbXBpbGVkIGtlcm5lbCBzaXplIGJ5IHVzaW5nIG9uZSBmaWxlIHN5c3RlbSBkcml2ZXIgZm9yXG4gIDQ0Olx0XHQgIGV4dDIsIGV4dDMsIGFuZCBleHQ0IGZpbGUgc3lzdGVtcy5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcbiAgNDc6XHRcdGJvb2wgXCYjMzQ7RXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICA0ODpcdFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXG4gIDQ5Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IHBlcm1pc3Npb25zIGZvciB1c2VycyBhbmRcbiAgNTI6XHRcdCAgZ3JvdXBzIGJleW9uZCB0aGUgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxuICA1MzpcdFxuICA1NDpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcbiAgNTc6XHRcdGJvb2wgXCYjMzQ7RXh0NCBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbiAgNTg6XHRcdGRlcGVuZHMgb24gRVhUNF9GU1xuICA1OTpcdFx0aGVscFxuICA2MDpcdFx0ICBTZWN1cml0eSBsYWJlbHMgc3VwcG9ydCBhbHRlcm5hdGl2ZSBhY2Nlc3MgY29udHJvbCBtb2RlbHNcbiAgNjE6XHRcdCAgaW1wbGVtZW50ZWQgYnkgc2VjdXJpdHkgbW9kdWxlcyBsaWtlIFNFTGludXguICBUaGlzIG9wdGlvblxuICA2MjpcdFx0ICBlbmFibGVzIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBoYW5kbGVyIGZvciBmaWxlIHNlY3VyaXR5XG4gIDYzOlx0XHQgIGxhYmVscyBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLlxuICA2NDpcdFxuICA2NTpcdFx0ICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHNlY3VyaXR5IG1vZHVsZSB0aGF0IHJlcXVpcmVzIHVzaW5nXG4gIDY2Olx0XHQgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIGZpbGUgc2VjdXJpdHkgbGFiZWxzLCBzYXkgTi5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgRVhUNF9ERUJVR1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtFeHQ0IGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4gIDcwOlx0XHRkZXBlbmRzIG9uIEVYVDRfRlNcbiAgNzE6XHRcdGhlbHBcbiAgNzI6XHRcdCAgRW5hYmxlcyBydW4tdGltZSBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbS5cbiAgNzM6XHRcbiAgNzQ6XHRcdCAgSWYgeW91IHNlbGVjdCBZIGhlcmUsIHRoZW4geW91IHdpbGwgYmUgYWJsZSB0byB0dXJuIG9uIGRlYnVnZ2luZ1xuICA3NTpcdFx0ICB1c2luZyBkeW5hbWljIGRlYnVnIGNvbnRyb2wgZm9yIG1iX2RlYnVnKCkgLyBleHRfZGVidWcoKSBtc2dzLlxuICA3NjpcdFxuICA3NzpcdGNvbmZpZyBFWFQ0X0tVTklUX1RFU1RTXG4gIDc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgZXh0NFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDc5Olx0XHRkZXBlbmRzIG9uIEVYVDRfRlMgXHUwMDI2XHUwMDI2IEtVTklUXG4gIDgwOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICA4MTpcdFx0aGVscFxuICA4MjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZXh0NCBLVW5pdCB0ZXN0cy5cbiAgODM6XHRcbiAgODQ6XHRcdCAgS1VuaXQgdGVzdHMgcnVuIGR1cmluZyBib290IGFuZCBvdXRwdXQgdGhlIHJlc3VsdHMgdG8gdGhlIGRlYnVnIGxvZ1xuICA4NTpcdFx0ICBpbiBUQVAgZm9ybWF0IChodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvKS4gT25seSB1c2VmdWwgZm9yIGtlcm5lbCBkZXZzXG4gIDg2Olx0XHQgIHJ1bm5pbmcgS1VuaXQgdGVzdCBoYXJuZXNzIGFuZCBhcmUgbm90IGZvciBpbmNsdXNpb24gaW50byBhIHByb2R1Y3Rpb25cbiAgODc6XHRcdCAgYnVpbGQuXG4gIDg4Olx0XG4gIDg5Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwgcGxlYXNlIHJlZmVyXG4gIDkwOlx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uIGluIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0Ly5cbiAgOTE6XHRcbiAgOTI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU4MwoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiA5MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFWFQ0IE9ycGhhbiBCbG9jayBJbml0aWFsaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdXNpbmcgYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBMZXQmIzM5O3MgZGlnIGluLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbG9naWMuCgpUaGUgb3JpZ2luYWwgY29kZSYjMzk7cyBgZm9yYCBsb29wLCBzcGVjaWZpY2FsbHkgYGZvciAoaS0tOyBpICZndDs9IDA7IGktLSlgLCBmb3IgcmVsZWFzaW5nIGJ1ZmZlciBoZWFkcyBpbiB0aGUgYG91dF9mcmVlYCBwYXRoIGlzIHdoYXQgY2F1Z2h0IG15IGV5ZS4gIEl0IGxvb2tzIGxpa2UgaWYgYGV4dDRfYnJlYWRgIGZhaWxzIChyZXR1cm5zIGFuIGVycm9yIG9yIE5VTEwpLCB0aGUgbG9vcCBjb3JyZWN0bHkgc2tpcHMgcmVsZWFzaW5nIHRoZSBwcm9ibGVtYXRpYyBidWZmZXIgaGVhZCBiZWNhdXNlIGBpYCBpcyBhdCB0aGUgaW5kZXggb2YgdGhlIGJhZCBgb2JfYmhgIGJsb2NrLiBIb3dldmVyLCBpZiB0aGUgbWFnaWMgY2hlY2sgaW4gYGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWxgIGZhaWxzLCB0aGF0IG1lYW5zIHdlIGhhdmUgYSB2YWxpZCBgb2JfYmhgIGF0IGBvaS0mZ3Q7b2ZfYmluZm9baV1gICh3aGVyZSBgaWAgaXMgdGhlIGN1cnJlbnQgaW5kZXgpIHdoaWNoICpzaG91bGQqIGJlIHJlbGVhc2VkLCBidXQgdGhlIGxvb3Agd291bGQgc2tpcCBpdCwgd2hpY2ggaW50cm9kdWNlcyBhIGJ1ZmZlciBoZWFkIGxlYWsuIFRoZSBwYXRjaCYjMzk7cyBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBsb2FkZWRgIHZhcmlhYmxlIHRvIHRyYWNrIHN1Y2Nlc3NmdWwgYGV4dDRfYnJlYWRgIGNhbGxzIGlzIHdoYXQgc2VlbXMgdG8gZml4IHRoZSBwcm9ibGVtIGJ5IGVuc3VyaW5nIHRoZSBgd2hpbGVgIGxvb3AgcmVsZWFzZXMgYWxsIHZhbGlkIGJsb2Nrcy4KClNvIHRoZSBwYXRjaCBwcm92aWRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpdCBhZGRyZXNzZXMgYSBidWZmZXIgaGVhZCBsZWFrIHRoYXQgb2NjdXJzIG9uIGFuIGVycm9yIHBhdGggZHVyaW5nIG1vdW50LCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouIEkgc2hvdWxkIGZvY3VzIG9uIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGl0c2VsZi4gSXQgc2VlbXMgdGhlIHByb2JsZW0gbGllcyBleGNsdXNpdmVseSB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gTWF5YmUgYF9fZXh0NF9maWxsX3N1cGVyYCBvciBgZXh0NF9maWxsX3N1cGVyYCBjb3VsZCBiZSByZWxldmFudCwgYnV0IGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGlzIHRoZSBvbmUgdGhhdCYjMzk7cyBkaXJlY3RseSBtb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBsZWFrIGNhbiBvY2N1ci4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBvbmx5IGFmZmVjdHMgYGV4dDRfaW5pdF9vcnBoYW5faW5mb2AuCgpJJiMzOTt2ZSBkZWNpZGVkIHRvIHNldCBgRm9jdXNTeW1ib2xzOiBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGFuZCBgRW5hYmxlQ29uZmlnczogRVhUNF9GU2AuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGlzIHJlYWNoYWJsZS4gWWVzLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgX19leHQ0X2ZpbGxfc3VwZXJgLCB3aGljaCBpcyBpbnZva2VkIGR1cmluZyB0aGUgbW91bnQgcHJvY2Vzcy4gSSBiZWxpZXZlIHRoYXQgbW91bnRpbmcgYSBjcmFmdGVkIGV4dDQgaW1hZ2UgY29udGFpbmluZyB0aGUgYG9ycGhhbl9maWxlYCBmZWF0dXJlIGFuZCBkZWxpYmVyYXRlbHkgY29ycnVwdGVkIG9ycGhhbiBibG9ja3Mgd2lsbCB0cmlnZ2VyIHRoZSByZWxldmFudCBlcnJvciBwYXRoIGFuZCB0aGUgbGVhaywgKG9yIHRoZSBwYXRjaGVkIGNvZGUgYW5kIHRyaWdnZXIgdGhlIGZpeCksIG1ha2luZyB0aGlzIGFyZWEgdmVyeSB2YWx1YWJsZSBmb3IgZnV6emluZy4KQWxyaWdodCwgSSYjMzk7bGwgc2V0IHRoZSBmdXp6aW5nIHRhcmdldHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9pbml0X29ycGhhbl9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGhlYWQgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBleHQ0X2luaXRfb3JwaGFuX2luZm8oKSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4gSWYgYW4gb3JwaGFuIGJsb2NrIGhhcyBhIGJhZCBtYWdpYyBudW1iZXIgb3IgY2hlY2tzdW0sIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBidWZmZXIgaGVhZCBmb3IgdGhhdCBibG9jayB3YXMgbGVha2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGEgY29ycnVwdGVkIGV4dDQgaW1hZ2Ugd2l0aCB0aGUgb3JwaGFuX2ZpbGUgZmVhdHVyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfaW5pdF9vcnBoYW5faW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBoZWFkIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgZXh0NF9pbml0X29ycGhhbl9pbmZvKCkgZHVyaW5nIGZpbGVzeXN0ZW0gbW91bnQuIElmIGFuIG9ycGhhbiBibG9jayBoYXMgYSBiYWQgbWFnaWMgbnVtYmVyIG9yIGNoZWNrc3VtLCB0aGUgcHJldmlvdXNseSBsb2FkZWQgYnVmZmVyIGhlYWQgZm9yIHRoYXQgYmxvY2sgd2FzIGxlYWtlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIG1lbW9yeSBsZWFrIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBtb3VudGluZyBhIGNvcnJ1cHRlZCBleHQ0IGltYWdlIHdpdGggdGhlIG9ycGhhbl9maWxlIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMToxNzoyMi43MTg1MjQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMDEzNDY0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfaW5pdF9vcnBoYW5faW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGhlYWQgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBleHQ0X2luaXRfb3JwaGFuX2luZm8oKSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4gSWYgYW4gb3JwaGFuIGJsb2NrIGhhcyBhIGJhZCBtYWdpYyBudW1iZXIgb3IgY2hlY2tzdW0sIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBidWZmZXIgaGVhZCBmb3IgdGhhdCBibG9jayB3YXMgbGVha2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGEgY29ycnVwdGVkIGV4dDQgaW1hZ2Ugd2l0aCB0aGUgb3JwaGFuX2ZpbGUgZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MjIuNzE4NTM0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1NDkyNjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDZmMGZiYTJhZGEzYTYxMDYxNWM0ZDA5MDZkZWM0MmNhNDY4ODliMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMToxNzoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L29ycGhhbi5jIGIvZnMvZXh0NC9vcnBoYW4uY1xcbmluZGV4IDY0ZWE0NzYyNDIzMzg2Li43MDk1YmExNTY0ZjY1ZSAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXFxuKysrIGIvZnMvZXh0NC9vcnBoYW4uY1xcbkBAIC01NzIsNiArNTcyLDcgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRpbnQgaSwgajtcXG4gXFx0aW50IHJldDtcXG4gXFx0aW50IGZyZWU7XFxuK1xcdGludCBsb2FkZWQgPSAwO1xcbiBcXHRfX2xlMzIgKmJkYXRhO1xcbiBcXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xcbiBcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbCAqb3Q7XFxuQEAgLTYxMyw2ICs2MTQsNyBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuIFxcdFxcdFxcdHJldCA9IC1FSU87XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWU7XFxuIFxcdFxcdH1cXG4rXFx0XFx0bG9hZGVkKys7XFxuIFxcdFxcdG90ID0gZXh0NF9vcnBoYW5fYmxvY2tfdGFpbChzYiwgb2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKTtcXG4gXFx0XFx0aWYgKGxlMzJfdG9fY3B1KG90LVxcdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcXG4gXFx0XFx0XFx0ZXh0NF9lcnJvcihzYiwgXFxcIm9ycGhhbiBmaWxlIGJsb2NrICVkOiBiYWQgbWFnaWNcXFwiLCBpKTtcXG5AQCAtNjM1LDggKzYzNywxMCBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuIFxcdGlwdXQoaW5vZGUpO1xcbiBcXHRyZXR1cm4gMDtcXG4gb3V0X2ZyZWU6XFxuLVxcdGZvciAoaS0tOyBpIFxcdTAwM2U9IDA7IGktLSlcXG4tXFx0XFx0YnJlbHNlKG9pLVxcdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XFxuK1xcdHdoaWxlIChsb2FkZWQgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdGxvYWRlZC0tO1xcbitcXHRcXHRicmVsc2Uob2ktXFx1MDAzZW9mX2JpbmZvW2xvYWRlZF0ub2JfYmgpO1xcbitcXHR9XFxuIFxcdGt2ZnJlZShvaS1cXHUwMDNlb2ZfYmluZm8pO1xcbiBvdXRfcHV0OlxcbiBcXHRpcHV0KGlub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MjMuMjM0ODczNjk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQ4NDk4NzM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9pbml0X29ycGhhbl9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgaGVhZCBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGV4dDRfaW5pdF9vcnBoYW5faW5mbygpIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiBJZiBhbiBvcnBoYW4gYmxvY2sgaGFzIGEgYmFkIG1hZ2ljIG51bWJlciBvciBjaGVja3N1bSwgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJ1ZmZlciBoZWFkIGZvciB0aGF0IGJsb2NrIHdhcyBsZWFrZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbW91bnRpbmcgYSBjb3JydXB0ZWQgZXh0NCBpbWFnZSB3aXRoIHRoZSBvcnBoYW5fZmlsZSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA2ZjBmYmEyYWRhM2E2MTA2MTVjNGQwOTA2ZGVjNDJjYTQ2ODg5YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMToxNzoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jXG5pbmRleCA2NGVhNDc2MjQyMzM4Ni4uNzA5NWJhMTU2NGY2NWUgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXG4rKysgYi9mcy9leHQ0L29ycGhhbi5jXG5AQCAtNTcyLDYgKzU3Miw3IEBAIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdGludCBpLCBqO1xuIFx0aW50IHJldDtcbiBcdGludCBmcmVlO1xuK1x0aW50IGxvYWRlZCA9IDA7XG4gXHRfX2xlMzIgKmJkYXRhO1xuIFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcbiBcdHN0cnVjdCBleHQ0X29ycGhhbl9ibG9ja190YWlsICpvdDtcbkBAIC02MTMsNiArNjE0LDcgQEAgaW50IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuIFx0XHRcdHJldCA9IC1FSU87XG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcdFx0fVxuK1x0XHRsb2FkZWQrKztcbiBcdFx0b3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4gXHRcdGlmIChsZTMyX3RvX2NwdShvdC1cdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcbiBcdFx0XHRleHQ0X2Vycm9yKHNiLCBcIm9ycGhhbiBmaWxlIGJsb2NrICVkOiBiYWQgbWFnaWNcIiwgaSk7XG5AQCAtNjM1LDggKzYzNywxMCBAQCBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRpcHV0KGlub2RlKTtcbiBcdHJldHVybiAwO1xuIG91dF9mcmVlOlxuLVx0Zm9yIChpLS07IGkgXHUwMDNlPSAwOyBpLS0pXG4tXHRcdGJyZWxzZShvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCk7XG4rXHR3aGlsZSAobG9hZGVkIFx1MDAzZSAwKSB7XG4rXHRcdGxvYWRlZC0tO1xuK1x0XHRicmVsc2Uob2ktXHUwMDNlb2ZfYmluZm9bbG9hZGVkXS5vYl9iaCk7XG4rXHR9XG4gXHRrdmZyZWUob2ktXHUwMDNlb2ZfYmluZm8pO1xuIG91dF9wdXQ6XG4gXHRpcHV0KGlub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjIzLjIzNDg3NTA1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjczOTkzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGZzL2V4dDQvb3JwaGFuLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGNoYW5nZXMgdG8gYGV4dDRfaW5pdF9vcnBoYW5faW5mb2AuIFRoZXkndmUgYWRkZWQgdGhpcyBgbG9hZGVkYCB2YXJpYWJsZSwgd2hpY2ggaXMgaW1tZWRpYXRlbHkgYSBnb29kIHNpZ24uIEl0J3MgZGVzaWduZWQgdG8gdHJhY2sgaG93IG1hbnkgb3JwaGFuIGJsb2NrcyB3ZSd2ZSBzdWNjZXNzZnVsbHkgbG9hZGVkLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIGEgbXVjaCBtb3JlIHJvYnVzdCB3YXkgdG8gaGFuZGxlIGVycm9yIGNhc2VzIGFuZCBlbnN1cmVzIHdlIHJlbGVhc2UgZXZlcnl0aGluZyBjb3JyZWN0bHkuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiV2h5IHRoZSBjaGFuZ2U/IFdoYXQgd2FzIHRoZSBwcm9ibGVtIHdpdGggdGhlIG9yaWdpbmFsIGxvb3A/XCIgVGhlbiBJIHJlLXJlYWQgdGhlIGNvZGUgYW5kIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGZvciAoaS0tOyBpIFx1MDAzZT0gMDsgaS0tKSBicmVsc2Uob2ktXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO2AuIFRoYXTigJlzIHJpZ2h0LCBpdCB3YXMgZGVjcmVtZW50aW5nIGBpYCAqYmVmb3JlKiB0aGUgbG9vcCBleGVjdXRlZCwgd2hpY2ggaXMganVzdOKApiB3cm9uZy4gSXQgbG9va2VkIGxpa2UgdGhlIGludGVudGlvbiB3YXMgdG8gZnJlZSBibG9ja3MgaW4gcmV2ZXJzZSBvcmRlci4gU28gdGhlIGRlY3JlbWVudCB3YXMgaGFwcGVuaW5nICpiZWZvcmUqIHRoZSBjaGVjayBhZ2FpbnN0IGBpYC4gVGhlIG9yaWdpbmFsIGNvZGUgYXNzdW1lZCBpZiBzb21ldGhpbmcgZmFpbGVkIG1pZHdheSB0aHJvdWdoIHRoZSBsb29wLCBgaWAgd291bGQgcG9pbnQgdG8gdGhlIGxhc3QgKnN1Y2Nlc3NmdWxseSogbG9hZGVkIGJsb2NrLCB3aGljaCBpc24ndCBndWFyYW50ZWVkLlxuXG5UaGUgbmV3IGxvb3AgaXMgbXVjaCBjbGVhbmVyLiBJIHNlZSB0aGF0IGl0IGl0ZXJhdGVzIHVwIHRvIGBvaS1cdTAwM2VvZl9ibG9ja3NgLiBgZXh0NF9icmVhZGAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgbG9vcCwgYW5kIHRoZSBpbmRleCBgaWAgY2xlYXJseSBjb3JyZXNwb25kcyB0byB0aGUgYmxvY2sgd2UncmUgdHJ5aW5nIHRvIGxvYWQuIEFoLCBJIGdldCBpdCBub3cuIElmIGBleHQ0X2JyZWFkYCBmYWlscywgYGlgIGlzIHRoZSBpbmRleCBvZiB0aGUgKmZhaWxlZCogYmxvY2suIFNvIHByZXZpb3VzbHksIGRlY3JlbWVudGluZyBgaWAgd291bGQgbGVhZCB0byB0aGUgbG9vcCBmcmVlaW5nIGJsb2NrIGBpLTFgIGFsbCB0aGUgd2F5IGRvd24uIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgc2tpcHBpbmcgdGhlIGNvcnJlY3QgYmxvY2sgYW5kIGZyZWVpbmcgdGhlIHdyb25nIG9uZXMuXG5cbkJ1dCBJJ20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgb3RoZXIgZmFpbHVyZSBzY2VuYXJpb3MsIHRvby4gSWYgYGV4dDRfYnJlYWRgIHN1Y2NlZWRzLCBhbmQgKnNvbWV0aGluZyBlbHNlKiBmYWlscyB3aXRoaW4gdGhhdCBsb29wLCB0aGUgb2xkIGNvZGUgd291bGQgcmVsZWFzZSB0aGUgd3JvbmcgYmxvY2tzLCBvciBhdCBsZWFzdCBvbmUgbGVzcyB0aGFuIGl0IHNob3VsZC4gTm93LCB3aXRoIHRoZSBgbG9hZGVkYCBjb3VudGVyLCB3ZSBoYXZlIGEgY2xlYXIgcmVjb3JkIG9mIHdoYXQncyBiZWVuIGxvYWRlZC4gVGhhdCdzICptdWNoKiBiZXR0ZXIuIEl0IG1lYW5zIHdlIHJlbGVhc2UgKm9ubHkqIHRoZSBibG9ja3MgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxseSBsb2FkZWQgdXAgdG8gdGhhdCBwb2ludC4gVGhlIGBsb2FkZWRgIHZhcmlhYmxlIGlzIGdvaW5nIHRvIGdpdmUgdXMgYSBtdWNoIG1vcmUgcHJlY2lzZSBjbGVhbi11cCBpbiB0aG9zZSBlcnJvciBwYXRocy4gSSBuZWVkIHRvIGtlZXAgcmVhZGluZyB0aGUgcmVzdCBvZiBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCB0byBtYWtlIHN1cmUgaXQgaXMgcmVhbGx5IGJlaW5nIHVzZWQgYW5kIHRoZXJlIGFyZSBubyBuZXcgcG90ZW50aWFsIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjMwLjMwMjI3NjEyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvb3JwaGFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU3MDpcXHRcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyAqb2kgPSBcXHUwMDI2RVhUNF9TQihzYiktXFx1MDAzZXNfb3JwaGFuX2luZm87XFxuIDU3MTpcXHRcXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbiA1NzI6XFx0XFx0aW50IGksIGo7XFxuIDU3MzpcXHRcXHRpbnQgcmV0O1xcbiA1NzQ6XFx0XFx0aW50IGZyZWU7XFxuIDU3NTpcXHRcXHRpbnQgbG9hZGVkID0gMDtcXG4gNTc2OlxcdFxcdF9fbGUzMiAqYmRhdGE7XFxuIDU3NzpcXHRcXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xcbiA1Nzg6XFx0XFx0c3RydWN0IGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWwgKm90O1xcbiA1Nzk6XFx0XFx0aW5vX3Qgb3JwaGFuX2lubyA9IGxlMzJfdG9fY3B1KEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2VzLVxcdTAwM2VzX29ycGhhbl9maWxlX2ludW0pO1xcbiA1ODA6XFx0XFxuIDU4MTpcXHRcXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxcbiA1ODI6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDU4MzpcXHRcXG4gNTg0OlxcdFxcdGlub2RlID0gZXh0NF9pZ2V0KHNiLCBvcnBoYW5faW5vLCBFWFQ0X0lHRVRfU1BFQ0lBTCk7XFxuIDU4NTpcXHRcXHRpZiAoSVNfRVJSKGlub2RlKSkge1xcbiA1ODY6XFx0XFx0XFx0ZXh0NF9tc2coc2IsIEtFUk5fRVJSLCBcXFwiZ2V0IG9ycGhhbiBpbm9kZSBmYWlsZWRcXFwiKTtcXG4gNTg3OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGlub2RlKTtcXG4gNTg4OlxcdFxcdH1cXG4gNTg5OlxcdFxcdC8qXFxuIDU5MDpcXHRcXHQgKiBUaGlzIGlzIGp1c3QgYW4gYXJ0aWZpY2lhbCBsaW1pdCB0byBwcmV2ZW50IGNvcnJ1cHRlZCBmcyBmcm9tXFxuIDU5MTpcXHRcXHQgKiBjb25zdW1pbmcgYWJzdXJkIGFtb3VudHMgb2YgbWVtb3J5IHdoZW4gcGlubmluZyBibG9ja3Mgb2Ygb3JwaGFuXFxuIDU5MjpcXHRcXHQgKiBmaWxlIGluIG1lbW9yeS5cXG4gNTkzOlxcdFxcdCAqL1xcbiA1OTQ6XFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX3NpemUgXFx1MDAzZSAoRVhUNF9NQVhfT1JQSEFOX0ZJTEVfQkxPQ0tTIFxcdTAwM2NcXHUwMDNjIGlub2RlLVxcdTAwM2VpX2Jsa2JpdHMpKSB7XFxuIDU5NTpcXHRcXHRcXHRleHQ0X21zZyhzYiwgS0VSTl9FUlIsIFxcXCJvcnBoYW4gZmlsZSB0b28gYmlnOiAlbGx1XFxcIixcXG4gNTk2OlxcdFxcdFxcdFxcdCAodW5zaWduZWQgbG9uZyBsb25nKWlub2RlLVxcdTAwM2VpX3NpemUpO1xcbiA1OTc6XFx0XFx0XFx0cmV0ID0gLUVGU0NPUlJVUFRFRDtcXG4gNTk4OlxcdFxcdFxcdGdvdG8gb3V0X3B1dDtcXG4gNTk5OlxcdFxcdH1cXG4gNjAwOlxcdFxcdG9pLVxcdTAwM2VvZl9ibG9ja3MgPSBpbm9kZS1cXHUwMDNlaV9zaXplIFxcdTAwM2VcXHUwMDNlIHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZV9iaXRzO1xcbiA2MDE6XFx0XFx0b2ktXFx1MDAzZW9mX2NzdW1fc2VlZCA9IEVYVDRfSShpbm9kZSktXFx1MDAzZWlfY3N1bV9zZWVkO1xcbiA2MDI6XFx0XFx0b2ktXFx1MDAzZW9mX2JpbmZvID0ga3ZtYWxsb2Nfb2JqcyhzdHJ1Y3QgZXh0NF9vcnBoYW5fYmxvY2ssIG9pLVxcdTAwM2VvZl9ibG9ja3MpO1xcbiA2MDM6XFx0XFx0aWYgKCFvaS1cXHUwMDNlb2ZfYmluZm8pIHtcXG4gNjA0OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDYwNTpcXHRcXHRcXHRnb3RvIG91dF9wdXQ7XFxuIDYwNjpcXHRcXHR9XFxuIDYwNzpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb2ktXFx1MDAzZW9mX2Jsb2NrczsgaSsrKSB7XFxuIDYwODpcXHRcXHRcXHRvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmggPSBleHQ0X2JyZWFkKE5VTEwsIGlub2RlLCBpLCAwKTtcXG4gNjA5OlxcdFxcdFxcdGlmIChJU19FUlIob2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKSkge1xcbiA2MTA6XFx0XFx0XFx0XFx0cmV0ID0gUFRSX0VSUihvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO1xcbiA2MTE6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjEyOlxcdFxcdFxcdH1cXG4gNjEzOlxcdFxcdFxcdGlmICghb2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoKSB7XFxuIDYxNDpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2MTU6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjE2OlxcdFxcdFxcdH1cXG4gNjE3OlxcdFxcdFxcdGxvYWRlZCsrO1xcbiA2MTg6XFx0XFx0XFx0b3QgPSBleHQ0X29ycGhhbl9ibG9ja190YWlsKHNiLCBvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgpO1xcbiA2MTk6XFx0XFx0XFx0aWYgKGxlMzJfdG9fY3B1KG90LVxcdTAwM2VvYl9tYWdpYykgIT0gRVhUNF9PUlBIQU5fQkxPQ0tfTUFHSUMpIHtcXG4gNjIwOlxcdFxcdFxcdFxcdGV4dDRfZXJyb3Ioc2IsIFxcXCJvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIG1hZ2ljXFxcIiwgaSk7XFxuIDYyMTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2MjI6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjIzOlxcdFxcdFxcdH1cXG4gNjI0OlxcdFxcdFxcdGlmICghZXh0NF9vcnBoYW5fZmlsZV9ibG9ja19jc3VtX3ZlcmlmeShzYixcXG4gNjI1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdG9pLVxcdTAwM2VvZl9iaW5mb1tpXS5vYl9iaCkpIHtcXG4gNjI2OlxcdFxcdFxcdFxcdGV4dDRfZXJyb3Ioc2IsIFxcXCJvcnBoYW4gZmlsZSBibG9jayAlZDogYmFkIGNoZWNrc3VtXFxcIiwgaSk7XFxuIDYyNzpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2Mjg6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gNjI5OlxcdFxcdFxcdH1cXG4gNjMwOlxcdFxcdFxcdGJkYXRhID0gKF9fbGUzMiAqKShvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfYmgtXFx1MDAzZWJfZGF0YSk7XFxuIDYzMTpcXHRcXHRcXHRmcmVlID0gMDtcXG4gNjMyOlxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbm9kZXNfcGVyX29iOyBqKyspXFxuIDYzMzpcXHRcXHRcXHRcXHRpZiAoYmRhdGFbal0gPT0gMClcXG4gNjM0OlxcdFxcdFxcdFxcdFxcdGZyZWUrKztcXG4gNjM1OlxcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNm9pLVxcdTAwM2VvZl9iaW5mb1tpXS5vYl9mcmVlX2VudHJpZXMsIGZyZWUpO1xcbiA2MzY6XFx0XFx0fVxcbiA2Mzc6XFx0XFx0aXB1dChpbm9kZSk7XFxuIDYzODpcXHRcXHRyZXR1cm4gMDtcXG4gNjM5OlxcdG91dF9mcmVlOlxcbiA2NDA6XFx0XFx0d2hpbGUgKGxvYWRlZCBcXHUwMDNlIDApIHtcXG4gNjQxOlxcdFxcdFxcdGxvYWRlZC0tO1xcbiA2NDI6XFx0XFx0XFx0YnJlbHNlKG9pLVxcdTAwM2VvZl9iaW5mb1tsb2FkZWRdLm9iX2JoKTtcXG4gNjQzOlxcdFxcdH1cXG4gNjQ0OlxcdFxcdGt2ZnJlZShvaS1cXHUwMDNlb2ZfYmluZm8pO1xcbiA2NDU6XFx0b3V0X3B1dDpcXG4gNjQ2OlxcdFxcdGlwdXQoaW5vZGUpO1xcbiA2NDc6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjQ4OlxcdH1cXG4gNjQ5OlxcdFxcbiA2NTA6XFx0aW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4gNjUxOlxcdHtcXG4gNjUyOlxcdFxcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9IFxcdTAwMjZFWFQ0X1NCKHNiKS1cXHUwMDNlc19vcnBoYW5faW5mbztcXG4gNjUzOlxcdFxcdGludCBpO1xcbiA2NTQ6XFx0XFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcXG4gNjU1OlxcdFxcbiA2NTY6XFx0XFx0aWYgKCFleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9maWxlKHNiKSlcXG4gNjU3OlxcdFxcdFxcdHJldHVybiAxO1xcbiA2NTg6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG9pLVxcdTAwM2VvZl9ibG9ja3M7IGkrKylcXG4gNjU5OlxcdFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2b2ktXFx1MDAzZW9mX2JpbmZvW2ldLm9iX2ZyZWVfZW50cmllcykgIT1cXG4gNjYwOlxcdFxcdFxcdCAgICBpbm9kZXNfcGVyX29iKVxcbiA2NjE6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDY2MjpcXHRcXHRyZXR1cm4gMTtcXG4gNjYzOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MzAuMzAyMzc2MDQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0ODY5NDkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgTWVtb3J5IExlYWsgaW4gZXh0NCBPcnBoYW4gQmxvY2sgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBleHQ0X29ycGhhbl9ibG9ja190YWlsYCBjaGVjaywgYW5kIEkgdGhpbmsgSSd2ZSBzcG90dGVkIGEgcHJvYmxlbS4gSWYgYGV4dDRfYnJlYWRgIGZhaWxzLCB0aGUgbG9vcCBjb3JyZWN0bHkgcmVsZWFzZXMgdGhlIGJsb2NrcyB0aGF0IHdlcmUgc3VjY2Vzc2Z1bGx5IHJlYWQsIHN0YXJ0aW5nIGZyb20gYGktMWAgZG93biB0byAwLiBCdXQsIHdoYXQgaWYgdGhlIG1hZ2ljIG51bWJlciBjaGVjayB3aXRoaW4gYGV4dDRfb3JwaGFuX2Jsb2NrX3RhaWxgIGZhaWxzP1xuXG5TcGVjaWZpY2FsbHksIGlmIHRoZSBtYWdpYyBjaGVjayBgaWYgKGxlMzJfdG9fY3B1KG90LVx1MDAzZW9iX21hZ2ljKSAhPSBFWFQ0X09SUEhBTl9CTE9DS19NQUdJQylgIGZhaWxzLCBpdCBtZWFucyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIGEgYmxvY2sgcmVhZCBieSBgZXh0NF9icmVhZGAuIFRoZSBpbXBvcnRhbnQgZGV0YWlsIGlzIHRoYXQgYGlgICppcyogdGhlIGluZGV4IG9mIHRoZSBibG9jayB0aGF0IHdhcyBzdWNjZXNzZnVsbHkgcmVhZCAqYmVmb3JlKiB0aGUgY2hlY2sgZmFpbGVkLlxuXG5UaGVuLCB0aGUgbG9vcCBwcm9jZWVkcyB0byBgZm9yIChpLS07IGkgXHUwMDNlPSAwOyBpLS0pYC4gU2VlLCBiZWNhdXNlIG9mIHRoZSBwcmUtZGVjcmVtZW50IGBpLS1gLCB0aGUgY29kZSBza2lwcyByZWxlYXNpbmcgdGhlIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgaW5kZXggYGlgLiBJdCBpdGVyYXRlcyBmcm9tIGBpLTFgIGRvd24uIFRoYXQgYG9pLVx1MDAzZW9mX2JpbmZvW2ldLm9iX2JoYCBibG9jaywgdGhlIG9uZSB0aGF0IHRyaWdnZXJlZCB0aGUgZXJyb3IsIGlzIGVmZmVjdGl2ZWx5IGxlYWtlZCEgVGhhdCdzIGEgYnVmZmVyIGhlYWQgbGVhay4gSXQncyBhIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgaXNzdWUuXG5cblRoaXMgaXMgYSBjbGVhciBtZW1vcnkgbGVhayBvbiBhbiBlcnJvciBwYXRoIHdpdGhpbiB0aGUgb3JwaGFuIGhhbmRsaW5nIGNvZGUuIFRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIHNvbWUgZnV6emluZyBhbmQgZnVydGhlciB0ZXN0aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gcmVsaWFibHkgdHJpZ2dlciBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCB0byBwdXQgdGhpcyB1bmRlciB0aGUgbWljcm9zY29wZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjM2LjE1MTA3MzExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzE0Mzg0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF9pbml0X29ycGhhbl9pbmZvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTM5Njc9ZXh0ZXJuIHZvaWQgZXh0NF9yZWxlYXNlX29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xcbmZzL2V4dDQvZXh0NC5oOjM5Njg6ZXh0ZXJuIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XFxuZnMvZXh0NC9leHQ0LmgtMzk2OS1leHRlcm4gaW50IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jPTU1MD12b2lkIGV4dDRfb3JwaGFuX2ZpbGVfYmxvY2tfdHJpZ2dlcihzdHJ1Y3QgamJkMl9idWZmZXJfdHJpZ2dlcl90eXBlICp0cmlnZ2VycyxcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtNTY3LVxcbmZzL2V4dDQvb3JwaGFuLmM6NTY4OmludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L29ycGhhbi5jLTU2OS17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTMzOD1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01Njg1LVxcbmZzL2V4dDQvc3VwZXIuYzo1Njg2OlxcdGVyciA9IGV4dDRfaW5pdF9vcnBoYW5faW5mbyhzYik7XFxuZnMvZXh0NC9zdXBlci5jLTU2ODctXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6MzguMzIyNTE3MTA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMDEzNTUzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPcnBoYW4gRmlsZSBGZWF0dXJlIER1cmluZyBNb3VudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBiZWluZyBjYWxsZWQgZnJvbSBgX19leHQ0X2ZpbGxfc3VwZXJgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGUgbW91bnQgcHJvY2VzcyDigJMgZ29vZCB0byBrbm93LiBUaGUga2V5IHBpZWNlIHNlZW1zIHRvIGJlIHRoaXMgZnVuY3Rpb246IGBleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9maWxlKHNiKWAuIFRoYXQgaW5kaWNhdGVzIGl0J3MgY2hlY2tpbmcgZm9yIHRoZSBleGlzdGVuY2UgYW5kL29yIGVuYWJsaW5nIG9mIGEgcmVsYXRpdmVseSBuZXcgZmVhdHVyZSwgdGhlICdvcnBoYW5fZmlsZScgZmVhdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyBvciBjb25maWd1cmVzIGl0LlxuXG5TaW5jZSBJIGFtIGFscmVhZHkgbG9va2luZyBhdCB0aGUgZXh0NCBmaWxlc3lzdGVtLCBJJ2xsIGZpcnN0IGNoZWNrIHRoZSBiYXNpYyBFWFQ0X0ZTIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIGl0J3MgZ2VuZXJhbGx5IGVuYWJsZWQuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9uIGtub2IsIGxpa2UgYSBjb21waWxlLXRpbWUgb3B0aW9uIG9yIGEgbW91bnQgb3B0aW9uLCBkaXJlY3RseSByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzIGBvcnBoYW5fZmlsZWAgZmVhdHVyZT8gVGhhdCdzIHRoZSBuZXh0IGF2ZW51ZSBJIG5lZWQgdG8gZXhwbG9yZS4gSSBuZWVkIHRvIGZpbmQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njc3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6NTAuNjIzODc1NjY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTUyNjMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvcnBoYW5fZmlsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjUwLjY4MDgzNDQ2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NDM3NzU1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXh0NCBJbml0aWFsaXphdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBleHQ0LCBhbmQgaXQgc2VlbXMgdGhlcmUncyBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGl0ZW0gZGVmaW5lZCBpbiB0aGUgbWFpbiBgS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIGZpbmU7IGBFWFQ0X0ZTYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gQnV0IHdhaXQgYSBtaW51dGXigKZJJ20gcmVtZW1iZXJpbmcgdGhhdCBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBmdW5jdGlvbi4gVGhhdCdzIGRlZmluZWQgaW4gYGZzL2V4dDQvb3JwaGFuLmNgLCByaWdodD8gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgc2hvdWxkIHJlYWxseSBkb3VibGUtY2hlY2sgdGhlIGBmcy9leHQ0L0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIGl0IHRvIG1ha2UgY2VydGFpbiBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDEzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTE6MTc6NTYuMjI0NjExODE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBFWFQ0X0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gICA1OlxcdFxcdHNlbGVjdCBKQkQyXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JDMTZcXG4gICA3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDg6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgOTpcXHRcXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBpcyB0aGUgbmV4dCBnZW5lcmF0aW9uIG9mIHRoZSBleHQzIGZpbGVzeXN0ZW0uXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgVW5saWtlIHRoZSBjaGFuZ2UgZnJvbSBleHQyIGZpbGVzeXN0ZW0gdG8gZXh0MyBmaWxlc3lzdGVtLFxcbiAgMTQ6XFx0XFx0ICB0aGUgb24tZGlzayBmb3JtYXQgb2YgZXh0NCBpcyBub3QgZm9yd2FyZHMgY29tcGF0aWJsZSB3aXRoXFxuICAxNTpcXHRcXHQgIGV4dDM7IGl0IGlzIGJhc2VkIG9uIGV4dGVudCBtYXBzIGFuZCBpdCBzdXBwb3J0cyA0OC1iaXRcXG4gIDE2OlxcdFxcdCAgcGh5c2ljYWwgYmxvY2sgbnVtYmVycy4gIFRoZSBleHQ0IGZpbGVzeXN0ZW0gYWxzbyBzdXBwb3J0cyBkZWxheWVkXFxuICAxNzpcXHRcXHQgIGFsbG9jYXRpb24sIHBlcnNpc3RlbnQgcHJlYWxsb2NhdGlvbiwgaGlnaCByZXNvbHV0aW9uIHRpbWUgc3RhbXBzLFxcbiAgMTg6XFx0XFx0ICBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgZmVhdHVyZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgc3BlZWRcXG4gIDE5OlxcdFxcdCAgdXAgZnNjayB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIHdlYiBwYWdlcyBhdFxcbiAgMjA6XFx0XFx0ICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgVGhlIGV4dDQgZmlsZXN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyBhbiBleHQzIGZpbGVzeXN0ZW07IHdoaWxlIHRoZXJlXFxuICAyMzpcXHRcXHQgIGFyZSBzb21lIHBlcmZvcm1hbmNlIGdhaW5zIGZyb20gdGhlIGRlbGF5ZWQgYWxsb2NhdGlvbiBhbmQgaW5vZGVcXG4gIDI0OlxcdFxcdCAgdGFibGUgcmVhZGFoZWFkLCB0aGUgYmVzdCBwZXJmb3JtYW5jZSBnYWlucyByZXF1aXJlIGVuYWJsaW5nIGV4dDRcXG4gIDI1OlxcdFxcdCAgZmVhdHVyZXMgaW4gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgdHVuZTJmcywgb3IgZm9ybWF0dGluZyBhIG5ld1xcbiAgMjY6XFx0XFx0ICBmaWxlc3lzdGVtIGFzIGFuIGV4dDQgZmlsZXN5c3RlbSBpbml0aWFsbHkuIFdpdGhvdXQgZXhwbGljaXQgZW5hYmxpbmdcXG4gIDI3OlxcdFxcdCAgb2YgZXh0NCBmZWF0dXJlcywgdGhlIG9uIGRpc2sgZmlsZXN5c3RlbSBmb3JtYXQgc3RheXMgZnVsbHkgYmFja3dhcmRcXG4gIDI4OlxcdFxcdCAgY29tcGF0aWJsZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlXFxuICAzMTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBleHQ0LlxcbiAgMzI6XFx0XFxuICAzMzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiVXNlIGV4dDQgZm9yIGV4dDIgZmlsZSBzeXN0ZW1zXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXFxuICAzODpcXHRcXHRkZXBlbmRzIG9uIEVYVDJfRlM9blxcbiAgMzk6XFx0XFx0ZGVmYXVsdCB5XFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIEFsbG93IHRoZSBleHQ0IGZpbGUgc3lzdGVtIGRyaXZlciBjb2RlIHRvIGJlIHVzZWQgZm9yIGV4dDJcXG4gIDQyOlxcdFxcdCAgZmlsZSBzeXN0ZW0gbW91bnRzLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gcmVkdWNlIHRoZWlyXFxuICA0MzpcXHRcXHQgIGNvbXBpbGVkIGtlcm5lbCBzaXplIGJ5IHVzaW5nIG9uZSBmaWxlIHN5c3RlbSBkcml2ZXIgZm9yXFxuICA0NDpcXHRcXHQgIGV4dDIsIGV4dDMsIGFuZCBleHQ0IGZpbGUgc3lzdGVtcy5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuICA0NzpcXHRcXHRib29sIFxcXCJFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXFxuICA0OTpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IHBlcm1pc3Npb25zIGZvciB1c2VycyBhbmRcXG4gIDUyOlxcdFxcdCAgZ3JvdXBzIGJleW9uZCB0aGUgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgRVhUNF9GU19TRUNVUklUWVxcbiAgNTc6XFx0XFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG4gIDU5OlxcdFxcdGhlbHBcXG4gIDYwOlxcdFxcdCAgU2VjdXJpdHkgbGFiZWxzIHN1cHBvcnQgYWx0ZXJuYXRpdmUgYWNjZXNzIGNvbnRyb2wgbW9kZWxzXFxuICA2MTpcXHRcXHQgIGltcGxlbWVudGVkIGJ5IHNlY3VyaXR5IG1vZHVsZXMgbGlrZSBTRUxpbnV4LiAgVGhpcyBvcHRpb25cXG4gIDYyOlxcdFxcdCAgZW5hYmxlcyBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxlciBmb3IgZmlsZSBzZWN1cml0eVxcbiAgNjM6XFx0XFx0ICBsYWJlbHMgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS5cXG4gIDY0OlxcdFxcbiAgNjU6XFx0XFx0ICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHNlY3VyaXR5IG1vZHVsZSB0aGF0IHJlcXVpcmVzIHVzaW5nXFxuICA2NjpcXHRcXHQgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIGZpbGUgc2VjdXJpdHkgbGFiZWxzLCBzYXkgTi5cXG4gIDY3OlxcdFxcbiAgNjg6XFx0Y29uZmlnIEVYVDRfREVCVUdcXG4gIDY5OlxcdFxcdGJvb2wgXFxcIkV4dDQgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG4gIDcxOlxcdFxcdGhlbHBcXG4gIDcyOlxcdFxcdCAgRW5hYmxlcyBydW4tdGltZSBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbS5cXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0ICBJZiB5b3Ugc2VsZWN0IFkgaGVyZSwgdGhlbiB5b3Ugd2lsbCBiZSBhYmxlIHRvIHR1cm4gb24gZGVidWdnaW5nXFxuICA3NTpcXHRcXHQgIHVzaW5nIGR5bmFtaWMgZGVidWcgY29udHJvbCBmb3IgbWJfZGVidWcoKSAvIGV4dF9kZWJ1ZygpIG1zZ3MuXFxuICA3NjpcXHRcXG4gIDc3OlxcdGNvbmZpZyBFWFQ0X0tVTklUX1RFU1RTXFxuICA3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGV4dDRcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gRVhUNF9GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbiAgODA6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDgxOlxcdFxcdGhlbHBcXG4gIDgyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIGV4dDQgS1VuaXQgdGVzdHMuXFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdCAgS1VuaXQgdGVzdHMgcnVuIGR1cmluZyBib290IGFuZCBvdXRwdXQgdGhlIHJlc3VsdHMgdG8gdGhlIGRlYnVnIGxvZ1xcbiAgODU6XFx0XFx0ICBpbiBUQVAgZm9ybWF0IChodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvKS4gT25seSB1c2VmdWwgZm9yIGtlcm5lbCBkZXZzXFxuICA4NjpcXHRcXHQgIHJ1bm5pbmcgS1VuaXQgdGVzdCBoYXJuZXNzIGFuZCBhcmUgbm90IGZvciBpbmNsdXNpb24gaW50byBhIHByb2R1Y3Rpb25cXG4gIDg3OlxcdFxcdCAgYnVpbGQuXFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCBwbGVhc2UgcmVmZXJcXG4gIDkwOlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvLlxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjE3OjU2LjIyNDY5NTg3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQxNTg1NTM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVYVDQgT3JwaGFuIEJsb2NrIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdXNpbmcgYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBMZXQncyBkaWcgaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsb2dpYy5cblxuVGhlIG9yaWdpbmFsIGNvZGUncyBgZm9yYCBsb29wLCBzcGVjaWZpY2FsbHkgYGZvciAoaS0tOyBpIFx1MDAzZT0gMDsgaS0tKWAsIGZvciByZWxlYXNpbmcgYnVmZmVyIGhlYWRzIGluIHRoZSBgb3V0X2ZyZWVgIHBhdGggaXMgd2hhdCBjYXVnaHQgbXkgZXllLiAgSXQgbG9va3MgbGlrZSBpZiBgZXh0NF9icmVhZGAgZmFpbHMgKHJldHVybnMgYW4gZXJyb3Igb3IgTlVMTCksIHRoZSBsb29wIGNvcnJlY3RseSBza2lwcyByZWxlYXNpbmcgdGhlIHByb2JsZW1hdGljIGJ1ZmZlciBoZWFkIGJlY2F1c2UgYGlgIGlzIGF0IHRoZSBpbmRleCBvZiB0aGUgYmFkIGBvYl9iaGAgYmxvY2suIEhvd2V2ZXIsIGlmIHRoZSBtYWdpYyBjaGVjayBpbiBgZXh0NF9vcnBoYW5fYmxvY2tfdGFpbGAgZmFpbHMsIHRoYXQgbWVhbnMgd2UgaGF2ZSBhIHZhbGlkIGBvYl9iaGAgYXQgYG9pLVx1MDAzZW9mX2JpbmZvW2ldYCAod2hlcmUgYGlgIGlzIHRoZSBjdXJyZW50IGluZGV4KSB3aGljaCAqc2hvdWxkKiBiZSByZWxlYXNlZCwgYnV0IHRoZSBsb29wIHdvdWxkIHNraXAgaXQsIHdoaWNoIGludHJvZHVjZXMgYSBidWZmZXIgaGVhZCBsZWFrLiBUaGUgcGF0Y2gncyBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBsb2FkZWRgIHZhcmlhYmxlIHRvIHRyYWNrIHN1Y2Nlc3NmdWwgYGV4dDRfYnJlYWRgIGNhbGxzIGlzIHdoYXQgc2VlbXMgdG8gZml4IHRoZSBwcm9ibGVtIGJ5IGVuc3VyaW5nIHRoZSBgd2hpbGVgIGxvb3AgcmVsZWFzZXMgYWxsIHZhbGlkIGJsb2Nrcy5cblxuU28gdGhlIHBhdGNoIHByb3ZpZGVzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IGFkZHJlc3NlcyBhIGJ1ZmZlciBoZWFkIGxlYWsgdGhhdCBvY2N1cnMgb24gYW4gZXJyb3IgcGF0aCBkdXJpbmcgbW91bnQsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBmdXp6LiBJIHNob3VsZCBmb2N1cyBvbiBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBpdHNlbGYuIEl0IHNlZW1zIHRoZSBwcm9ibGVtIGxpZXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoaXMgZnVuY3Rpb24uIE1heWJlIGBfX2V4dDRfZmlsbF9zdXBlcmAgb3IgYGV4dDRfZmlsbF9zdXBlcmAgY291bGQgYmUgcmVsZXZhbnQsIGJ1dCBgZXh0NF9pbml0X29ycGhhbl9pbmZvYCBpcyB0aGUgb25lIHRoYXQncyBkaXJlY3RseSBtb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBsZWFrIGNhbiBvY2N1ci5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgcGF0Y2ggb25seSBhZmZlY3RzIGBleHQ0X2luaXRfb3JwaGFuX2luZm9gLlxuXG5JJ3ZlIGRlY2lkZWQgdG8gc2V0IGBGb2N1c1N5bWJvbHM6IGV4dDRfaW5pdF9vcnBoYW5faW5mb2AgYW5kIGBFbmFibGVDb25maWdzOiBFWFQ0X0ZTYC5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGBleHQ0X2luaXRfb3JwaGFuX2luZm9gIGlzIHJlYWNoYWJsZS4gWWVzLCBpdCdzIGNhbGxlZCBmcm9tIGBfX2V4dDRfZmlsbF9zdXBlcmAsIHdoaWNoIGlzIGludm9rZWQgZHVyaW5nIHRoZSBtb3VudCBwcm9jZXNzLiBJIGJlbGlldmUgdGhhdCBtb3VudGluZyBhIGNyYWZ0ZWQgZXh0NCBpbWFnZSBjb250YWluaW5nIHRoZSBgb3JwaGFuX2ZpbGVgIGZlYXR1cmUgYW5kIGRlbGliZXJhdGVseSBjb3JydXB0ZWQgb3JwaGFuIGJsb2NrcyB3aWxsIHRyaWdnZXIgdGhlIHJlbGV2YW50IGVycm9yIHBhdGggYW5kIHRoZSBsZWFrLCAob3IgdGhlIHBhdGNoZWQgY29kZSBhbmQgdHJpZ2dlciB0aGUgZml4KSwgbWFraW5nIHRoaXMgYXJlYSB2ZXJ5IHZhbHVhYmxlIGZvciBmdXp6aW5nLlxuQWxyaWdodCwgSSdsbCBzZXQgdGhlIGZ1enppbmcgdGFyZ2V0cyBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MywiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMToxODowNy42NDA1NTM1NjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTMwMzU1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfaW5pdF9vcnBoYW5faW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGhlYWQgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBleHQ0X2luaXRfb3JwaGFuX2luZm8oKSBkdXJpbmcgZmlsZXN5c3RlbSBtb3VudC4gSWYgYW4gb3JwaGFuIGJsb2NrIGhhcyBhIGJhZCBtYWdpYyBudW1iZXIgb3IgY2hlY2tzdW0sIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBidWZmZXIgaGVhZCBmb3IgdGhhdCBibG9jayB3YXMgbGVha2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGEgY29ycnVwdGVkIGV4dDQgaW1hZ2Ugd2l0aCB0aGUgb3JwaGFuX2ZpbGUgZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9pbml0X29ycGhhbl9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgaGVhZCBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGV4dDRfaW5pdF9vcnBoYW5faW5mbygpIGR1cmluZyBmaWxlc3lzdGVtIG1vdW50LiBJZiBhbiBvcnBoYW4gYmxvY2sgaGFzIGEgYmFkIG1hZ2ljIG51bWJlciBvciBjaGVja3N1bSwgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJ1ZmZlciBoZWFkIGZvciB0aGF0IGJsb2NrIHdhcyBsZWFrZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbW91bnRpbmcgYSBjb3JydXB0ZWQgZXh0NCBpbWFnZSB3aXRoIHRoZSBvcnBoYW5fZmlsZSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[1] Phase: Succeeded StartedAt: 2026-07-10 11:18:19 +0000 UTC FinishedAt: 2026-07-10 11:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 11:18:19 +0000 UTC FinishedAt: 2026-07-10 11:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2] Phase: Succeeded StartedAt: 2026-07-10 11:18:19 +0000 UTC FinishedAt: 2026-07-10 15:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 11:18:19 +0000 UTC FinishedAt: 2026-07-10 15:29:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 11:18:19 +0000 UTC FinishedAt: 2026-07-10 11:18:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 11:18:19 +0000 UTC FinishedAt: 2026-07-10 11:18:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsmgsc/series-workflowsmgsc-convert-artifact-3788265470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 11:18:29 +0000 UTC FinishedAt: 2026-07-10 11:46:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 11:18:29 +0000 UTC FinishedAt: 2026-07-10 11:46:49 +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:*261727db-af2b-4735-8f30-8bc97465bbd3,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-workflowsmgsc/series-workflowsmgsc-convert-artifact-3788265470/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": "aa9f1a67-e4c8-4cae-b68c-faed24197611", "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-workflowsmgsc/series-workflowsmgsc-build-action-3057336292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 11:18:29 +0000 UTC FinishedAt: 2026-07-10 11:46:39 +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:*261727db-af2b-4735-8f30-8bc97465bbd3,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-workflowsmgsc/series-workflowsmgsc-convert-artifact-3788265470/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": "aa9f1a67-e4c8-4cae-b68c-faed24197611", "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-workflowsmgsc/series-workflowsmgsc-build-action-3057336292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 11:46:49 +0000 UTC FinishedAt: 2026-07-10 11:46:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 11:46:49 +0000 UTC FinishedAt: 2026-07-10 11:46:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 11:46:49 +0000 UTC FinishedAt: 2026-07-10 11:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 11:46:49 +0000 UTC FinishedAt: 2026-07-10 11:46:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsmgsc/series-workflowsmgsc-convert-artifact-1519653681/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 11:47:00 +0000 UTC FinishedAt: 2026-07-10 11:49:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 11:47:00 +0000 UTC FinishedAt: 2026-07-10 11:49:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa9f1a67-e4c8-4cae-b68c-faed24197611,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-workflowsmgsc/series-workflowsmgsc-build-action-3057336292/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-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 11:49:17 +0000 UTC FinishedAt: 2026-07-10 11:49:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 11:49:17 +0000 UTC FinishedAt: 2026-07-10 11:49:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 11:49:17 +0000 UTC FinishedAt: 2026-07-10 12:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 11:49:17 +0000 UTC FinishedAt: 2026-07-10 12:24:21 +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:*261727db-af2b-4735-8f30-8bc97465bbd3,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-workflowsmgsc/series-workflowsmgsc-convert-artifact-1519653681/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": "04814a50-eb55-4696-94da-5a3e3fd44745", "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-workflowsmgsc/series-workflowsmgsc-build-action-3654766845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 11:49:17 +0000 UTC FinishedAt: 2026-07-10 12:23:02 +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:*261727db-af2b-4735-8f30-8bc97465bbd3,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-workflowsmgsc/series-workflowsmgsc-convert-artifact-1519653681/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": "04814a50-eb55-4696-94da-5a3e3fd44745", "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-workflowsmgsc/series-workflowsmgsc-build-action-3654766845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 12:24:21 +0000 UTC FinishedAt: 2026-07-10 12:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 12:24:21 +0000 UTC FinishedAt: 2026-07-10 12:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 12:24:21 +0000 UTC FinishedAt: 2026-07-10 12:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 12:24:21 +0000 UTC FinishedAt: 2026-07-10 12:26:25 +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:*04814a50-eb55-4696-94da-5a3e3fd44745,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-workflowsmgsc/series-workflowsmgsc-build-action-3654766845/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-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 15:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 15:29:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"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:*aa9f1a67-e4c8-4cae-b68c-faed24197611,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*04814a50-eb55-4696-94da-5a3e3fd44745,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-workflowsmgsc/series-workflowsmgsc-build-action-3057336292/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-workflowsmgsc/series-workflowsmgsc-build-action-3654766845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 12:26:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 12:26:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"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-workflowsmgsc/series-workflowsmgsc-convert-artifact-210592230/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 12:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 12:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 12:26:33 +0000 UTC FinishedAt: 2026-07-10 12:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 12:26:43 +0000 UTC FinishedAt: 2026-07-10 15:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsmgsc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_init_orphan_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"30832730-1564-4d4f-a7f6-9f68336ac4ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 12:26:43 +0000 UTC FinishedAt: 2026-07-10 15:29:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa9f1a67-e4c8-4cae-b68c-faed24197611,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*04814a50-eb55-4696-94da-5a3e3fd44745,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-workflowsmgsc/series-workflowsmgsc-build-action-3057336292/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-workflowsmgsc/series-workflowsmgsc-build-action-3654766845/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-workflowsmgsc/series-workflowsmgsc-convert-artifact-210592230/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,}