Name: series-workflowd6gtb Phase: Succeeded StartedAt: 2026-06-23 02:08:22 +0000 UTC FinishedAt: 2026-06-23 06:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[0] Phase: Succeeded StartedAt: 2026-06-23 02:08:22 +0000 UTC FinishedAt: 2026-06-23 02:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 02:08:22 +0000 UTC FinishedAt: 2026-06-23 02:18:47 +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": "4708cac0e22cfd217f48f7cec3c35e5922efcccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_AO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4708cac0e22cfd217f48f7cec3c35e5922efcccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_AO" ], "series_id": "91d529e1-83a4-457e-b9c9-4021154b9983" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_ao_delete_key", "tcp_ao_del_cmd", "tcp_parse_ao" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RDUF9BTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9hb19kZWxldGVfa2V5JiMzNDssCiAgICAmIzM0O3RjcF9hb19kZWxfY21kJiMzNDssCiAgICAmIzM0O3RjcF9wYXJzZV9hbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYWI2YzIyYWVmNjVjMzkyOTkxNGJiY2Y0YWU5YzEwYWVkYThhZTA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDI6MTc6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2FvLmMgYi9uZXQvaXB2NC90Y3BfYW8uY1xuaW5kZXggMmY2OWJjZWNhZTc4YTYuLmE1NmJiNzllMTVlMGU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2FvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9hby5jXG5AQCAtMTc0Nyw2ICYjNDM7MTc0NywxMCBAQCBzdGF0aWMgaW50IHRjcF9hb19kZWxldGVfa2V5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvLFxuIFx0ICogdGhlbSBhbmQgd2UgY2FuIGp1c3QgZnJlZSBhbGwgcmVzb3VyY2VzIGluIFJDVSBmYXNoaW9uLlxuIFx0ICovXG4gXHRpZiAoZGVsX2FzeW5jKSB7XG4mIzQzO1x0XHRpZiAoYW9faW5mby1cdTAwM2VjdXJyZW50X2tleSA9PSBrZXkpXG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UoYW9faW5mby1cdTAwM2VjdXJyZW50X2tleSwgTlVMTCk7XG4mIzQzO1x0XHRpZiAoYW9faW5mby1cdTAwM2VybmV4dF9rZXkgPT0ga2V5KVxuJiM0MztcdFx0XHRXUklURV9PTkNFKGFvX2luZm8tXHUwMDNlcm5leHRfa2V5LCBOVUxMKTtcbiBcdFx0YXRvbWljX3N1Yih0Y3BfYW9fc2l6ZW9mX2tleShrZXkpLCBcdTAwMjZzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiBcdFx0Y2FsbF9yY3UoXHUwMDI2a2V5LVx1MDAzZXJjdSwgdGNwX2FvX2tleV9mcmVlX3JjdSk7XG4gXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RDUF9BTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9hb19kZWxldGVfa2V5JiMzNDssCiAgICAmIzM0O3RjcF9hb19kZWxfY21kJiMzNDssCiAgICAmIzM0O3RjcF9wYXJzZV9hbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZhYjZjMjJhZWY2NWMzOTI5OTE0YmJjZjRhZTljMTBhZWRhOGFlMDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAyMyAwMjoxNzo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9hby5jIGIvbmV0L2lwdjQvdGNwX2FvLmMKaW5kZXggMmY2OWJjZWNhZTc4YTYuLmE1NmJiNzllMTVlMGU5IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfYW8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYW8uYwpAQCAtMTc0Nyw2ICYjNDM7MTc0NywxMCBAQCBzdGF0aWMgaW50IHRjcF9hb19kZWxldGVfa2V5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvLAogCSAqIHRoZW0gYW5kIHdlIGNhbiBqdXN0IGZyZWUgYWxsIHJlc291cmNlcyBpbiBSQ1UgZmFzaGlvbi4KIAkgKi8KIAlpZiAoZGVsX2FzeW5jKSB7CiYjNDM7CQlpZiAoYW9faW5mby0mZ3Q7Y3VycmVudF9rZXkgPT0ga2V5KQomIzQzOwkJCVdSSVRFX09OQ0UoYW9faW5mby0mZ3Q7Y3VycmVudF9rZXksIE5VTEwpOwomIzQzOwkJaWYgKGFvX2luZm8tJmd0O3JuZXh0X2tleSA9PSBrZXkpCiYjNDM7CQkJV1JJVEVfT05DRShhb19pbmZvLSZndDtybmV4dF9rZXksIE5VTEwpOwogCQlhdG9taWNfc3ViKHRjcF9hb19zaXplb2Zfa2V5KGtleSksICZhbXA7c2stJmd0O3NrX29tZW1fYWxsb2MpOwogCQljYWxsX3JjdSgmYW1wO2tleS0mZ3Q7cmN1LCB0Y3BfYW9fa2V5X2ZyZWVfcmN1KTsKIAkJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1AtQU8pIEtleSBEZWxldGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYG5ldC9pcHY0L3RjcF9hby5jYC4gVGhpcyBpcyBmb2N1c2VkIG9uIG1hbmFnaW5nIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb25zLCBzcGVjaWZpY2FsbHkga2V5IGRlbGV0aW9uLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZGVsZXRpbmcgYSBrZXksIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGFuZCB0aGUgYXN5bmNocm9ub3VzIGFzcGVjdCBvZiB0aGF0IGRlbGV0aW9uLCBpbmRpY2F0ZWQgYnkgdGhlIGBkZWxfYXN5bmNgIGZsYWcuCgpUaGUga2V5IGFkZGl0aW9uIGlzIGFuIGltcG9ydGFudCBzYWZldHkgY2hlY2suIElmIHdlJiMzOTtyZSBkZWxldGluZyBhIGtleSBhc3luY2hyb25vdXNseSAoYGRlbF9hc3luY2AgaXMgdHJ1ZSksIHRoZSBwYXRjaCBlbnN1cmVzIHRoYXQgKmJvdGgqIGBhb19pbmZvLSZndDtjdXJyZW50X2tleWAgYW5kIGBhb19pbmZvLSZndDtybmV4dF9rZXlgIGFyZSBzZXQgdG8gYE5VTExgIGlmIHRoZXkgaGFwcGVuIHRvIG1hdGNoIHRoZSBrZXkgdGhhdCYjMzk7cyBiZWluZyBkZWxldGVkLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByZXZlbnRpbmcgYW55IGRhbmdsaW5nIHBvaW50ZXJzIG9yIGluY29ycmVjdCBrZXkgcmVmZXJlbmNlcyBhZnRlciBhbiBhc3luY2hyb25vdXMgZGVsZXRpb24gY29tcGxldGVzLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyBpbXBsZW1lbnRpbmcgYSBzYWZlZ3VhcmQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgdXNpbmcgYSBkZWxldGVkIGtleSBpbiBhbnkgVENQLUFPIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgaWYgYW4gYXN5bmNocm9ub3VzIGRlbGV0aW9uIGlzIHVuZGVyd2F5LiBJIHNob3VsZCByZWFsbHkgZGVsdmUgZGVlcGVyIGludG8gYHRjcF9hb19kZWxldGVfa2V5YCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCByYXRpb25hbGUgZm9yIHRoaXMgY2hhbmdlIHdpdGhpbiB0aGUgYnJvYWRlciBrZXkgbWFuYWdlbWVudCBzY2hlbWUuIFRoaXMgbG9va3MgbGlrZSBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHBhdGNoIGNvbmNlcm5pbmcgcmVmZXJlbmNlIG1hbmFnZW1lbnQgd2l0aCB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiBrZXkgaGFuZGxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2FvX2RlbGV0ZV9rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYW8uYz0xNTcxPXN0YXRpYyBpbnQgdGNwX2FvX2FkZF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTE3MzUtXG5uZXQvaXB2NC90Y3BfYW8uYzoxNzM2OnN0YXRpYyBpbnQgdGNwX2FvX2RlbGV0ZV9rZXkoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2luZm8gKmFvX2luZm8sXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzM3LVx0XHRcdCAgICAgYm9vbCBkZWxfYXN5bmMsIHN0cnVjdCB0Y3BfYW9fa2V5ICprZXksXG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MTc5MD1zdGF0aWMgaW50IHRjcF9hb19kZWxfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xOTA0LVxubmV0L2lwdjQvdGNwX2FvLmM6MTkwNTpcdFx0cmV0dXJuIHRjcF9hb19kZWxldGVfa2V5KHNrLCBhb19pbmZvLCBjbWQuZGVsX2FzeW5jLCBrZXksXG5uZXQvaXB2NC90Y3BfYW8uYy0xOTA2LVx0XHRcdFx0XHQgbmV3X2N1cnJlbnQsIG5ld19ybmV4dCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBuZXR3b3JrIHByb3RvY29scywgc3BlY2lmaWNhbGx5IFRDUCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb25zIChUQ1AgQU8pOgoKKipBbmFseXppbmcgdGhlIFRDUCBBTyBLZXkgRGVsZXRpb24gRmxvdyoqCgpSaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGB0Y3BfYW9fZGVsZXRlX2tleWAgZnVuY3Rpb24uIFRoZSBjYWxsIHN0YWNrIGluZGljYXRlcyBpdCYjMzk7cyB0cmlnZ2VyZWQgZnJvbSBgdGNwX2FvX2RlbF9jbWRgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGRlbGV0aW5nIGEgVENQIEFPIGtleSwgbW9zdCBsaWtlbHkgaW4gcmVzcG9uc2UgdG8gc29tZSBtYW5hZ2VtZW50IGNvbW1hbmQuIE9rYXksIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGZvciBhIG1vbWVudC4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIG5lZWQgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIHRoZSBjb25maWd1cmF0aW9uIGNvbnRleHQgaGVyZS4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyByZXF1aXJlZCBmb3IgVENQIEFPIHRvIGJlIHdvcmtpbmcgcHJvcGVybHk/IEl0JiMzOTtzIG5vdCBqdXN0IGFib3V0IHRoZSBmdW5jdGlvbiBpdHNlbGY7IGl0JiMzOTtzIGFib3V0IHRoZSBzdGF0ZSBpdCYjMzk7cyBvcGVyYXRpbmcgb24uIFNvLCBiZWZvcmUgSSBjb250aW51ZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgY29uZmlndXJhdGlvbiB0aGlzIGZ1bmN0aW9uIGV4cGVjdHMgdG8gYmUgaW4gcGxhY2UsIHdoYXQgc3RhdGUgaXQgYWx0ZXJzLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkuIFRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgZGVsZXRpbmcgYSBrZXkgYXJlIG9idmlvdXMsIHNvIEkgd2lsbCBlbnN1cmUgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnVsbCBsaWZlY3ljbGUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVENQX0FPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTcyOT1jb25maWcgREVGQVVMVF9UQ1BfQ09OR1xuLS1cbm5ldC9pcHY0L0tjb25maWctNzQzLVxubmV0L2lwdjQvS2NvbmZpZzo3NDQ6Y29uZmlnIFRDUF9BT1xubmV0L2lwdjQvS2NvbmZpZy03NDUtXHRib29sIFwmIzM0O1RDUDogQXV0aGVudGljYXRpb24gT3B0aW9uIChSRkM1OTI1KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqQXNzZXNzbWVudCBvZiBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGZpcm0gcmVxdWlyZW1lbnQgZm9yIGBUQ1BfQU9gLiBUaGF0JiMzOTtzIG5vbi1uZWdvdGlhYmxlLiBOb3csIGxldCYjMzk7cyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gV2hpbGUgSSBrbm93IGBUQ1BfQU9gIGlzIGNyaXRpY2FsLCBpdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgb3IgZGVwZW5kZW50IHNldHRpbmdzIHRoYXQgYWxzbyBuZWVkIGF0dGVudGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgd2lkZXIgZW52aXJvbm1lbnQgdG8gY2hlY2sgZm9yIG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCwgc28gSSYjMzk7bGwgbmVlZCB0byB0YWtlIG15IHRpbWUgYW5kIGVuc3VyZSB0aGF0IEkgZG9uJiMzOTt0IG1vdmUgZm9yd2FyZCB3aXRob3V0IGtub3dpbmcgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciB2aXRhbCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VENQX0FPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Njc9b2JqLSQoQ09ORklHX1hGUk0pICYjNDM7PSB4ZnJtNF9wb2xpY3kubyB4ZnJtNF9zdGF0ZS5vIHhmcm00X2lucHV0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTY4LVx0XHQgICAgICB4ZnJtNF9vdXRwdXQubyB4ZnJtNF9wcm90b2NvbC5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVENQX0FPKSAmIzQzOz0gdGNwX2FvLm9cbm5ldC9pcHY0L01ha2VmaWxlLTcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUQ1BfQU8gQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuIEl0IHNlZW1zIHRoZXJlJiMzOTtzIGEgYnVnIHJlbGF0ZWQgdG8gaG93IGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgYXJlIGhhbmRsZWQgd2hlbiBgZGVsX2FzeW5jYCBpcyBlbmFibGVkLCBhbmQgdGhlIGtleSBtaWdodCBnZXQgZnJlZWQgd2hpbGUgYmVpbmcgcG9pbnRlZCB0by4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgY29yZSBzdGFiaWxpdHkgZml4LgoKTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gZGVsZXRpbmcgVENQX0FPIGtleXMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhlIHByaW1hcnkgc3VzcGVjdHMgYXJlIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBgc2V0c29ja29wdGAgY2FsbCByZWxhdGVkIHRvIGBUQ1BfQU9gLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGB0Y3BfYW9fZGVsX2NtZGAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgcG90ZW50aWFsIGltcGFjdC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIGJlIGtleSB0byBncmFzcGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXggYW5kIGVuc3VyaW5nIGl0JiMzOTtzIGJlZW4gaW1wbGVtZW50ZWQgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYW9fZGVsX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9hby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9hby5jPTk4OT10Y3BfaW5ib3VuZF9hb19oYXNoKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDU0LVx0XHRcdGlmIChrZXkpXG5uZXQvaXB2NC90Y3BfYW8uYzoxMDU1Olx0XHRcdFx0LyogcGFpcnMgd2l0aCB0Y3BfYW9fZGVsX2NtZCAqL1xubmV0L2lwdjQvdGNwX2FvLmMtMTA1Ni1cdFx0XHRcdFdSSVRFX09OQ0UoaW5mby1cdTAwM2VjdXJyZW50X2tleSwga2V5KTtcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDY3LVx0ICogLSByZXF1ZXN0IHNvY2tldHMgd291bGQgcmFjZSBvbiB0aG9zZSBrZXkgcG9pbnRlcnNcbm5ldC9pcHY0L3RjcF9hby5jOjEwNjg6XHQgKiAtIHRjcF9hb19kZWxfY21kKCkgYWxsb3dzIGFzeW5jIGtleSByZW1vdmFsXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDY5LVx0ICovXG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MTczNj1zdGF0aWMgaW50IHRjcF9hb19kZWxldGVfa2V5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvLFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTE3ODktI2RlZmluZSBUQ1BfQU9fREVMX0tFWUZfQUxMIChUQ1BfQU9fS0VZRl9JRklOREVYKVxubmV0L2lwdjQvdGNwX2FvLmM6MTc5MDpzdGF0aWMgaW50IHRjcF9hb19kZWxfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbm5ldC9pcHY0L3RjcF9hby5jLTE3OTEtXHRcdFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9pcHY0L3RjcF9hby5jPTIwMjU9aW50IHRjcF9wYXJzZV9hbyhzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIHVuc2lnbmVkIHNob3J0IGludCBmYW1pbHksXG4tLVxubmV0L2lwdjQvdGNwX2FvLmMtMjAzNC1cdGNhc2UgVENQX0FPX0RFTF9LRVk6XG5uZXQvaXB2NC90Y3BfYW8uYzoyMDM1Olx0XHRyZXR1cm4gdGNwX2FvX2RlbF9jbWQoc2ssIGZhbWlseSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjQvdGNwX2FvLmMtMjAzNi1cdGNhc2UgVENQX0FPX0lORk86XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBUQ1AgQS9PIFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGNvZGUgZmxvdyBoZXJlLiBJIHNlZSB0aGF0IGB0Y3BfYW9fZGVsX2NtZGAgZ2V0cyBjYWxsZWQgZnJvbSBgdGNwX3BhcnNlX2FvYC4gVGhhdCYjMzk7cyB0aGUga2V5IGNvbm5lY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBgdGNwX3BhcnNlX2FvYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSBjb25kaXRpb25zIHRoYXQgbGVhZCB0byBgdGNwX2FvX2RlbF9jbWRgIGJlaW5nIGludm9rZWQsIGFuZCB3aGF0IHJvbGUgaXQgcGxheXMgd2l0aGluIHRoYXQgcGFyc2luZyBmdW5jdGlvbi4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgKmZyb20qIGlzIHZpdGFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBUQ1AgQS9PIChBcHBsaWNhdGlvbi1PcmllbnRlZCkgcHJvY2Vzc2luZy4gTGV0JiMzOTtzIHNlZSB3aGF0IGB0Y3BfcGFyc2VfYW9gIGlzIGFsbCBhYm91dC4gSSYjMzk7bSBob3BpbmcgdGhlcmUmIzM5O3MgYSBnb29kIHNldCBvZiBjb21tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3BhcnNlX2FvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9hby5jPTE5MzY9c3RhdGljIGludCB0Y3BfYW9faW5mb19jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTIwMjQtXG5uZXQvaXB2NC90Y3BfYW8uYzoyMDI1OmludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxubmV0L2lwdjQvdGNwX2FvLmMtMjAyNi1cdFx0IHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MjA0ND1pbnQgdGNwX3Y0X3BhcnNlX2FvKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xubmV0L2lwdjQvdGNwX2FvLmM6MjA0NjpcdHJldHVybiB0Y3BfcGFyc2VfYW8oc2ssIGNtZCwgQUZfSU5FVCwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjQvdGNwX2FvLmMtMjA0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdW5kZXJzdGFuZGluZywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipVbmRlcnN0YW5kaW5nIHRoZSBSZWxhdGlvbnNoaXAgYmV0d2VlbiBgdGNwX3Y0X3BhcnNlX2FvYCBhbmQgYGRvX3RjcF9zZXRzb2Nrb3B0YCoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBob3cgYHRjcF92NF9wYXJzZV9hb2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYnJvYWRlciBUQ1AvSVAgbmV0d29ya2luZyBzdGFjay4gRnJvbSB3aGF0IEkgc2VlLCAgYHRjcF92NF9wYXJzZV9hb2AgaXMgc3BlY2lmaWNhbGx5IGNhbGxlZCB3aGVuIHRoZSBgc2V0c29ja29wdGAgc3lzdGVtIGNhbGwsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgVENQIG92ZXIgSVB2NCBzb2NrZXRzLCBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgYGRvX3RjcF9zZXRzb2Nrb3B0YCBmdW5jdGlvbi4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBgdGNwX3Y0X3BhcnNlX2FvYCBpc24mIzM5O3Qgc29tZSBzdGFuZGFsb25lIGZ1bmN0aW9uLCBidXQgcmF0aGVyIGEgY3J1Y2lhbCBjb21wb25lbnQgd2l0aGluIHRoZSBtYWNoaW5lcnkgdGhhdCBoYW5kbGVzIHNvY2tldCBvcHRpb25zIG1vZGlmaWNhdGlvbnMuIEl0IHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgcGFyc2luZyBhbmQgcG90ZW50aWFsbHkgdmFsaWRhdGluZyBhcmd1bWVudHMgYXNzb2NpYXRlZCB3aXRoIEFwcGxpY2F0aW9uIE9wdGlvbnMgKEFPKSBvciBvdGhlciBUQ1AtcmVsYXRlZCBzZXR0aW5ncyB2aWEgYHNldHNvY2tvcHRgIGZvciBJUHY0IHNvY2tldHMuIFRoaXMgYWxzbyB0ZWxscyBtZSB0aGVyZSYjMzk7cyBhbiBhcmNoaXRlY3R1cmUgdGhhdCBoYW5kbGVzIGRpZmZlcmVudCBzb2NrZXQgb3B0aW9ucywgYW5kIHRoaXMgZnVuY3Rpb24gc3BlY2lmaWNhbGx5IGhhbmRsZXMgYSBzdWJzZXQgcmVsYXRpbmcgdG8gVENQIHY0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGF0IHNwZWNpZmljIHNvY2tldCBvcHRpb25zIGl0IG1hbmFnZXMsIGJ1dCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gYmVnaW5zIGZvciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfdjRfcGFyc2VfYW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2FvLmM9MjAyNT1pbnQgdGNwX3BhcnNlX2FvKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0yMDQzLVxubmV0L2lwdjQvdGNwX2FvLmM6MjA0NDppbnQgdGNwX3Y0X3BhcnNlX2FvKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY0X3NwZWNpZmljID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjM3NC1cdC5jYWxjX2FvX2hhc2hcdFx0PSB0Y3BfdjRfYW9faGFzaF9za2IsXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIzNzU6XHQuYW9fcGFyc2VcdFx0PSB0Y3BfdjRfcGFyc2VfYW8sXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzYtXHQuYW9fY2FsY19rZXlfc2tcdFx0PSB0Y3BfdjRfYW9fY2FsY19rZXlfc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBPcmlnaW4gb2YgYGFvX3BhcnNlYCoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBhb19wYXJzZWAgaXMgaW52b2tlZCB3aXRoaW4gYHRjcF9zb2NrX2FmX29wc2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlICplbHNlKiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD8mIzM0OyBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNhbGwgZ3JhcGggaXMga2V5IHRvIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGlzIHNwZWNpZmljIHNvY2tldCBvcGVyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGFvX3BhcnNlYCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXNlZCwgb3V0c2lkZSBvZiB0aGlzIGltbWVkaWF0ZSBjb250ZXh0LiBLbm93aW5nIHRoZSBjYWxsIGhpZXJhcmNoeSB3aWxsIGlsbHVtaW5hdGUgdGhlIGxvZ2ljIGF0IHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FvX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvaXB2NC90Y3AuYy00MDc4LVx0XHRpZiAoKDEgXHUwMDNjXHUwMDNjIHNrLVx1MDAzZXNrX3N0YXRlKSBcdTAwMjYgKFRDUEZfTElTVEVOIHwgVENQRl9DTE9TRSkpXG5uZXQvaXB2NC90Y3AuYzo0MDc5Olx0XHRcdGdvdG8gYW9fcGFyc2U7XG5uZXQvaXB2NC90Y3AuYy00MDgwLVx0XHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0Y3Bfc2soc2spLVx1MDAzZWFvX2luZm8sXG5uZXQvaXB2NC90Y3AuYy00MDgxLVx0XHRcdFx0XHQgICAgICBsb2NrZGVwX3NvY2tfaXNfaGVsZChzaykpKVxubmV0L2lwdjQvdGNwLmM6NDA4MjpcdFx0XHRnb3RvIGFvX3BhcnNlO1xubmV0L2lwdjQvdGNwLmMtNDA4My1cdFx0aWYgKHRwLVx1MDAzZXJlcGFpcilcbm5ldC9pcHY0L3RjcC5jOjQwODQ6XHRcdFx0Z290byBhb19wYXJzZTtcbm5ldC9pcHY0L3RjcC5jLTQwODUtXHRcdGVyciA9IC1FSVNDT05OO1xubmV0L2lwdjQvdGNwLmMtNDA4Ni1cdFx0YnJlYWs7XG5uZXQvaXB2NC90Y3AuYzo0MDg3OmFvX3BhcnNlOlxubmV0L2lwdjQvdGNwLmM6NDA4ODpcdFx0ZXJyID0gdHAtXHUwMDNlYWZfc3BlY2lmaWMtXHUwMDNlYW9fcGFyc2Uoc2ssIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcbm5ldC9pcHY0L3RjcC5jLTQwODktXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L3RjcF9hby5jPTEzNDA9c3RhdGljIGludCB0Y3BfYW9fdmVyaWZ5X2lwdjQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTEzNzgtXG5uZXQvaXB2NC90Y3BfYW8uYzoxMzc5OnN0YXRpYyBpbnQgdGNwX2FvX3BhcnNlX2NyeXB0byhjb25zdCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxubmV0L2lwdjQvdGNwX2FvLmMtMTM4MC1cdFx0XHQgICAgICAgc3RydWN0IHRjcF9hb19rZXkgKmtleSlcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYz0xNTcxPXN0YXRpYyBpbnQgdGNwX2FvX2FkZF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTE2OTgtXG5uZXQvaXB2NC90Y3BfYW8uYzoxNjk5Olx0cmV0ID0gdGNwX2FvX3BhcnNlX2NyeXB0byhcdTAwMjZjbWQsIGtleSk7XG5uZXQvaXB2NC90Y3BfYW8uYy0xNzAwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTIzNjY9c3RhdGljIGNvbnN0IHN0cnVjdCB0Y3Bfc29ja19hZl9vcHMgdGNwX3NvY2tfaXB2NF9zcGVjaWZpYyA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzQtXHQuY2FsY19hb19oYXNoXHRcdD0gdGNwX3Y0X2FvX2hhc2hfc2tiLFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMzc1Olx0LmFvX3BhcnNlXHRcdD0gdGNwX3Y0X3BhcnNlX2FvLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzc2LVx0LmFvX2NhbGNfa2V5X3NrXHRcdD0gdGNwX3Y0X2FvX2NhbGNfa2V5X3NrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTkwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVENQIEFPIEtleSBNYW5hZ2VtZW50IENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRvX3RjcF9zZXRzb2Nrb3B0YCBmdW5jdGlvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBUQ1AgQU8gKEF1dGhlbnRpY2F0aW9uIE9wdGlvbikgZnVuY3Rpb25hbGl0eS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQgY2FsbHMgYGFvX3BhcnNlYCB3aGVuIGVuY291bnRlcmluZyBgVENQX0FPX0FERF9LRVlgLCBgVENQX0FPX0RFTF9LRVlgLCBvciBgVENQX0FPX0lORk9gLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgYHRjcF9hb19kZWxldGVfa2V5YCwgd2hpY2ggaXMsIG9mIGNvdXJzZSwgY2FsbGVkIHdoZW4gYFRDUF9BT19ERUxfS0VZYCBpcyB1c2VkLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBpbiB0aGlzIGZsb3cuIFRoZSByZWxldmFudCBjb25maWcgc3ltYm9sIGlzLCBhcyBleHBlY3RlZCwgYFRDUF9BT2AuCgpOb3csIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZWxlbWVudHMuIFRoZSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGFuZCBgdGNwX3BhcnNlX2FvYCBmdW5jdGlvbnMuIFRoZXNlIGFyZSB0aGUgb25lcyB3aGVyZSBhbnkgdnVsbmVyYWJpbGl0eSwgb3IgYSBmaXggZm9yIHRoYXQgbWF0dGVyLCB3b3VsZCBtb3N0IGxpa2VseSBiZSBjb25jZW50cmF0ZWQuCgpJdCYjMzk7cyBhIGdvb2QgdGltZSB0byBleHBhbmQgdGhlIHNjb3BlIGFuZCBjaGVjayBpZiBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudC4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHRoZSBlbnRpcmUgZWNvc3lzdGVtIGlzIGJlaW5nIGFuYWx5emVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUQ1BfQU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9NTQ9b2JqLXkgJiM0Mzs9IG1jYXN0X3Nub29wLm9cbm5ldC9pcHY2L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19UQ1BfQU8pICYjNDM7PSB0Y3BfYW8ub1xubmV0L2lwdjYvTWFrZWZpbGUtNTYtZW5kaWZcbi0tXG5uZXQvaXB2Ni90Y3BfYW8uYz0xMzM9aW50IHRjcF92Nl9hb19zeW5hY2tfaGFzaChjaGFyICphb19oYXNoLCBzdHJ1Y3QgdGNwX2FvX2tleSAqYW9fa2V5LFxuLS1cbm5ldC9pcHY2L3RjcF9hby5jLTEzNi17XG5uZXQvaXB2Ni90Y3BfYW8uYzoxMzc6XHR1OCB0a2V5X2J1ZltUQ1BfQU9fTUFYX1RSQUZGSUNfS0VZX0xFTl07XG5uZXQvaXB2Ni90Y3BfYW8uYy0xMzgtXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz04Mz1jb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGlwdjZfc3BlY2lmaWM7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjg0OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTg1LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGNwX3NvY2tfYWZfb3BzIHRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzM9c3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIzNC1cdFx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0Y3BfdjRfZG9fcmN2O1xubmV0L2lwdjYvdGNwX2lwdjYuYzoyMzU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjM2LVx0XHR0cC1cdTAwM2VhZl9zcGVjaWZpYyA9IFx1MDAyNnRjcF9zb2NrX2lwdjZfbWFwcGVkX3NwZWNpZmljO1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjQ3LVx0XHRcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gdGNwX3Y2X2RvX3Jjdjtcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjQ4OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTI0OS1cdFx0XHR0cC1cdTAwM2VhZl9zcGVjaWZpYyA9IFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz04Mjc9Y29uc3Qgc3RydWN0IHRjcF9yZXF1ZXN0X3NvY2tfb3BzIHRjcF9yZXF1ZXN0X3NvY2tfaXB2Nl9vcHMgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy04MzMtI2VuZGlmXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjgzNDojaWZkZWYgQ09ORklHX1RDUF9BT1xubmV0L2lwdjYvdGNwX2lwdjYuYy04MzUtXHQuYW9fbG9va3VwXHQ9XHR0Y3BfdjZfYW9fbG9va3VwX3Jzayxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTg0Nz1zdGF0aWMgdm9pZCB0Y3BfdjZfc2VuZF9yZXNwb25zZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBzZXEsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy05MTktI2VuZGlmXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjkyMDojaWZkZWYgQ09ORklHX1RDUF9BT1xubmV0L2lwdjYvdGNwX2lwdjYuYy05MjEtXHRpZiAodGNwX2tleV9pc19hbyhrZXkpKSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMDAzPXN0YXRpYyB2b2lkIHRjcF92Nl9zZW5kX3Jlc2V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwMDgtXHRjb25zdCBfX3U4ICptZDVfaGFzaF9sb2NhdGlvbiA9IE5VTEw7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEwMDk6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAxMC1cdGJvb2wgYWxsb2NhdGVkX3RyYWZmaWNfa2V5ID0gZmFsc2U7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMDM3LVx0XHRyZXR1cm47XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEwMzg6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAzOS1cdHJjdV9yZWFkX2xvY2soKTtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwOTEtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEwOTI6I2lmZGVmIENPTkZJR19UQ1BfQU9cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTA5My1cdGlmIChhb2gpIHtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMzEtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExMzI6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEzMy1vdXQ6XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMTQ5PXN0YXRpYyB2b2lkIHRjcF92Nl90aW1ld2FpdF9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTE1OC1cdFx0dGNsYXNzIFx1MDAyNj0gfklORVRfRUNOX01BU0s7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExNTk6I2lmZGVmIENPTkZJR19UQ1BfQU9cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTE2MC1cdHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbztcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEyMDQtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEyMDU6I2lmZGVmIENPTkZJR19UQ1BfQU9cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTIwNi1vdXQ6XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMjExPXN0YXRpYyB2b2lkIHRjcF92Nl9yZXFza19zZW5kX2Fjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMjE1LVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMjE2OiNpZmRlZiBDT05GSUdfVENQX0FPXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEyMTctXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZ0Y3BfYW9fbmVlZGVkLmtleSkgXHUwMDI2XHUwMDI2XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzQ2PXN0YXRpYyB2b2lkIHRjcF92Nl9tYXBwZWRfY2hpbGRfaW5pdChzdHJ1Y3Qgc29jayAqbmV3c2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEzNjEtXHRuZXdzay1cdTAwM2Vza19iYWNrbG9nX3JjdiA9IHRjcF92NF9kb19yY3Y7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEzNjI6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM2My1cdHRjcF9zayhuZXdzayktXHUwMDNlYWZfc3BlY2lmaWMgPSBcdTAwMjZ0Y3Bfc29ja19pcHY2X21hcHBlZF9zcGVjaWZpYztcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEzODA9c3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xNTA2LSNlbmRpZlxubmV0L2lwdjYvdGNwX2lwdjYuYzoxNTA3OiNpZmRlZiBDT05GSUdfVENQX0FPXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE1MDgtXHQvKiBDb3B5IG92ZXIgdGNwX2FvX2luZm8gaWYgYW55ICovXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDAzPWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYyA9IHtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMTQtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwMTU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAxNi1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY2X3NwZWNpZmljID0ge1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAyMS0jZW5kaWZcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjAyMjojaWZkZWYgQ09ORklHX1RDUF9BT1xubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDIzLVx0LmFvX2xvb2t1cFx0PVx0dGNwX3Y2X2FvX2xvb2t1cCxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTIwMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9tYXBwZWQgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDQ1LVxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDQ2OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNDctc3RhdGljIGNvbnN0IHN0cnVjdCB0Y3Bfc29ja19hZl9vcHMgdGNwX3NvY2tfaXB2Nl9tYXBwZWRfc3BlY2lmaWMgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDUyLSNlbmRpZlxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDUzOiNpZmRlZiBDT05GSUdfVENQX0FPXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNTQtXHQuYW9fbG9va3VwXHQ9XHR0Y3BfdjZfYW9fbG9va3VwLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MjA3Mj1zdGF0aWMgaW50IHRjcF92Nl9pbml0X3NvY2soc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA3OS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjA4MDojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDgxLVx0dGNwX3NrKHNrKS1cdTAwM2VhZl9zcGVjaWZpYyA9IFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NTUKCQkJCQkJCW91dHB1dDogMTMwCgkJCQkJCQl0aG91Z2h0czogNDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gdGhlIGBUQ1BfQU9gIGNvbmZpZywgd2hpY2ggZGVhbHMgd2l0aCB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbi4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcyBpbiByZWxhdGlvbiB0byB0aGUgc3ltYm9scyBpbnZvbHZlZC4gSW5pdGlhbGx5LCBJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSBrZXkgc3ltYm9scyBhcyBgdGNwX2FvX2RlbGV0ZV9rZXlgLCBgdGNwX2FvX2RlbF9jbWRgLCBhbmQgYHRjcF9wYXJzZV9hb2AuIEkgYWxyZWFkeSBrbmV3IHRoYXQgYHRjcF9hb19kZWxldGVfa2V5YCBhbmQgYHRjcF9hb19kZWxfY21kYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9hby5jYCwgd2hpbGUgYHRjcF9wYXJzZV9hb2AgaXMgZXhwb3J0ZWQuCgpJIHNlZSB0aGUgY29yZSBvZiB0aGUgcGF0Y2ggaW52b2x2ZXMgdXBkYXRlcyB0byBgdGNwX2FvX2RlbGV0ZV9rZXlgLiBUaGUgYWRkZWQgbGluZXMgd2l0aGluIHRoZSBgaWYgKGRlbF9hc3luYylgIGJsb2NrIGFyZSB3aGF0IGdyYWIgbXkgYXR0ZW50aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgd2hlcmUgYGN1cnJlbnRfa2V5YCBvciBgcm5leHRfa2V5YCBtaWdodCBiZSByZWZlcmVuY2luZyBhIGtleSB0aGF0JiMzOTtzIGFscmVhZHkgYmVlbiBmcmVlZC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IGlmIGBhb19pbmZvLSZndDtjdXJyZW50X2tleWAgb3IgYGFvX2luZm8tJmd0O3JuZXh0X2tleWAgbWF0Y2hlcyB0aGUgYGtleWAgYmVpbmcgZGVsZXRlZCwgaXQmIzM5O3MgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIHVzaW5nIGBXUklURV9PTkNFYCAqYmVmb3JlKiB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IGZyZWVkIHZpYSBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmaXgg4oCTIG51bGxpbmcgdGhlIHBvaW50ZXJzIGJlZm9yZSB0aGUgbWVtb3J5IGlzIHJlbGVhc2VkLiBJdCB1c2VzIGBhdG9taWNfc3ViYCB0byBkZWFsIHdpdGggdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGJvb2trZWVwaW5nLgoKSSBjb25maXJtZWQgdGhhdCBgVENQX0FPYCBpcyBpbmRlZWQgdGhlIHNvbGUgY29uZmlndXJhdGlvbiBvcHRpb24gaW52b2x2ZWQgaGVyZS4gSSBkaWQgYSBxdWljayBjaGVjaywgYW5kIGB0Y3BfYW9fZGVsZXRlX2tleWAgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGBzZXRzb2Nrb3B0YCBjYWxsIHdpdGggYFRDUF9BT19ERUxfS0VZYCwgd2hpY2ggY2FsbHMgYHRjcF9hb19kZWxfY21kYCBhbmQgdGhlbiBgdGNwX2FvX2RlbGV0ZV9rZXlgLiBUaGlzIHBhdGNoIGNsZWFybHkgYWRkcmVzc2VzIGEgYnVnIHdoZXJlIGRhbmdsaW5nIHBvaW50ZXJzIGNvdWxkIG9jY3VyLgoKU28sIHRvIHN1bW1hcml6ZSwgdGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGhvdyBUQ1AgQU8ga2V5cyBhcmUgZGVsZXRlZCwgcHJldmVudGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLiBJdCBkb2VzIHRoaXMgYnkgc2FmZWx5IG51bGxpZnlpbmcgYGN1cnJlbnRfa2V5YCBhbmQgYHJuZXh0X2tleWAgYmVmb3JlIGZyZWVpbmcgdGhlIGFzc29jaWF0ZWQgbWVtb3J5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHN5bmNocm9uaXphdGlvbiBhc3BlY3RzIGludm9sdmVkIGhlcmUuCgpDb25maWdzOiBgVENQX0FPYApGb2N1c1N5bWJvbHM6IGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGB0Y3BfcGFyc2VfYW9gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUQ1BfQU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYW9fZGVsZXRlX2tleSYjMzQ7LAogICAgJiMzNDt0Y3BfYW9fZGVsX2NtZCYjMzQ7LAogICAgJiMzNDt0Y3BfcGFyc2VfYW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSB3aGVyZSBgY3VycmVudF9rZXlgIG9yIGBybmV4dF9rZXlgIGNvdWxkIGJlIGxlZnQgcG9pbnRpbmcgdG8gYSBmcmVlZCBrZXkgd2hlbiBgZGVsX2FzeW5jYCBpcyB0cnVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljIHJlYWNoYWJsZSB2aWEgc2V0c29ja29wdCB3aXRoIFRDUF9BT19ERUxfS0VZLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUQ1BfQU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYW9fZGVsZXRlX2tleSYjMzQ7LAogICAgJiMzNDt0Y3BfYW9fZGVsX2NtZCYjMzQ7LAogICAgJiMzNDt0Y3BfcGFyc2VfYW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSB3aGVyZSBgY3VycmVudF9rZXlgIG9yIGBybmV4dF9rZXlgIGNvdWxkIGJlIGxlZnQgcG9pbnRpbmcgdG8gYSBmcmVlZCBrZXkgd2hlbiBgZGVsX2FzeW5jYCBpcyB0cnVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljIHJlYWNoYWJsZSB2aWEgc2V0c29ja29wdCB3aXRoIFRDUF9BT19ERUxfS0VZLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTc6NTYuNDU5OTQxMTIyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMDc4MzA1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0FPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2FvX2RlbGV0ZV9rZXlcIixcbiAgICBcInRjcF9hb19kZWxfY21kXCIsXG4gICAgXCJ0Y3BfcGFyc2VfYW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE3OjU2LjQ1OTk1MDg4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MzQzNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmFiNmMyMmFlZjY1YzM5Mjk5MTRiYmNmNGFlOWMxMGFlZGE4YWUwNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAwMjoxNzo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYW8uYyBiL25ldC9pcHY0L3RjcF9hby5jXFxuaW5kZXggMmY2OWJjZWNhZTc4YTYuLmE1NmJiNzllMTVlMGU5IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9hby5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX2FvLmNcXG5AQCAtMTc0Nyw2ICsxNzQ3LDEwIEBAIHN0YXRpYyBpbnQgdGNwX2FvX2RlbGV0ZV9rZXkoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2luZm8gKmFvX2luZm8sXFxuIFxcdCAqIHRoZW0gYW5kIHdlIGNhbiBqdXN0IGZyZWUgYWxsIHJlc291cmNlcyBpbiBSQ1UgZmFzaGlvbi5cXG4gXFx0ICovXFxuIFxcdGlmIChkZWxfYXN5bmMpIHtcXG4rXFx0XFx0aWYgKGFvX2luZm8tXFx1MDAzZWN1cnJlbnRfa2V5ID09IGtleSlcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShhb19pbmZvLVxcdTAwM2VjdXJyZW50X2tleSwgTlVMTCk7XFxuK1xcdFxcdGlmIChhb19pbmZvLVxcdTAwM2VybmV4dF9rZXkgPT0ga2V5KVxcbitcXHRcXHRcXHRXUklURV9PTkNFKGFvX2luZm8tXFx1MDAzZXJuZXh0X2tleSwgTlVMTCk7XFxuIFxcdFxcdGF0b21pY19zdWIodGNwX2FvX3NpemVvZl9rZXkoa2V5KSwgXFx1MDAyNnNrLVxcdTAwM2Vza19vbWVtX2FsbG9jKTtcXG4gXFx0XFx0Y2FsbF9yY3UoXFx1MDAyNmtleS1cXHUwMDNlcmN1LCB0Y3BfYW9fa2V5X2ZyZWVfcmN1KTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE3OjU2LjkzNzMwNjg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODczMDQ1NDM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUQ1BfQU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYW9fZGVsZXRlX2tleVwiLFxuICAgIFwidGNwX2FvX2RlbF9jbWRcIixcbiAgICBcInRjcF9wYXJzZV9hb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb24gKFRDUF9BTykgd2hlcmUgYGN1cnJlbnRfa2V5YCBvciBgcm5leHRfa2V5YCBjb3VsZCBiZSBsZWZ0IHBvaW50aW5nIHRvIGEgZnJlZWQga2V5IHdoZW4gYGRlbF9hc3luY2AgaXMgdHJ1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayBsb2dpYyByZWFjaGFibGUgdmlhIHNldHNvY2tvcHQgd2l0aCBUQ1BfQU9fREVMX0tFWS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYWI2YzIyYWVmNjVjMzkyOTkxNGJiY2Y0YWU5YzEwYWVkYThhZTA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDI6MTc6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYW8uYyBiL25ldC9pcHY0L3RjcF9hby5jXG5pbmRleCAyZjY5YmNlY2FlNzhhNi4uYTU2YmI3OWUxNWUwZTkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYW8uY1xuKysrIGIvbmV0L2lwdjQvdGNwX2FvLmNcbkBAIC0xNzQ3LDYgKzE3NDcsMTAgQEAgc3RhdGljIGludCB0Y3BfYW9fZGVsZXRlX2tleShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbyxcbiBcdCAqIHRoZW0gYW5kIHdlIGNhbiBqdXN0IGZyZWUgYWxsIHJlc291cmNlcyBpbiBSQ1UgZmFzaGlvbi5cbiBcdCAqL1xuIFx0aWYgKGRlbF9hc3luYykge1xuK1x0XHRpZiAoYW9faW5mby1cdTAwM2VjdXJyZW50X2tleSA9PSBrZXkpXG4rXHRcdFx0V1JJVEVfT05DRShhb19pbmZvLVx1MDAzZWN1cnJlbnRfa2V5LCBOVUxMKTtcbitcdFx0aWYgKGFvX2luZm8tXHUwMDNlcm5leHRfa2V5ID09IGtleSlcbitcdFx0XHRXUklURV9PTkNFKGFvX2luZm8tXHUwMDNlcm5leHRfa2V5LCBOVUxMKTtcbiBcdFx0YXRvbWljX3N1Yih0Y3BfYW9fc2l6ZW9mX2tleShrZXkpLCBcdTAwMjZzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiBcdFx0Y2FsbF9yY3UoXHUwMDI2a2V5LVx1MDAzZXJjdSwgdGNwX2FvX2tleV9mcmVlX3JjdSk7XG4gXHRcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTc6NTYuOTM3MzEwMjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkwNzg1MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQLUFPKSBLZXkgRGVsZXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvdGNwX2FvLmNgLiBUaGlzIGlzIGZvY3VzZWQgb24gbWFuYWdpbmcgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbnMsIHNwZWNpZmljYWxseSBrZXkgZGVsZXRpb24uIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBkZWxldGluZyBhIGtleSwgYHRjcF9hb19kZWxldGVfa2V5YCwgYW5kIHRoZSBhc3luY2hyb25vdXMgYXNwZWN0IG9mIHRoYXQgZGVsZXRpb24sIGluZGljYXRlZCBieSB0aGUgYGRlbF9hc3luY2AgZmxhZy5cblxuVGhlIGtleSBhZGRpdGlvbiBpcyBhbiBpbXBvcnRhbnQgc2FmZXR5IGNoZWNrLiBJZiB3ZSdyZSBkZWxldGluZyBhIGtleSBhc3luY2hyb25vdXNseSAoYGRlbF9hc3luY2AgaXMgdHJ1ZSksIHRoZSBwYXRjaCBlbnN1cmVzIHRoYXQgKmJvdGgqIGBhb19pbmZvLVx1MDAzZWN1cnJlbnRfa2V5YCBhbmQgYGFvX2luZm8tXHUwMDNlcm5leHRfa2V5YCBhcmUgc2V0IHRvIGBOVUxMYCBpZiB0aGV5IGhhcHBlbiB0byBtYXRjaCB0aGUga2V5IHRoYXQncyBiZWluZyBkZWxldGVkLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByZXZlbnRpbmcgYW55IGRhbmdsaW5nIHBvaW50ZXJzIG9yIGluY29ycmVjdCBrZXkgcmVmZXJlbmNlcyBhZnRlciBhbiBhc3luY2hyb25vdXMgZGVsZXRpb24gY29tcGxldGVzLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGltcGxlbWVudGluZyBhIHNhZmVndWFyZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IHVzaW5nIGEgZGVsZXRlZCBrZXkgaW4gYW55IFRDUC1BTyBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIGlmIGFuIGFzeW5jaHJvbm91cyBkZWxldGlvbiBpcyB1bmRlcndheS4gSSBzaG91bGQgcmVhbGx5IGRlbHZlIGRlZXBlciBpbnRvIGB0Y3BfYW9fZGVsZXRlX2tleWAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgcmF0aW9uYWxlIGZvciB0aGlzIGNoYW5nZSB3aXRoaW4gdGhlIGJyb2FkZXIga2V5IG1hbmFnZW1lbnQgc2NoZW1lLiBUaGlzIGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBwYXRjaCBjb25jZXJuaW5nIHJlZmVyZW5jZSBtYW5hZ2VtZW50IHdpdGggdGhlIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb24ga2V5IGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTExLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTg6MDIuMDI4MDk5NDc2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NTE2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9hb19kZWxldGVfa2V5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jPTE1NzE9c3RhdGljIGludCB0Y3BfYW9fYWRkX2NtZChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IGludCBmYW1pbHksXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzM1LVxcbm5ldC9pcHY0L3RjcF9hby5jOjE3MzY6c3RhdGljIGludCB0Y3BfYW9fZGVsZXRlX2tleShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbyxcXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzM3LVxcdFxcdFxcdCAgICAgYm9vbCBkZWxfYXN5bmMsIHN0cnVjdCB0Y3BfYW9fa2V5ICprZXksXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0xNzkwPXN0YXRpYyBpbnQgdGNwX2FvX2RlbF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMTkwNC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoxOTA1OlxcdFxcdHJldHVybiB0Y3BfYW9fZGVsZXRlX2tleShzaywgYW9faW5mbywgY21kLmRlbF9hc3luYywga2V5LFxcbm5ldC9pcHY0L3RjcF9hby5jLTE5MDYtXFx0XFx0XFx0XFx0XFx0IG5ld19jdXJyZW50LCBuZXdfcm5leHQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowMi4wOTU2MjM1MDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE0ODc2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gbmV0d29yayBwcm90b2NvbHMsIHNwZWNpZmljYWxseSBUQ1AgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9ucyAoVENQIEFPKTpcblxuKipBbmFseXppbmcgdGhlIFRDUCBBTyBLZXkgRGVsZXRpb24gRmxvdyoqXG5cblJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgdGNwX2FvX2RlbGV0ZV9rZXlgIGZ1bmN0aW9uLiBUaGUgY2FsbCBzdGFjayBpbmRpY2F0ZXMgaXQncyB0cmlnZ2VyZWQgZnJvbSBgdGNwX2FvX2RlbF9jbWRgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggZGVsZXRpbmcgYSBUQ1AgQU8ga2V5LCBtb3N0IGxpa2VseSBpbiByZXNwb25zZSB0byBzb21lIG1hbmFnZW1lbnQgY29tbWFuZC4gT2theSwgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBOb3csIGxldCdzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBuZWVkIHRvIGdldCBteSBoZWFkIGFyb3VuZCB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IGhlcmUuIFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgcmVxdWlyZWQgZm9yIFRDUCBBTyB0byBiZSB3b3JraW5nIHByb3Blcmx5PyBJdCdzIG5vdCBqdXN0IGFib3V0IHRoZSBmdW5jdGlvbiBpdHNlbGY7IGl0J3MgYWJvdXQgdGhlIHN0YXRlIGl0J3Mgb3BlcmF0aW5nIG9uLiBTbywgYmVmb3JlIEkgY29udGludWUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIG9mIGNvbmZpZ3VyYXRpb24gdGhpcyBmdW5jdGlvbiBleHBlY3RzIHRvIGJlIGluIHBsYWNlLCB3aGF0IHN0YXRlIGl0IGFsdGVycywgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LiBUaGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIGRlbGV0aW5nIGEga2V5IGFyZSBvYnZpb3VzLCBzbyBJIHdpbGwgZW5zdXJlIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bGwgbGlmZWN5Y2xlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowNS44MTA1MDMwOTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyMDU0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRDUF9BT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NzI5PWNvbmZpZyBERUZBVUxUX1RDUF9DT05HXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTc0My1cXG5uZXQvaXB2NC9LY29uZmlnOjc0NDpjb25maWcgVENQX0FPXFxubmV0L2lwdjQvS2NvbmZpZy03NDUtXFx0Ym9vbCBcXFwiVENQOiBBdXRoZW50aWNhdGlvbiBPcHRpb24gKFJGQzU5MjUpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowNS44Nzg3MTgxMDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc1NzE5MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqQXNzZXNzbWVudCBvZiBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgZmlybSByZXF1aXJlbWVudCBmb3IgYFRDUF9BT2AuIFRoYXQncyBub24tbmVnb3RpYWJsZS4gTm93LCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gV2hpbGUgSSBrbm93IGBUQ1BfQU9gIGlzIGNyaXRpY2FsLCBpdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIG9yIGRlcGVuZGVudCBzZXR0aW5ncyB0aGF0IGFsc28gbmVlZCBhdHRlbnRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgd2lkZXIgZW52aXJvbm1lbnQgdG8gY2hlY2sgZm9yIG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCwgc28gSSdsbCBuZWVkIHRvIHRha2UgbXkgdGltZSBhbmQgZW5zdXJlIHRoYXQgSSBkb24ndCBtb3ZlIGZvcndhcmQgd2l0aG91dCBrbm93aW5nIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciB2aXRhbCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5OTgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowOS41NTQ0NDA5MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwODYwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVENQX0FPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTY3PW9iai0kKENPTkZJR19YRlJNKSArPSB4ZnJtNF9wb2xpY3kubyB4ZnJtNF9zdGF0ZS5vIHhmcm00X2lucHV0Lm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTY4LVxcdFxcdCAgICAgIHhmcm00X291dHB1dC5vIHhmcm00X3Byb3RvY29sLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVENQX0FPKSArPSB0Y3BfYW8ub1xcbm5ldC9pcHY0L01ha2VmaWxlLTcwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowOS42MTI1NDc1NzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU4NzMwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUF9BTyBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBhZGRyZXNzaW5nIGEgcHJldHR5IG5hc3R5IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZS4gSXQgc2VlbXMgdGhlcmUncyBhIGJ1ZyByZWxhdGVkIHRvIGhvdyBgY3VycmVudF9rZXlgIG9yIGBybmV4dF9rZXlgIGFyZSBoYW5kbGVkIHdoZW4gYGRlbF9hc3luY2AgaXMgZW5hYmxlZCwgYW5kIHRoZSBrZXkgbWlnaHQgZ2V0IGZyZWVkIHdoaWxlIGJlaW5nIHBvaW50ZWQgdG8uIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIGNvcmUgc3RhYmlsaXR5IGZpeC5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gZGVsZXRpbmcgVENQX0FPIGtleXMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhlIHByaW1hcnkgc3VzcGVjdHMgYXJlIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBgc2V0c29ja29wdGAgY2FsbCByZWxhdGVkIHRvIGBUQ1BfQU9gLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGB0Y3BfYW9fZGVsX2NtZGAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgcG90ZW50aWFsIGltcGFjdC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIGJlIGtleSB0byBncmFzcGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXggYW5kIGVuc3VyaW5nIGl0J3MgYmVlbiBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODoxMy40NzEyODM0ODdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MjE1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9hb19kZWxfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jPTk4OT10Y3BfaW5ib3VuZF9hb19oYXNoKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jLTEwNTQtXFx0XFx0XFx0aWYgKGtleSlcXG5uZXQvaXB2NC90Y3BfYW8uYzoxMDU1OlxcdFxcdFxcdFxcdC8qIHBhaXJzIHdpdGggdGNwX2FvX2RlbF9jbWQgKi9cXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDU2LVxcdFxcdFxcdFxcdFdSSVRFX09OQ0UoaW5mby1cXHUwMDNlY3VycmVudF9rZXksIGtleSk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDY3LVxcdCAqIC0gcmVxdWVzdCBzb2NrZXRzIHdvdWxkIHJhY2Ugb24gdGhvc2Uga2V5IHBvaW50ZXJzXFxubmV0L2lwdjQvdGNwX2FvLmM6MTA2ODpcXHQgKiAtIHRjcF9hb19kZWxfY21kKCkgYWxsb3dzIGFzeW5jIGtleSByZW1vdmFsXFxubmV0L2lwdjQvdGNwX2FvLmMtMTA2OS1cXHQgKi9cXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jPTE3MzY9c3RhdGljIGludCB0Y3BfYW9fZGVsZXRlX2tleShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbyxcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jLTE3ODktI2RlZmluZSBUQ1BfQU9fREVMX0tFWUZfQUxMIChUQ1BfQU9fS0VZRl9JRklOREVYKVxcbm5ldC9pcHY0L3RjcF9hby5jOjE3OTA6c3RhdGljIGludCB0Y3BfYW9fZGVsX2NtZChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IGludCBmYW1pbHksXFxubmV0L2lwdjQvdGNwX2FvLmMtMTc5MS1cXHRcXHRcXHQgIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0yMDI1PWludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMjAzNC1cXHRjYXNlIFRDUF9BT19ERUxfS0VZOlxcbm5ldC9pcHY0L3RjcF9hby5jOjIwMzU6XFx0XFx0cmV0dXJuIHRjcF9hb19kZWxfY21kKHNrLCBmYW1pbHksIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvaXB2NC90Y3BfYW8uYy0yMDM2LVxcdGNhc2UgVENQX0FPX0lORk86XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjEzLjUzODUwNzUwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI4OTc0Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUQ1AgQS9PIFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZm9sbG93aW5nIHRoZSBjb2RlIGZsb3cgaGVyZS4gSSBzZWUgdGhhdCBgdGNwX2FvX2RlbF9jbWRgIGdldHMgY2FsbGVkIGZyb20gYHRjcF9wYXJzZV9hb2AuIFRoYXQncyB0aGUga2V5IGNvbm5lY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBgdGNwX3BhcnNlX2FvYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSBjb25kaXRpb25zIHRoYXQgbGVhZCB0byBgdGNwX2FvX2RlbF9jbWRgIGJlaW5nIGludm9rZWQsIGFuZCB3aGF0IHJvbGUgaXQgcGxheXMgd2l0aGluIHRoYXQgcGFyc2luZyBmdW5jdGlvbi4gS25vd2luZyB3aGVyZSBpdCdzIGNhbGxlZCAqZnJvbSogaXMgdml0YWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIFRDUCBBL08gKEFwcGxpY2F0aW9uLU9yaWVudGVkKSBwcm9jZXNzaW5nLiBMZXQncyBzZWUgd2hhdCBgdGNwX3BhcnNlX2FvYCBpcyBhbGwgYWJvdXQuIEknbSBob3BpbmcgdGhlcmUncyBhIGdvb2Qgc2V0IG9mIGNvbW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTYxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTg6MTYuNDY3NDg0ODM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzYzOTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfcGFyc2VfYW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jPTE5MzY9c3RhdGljIGludCB0Y3BfYW9faW5mb19jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMjAyNC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoyMDI1OmludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbm5ldC9pcHY0L3RjcF9hby5jLTIwMjYtXFx0XFx0IHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0yMDQ0PWludCB0Y3BfdjRfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xcbm5ldC9pcHY0L3RjcF9hby5jOjIwNDY6XFx0cmV0dXJuIHRjcF9wYXJzZV9hbyhzaywgY21kLCBBRl9JTkVULCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvdGNwX2FvLmMtMjA0Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjE2LjUzNTEzMjYwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkyMjYzODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBSZWxhdGlvbnNoaXAgYmV0d2VlbiBgdGNwX3Y0X3BhcnNlX2FvYCBhbmQgYGRvX3RjcF9zZXRzb2Nrb3B0YCoqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gaG93IGB0Y3BfdjRfcGFyc2VfYW9gIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGJyb2FkZXIgVENQL0lQIG5ldHdvcmtpbmcgc3RhY2suIEZyb20gd2hhdCBJIHNlZSwgIGB0Y3BfdjRfcGFyc2VfYW9gIGlzIHNwZWNpZmljYWxseSBjYWxsZWQgd2hlbiB0aGUgYHNldHNvY2tvcHRgIHN5c3RlbSBjYWxsLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIFRDUCBvdmVyIElQdjQgc29ja2V0cywgaXMgcHJvY2Vzc2VkIHRocm91Z2ggdGhlIGBkb190Y3Bfc2V0c29ja29wdGAgZnVuY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHRoYXQgYHRjcF92NF9wYXJzZV9hb2AgaXNuJ3Qgc29tZSBzdGFuZGFsb25lIGZ1bmN0aW9uLCBidXQgcmF0aGVyIGEgY3J1Y2lhbCBjb21wb25lbnQgd2l0aGluIHRoZSBtYWNoaW5lcnkgdGhhdCBoYW5kbGVzIHNvY2tldCBvcHRpb25zIG1vZGlmaWNhdGlvbnMuIEl0IHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgcGFyc2luZyBhbmQgcG90ZW50aWFsbHkgdmFsaWRhdGluZyBhcmd1bWVudHMgYXNzb2NpYXRlZCB3aXRoIEFwcGxpY2F0aW9uIE9wdGlvbnMgKEFPKSBvciBvdGhlciBUQ1AtcmVsYXRlZCBzZXR0aW5ncyB2aWEgYHNldHNvY2tvcHRgIGZvciBJUHY0IHNvY2tldHMuIFRoaXMgYWxzbyB0ZWxscyBtZSB0aGVyZSdzIGFuIGFyY2hpdGVjdHVyZSB0aGF0IGhhbmRsZXMgZGlmZmVyZW50IHNvY2tldCBvcHRpb25zLCBhbmQgdGhpcyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgaGFuZGxlcyBhIHN1YnNldCByZWxhdGluZyB0byBUQ1AgdjQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hhdCBzcGVjaWZpYyBzb2NrZXQgb3B0aW9ucyBpdCBtYW5hZ2VzLCBidXQgaXQncyBjbGVhciB0aGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gYmVnaW5zIGZvciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjU2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTg6MTkuNzI3NDAwNTU1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTUyNTY1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3Y0X3BhcnNlX2FvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfYW8uYz0yMDI1PWludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMjA0My1cXG5uZXQvaXB2NC90Y3BfYW8uYzoyMDQ0OmludCB0Y3BfdjRfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGNwX3NvY2tfYWZfb3BzIHRjcF9zb2NrX2lwdjRfc3BlY2lmaWMgPSB7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzQtXFx0LmNhbGNfYW9faGFzaFxcdFxcdD0gdGNwX3Y0X2FvX2hhc2hfc2tiLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3NTpcXHQuYW9fcGFyc2VcXHRcXHQ9IHRjcF92NF9wYXJzZV9hbyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzYtXFx0LmFvX2NhbGNfa2V5X3NrXFx0XFx0PSB0Y3BfdjRfYW9fY2FsY19rZXlfc2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjIwLjE0MjY2NTE0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTExMTM1OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIE9yaWdpbiBvZiBgYW9fcGFyc2VgKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IGBhb19wYXJzZWAgaXMgaW52b2tlZCB3aXRoaW4gYHRjcF9zb2NrX2FmX29wc2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlICplbHNlKiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD9cIiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNhbGwgZ3JhcGggaXMga2V5IHRvIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGlzIHNwZWNpZmljIHNvY2tldCBvcGVyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGFvX3BhcnNlYCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSB1c2VkLCBvdXRzaWRlIG9mIHRoaXMgaW1tZWRpYXRlIGNvbnRleHQuIEtub3dpbmcgdGhlIGNhbGwgaGllcmFyY2h5IHdpbGwgaWxsdW1pbmF0ZSB0aGUgbG9naWMgYXQgcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjIzLjA1MzgwNDQ4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2NDUxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYW9fcGFyc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTQwNzgtXFx0XFx0aWYgKCgxIFxcdTAwM2NcXHUwMDNjIHNrLVxcdTAwM2Vza19zdGF0ZSkgXFx1MDAyNiAoVENQRl9MSVNURU4gfCBUQ1BGX0NMT1NFKSlcXG5uZXQvaXB2NC90Y3AuYzo0MDc5OlxcdFxcdFxcdGdvdG8gYW9fcGFyc2U7XFxubmV0L2lwdjQvdGNwLmMtNDA4MC1cXHRcXHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0Y3Bfc2soc2spLVxcdTAwM2Vhb19pbmZvLFxcbm5ldC9pcHY0L3RjcC5jLTQwODEtXFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9zb2NrX2lzX2hlbGQoc2spKSlcXG5uZXQvaXB2NC90Y3AuYzo0MDgyOlxcdFxcdFxcdGdvdG8gYW9fcGFyc2U7XFxubmV0L2lwdjQvdGNwLmMtNDA4My1cXHRcXHRpZiAodHAtXFx1MDAzZXJlcGFpcilcXG5uZXQvaXB2NC90Y3AuYzo0MDg0OlxcdFxcdFxcdGdvdG8gYW9fcGFyc2U7XFxubmV0L2lwdjQvdGNwLmMtNDA4NS1cXHRcXHRlcnIgPSAtRUlTQ09OTjtcXG5uZXQvaXB2NC90Y3AuYy00MDg2LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L3RjcC5jOjQwODc6YW9fcGFyc2U6XFxubmV0L2lwdjQvdGNwLmM6NDA4ODpcXHRcXHRlcnIgPSB0cC1cXHUwMDNlYWZfc3BlY2lmaWMtXFx1MDAzZWFvX3BhcnNlKHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvdGNwLmMtNDA4OS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jPTEzNDA9c3RhdGljIGludCB0Y3BfYW9fdmVyaWZ5X2lwdjQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMTM3OC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoxMzc5OnN0YXRpYyBpbnQgdGNwX2FvX3BhcnNlX2NyeXB0byhjb25zdCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxcbm5ldC9pcHY0L3RjcF9hby5jLTEzODAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0Y3BfYW9fa2V5ICprZXkpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0xNTcxPXN0YXRpYyBpbnQgdGNwX2FvX2FkZF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMTY5OC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoxNjk5OlxcdHJldCA9IHRjcF9hb19wYXJzZV9jcnlwdG8oXFx1MDAyNmNtZCwga2V5KTtcXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzAwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGNwX3NvY2tfYWZfb3BzIHRjcF9zb2NrX2lwdjRfc3BlY2lmaWMgPSB7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzQtXFx0LmNhbGNfYW9faGFzaFxcdFxcdD0gdGNwX3Y0X2FvX2hhc2hfc2tiLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3NTpcXHQuYW9fcGFyc2VcXHRcXHQ9IHRjcF92NF9wYXJzZV9hbyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzYtXFx0LmFvX2NhbGNfa2V5X3NrXFx0XFx0PSB0Y3BfdjRfYW9fY2FsY19rZXlfc2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjIzLjEyNzQ1NjM3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODcxMDI0Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEFPIEtleSBNYW5hZ2VtZW50IENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkb190Y3Bfc2V0c29ja29wdGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgVENQIEFPIChBdXRoZW50aWNhdGlvbiBPcHRpb24pIGZ1bmN0aW9uYWxpdHkuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGNhbGxzIGBhb19wYXJzZWAgd2hlbiBlbmNvdW50ZXJpbmcgYFRDUF9BT19BRERfS0VZYCwgYFRDUF9BT19ERUxfS0VZYCwgb3IgYFRDUF9BT19JTkZPYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGB0Y3BfYW9fZGVsZXRlX2tleWAsIHdoaWNoIGlzLCBvZiBjb3Vyc2UsIGNhbGxlZCB3aGVuIGBUQ1BfQU9fREVMX0tFWWAgaXMgdXNlZC4gRnVuY3Rpb25hbGx5LCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBpbiB0aGlzIGZsb3cuIFRoZSByZWxldmFudCBjb25maWcgc3ltYm9sIGlzLCBhcyBleHBlY3RlZCwgYFRDUF9BT2AuXG5cbk5vdywgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGtleSBlbGVtZW50cy4gVGhlIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYHRjcF9hb19kZWxldGVfa2V5YCwgYHRjcF9hb19kZWxfY21kYCwgYW5kIGB0Y3BfcGFyc2VfYW9gIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBvbmVzIHdoZXJlIGFueSB2dWxuZXJhYmlsaXR5LCBvciBhIGZpeCBmb3IgdGhhdCBtYXR0ZXIsIHdvdWxkIG1vc3QgbGlrZWx5IGJlIGNvbmNlbnRyYXRlZC5cblxuSXQncyBhIGdvb2QgdGltZSB0byBleHBhbmQgdGhlIHNjb3BlIGFuZCBjaGVjayBpZiBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudC4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHRoZSBlbnRpcmUgZWNvc3lzdGVtIGlzIGJlaW5nIGFuYWx5emVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjI2Ljk5ODQ4MzQ0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NTE5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVENQX0FPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT01ND1vYmoteSArPSBtY2FzdF9zbm9vcC5vXFxubmV0L2lwdjYvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX1RDUF9BTykgKz0gdGNwX2FvLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS01Ni1lbmRpZlxcbi0tXFxubmV0L2lwdjYvdGNwX2FvLmM9MTMzPWludCB0Y3BfdjZfYW9fc3luYWNrX2hhc2goY2hhciAqYW9faGFzaCwgc3RydWN0IHRjcF9hb19rZXkgKmFvX2tleSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9hby5jLTEzNi17XFxubmV0L2lwdjYvdGNwX2FvLmM6MTM3OlxcdHU4IHRrZXlfYnVmW1RDUF9BT19NQVhfVFJBRkZJQ19LRVlfTEVOXTtcXG5uZXQvaXB2Ni90Y3BfYW8uYy0xMzgtXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTgzPWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYztcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjg0OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy04NS1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY2X3NwZWNpZmljO1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzM9c3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjM0LVxcdFxcdHNrLVxcdTAwM2Vza19iYWNrbG9nX3JjdiA9IHRjcF92NF9kb19yY3Y7XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMzU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIzNi1cXHRcXHR0cC1cXHUwMDNlYWZfc3BlY2lmaWMgPSBcXHUwMDI2dGNwX3NvY2tfaXB2Nl9tYXBwZWRfc3BlY2lmaWM7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTI0Ny1cXHRcXHRcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0Y3BfdjZfZG9fcmN2O1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjQ4OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yNDktXFx0XFx0XFx0dHAtXFx1MDAzZWFmX3NwZWNpZmljID0gXFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTgyNz1jb25zdCBzdHJ1Y3QgdGNwX3JlcXVlc3Rfc29ja19vcHMgdGNwX3JlcXVlc3Rfc29ja19pcHY2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtODMzLSNlbmRpZlxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6ODM0OiNpZmRlZiBDT05GSUdfVENQX0FPXFxubmV0L2lwdjYvdGNwX2lwdjYuYy04MzUtXFx0LmFvX2xvb2t1cFxcdD1cXHR0Y3BfdjZfYW9fbG9va3VwX3JzayxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9ODQ3PXN0YXRpYyB2b2lkIHRjcF92Nl9zZW5kX3Jlc3BvbnNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHNlcSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtOTE5LSNlbmRpZlxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6OTIwOiNpZmRlZiBDT05GSUdfVENQX0FPXFxubmV0L2lwdjYvdGNwX2lwdjYuYy05MjEtXFx0aWYgKHRjcF9rZXlfaXNfYW8oa2V5KSkge1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMDAzPXN0YXRpYyB2b2lkIHRjcF92Nl9zZW5kX3Jlc2V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAwOC1cXHRjb25zdCBfX3U4ICptZDVfaGFzaF9sb2NhdGlvbiA9IE5VTEw7XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMDA5OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMDEwLVxcdGJvb2wgYWxsb2NhdGVkX3RyYWZmaWNfa2V5ID0gZmFsc2U7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwMzctXFx0XFx0cmV0dXJuO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTAzODojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAzOS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwOTEtXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMDkyOiNpZmRlZiBDT05GSUdfVENQX0FPXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMDkzLVxcdGlmIChhb2gpIHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEzMS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExMzI6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMzMtb3V0Olxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMTQ5PXN0YXRpYyB2b2lkIHRjcF92Nl90aW1ld2FpdF9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMTU4LVxcdFxcdHRjbGFzcyBcXHUwMDI2PSB+SU5FVF9FQ05fTUFTSztcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExNTk6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExNjAtXFx0c3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvO1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMjA0LVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTIwNTojaWZkZWYgQ09ORklHX1RDUF9BT1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTIwNi1vdXQ6XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEyMTE9c3RhdGljIHZvaWQgdGNwX3Y2X3JlcXNrX3NlbmRfYWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTIxNS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEyMTY6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEyMTctXFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNnRjcF9hb19uZWVkZWQua2V5KSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzQ2PXN0YXRpYyB2b2lkIHRjcF92Nl9tYXBwZWRfY2hpbGRfaW5pdChzdHJ1Y3Qgc29jayAqbmV3c2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM2MS1cXHRuZXdzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0Y3BfdjRfZG9fcmN2O1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTM2MjojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM2My1cXHR0Y3Bfc2sobmV3c2spLVxcdTAwM2VhZl9zcGVjaWZpYyA9IFxcdTAwMjZ0Y3Bfc29ja19pcHY2X21hcHBlZF9zcGVjaWZpYztcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTM4MD1zdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTUwNi0jZW5kaWZcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE1MDc6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE1MDgtXFx0LyogQ29weSBvdmVyIHRjcF9hb19pbmZvIGlmIGFueSAqL1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDAzPWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAxNC1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwMTU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMTYtc3RhdGljIGNvbnN0IHN0cnVjdCB0Y3Bfc29ja19hZl9vcHMgdGNwX3NvY2tfaXB2Nl9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAyMS0jZW5kaWZcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwMjI6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMjMtXFx0LmFvX2xvb2t1cFxcdD1cXHR0Y3BfdjZfYW9fbG9va3VwLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGlwdjZfbWFwcGVkID0ge1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDQ1LVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjA0NjojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA0Ny1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY2X21hcHBlZF9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA1Mi0jZW5kaWZcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwNTM6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNTQtXFx0LmFvX2xvb2t1cFxcdD1cXHR0Y3BfdjZfYW9fbG9va3VwLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDcyPXN0YXRpYyBpbnQgdGNwX3Y2X2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNzktXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDgwOiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDgxLVxcdHRjcF9zayhzayktXFx1MDAzZWFmX3NwZWNpZmljID0gXFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjI3LjA2OTk0MTU0NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTAzNDQ2NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgVENQX0FPYCBjb25maWcsIHdoaWNoIGRlYWxzIHdpdGggdGhlIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb24uIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMgaW4gcmVsYXRpb24gdG8gdGhlIHN5bWJvbHMgaW52b2x2ZWQuIEluaXRpYWxseSwgSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgc3ltYm9scyBhcyBgdGNwX2FvX2RlbGV0ZV9rZXlgLCBgdGNwX2FvX2RlbF9jbWRgLCBhbmQgYHRjcF9wYXJzZV9hb2AuIEkgYWxyZWFkeSBrbmV3IHRoYXQgYHRjcF9hb19kZWxldGVfa2V5YCBhbmQgYHRjcF9hb19kZWxfY21kYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9hby5jYCwgd2hpbGUgYHRjcF9wYXJzZV9hb2AgaXMgZXhwb3J0ZWQuXG5cbkkgc2VlIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpbnZvbHZlcyB1cGRhdGVzIHRvIGB0Y3BfYW9fZGVsZXRlX2tleWAuIFRoZSBhZGRlZCBsaW5lcyB3aXRoaW4gdGhlIGBpZiAoZGVsX2FzeW5jKWAgYmxvY2sgYXJlIHdoYXQgZ3JhYiBteSBhdHRlbnRpb24uIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgbWlnaHQgYmUgcmVmZXJlbmNpbmcgYSBrZXkgdGhhdCdzIGFscmVhZHkgYmVlbiBmcmVlZC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IGlmIGBhb19pbmZvLVx1MDAzZWN1cnJlbnRfa2V5YCBvciBgYW9faW5mby1cdTAwM2VybmV4dF9rZXlgIG1hdGNoZXMgdGhlIGBrZXlgIGJlaW5nIGRlbGV0ZWQsIGl0J3MgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIHVzaW5nIGBXUklURV9PTkNFYCAqYmVmb3JlKiB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IGZyZWVkIHZpYSBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmaXgg4oCTIG51bGxpbmcgdGhlIHBvaW50ZXJzIGJlZm9yZSB0aGUgbWVtb3J5IGlzIHJlbGVhc2VkLiBJdCB1c2VzIGBhdG9taWNfc3ViYCB0byBkZWFsIHdpdGggdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGJvb2trZWVwaW5nLlxuXG5JIGNvbmZpcm1lZCB0aGF0IGBUQ1BfQU9gIGlzIGluZGVlZCB0aGUgc29sZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpbnZvbHZlZCBoZXJlLiBJIGRpZCBhIHF1aWNrIGNoZWNrLCBhbmQgYHRjcF9hb19kZWxldGVfa2V5YCBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgYHNldHNvY2tvcHRgIGNhbGwgd2l0aCBgVENQX0FPX0RFTF9LRVlgLCB3aGljaCBjYWxscyBgdGNwX2FvX2RlbF9jbWRgIGFuZCB0aGVuIGB0Y3BfYW9fZGVsZXRlX2tleWAuIFRoaXMgcGF0Y2ggY2xlYXJseSBhZGRyZXNzZXMgYSBidWcgd2hlcmUgZGFuZ2xpbmcgcG9pbnRlcnMgY291bGQgb2NjdXIuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBob3cgVENQIEFPIGtleXMgYXJlIGRlbGV0ZWQsIHByZXZlbnRpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcy4gSXQgZG9lcyB0aGlzIGJ5IHNhZmVseSBudWxsaWZ5aW5nIGBjdXJyZW50X2tleWAgYW5kIGBybmV4dF9rZXlgIGJlZm9yZSBmcmVlaW5nIHRoZSBhc3NvY2lhdGVkIG1lbW9yeS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBzeW5jaHJvbml6YXRpb24gYXNwZWN0cyBpbnZvbHZlZCBoZXJlLlxuXG5Db25maWdzOiBgVENQX0FPYFxuRm9jdXNTeW1ib2xzOiBgdGNwX2FvX2RlbGV0ZV9rZXlgLCBgdGNwX2FvX2RlbF9jbWRgLCBgdGNwX3BhcnNlX2FvYFxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTU1LCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODozNS41NzMzOTI2NzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDM0NjE1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0FPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2FvX2RlbGV0ZV9rZXlcIixcbiAgICBcInRjcF9hb19kZWxfY21kXCIsXG4gICAgXCJ0Y3BfcGFyc2VfYW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0FPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2FvX2RlbGV0ZV9rZXlcIixcbiAgICBcInRjcF9hb19kZWxfY21kXCIsXG4gICAgXCJ0Y3BfcGFyc2VfYW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 02:08:22 +0000 UTC FinishedAt: 2026-06-23 02:18:37 +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": "4708cac0e22cfd217f48f7cec3c35e5922efcccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_AO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4708cac0e22cfd217f48f7cec3c35e5922efcccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_AO" ], "series_id": "91d529e1-83a4-457e-b9c9-4021154b9983" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_ao_delete_key", "tcp_ao_del_cmd", "tcp_parse_ao" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RDUF9BTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9hb19kZWxldGVfa2V5JiMzNDssCiAgICAmIzM0O3RjcF9hb19kZWxfY21kJiMzNDssCiAgICAmIzM0O3RjcF9wYXJzZV9hbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYWI2YzIyYWVmNjVjMzkyOTkxNGJiY2Y0YWU5YzEwYWVkYThhZTA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDI6MTc6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2FvLmMgYi9uZXQvaXB2NC90Y3BfYW8uY1xuaW5kZXggMmY2OWJjZWNhZTc4YTYuLmE1NmJiNzllMTVlMGU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2FvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9hby5jXG5AQCAtMTc0Nyw2ICYjNDM7MTc0NywxMCBAQCBzdGF0aWMgaW50IHRjcF9hb19kZWxldGVfa2V5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvLFxuIFx0ICogdGhlbSBhbmQgd2UgY2FuIGp1c3QgZnJlZSBhbGwgcmVzb3VyY2VzIGluIFJDVSBmYXNoaW9uLlxuIFx0ICovXG4gXHRpZiAoZGVsX2FzeW5jKSB7XG4mIzQzO1x0XHRpZiAoYW9faW5mby1cdTAwM2VjdXJyZW50X2tleSA9PSBrZXkpXG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UoYW9faW5mby1cdTAwM2VjdXJyZW50X2tleSwgTlVMTCk7XG4mIzQzO1x0XHRpZiAoYW9faW5mby1cdTAwM2VybmV4dF9rZXkgPT0ga2V5KVxuJiM0MztcdFx0XHRXUklURV9PTkNFKGFvX2luZm8tXHUwMDNlcm5leHRfa2V5LCBOVUxMKTtcbiBcdFx0YXRvbWljX3N1Yih0Y3BfYW9fc2l6ZW9mX2tleShrZXkpLCBcdTAwMjZzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiBcdFx0Y2FsbF9yY3UoXHUwMDI2a2V5LVx1MDAzZXJjdSwgdGNwX2FvX2tleV9mcmVlX3JjdSk7XG4gXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RDUF9BTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9hb19kZWxldGVfa2V5JiMzNDssCiAgICAmIzM0O3RjcF9hb19kZWxfY21kJiMzNDssCiAgICAmIzM0O3RjcF9wYXJzZV9hbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZhYjZjMjJhZWY2NWMzOTI5OTE0YmJjZjRhZTljMTBhZWRhOGFlMDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAyMyAwMjoxNzo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9hby5jIGIvbmV0L2lwdjQvdGNwX2FvLmMKaW5kZXggMmY2OWJjZWNhZTc4YTYuLmE1NmJiNzllMTVlMGU5IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfYW8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYW8uYwpAQCAtMTc0Nyw2ICYjNDM7MTc0NywxMCBAQCBzdGF0aWMgaW50IHRjcF9hb19kZWxldGVfa2V5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvLAogCSAqIHRoZW0gYW5kIHdlIGNhbiBqdXN0IGZyZWUgYWxsIHJlc291cmNlcyBpbiBSQ1UgZmFzaGlvbi4KIAkgKi8KIAlpZiAoZGVsX2FzeW5jKSB7CiYjNDM7CQlpZiAoYW9faW5mby0mZ3Q7Y3VycmVudF9rZXkgPT0ga2V5KQomIzQzOwkJCVdSSVRFX09OQ0UoYW9faW5mby0mZ3Q7Y3VycmVudF9rZXksIE5VTEwpOwomIzQzOwkJaWYgKGFvX2luZm8tJmd0O3JuZXh0X2tleSA9PSBrZXkpCiYjNDM7CQkJV1JJVEVfT05DRShhb19pbmZvLSZndDtybmV4dF9rZXksIE5VTEwpOwogCQlhdG9taWNfc3ViKHRjcF9hb19zaXplb2Zfa2V5KGtleSksICZhbXA7c2stJmd0O3NrX29tZW1fYWxsb2MpOwogCQljYWxsX3JjdSgmYW1wO2tleS0mZ3Q7cmN1LCB0Y3BfYW9fa2V5X2ZyZWVfcmN1KTsKIAkJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1AtQU8pIEtleSBEZWxldGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYG5ldC9pcHY0L3RjcF9hby5jYC4gVGhpcyBpcyBmb2N1c2VkIG9uIG1hbmFnaW5nIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb25zLCBzcGVjaWZpY2FsbHkga2V5IGRlbGV0aW9uLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZGVsZXRpbmcgYSBrZXksIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGFuZCB0aGUgYXN5bmNocm9ub3VzIGFzcGVjdCBvZiB0aGF0IGRlbGV0aW9uLCBpbmRpY2F0ZWQgYnkgdGhlIGBkZWxfYXN5bmNgIGZsYWcuCgpUaGUga2V5IGFkZGl0aW9uIGlzIGFuIGltcG9ydGFudCBzYWZldHkgY2hlY2suIElmIHdlJiMzOTtyZSBkZWxldGluZyBhIGtleSBhc3luY2hyb25vdXNseSAoYGRlbF9hc3luY2AgaXMgdHJ1ZSksIHRoZSBwYXRjaCBlbnN1cmVzIHRoYXQgKmJvdGgqIGBhb19pbmZvLSZndDtjdXJyZW50X2tleWAgYW5kIGBhb19pbmZvLSZndDtybmV4dF9rZXlgIGFyZSBzZXQgdG8gYE5VTExgIGlmIHRoZXkgaGFwcGVuIHRvIG1hdGNoIHRoZSBrZXkgdGhhdCYjMzk7cyBiZWluZyBkZWxldGVkLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByZXZlbnRpbmcgYW55IGRhbmdsaW5nIHBvaW50ZXJzIG9yIGluY29ycmVjdCBrZXkgcmVmZXJlbmNlcyBhZnRlciBhbiBhc3luY2hyb25vdXMgZGVsZXRpb24gY29tcGxldGVzLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyBpbXBsZW1lbnRpbmcgYSBzYWZlZ3VhcmQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgdXNpbmcgYSBkZWxldGVkIGtleSBpbiBhbnkgVENQLUFPIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgaWYgYW4gYXN5bmNocm9ub3VzIGRlbGV0aW9uIGlzIHVuZGVyd2F5LiBJIHNob3VsZCByZWFsbHkgZGVsdmUgZGVlcGVyIGludG8gYHRjcF9hb19kZWxldGVfa2V5YCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCByYXRpb25hbGUgZm9yIHRoaXMgY2hhbmdlIHdpdGhpbiB0aGUgYnJvYWRlciBrZXkgbWFuYWdlbWVudCBzY2hlbWUuIFRoaXMgbG9va3MgbGlrZSBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHBhdGNoIGNvbmNlcm5pbmcgcmVmZXJlbmNlIG1hbmFnZW1lbnQgd2l0aCB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiBrZXkgaGFuZGxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2FvX2RlbGV0ZV9rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYW8uYz0xNTcxPXN0YXRpYyBpbnQgdGNwX2FvX2FkZF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTE3MzUtXG5uZXQvaXB2NC90Y3BfYW8uYzoxNzM2OnN0YXRpYyBpbnQgdGNwX2FvX2RlbGV0ZV9rZXkoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2luZm8gKmFvX2luZm8sXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzM3LVx0XHRcdCAgICAgYm9vbCBkZWxfYXN5bmMsIHN0cnVjdCB0Y3BfYW9fa2V5ICprZXksXG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MTc5MD1zdGF0aWMgaW50IHRjcF9hb19kZWxfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xOTA0LVxubmV0L2lwdjQvdGNwX2FvLmM6MTkwNTpcdFx0cmV0dXJuIHRjcF9hb19kZWxldGVfa2V5KHNrLCBhb19pbmZvLCBjbWQuZGVsX2FzeW5jLCBrZXksXG5uZXQvaXB2NC90Y3BfYW8uYy0xOTA2LVx0XHRcdFx0XHQgbmV3X2N1cnJlbnQsIG5ld19ybmV4dCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBuZXR3b3JrIHByb3RvY29scywgc3BlY2lmaWNhbGx5IFRDUCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb25zIChUQ1AgQU8pOgoKKipBbmFseXppbmcgdGhlIFRDUCBBTyBLZXkgRGVsZXRpb24gRmxvdyoqCgpSaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGB0Y3BfYW9fZGVsZXRlX2tleWAgZnVuY3Rpb24uIFRoZSBjYWxsIHN0YWNrIGluZGljYXRlcyBpdCYjMzk7cyB0cmlnZ2VyZWQgZnJvbSBgdGNwX2FvX2RlbF9jbWRgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGRlbGV0aW5nIGEgVENQIEFPIGtleSwgbW9zdCBsaWtlbHkgaW4gcmVzcG9uc2UgdG8gc29tZSBtYW5hZ2VtZW50IGNvbW1hbmQuIE9rYXksIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGZvciBhIG1vbWVudC4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIG5lZWQgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIHRoZSBjb25maWd1cmF0aW9uIGNvbnRleHQgaGVyZS4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyByZXF1aXJlZCBmb3IgVENQIEFPIHRvIGJlIHdvcmtpbmcgcHJvcGVybHk/IEl0JiMzOTtzIG5vdCBqdXN0IGFib3V0IHRoZSBmdW5jdGlvbiBpdHNlbGY7IGl0JiMzOTtzIGFib3V0IHRoZSBzdGF0ZSBpdCYjMzk7cyBvcGVyYXRpbmcgb24uIFNvLCBiZWZvcmUgSSBjb250aW51ZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgY29uZmlndXJhdGlvbiB0aGlzIGZ1bmN0aW9uIGV4cGVjdHMgdG8gYmUgaW4gcGxhY2UsIHdoYXQgc3RhdGUgaXQgYWx0ZXJzLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkuIFRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgZGVsZXRpbmcgYSBrZXkgYXJlIG9idmlvdXMsIHNvIEkgd2lsbCBlbnN1cmUgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnVsbCBsaWZlY3ljbGUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVENQX0FPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTcyOT1jb25maWcgREVGQVVMVF9UQ1BfQ09OR1xuLS1cbm5ldC9pcHY0L0tjb25maWctNzQzLVxubmV0L2lwdjQvS2NvbmZpZzo3NDQ6Y29uZmlnIFRDUF9BT1xubmV0L2lwdjQvS2NvbmZpZy03NDUtXHRib29sIFwmIzM0O1RDUDogQXV0aGVudGljYXRpb24gT3B0aW9uIChSRkM1OTI1KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqQXNzZXNzbWVudCBvZiBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGZpcm0gcmVxdWlyZW1lbnQgZm9yIGBUQ1BfQU9gLiBUaGF0JiMzOTtzIG5vbi1uZWdvdGlhYmxlLiBOb3csIGxldCYjMzk7cyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gV2hpbGUgSSBrbm93IGBUQ1BfQU9gIGlzIGNyaXRpY2FsLCBpdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgb3IgZGVwZW5kZW50IHNldHRpbmdzIHRoYXQgYWxzbyBuZWVkIGF0dGVudGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgd2lkZXIgZW52aXJvbm1lbnQgdG8gY2hlY2sgZm9yIG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCwgc28gSSYjMzk7bGwgbmVlZCB0byB0YWtlIG15IHRpbWUgYW5kIGVuc3VyZSB0aGF0IEkgZG9uJiMzOTt0IG1vdmUgZm9yd2FyZCB3aXRob3V0IGtub3dpbmcgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciB2aXRhbCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VENQX0FPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Njc9b2JqLSQoQ09ORklHX1hGUk0pICYjNDM7PSB4ZnJtNF9wb2xpY3kubyB4ZnJtNF9zdGF0ZS5vIHhmcm00X2lucHV0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTY4LVx0XHQgICAgICB4ZnJtNF9vdXRwdXQubyB4ZnJtNF9wcm90b2NvbC5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVENQX0FPKSAmIzQzOz0gdGNwX2FvLm9cbm5ldC9pcHY0L01ha2VmaWxlLTcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUQ1BfQU8gQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuIEl0IHNlZW1zIHRoZXJlJiMzOTtzIGEgYnVnIHJlbGF0ZWQgdG8gaG93IGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgYXJlIGhhbmRsZWQgd2hlbiBgZGVsX2FzeW5jYCBpcyBlbmFibGVkLCBhbmQgdGhlIGtleSBtaWdodCBnZXQgZnJlZWQgd2hpbGUgYmVpbmcgcG9pbnRlZCB0by4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgY29yZSBzdGFiaWxpdHkgZml4LgoKTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gZGVsZXRpbmcgVENQX0FPIGtleXMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhlIHByaW1hcnkgc3VzcGVjdHMgYXJlIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBgc2V0c29ja29wdGAgY2FsbCByZWxhdGVkIHRvIGBUQ1BfQU9gLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGB0Y3BfYW9fZGVsX2NtZGAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgcG90ZW50aWFsIGltcGFjdC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIGJlIGtleSB0byBncmFzcGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXggYW5kIGVuc3VyaW5nIGl0JiMzOTtzIGJlZW4gaW1wbGVtZW50ZWQgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYW9fZGVsX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9hby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9hby5jPTk4OT10Y3BfaW5ib3VuZF9hb19oYXNoKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDU0LVx0XHRcdGlmIChrZXkpXG5uZXQvaXB2NC90Y3BfYW8uYzoxMDU1Olx0XHRcdFx0LyogcGFpcnMgd2l0aCB0Y3BfYW9fZGVsX2NtZCAqL1xubmV0L2lwdjQvdGNwX2FvLmMtMTA1Ni1cdFx0XHRcdFdSSVRFX09OQ0UoaW5mby1cdTAwM2VjdXJyZW50X2tleSwga2V5KTtcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDY3LVx0ICogLSByZXF1ZXN0IHNvY2tldHMgd291bGQgcmFjZSBvbiB0aG9zZSBrZXkgcG9pbnRlcnNcbm5ldC9pcHY0L3RjcF9hby5jOjEwNjg6XHQgKiAtIHRjcF9hb19kZWxfY21kKCkgYWxsb3dzIGFzeW5jIGtleSByZW1vdmFsXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDY5LVx0ICovXG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MTczNj1zdGF0aWMgaW50IHRjcF9hb19kZWxldGVfa2V5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvLFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTE3ODktI2RlZmluZSBUQ1BfQU9fREVMX0tFWUZfQUxMIChUQ1BfQU9fS0VZRl9JRklOREVYKVxubmV0L2lwdjQvdGNwX2FvLmM6MTc5MDpzdGF0aWMgaW50IHRjcF9hb19kZWxfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbm5ldC9pcHY0L3RjcF9hby5jLTE3OTEtXHRcdFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9pcHY0L3RjcF9hby5jPTIwMjU9aW50IHRjcF9wYXJzZV9hbyhzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIHVuc2lnbmVkIHNob3J0IGludCBmYW1pbHksXG4tLVxubmV0L2lwdjQvdGNwX2FvLmMtMjAzNC1cdGNhc2UgVENQX0FPX0RFTF9LRVk6XG5uZXQvaXB2NC90Y3BfYW8uYzoyMDM1Olx0XHRyZXR1cm4gdGNwX2FvX2RlbF9jbWQoc2ssIGZhbWlseSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjQvdGNwX2FvLmMtMjAzNi1cdGNhc2UgVENQX0FPX0lORk86XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBUQ1AgQS9PIFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGNvZGUgZmxvdyBoZXJlLiBJIHNlZSB0aGF0IGB0Y3BfYW9fZGVsX2NtZGAgZ2V0cyBjYWxsZWQgZnJvbSBgdGNwX3BhcnNlX2FvYC4gVGhhdCYjMzk7cyB0aGUga2V5IGNvbm5lY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBgdGNwX3BhcnNlX2FvYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSBjb25kaXRpb25zIHRoYXQgbGVhZCB0byBgdGNwX2FvX2RlbF9jbWRgIGJlaW5nIGludm9rZWQsIGFuZCB3aGF0IHJvbGUgaXQgcGxheXMgd2l0aGluIHRoYXQgcGFyc2luZyBmdW5jdGlvbi4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgKmZyb20qIGlzIHZpdGFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBUQ1AgQS9PIChBcHBsaWNhdGlvbi1PcmllbnRlZCkgcHJvY2Vzc2luZy4gTGV0JiMzOTtzIHNlZSB3aGF0IGB0Y3BfcGFyc2VfYW9gIGlzIGFsbCBhYm91dC4gSSYjMzk7bSBob3BpbmcgdGhlcmUmIzM5O3MgYSBnb29kIHNldCBvZiBjb21tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3BhcnNlX2FvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9hby5jPTE5MzY9c3RhdGljIGludCB0Y3BfYW9faW5mb19jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTIwMjQtXG5uZXQvaXB2NC90Y3BfYW8uYzoyMDI1OmludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxubmV0L2lwdjQvdGNwX2FvLmMtMjAyNi1cdFx0IHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MjA0ND1pbnQgdGNwX3Y0X3BhcnNlX2FvKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xubmV0L2lwdjQvdGNwX2FvLmM6MjA0NjpcdHJldHVybiB0Y3BfcGFyc2VfYW8oc2ssIGNtZCwgQUZfSU5FVCwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjQvdGNwX2FvLmMtMjA0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdW5kZXJzdGFuZGluZywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipVbmRlcnN0YW5kaW5nIHRoZSBSZWxhdGlvbnNoaXAgYmV0d2VlbiBgdGNwX3Y0X3BhcnNlX2FvYCBhbmQgYGRvX3RjcF9zZXRzb2Nrb3B0YCoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBob3cgYHRjcF92NF9wYXJzZV9hb2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYnJvYWRlciBUQ1AvSVAgbmV0d29ya2luZyBzdGFjay4gRnJvbSB3aGF0IEkgc2VlLCAgYHRjcF92NF9wYXJzZV9hb2AgaXMgc3BlY2lmaWNhbGx5IGNhbGxlZCB3aGVuIHRoZSBgc2V0c29ja29wdGAgc3lzdGVtIGNhbGwsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgVENQIG92ZXIgSVB2NCBzb2NrZXRzLCBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgYGRvX3RjcF9zZXRzb2Nrb3B0YCBmdW5jdGlvbi4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBgdGNwX3Y0X3BhcnNlX2FvYCBpc24mIzM5O3Qgc29tZSBzdGFuZGFsb25lIGZ1bmN0aW9uLCBidXQgcmF0aGVyIGEgY3J1Y2lhbCBjb21wb25lbnQgd2l0aGluIHRoZSBtYWNoaW5lcnkgdGhhdCBoYW5kbGVzIHNvY2tldCBvcHRpb25zIG1vZGlmaWNhdGlvbnMuIEl0IHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgcGFyc2luZyBhbmQgcG90ZW50aWFsbHkgdmFsaWRhdGluZyBhcmd1bWVudHMgYXNzb2NpYXRlZCB3aXRoIEFwcGxpY2F0aW9uIE9wdGlvbnMgKEFPKSBvciBvdGhlciBUQ1AtcmVsYXRlZCBzZXR0aW5ncyB2aWEgYHNldHNvY2tvcHRgIGZvciBJUHY0IHNvY2tldHMuIFRoaXMgYWxzbyB0ZWxscyBtZSB0aGVyZSYjMzk7cyBhbiBhcmNoaXRlY3R1cmUgdGhhdCBoYW5kbGVzIGRpZmZlcmVudCBzb2NrZXQgb3B0aW9ucywgYW5kIHRoaXMgZnVuY3Rpb24gc3BlY2lmaWNhbGx5IGhhbmRsZXMgYSBzdWJzZXQgcmVsYXRpbmcgdG8gVENQIHY0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGF0IHNwZWNpZmljIHNvY2tldCBvcHRpb25zIGl0IG1hbmFnZXMsIGJ1dCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gYmVnaW5zIGZvciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfdjRfcGFyc2VfYW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2FvLmM9MjAyNT1pbnQgdGNwX3BhcnNlX2FvKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0yMDQzLVxubmV0L2lwdjQvdGNwX2FvLmM6MjA0NDppbnQgdGNwX3Y0X3BhcnNlX2FvKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjM2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY0X3NwZWNpZmljID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjM3NC1cdC5jYWxjX2FvX2hhc2hcdFx0PSB0Y3BfdjRfYW9faGFzaF9za2IsXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIzNzU6XHQuYW9fcGFyc2VcdFx0PSB0Y3BfdjRfcGFyc2VfYW8sXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzYtXHQuYW9fY2FsY19rZXlfc2tcdFx0PSB0Y3BfdjRfYW9fY2FsY19rZXlfc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBPcmlnaW4gb2YgYGFvX3BhcnNlYCoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBhb19wYXJzZWAgaXMgaW52b2tlZCB3aXRoaW4gYHRjcF9zb2NrX2FmX29wc2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlICplbHNlKiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD8mIzM0OyBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNhbGwgZ3JhcGggaXMga2V5IHRvIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGlzIHNwZWNpZmljIHNvY2tldCBvcGVyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGFvX3BhcnNlYCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXNlZCwgb3V0c2lkZSBvZiB0aGlzIGltbWVkaWF0ZSBjb250ZXh0LiBLbm93aW5nIHRoZSBjYWxsIGhpZXJhcmNoeSB3aWxsIGlsbHVtaW5hdGUgdGhlIGxvZ2ljIGF0IHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FvX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvaXB2NC90Y3AuYy00MDc4LVx0XHRpZiAoKDEgXHUwMDNjXHUwMDNjIHNrLVx1MDAzZXNrX3N0YXRlKSBcdTAwMjYgKFRDUEZfTElTVEVOIHwgVENQRl9DTE9TRSkpXG5uZXQvaXB2NC90Y3AuYzo0MDc5Olx0XHRcdGdvdG8gYW9fcGFyc2U7XG5uZXQvaXB2NC90Y3AuYy00MDgwLVx0XHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0Y3Bfc2soc2spLVx1MDAzZWFvX2luZm8sXG5uZXQvaXB2NC90Y3AuYy00MDgxLVx0XHRcdFx0XHQgICAgICBsb2NrZGVwX3NvY2tfaXNfaGVsZChzaykpKVxubmV0L2lwdjQvdGNwLmM6NDA4MjpcdFx0XHRnb3RvIGFvX3BhcnNlO1xubmV0L2lwdjQvdGNwLmMtNDA4My1cdFx0aWYgKHRwLVx1MDAzZXJlcGFpcilcbm5ldC9pcHY0L3RjcC5jOjQwODQ6XHRcdFx0Z290byBhb19wYXJzZTtcbm5ldC9pcHY0L3RjcC5jLTQwODUtXHRcdGVyciA9IC1FSVNDT05OO1xubmV0L2lwdjQvdGNwLmMtNDA4Ni1cdFx0YnJlYWs7XG5uZXQvaXB2NC90Y3AuYzo0MDg3OmFvX3BhcnNlOlxubmV0L2lwdjQvdGNwLmM6NDA4ODpcdFx0ZXJyID0gdHAtXHUwMDNlYWZfc3BlY2lmaWMtXHUwMDNlYW9fcGFyc2Uoc2ssIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcbm5ldC9pcHY0L3RjcC5jLTQwODktXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L3RjcF9hby5jPTEzNDA9c3RhdGljIGludCB0Y3BfYW9fdmVyaWZ5X2lwdjQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTEzNzgtXG5uZXQvaXB2NC90Y3BfYW8uYzoxMzc5OnN0YXRpYyBpbnQgdGNwX2FvX3BhcnNlX2NyeXB0byhjb25zdCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxubmV0L2lwdjQvdGNwX2FvLmMtMTM4MC1cdFx0XHQgICAgICAgc3RydWN0IHRjcF9hb19rZXkgKmtleSlcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYz0xNTcxPXN0YXRpYyBpbnQgdGNwX2FvX2FkZF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3RjcF9hby5jLTE2OTgtXG5uZXQvaXB2NC90Y3BfYW8uYzoxNjk5Olx0cmV0ID0gdGNwX2FvX3BhcnNlX2NyeXB0byhcdTAwMjZjbWQsIGtleSk7XG5uZXQvaXB2NC90Y3BfYW8uYy0xNzAwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTIzNjY9c3RhdGljIGNvbnN0IHN0cnVjdCB0Y3Bfc29ja19hZl9vcHMgdGNwX3NvY2tfaXB2NF9zcGVjaWZpYyA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzQtXHQuY2FsY19hb19oYXNoXHRcdD0gdGNwX3Y0X2FvX2hhc2hfc2tiLFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMzc1Olx0LmFvX3BhcnNlXHRcdD0gdGNwX3Y0X3BhcnNlX2FvLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzc2LVx0LmFvX2NhbGNfa2V5X3NrXHRcdD0gdGNwX3Y0X2FvX2NhbGNfa2V5X3NrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTkwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVENQIEFPIEtleSBNYW5hZ2VtZW50IENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRvX3RjcF9zZXRzb2Nrb3B0YCBmdW5jdGlvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBUQ1AgQU8gKEF1dGhlbnRpY2F0aW9uIE9wdGlvbikgZnVuY3Rpb25hbGl0eS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQgY2FsbHMgYGFvX3BhcnNlYCB3aGVuIGVuY291bnRlcmluZyBgVENQX0FPX0FERF9LRVlgLCBgVENQX0FPX0RFTF9LRVlgLCBvciBgVENQX0FPX0lORk9gLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgYHRjcF9hb19kZWxldGVfa2V5YCwgd2hpY2ggaXMsIG9mIGNvdXJzZSwgY2FsbGVkIHdoZW4gYFRDUF9BT19ERUxfS0VZYCBpcyB1c2VkLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBpbiB0aGlzIGZsb3cuIFRoZSByZWxldmFudCBjb25maWcgc3ltYm9sIGlzLCBhcyBleHBlY3RlZCwgYFRDUF9BT2AuCgpOb3csIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZWxlbWVudHMuIFRoZSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGFuZCBgdGNwX3BhcnNlX2FvYCBmdW5jdGlvbnMuIFRoZXNlIGFyZSB0aGUgb25lcyB3aGVyZSBhbnkgdnVsbmVyYWJpbGl0eSwgb3IgYSBmaXggZm9yIHRoYXQgbWF0dGVyLCB3b3VsZCBtb3N0IGxpa2VseSBiZSBjb25jZW50cmF0ZWQuCgpJdCYjMzk7cyBhIGdvb2QgdGltZSB0byBleHBhbmQgdGhlIHNjb3BlIGFuZCBjaGVjayBpZiBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudC4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHRoZSBlbnRpcmUgZWNvc3lzdGVtIGlzIGJlaW5nIGFuYWx5emVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUQ1BfQU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9NTQ9b2JqLXkgJiM0Mzs9IG1jYXN0X3Nub29wLm9cbm5ldC9pcHY2L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19UQ1BfQU8pICYjNDM7PSB0Y3BfYW8ub1xubmV0L2lwdjYvTWFrZWZpbGUtNTYtZW5kaWZcbi0tXG5uZXQvaXB2Ni90Y3BfYW8uYz0xMzM9aW50IHRjcF92Nl9hb19zeW5hY2tfaGFzaChjaGFyICphb19oYXNoLCBzdHJ1Y3QgdGNwX2FvX2tleSAqYW9fa2V5LFxuLS1cbm5ldC9pcHY2L3RjcF9hby5jLTEzNi17XG5uZXQvaXB2Ni90Y3BfYW8uYzoxMzc6XHR1OCB0a2V5X2J1ZltUQ1BfQU9fTUFYX1RSQUZGSUNfS0VZX0xFTl07XG5uZXQvaXB2Ni90Y3BfYW8uYy0xMzgtXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz04Mz1jb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGlwdjZfc3BlY2lmaWM7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjg0OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTg1LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGNwX3NvY2tfYWZfb3BzIHRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzM9c3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIzNC1cdFx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0Y3BfdjRfZG9fcmN2O1xubmV0L2lwdjYvdGNwX2lwdjYuYzoyMzU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjM2LVx0XHR0cC1cdTAwM2VhZl9zcGVjaWZpYyA9IFx1MDAyNnRjcF9zb2NrX2lwdjZfbWFwcGVkX3NwZWNpZmljO1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjQ3LVx0XHRcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gdGNwX3Y2X2RvX3Jjdjtcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjQ4OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTI0OS1cdFx0XHR0cC1cdTAwM2VhZl9zcGVjaWZpYyA9IFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz04Mjc9Y29uc3Qgc3RydWN0IHRjcF9yZXF1ZXN0X3NvY2tfb3BzIHRjcF9yZXF1ZXN0X3NvY2tfaXB2Nl9vcHMgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy04MzMtI2VuZGlmXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjgzNDojaWZkZWYgQ09ORklHX1RDUF9BT1xubmV0L2lwdjYvdGNwX2lwdjYuYy04MzUtXHQuYW9fbG9va3VwXHQ9XHR0Y3BfdjZfYW9fbG9va3VwX3Jzayxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTg0Nz1zdGF0aWMgdm9pZCB0Y3BfdjZfc2VuZF9yZXNwb25zZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBzZXEsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy05MTktI2VuZGlmXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjkyMDojaWZkZWYgQ09ORklHX1RDUF9BT1xubmV0L2lwdjYvdGNwX2lwdjYuYy05MjEtXHRpZiAodGNwX2tleV9pc19hbyhrZXkpKSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMDAzPXN0YXRpYyB2b2lkIHRjcF92Nl9zZW5kX3Jlc2V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwMDgtXHRjb25zdCBfX3U4ICptZDVfaGFzaF9sb2NhdGlvbiA9IE5VTEw7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEwMDk6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAxMC1cdGJvb2wgYWxsb2NhdGVkX3RyYWZmaWNfa2V5ID0gZmFsc2U7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMDM3LVx0XHRyZXR1cm47XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEwMzg6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAzOS1cdHJjdV9yZWFkX2xvY2soKTtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwOTEtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEwOTI6I2lmZGVmIENPTkZJR19UQ1BfQU9cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTA5My1cdGlmIChhb2gpIHtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMzEtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExMzI6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEzMy1vdXQ6XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMTQ5PXN0YXRpYyB2b2lkIHRjcF92Nl90aW1ld2FpdF9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTE1OC1cdFx0dGNsYXNzIFx1MDAyNj0gfklORVRfRUNOX01BU0s7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExNTk6I2lmZGVmIENPTkZJR19UQ1BfQU9cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTE2MC1cdHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbztcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEyMDQtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEyMDU6I2lmZGVmIENPTkZJR19UQ1BfQU9cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTIwNi1vdXQ6XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMjExPXN0YXRpYyB2b2lkIHRjcF92Nl9yZXFza19zZW5kX2Fjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMjE1LVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMjE2OiNpZmRlZiBDT05GSUdfVENQX0FPXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEyMTctXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZ0Y3BfYW9fbmVlZGVkLmtleSkgXHUwMDI2XHUwMDI2XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzQ2PXN0YXRpYyB2b2lkIHRjcF92Nl9tYXBwZWRfY2hpbGRfaW5pdChzdHJ1Y3Qgc29jayAqbmV3c2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEzNjEtXHRuZXdzay1cdTAwM2Vza19iYWNrbG9nX3JjdiA9IHRjcF92NF9kb19yY3Y7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEzNjI6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM2My1cdHRjcF9zayhuZXdzayktXHUwMDNlYWZfc3BlY2lmaWMgPSBcdTAwMjZ0Y3Bfc29ja19pcHY2X21hcHBlZF9zcGVjaWZpYztcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEzODA9c3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xNTA2LSNlbmRpZlxubmV0L2lwdjYvdGNwX2lwdjYuYzoxNTA3OiNpZmRlZiBDT05GSUdfVENQX0FPXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE1MDgtXHQvKiBDb3B5IG92ZXIgdGNwX2FvX2luZm8gaWYgYW55ICovXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDAzPWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYyA9IHtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMTQtXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwMTU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAxNi1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY2X3NwZWNpZmljID0ge1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAyMS0jZW5kaWZcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjAyMjojaWZkZWYgQ09ORklHX1RDUF9BT1xubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDIzLVx0LmFvX2xvb2t1cFx0PVx0dGNwX3Y2X2FvX2xvb2t1cCxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTIwMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9tYXBwZWQgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDQ1LVxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDQ2OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNDctc3RhdGljIGNvbnN0IHN0cnVjdCB0Y3Bfc29ja19hZl9vcHMgdGNwX3NvY2tfaXB2Nl9tYXBwZWRfc3BlY2lmaWMgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDUyLSNlbmRpZlxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDUzOiNpZmRlZiBDT05GSUdfVENQX0FPXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNTQtXHQuYW9fbG9va3VwXHQ9XHR0Y3BfdjZfYW9fbG9va3VwLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MjA3Mj1zdGF0aWMgaW50IHRjcF92Nl9pbml0X3NvY2soc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA3OS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjA4MDojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDgxLVx0dGNwX3NrKHNrKS1cdTAwM2VhZl9zcGVjaWZpYyA9IFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NTUKCQkJCQkJCW91dHB1dDogMTMwCgkJCQkJCQl0aG91Z2h0czogNDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gdGhlIGBUQ1BfQU9gIGNvbmZpZywgd2hpY2ggZGVhbHMgd2l0aCB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbi4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcyBpbiByZWxhdGlvbiB0byB0aGUgc3ltYm9scyBpbnZvbHZlZC4gSW5pdGlhbGx5LCBJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSBrZXkgc3ltYm9scyBhcyBgdGNwX2FvX2RlbGV0ZV9rZXlgLCBgdGNwX2FvX2RlbF9jbWRgLCBhbmQgYHRjcF9wYXJzZV9hb2AuIEkgYWxyZWFkeSBrbmV3IHRoYXQgYHRjcF9hb19kZWxldGVfa2V5YCBhbmQgYHRjcF9hb19kZWxfY21kYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9hby5jYCwgd2hpbGUgYHRjcF9wYXJzZV9hb2AgaXMgZXhwb3J0ZWQuCgpJIHNlZSB0aGUgY29yZSBvZiB0aGUgcGF0Y2ggaW52b2x2ZXMgdXBkYXRlcyB0byBgdGNwX2FvX2RlbGV0ZV9rZXlgLiBUaGUgYWRkZWQgbGluZXMgd2l0aGluIHRoZSBgaWYgKGRlbF9hc3luYylgIGJsb2NrIGFyZSB3aGF0IGdyYWIgbXkgYXR0ZW50aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgd2hlcmUgYGN1cnJlbnRfa2V5YCBvciBgcm5leHRfa2V5YCBtaWdodCBiZSByZWZlcmVuY2luZyBhIGtleSB0aGF0JiMzOTtzIGFscmVhZHkgYmVlbiBmcmVlZC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IGlmIGBhb19pbmZvLSZndDtjdXJyZW50X2tleWAgb3IgYGFvX2luZm8tJmd0O3JuZXh0X2tleWAgbWF0Y2hlcyB0aGUgYGtleWAgYmVpbmcgZGVsZXRlZCwgaXQmIzM5O3MgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIHVzaW5nIGBXUklURV9PTkNFYCAqYmVmb3JlKiB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IGZyZWVkIHZpYSBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmaXgg4oCTIG51bGxpbmcgdGhlIHBvaW50ZXJzIGJlZm9yZSB0aGUgbWVtb3J5IGlzIHJlbGVhc2VkLiBJdCB1c2VzIGBhdG9taWNfc3ViYCB0byBkZWFsIHdpdGggdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGJvb2trZWVwaW5nLgoKSSBjb25maXJtZWQgdGhhdCBgVENQX0FPYCBpcyBpbmRlZWQgdGhlIHNvbGUgY29uZmlndXJhdGlvbiBvcHRpb24gaW52b2x2ZWQgaGVyZS4gSSBkaWQgYSBxdWljayBjaGVjaywgYW5kIGB0Y3BfYW9fZGVsZXRlX2tleWAgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGBzZXRzb2Nrb3B0YCBjYWxsIHdpdGggYFRDUF9BT19ERUxfS0VZYCwgd2hpY2ggY2FsbHMgYHRjcF9hb19kZWxfY21kYCBhbmQgdGhlbiBgdGNwX2FvX2RlbGV0ZV9rZXlgLiBUaGlzIHBhdGNoIGNsZWFybHkgYWRkcmVzc2VzIGEgYnVnIHdoZXJlIGRhbmdsaW5nIHBvaW50ZXJzIGNvdWxkIG9jY3VyLgoKU28sIHRvIHN1bW1hcml6ZSwgdGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGhvdyBUQ1AgQU8ga2V5cyBhcmUgZGVsZXRlZCwgcHJldmVudGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLiBJdCBkb2VzIHRoaXMgYnkgc2FmZWx5IG51bGxpZnlpbmcgYGN1cnJlbnRfa2V5YCBhbmQgYHJuZXh0X2tleWAgYmVmb3JlIGZyZWVpbmcgdGhlIGFzc29jaWF0ZWQgbWVtb3J5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHN5bmNocm9uaXphdGlvbiBhc3BlY3RzIGludm9sdmVkIGhlcmUuCgpDb25maWdzOiBgVENQX0FPYApGb2N1c1N5bWJvbHM6IGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGB0Y3BfcGFyc2VfYW9gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDAyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUQ1BfQU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYW9fZGVsZXRlX2tleSYjMzQ7LAogICAgJiMzNDt0Y3BfYW9fZGVsX2NtZCYjMzQ7LAogICAgJiMzNDt0Y3BfcGFyc2VfYW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSB3aGVyZSBgY3VycmVudF9rZXlgIG9yIGBybmV4dF9rZXlgIGNvdWxkIGJlIGxlZnQgcG9pbnRpbmcgdG8gYSBmcmVlZCBrZXkgd2hlbiBgZGVsX2FzeW5jYCBpcyB0cnVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljIHJlYWNoYWJsZSB2aWEgc2V0c29ja29wdCB3aXRoIFRDUF9BT19ERUxfS0VZLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUQ1BfQU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYW9fZGVsZXRlX2tleSYjMzQ7LAogICAgJiMzNDt0Y3BfYW9fZGVsX2NtZCYjMzQ7LAogICAgJiMzNDt0Y3BfcGFyc2VfYW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSB3aGVyZSBgY3VycmVudF9rZXlgIG9yIGBybmV4dF9rZXlgIGNvdWxkIGJlIGxlZnQgcG9pbnRpbmcgdG8gYSBmcmVlZCBrZXkgd2hlbiBgZGVsX2FzeW5jYCBpcyB0cnVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljIHJlYWNoYWJsZSB2aWEgc2V0c29ja29wdCB3aXRoIFRDUF9BT19ERUxfS0VZLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTc6NTYuNDU5OTQxMTIyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMDc4MzA1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0FPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2FvX2RlbGV0ZV9rZXlcIixcbiAgICBcInRjcF9hb19kZWxfY21kXCIsXG4gICAgXCJ0Y3BfcGFyc2VfYW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE3OjU2LjQ1OTk1MDg4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MzQzNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmFiNmMyMmFlZjY1YzM5Mjk5MTRiYmNmNGFlOWMxMGFlZGE4YWUwNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAwMjoxNzo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYW8uYyBiL25ldC9pcHY0L3RjcF9hby5jXFxuaW5kZXggMmY2OWJjZWNhZTc4YTYuLmE1NmJiNzllMTVlMGU5IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9hby5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX2FvLmNcXG5AQCAtMTc0Nyw2ICsxNzQ3LDEwIEBAIHN0YXRpYyBpbnQgdGNwX2FvX2RlbGV0ZV9rZXkoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2luZm8gKmFvX2luZm8sXFxuIFxcdCAqIHRoZW0gYW5kIHdlIGNhbiBqdXN0IGZyZWUgYWxsIHJlc291cmNlcyBpbiBSQ1UgZmFzaGlvbi5cXG4gXFx0ICovXFxuIFxcdGlmIChkZWxfYXN5bmMpIHtcXG4rXFx0XFx0aWYgKGFvX2luZm8tXFx1MDAzZWN1cnJlbnRfa2V5ID09IGtleSlcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShhb19pbmZvLVxcdTAwM2VjdXJyZW50X2tleSwgTlVMTCk7XFxuK1xcdFxcdGlmIChhb19pbmZvLVxcdTAwM2VybmV4dF9rZXkgPT0ga2V5KVxcbitcXHRcXHRcXHRXUklURV9PTkNFKGFvX2luZm8tXFx1MDAzZXJuZXh0X2tleSwgTlVMTCk7XFxuIFxcdFxcdGF0b21pY19zdWIodGNwX2FvX3NpemVvZl9rZXkoa2V5KSwgXFx1MDAyNnNrLVxcdTAwM2Vza19vbWVtX2FsbG9jKTtcXG4gXFx0XFx0Y2FsbF9yY3UoXFx1MDAyNmtleS1cXHUwMDNlcmN1LCB0Y3BfYW9fa2V5X2ZyZWVfcmN1KTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE3OjU2LjkzNzMwNjg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODczMDQ1NDM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUQ1BfQU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYW9fZGVsZXRlX2tleVwiLFxuICAgIFwidGNwX2FvX2RlbF9jbWRcIixcbiAgICBcInRjcF9wYXJzZV9hb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb24gKFRDUF9BTykgd2hlcmUgYGN1cnJlbnRfa2V5YCBvciBgcm5leHRfa2V5YCBjb3VsZCBiZSBsZWZ0IHBvaW50aW5nIHRvIGEgZnJlZWQga2V5IHdoZW4gYGRlbF9hc3luY2AgaXMgdHJ1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayBsb2dpYyByZWFjaGFibGUgdmlhIHNldHNvY2tvcHQgd2l0aCBUQ1BfQU9fREVMX0tFWS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYWI2YzIyYWVmNjVjMzkyOTkxNGJiY2Y0YWU5YzEwYWVkYThhZTA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDI6MTc6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYW8uYyBiL25ldC9pcHY0L3RjcF9hby5jXG5pbmRleCAyZjY5YmNlY2FlNzhhNi4uYTU2YmI3OWUxNWUwZTkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYW8uY1xuKysrIGIvbmV0L2lwdjQvdGNwX2FvLmNcbkBAIC0xNzQ3LDYgKzE3NDcsMTAgQEAgc3RhdGljIGludCB0Y3BfYW9fZGVsZXRlX2tleShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbyxcbiBcdCAqIHRoZW0gYW5kIHdlIGNhbiBqdXN0IGZyZWUgYWxsIHJlc291cmNlcyBpbiBSQ1UgZmFzaGlvbi5cbiBcdCAqL1xuIFx0aWYgKGRlbF9hc3luYykge1xuK1x0XHRpZiAoYW9faW5mby1cdTAwM2VjdXJyZW50X2tleSA9PSBrZXkpXG4rXHRcdFx0V1JJVEVfT05DRShhb19pbmZvLVx1MDAzZWN1cnJlbnRfa2V5LCBOVUxMKTtcbitcdFx0aWYgKGFvX2luZm8tXHUwMDNlcm5leHRfa2V5ID09IGtleSlcbitcdFx0XHRXUklURV9PTkNFKGFvX2luZm8tXHUwMDNlcm5leHRfa2V5LCBOVUxMKTtcbiBcdFx0YXRvbWljX3N1Yih0Y3BfYW9fc2l6ZW9mX2tleShrZXkpLCBcdTAwMjZzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiBcdFx0Y2FsbF9yY3UoXHUwMDI2a2V5LVx1MDAzZXJjdSwgdGNwX2FvX2tleV9mcmVlX3JjdSk7XG4gXHRcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTc6NTYuOTM3MzEwMjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkwNzg1MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQLUFPKSBLZXkgRGVsZXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvdGNwX2FvLmNgLiBUaGlzIGlzIGZvY3VzZWQgb24gbWFuYWdpbmcgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbnMsIHNwZWNpZmljYWxseSBrZXkgZGVsZXRpb24uIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBkZWxldGluZyBhIGtleSwgYHRjcF9hb19kZWxldGVfa2V5YCwgYW5kIHRoZSBhc3luY2hyb25vdXMgYXNwZWN0IG9mIHRoYXQgZGVsZXRpb24sIGluZGljYXRlZCBieSB0aGUgYGRlbF9hc3luY2AgZmxhZy5cblxuVGhlIGtleSBhZGRpdGlvbiBpcyBhbiBpbXBvcnRhbnQgc2FmZXR5IGNoZWNrLiBJZiB3ZSdyZSBkZWxldGluZyBhIGtleSBhc3luY2hyb25vdXNseSAoYGRlbF9hc3luY2AgaXMgdHJ1ZSksIHRoZSBwYXRjaCBlbnN1cmVzIHRoYXQgKmJvdGgqIGBhb19pbmZvLVx1MDAzZWN1cnJlbnRfa2V5YCBhbmQgYGFvX2luZm8tXHUwMDNlcm5leHRfa2V5YCBhcmUgc2V0IHRvIGBOVUxMYCBpZiB0aGV5IGhhcHBlbiB0byBtYXRjaCB0aGUga2V5IHRoYXQncyBiZWluZyBkZWxldGVkLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByZXZlbnRpbmcgYW55IGRhbmdsaW5nIHBvaW50ZXJzIG9yIGluY29ycmVjdCBrZXkgcmVmZXJlbmNlcyBhZnRlciBhbiBhc3luY2hyb25vdXMgZGVsZXRpb24gY29tcGxldGVzLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGltcGxlbWVudGluZyBhIHNhZmVndWFyZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IHVzaW5nIGEgZGVsZXRlZCBrZXkgaW4gYW55IFRDUC1BTyBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIGlmIGFuIGFzeW5jaHJvbm91cyBkZWxldGlvbiBpcyB1bmRlcndheS4gSSBzaG91bGQgcmVhbGx5IGRlbHZlIGRlZXBlciBpbnRvIGB0Y3BfYW9fZGVsZXRlX2tleWAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgcmF0aW9uYWxlIGZvciB0aGlzIGNoYW5nZSB3aXRoaW4gdGhlIGJyb2FkZXIga2V5IG1hbmFnZW1lbnQgc2NoZW1lLiBUaGlzIGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBwYXRjaCBjb25jZXJuaW5nIHJlZmVyZW5jZSBtYW5hZ2VtZW50IHdpdGggdGhlIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb24ga2V5IGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTExLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTg6MDIuMDI4MDk5NDc2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NTE2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9hb19kZWxldGVfa2V5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jPTE1NzE9c3RhdGljIGludCB0Y3BfYW9fYWRkX2NtZChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IGludCBmYW1pbHksXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzM1LVxcbm5ldC9pcHY0L3RjcF9hby5jOjE3MzY6c3RhdGljIGludCB0Y3BfYW9fZGVsZXRlX2tleShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbyxcXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzM3LVxcdFxcdFxcdCAgICAgYm9vbCBkZWxfYXN5bmMsIHN0cnVjdCB0Y3BfYW9fa2V5ICprZXksXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0xNzkwPXN0YXRpYyBpbnQgdGNwX2FvX2RlbF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMTkwNC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoxOTA1OlxcdFxcdHJldHVybiB0Y3BfYW9fZGVsZXRlX2tleShzaywgYW9faW5mbywgY21kLmRlbF9hc3luYywga2V5LFxcbm5ldC9pcHY0L3RjcF9hby5jLTE5MDYtXFx0XFx0XFx0XFx0XFx0IG5ld19jdXJyZW50LCBuZXdfcm5leHQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowMi4wOTU2MjM1MDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE0ODc2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gbmV0d29yayBwcm90b2NvbHMsIHNwZWNpZmljYWxseSBUQ1AgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9ucyAoVENQIEFPKTpcblxuKipBbmFseXppbmcgdGhlIFRDUCBBTyBLZXkgRGVsZXRpb24gRmxvdyoqXG5cblJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgdGNwX2FvX2RlbGV0ZV9rZXlgIGZ1bmN0aW9uLiBUaGUgY2FsbCBzdGFjayBpbmRpY2F0ZXMgaXQncyB0cmlnZ2VyZWQgZnJvbSBgdGNwX2FvX2RlbF9jbWRgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggZGVsZXRpbmcgYSBUQ1AgQU8ga2V5LCBtb3N0IGxpa2VseSBpbiByZXNwb25zZSB0byBzb21lIG1hbmFnZW1lbnQgY29tbWFuZC4gT2theSwgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBOb3csIGxldCdzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBuZWVkIHRvIGdldCBteSBoZWFkIGFyb3VuZCB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IGhlcmUuIFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgcmVxdWlyZWQgZm9yIFRDUCBBTyB0byBiZSB3b3JraW5nIHByb3Blcmx5PyBJdCdzIG5vdCBqdXN0IGFib3V0IHRoZSBmdW5jdGlvbiBpdHNlbGY7IGl0J3MgYWJvdXQgdGhlIHN0YXRlIGl0J3Mgb3BlcmF0aW5nIG9uLiBTbywgYmVmb3JlIEkgY29udGludWUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIG9mIGNvbmZpZ3VyYXRpb24gdGhpcyBmdW5jdGlvbiBleHBlY3RzIHRvIGJlIGluIHBsYWNlLCB3aGF0IHN0YXRlIGl0IGFsdGVycywgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LiBUaGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIGRlbGV0aW5nIGEga2V5IGFyZSBvYnZpb3VzLCBzbyBJIHdpbGwgZW5zdXJlIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bGwgbGlmZWN5Y2xlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowNS44MTA1MDMwOTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyMDU0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRDUF9BT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NzI5PWNvbmZpZyBERUZBVUxUX1RDUF9DT05HXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTc0My1cXG5uZXQvaXB2NC9LY29uZmlnOjc0NDpjb25maWcgVENQX0FPXFxubmV0L2lwdjQvS2NvbmZpZy03NDUtXFx0Ym9vbCBcXFwiVENQOiBBdXRoZW50aWNhdGlvbiBPcHRpb24gKFJGQzU5MjUpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowNS44Nzg3MTgxMDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc1NzE5MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqQXNzZXNzbWVudCBvZiBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgZmlybSByZXF1aXJlbWVudCBmb3IgYFRDUF9BT2AuIFRoYXQncyBub24tbmVnb3RpYWJsZS4gTm93LCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gV2hpbGUgSSBrbm93IGBUQ1BfQU9gIGlzIGNyaXRpY2FsLCBpdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIG9yIGRlcGVuZGVudCBzZXR0aW5ncyB0aGF0IGFsc28gbmVlZCBhdHRlbnRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgd2lkZXIgZW52aXJvbm1lbnQgdG8gY2hlY2sgZm9yIG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCwgc28gSSdsbCBuZWVkIHRvIHRha2UgbXkgdGltZSBhbmQgZW5zdXJlIHRoYXQgSSBkb24ndCBtb3ZlIGZvcndhcmQgd2l0aG91dCBrbm93aW5nIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciB2aXRhbCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5OTgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowOS41NTQ0NDA5MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwODYwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVENQX0FPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTY3PW9iai0kKENPTkZJR19YRlJNKSArPSB4ZnJtNF9wb2xpY3kubyB4ZnJtNF9zdGF0ZS5vIHhmcm00X2lucHV0Lm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTY4LVxcdFxcdCAgICAgIHhmcm00X291dHB1dC5vIHhmcm00X3Byb3RvY29sLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVENQX0FPKSArPSB0Y3BfYW8ub1xcbm5ldC9pcHY0L01ha2VmaWxlLTcwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODowOS42MTI1NDc1NzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU4NzMwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUF9BTyBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBhZGRyZXNzaW5nIGEgcHJldHR5IG5hc3R5IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZS4gSXQgc2VlbXMgdGhlcmUncyBhIGJ1ZyByZWxhdGVkIHRvIGhvdyBgY3VycmVudF9rZXlgIG9yIGBybmV4dF9rZXlgIGFyZSBoYW5kbGVkIHdoZW4gYGRlbF9hc3luY2AgaXMgZW5hYmxlZCwgYW5kIHRoZSBrZXkgbWlnaHQgZ2V0IGZyZWVkIHdoaWxlIGJlaW5nIHBvaW50ZWQgdG8uIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIGNvcmUgc3RhYmlsaXR5IGZpeC5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gZGVsZXRpbmcgVENQX0FPIGtleXMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhlIHByaW1hcnkgc3VzcGVjdHMgYXJlIGB0Y3BfYW9fZGVsZXRlX2tleWAsIGB0Y3BfYW9fZGVsX2NtZGAsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBgc2V0c29ja29wdGAgY2FsbCByZWxhdGVkIHRvIGBUQ1BfQU9gLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGB0Y3BfYW9fZGVsX2NtZGAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgcG90ZW50aWFsIGltcGFjdC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIGJlIGtleSB0byBncmFzcGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmaXggYW5kIGVuc3VyaW5nIGl0J3MgYmVlbiBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODoxMy40NzEyODM0ODdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MjE1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9hb19kZWxfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jPTk4OT10Y3BfaW5ib3VuZF9hb19oYXNoKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jLTEwNTQtXFx0XFx0XFx0aWYgKGtleSlcXG5uZXQvaXB2NC90Y3BfYW8uYzoxMDU1OlxcdFxcdFxcdFxcdC8qIHBhaXJzIHdpdGggdGNwX2FvX2RlbF9jbWQgKi9cXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDU2LVxcdFxcdFxcdFxcdFdSSVRFX09OQ0UoaW5mby1cXHUwMDNlY3VycmVudF9rZXksIGtleSk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYy0xMDY3LVxcdCAqIC0gcmVxdWVzdCBzb2NrZXRzIHdvdWxkIHJhY2Ugb24gdGhvc2Uga2V5IHBvaW50ZXJzXFxubmV0L2lwdjQvdGNwX2FvLmM6MTA2ODpcXHQgKiAtIHRjcF9hb19kZWxfY21kKCkgYWxsb3dzIGFzeW5jIGtleSByZW1vdmFsXFxubmV0L2lwdjQvdGNwX2FvLmMtMTA2OS1cXHQgKi9cXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jPTE3MzY9c3RhdGljIGludCB0Y3BfYW9fZGVsZXRlX2tleShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0Y3BfYW9faW5mbyAqYW9faW5mbyxcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jLTE3ODktI2RlZmluZSBUQ1BfQU9fREVMX0tFWUZfQUxMIChUQ1BfQU9fS0VZRl9JRklOREVYKVxcbm5ldC9pcHY0L3RjcF9hby5jOjE3OTA6c3RhdGljIGludCB0Y3BfYW9fZGVsX2NtZChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IGludCBmYW1pbHksXFxubmV0L2lwdjQvdGNwX2FvLmMtMTc5MS1cXHRcXHRcXHQgIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0yMDI1PWludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMjAzNC1cXHRjYXNlIFRDUF9BT19ERUxfS0VZOlxcbm5ldC9pcHY0L3RjcF9hby5jOjIwMzU6XFx0XFx0cmV0dXJuIHRjcF9hb19kZWxfY21kKHNrLCBmYW1pbHksIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvaXB2NC90Y3BfYW8uYy0yMDM2LVxcdGNhc2UgVENQX0FPX0lORk86XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjEzLjUzODUwNzUwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI4OTc0Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUQ1AgQS9PIFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZm9sbG93aW5nIHRoZSBjb2RlIGZsb3cgaGVyZS4gSSBzZWUgdGhhdCBgdGNwX2FvX2RlbF9jbWRgIGdldHMgY2FsbGVkIGZyb20gYHRjcF9wYXJzZV9hb2AuIFRoYXQncyB0aGUga2V5IGNvbm5lY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBgdGNwX3BhcnNlX2FvYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSBjb25kaXRpb25zIHRoYXQgbGVhZCB0byBgdGNwX2FvX2RlbF9jbWRgIGJlaW5nIGludm9rZWQsIGFuZCB3aGF0IHJvbGUgaXQgcGxheXMgd2l0aGluIHRoYXQgcGFyc2luZyBmdW5jdGlvbi4gS25vd2luZyB3aGVyZSBpdCdzIGNhbGxlZCAqZnJvbSogaXMgdml0YWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIFRDUCBBL08gKEFwcGxpY2F0aW9uLU9yaWVudGVkKSBwcm9jZXNzaW5nLiBMZXQncyBzZWUgd2hhdCBgdGNwX3BhcnNlX2FvYCBpcyBhbGwgYWJvdXQuIEknbSBob3BpbmcgdGhlcmUncyBhIGdvb2Qgc2V0IG9mIGNvbW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTYxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTg6MTYuNDY3NDg0ODM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzYzOTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfcGFyc2VfYW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9hby5jPTE5MzY9c3RhdGljIGludCB0Y3BfYW9faW5mb19jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMjAyNC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoyMDI1OmludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbm5ldC9pcHY0L3RjcF9hby5jLTIwMjYtXFx0XFx0IHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0yMDQ0PWludCB0Y3BfdjRfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xcbm5ldC9pcHY0L3RjcF9hby5jOjIwNDY6XFx0cmV0dXJuIHRjcF9wYXJzZV9hbyhzaywgY21kLCBBRl9JTkVULCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvdGNwX2FvLmMtMjA0Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjE2LjUzNTEzMjYwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkyMjYzODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBSZWxhdGlvbnNoaXAgYmV0d2VlbiBgdGNwX3Y0X3BhcnNlX2FvYCBhbmQgYGRvX3RjcF9zZXRzb2Nrb3B0YCoqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gaG93IGB0Y3BfdjRfcGFyc2VfYW9gIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGJyb2FkZXIgVENQL0lQIG5ldHdvcmtpbmcgc3RhY2suIEZyb20gd2hhdCBJIHNlZSwgIGB0Y3BfdjRfcGFyc2VfYW9gIGlzIHNwZWNpZmljYWxseSBjYWxsZWQgd2hlbiB0aGUgYHNldHNvY2tvcHRgIHN5c3RlbSBjYWxsLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIFRDUCBvdmVyIElQdjQgc29ja2V0cywgaXMgcHJvY2Vzc2VkIHRocm91Z2ggdGhlIGBkb190Y3Bfc2V0c29ja29wdGAgZnVuY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHRoYXQgYHRjcF92NF9wYXJzZV9hb2AgaXNuJ3Qgc29tZSBzdGFuZGFsb25lIGZ1bmN0aW9uLCBidXQgcmF0aGVyIGEgY3J1Y2lhbCBjb21wb25lbnQgd2l0aGluIHRoZSBtYWNoaW5lcnkgdGhhdCBoYW5kbGVzIHNvY2tldCBvcHRpb25zIG1vZGlmaWNhdGlvbnMuIEl0IHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgcGFyc2luZyBhbmQgcG90ZW50aWFsbHkgdmFsaWRhdGluZyBhcmd1bWVudHMgYXNzb2NpYXRlZCB3aXRoIEFwcGxpY2F0aW9uIE9wdGlvbnMgKEFPKSBvciBvdGhlciBUQ1AtcmVsYXRlZCBzZXR0aW5ncyB2aWEgYHNldHNvY2tvcHRgIGZvciBJUHY0IHNvY2tldHMuIFRoaXMgYWxzbyB0ZWxscyBtZSB0aGVyZSdzIGFuIGFyY2hpdGVjdHVyZSB0aGF0IGhhbmRsZXMgZGlmZmVyZW50IHNvY2tldCBvcHRpb25zLCBhbmQgdGhpcyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgaGFuZGxlcyBhIHN1YnNldCByZWxhdGluZyB0byBUQ1AgdjQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hhdCBzcGVjaWZpYyBzb2NrZXQgb3B0aW9ucyBpdCBtYW5hZ2VzLCBidXQgaXQncyBjbGVhciB0aGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gYmVnaW5zIGZvciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjU2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDI6MTg6MTkuNzI3NDAwNTU1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTUyNTY1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3Y0X3BhcnNlX2FvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfYW8uYz0yMDI1PWludCB0Y3BfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMjA0My1cXG5uZXQvaXB2NC90Y3BfYW8uYzoyMDQ0OmludCB0Y3BfdjRfcGFyc2VfYW8oc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC9pcHY0L3RjcF9hby5jLTIwNDUte1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGNwX3NvY2tfYWZfb3BzIHRjcF9zb2NrX2lwdjRfc3BlY2lmaWMgPSB7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzQtXFx0LmNhbGNfYW9faGFzaFxcdFxcdD0gdGNwX3Y0X2FvX2hhc2hfc2tiLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3NTpcXHQuYW9fcGFyc2VcXHRcXHQ9IHRjcF92NF9wYXJzZV9hbyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzYtXFx0LmFvX2NhbGNfa2V5X3NrXFx0XFx0PSB0Y3BfdjRfYW9fY2FsY19rZXlfc2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjIwLjE0MjY2NTE0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTExMTM1OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIE9yaWdpbiBvZiBgYW9fcGFyc2VgKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IGBhb19wYXJzZWAgaXMgaW52b2tlZCB3aXRoaW4gYHRjcF9zb2NrX2FmX29wc2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlICplbHNlKiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD9cIiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNhbGwgZ3JhcGggaXMga2V5IHRvIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGlzIHNwZWNpZmljIHNvY2tldCBvcGVyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGFvX3BhcnNlYCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSB1c2VkLCBvdXRzaWRlIG9mIHRoaXMgaW1tZWRpYXRlIGNvbnRleHQuIEtub3dpbmcgdGhlIGNhbGwgaGllcmFyY2h5IHdpbGwgaWxsdW1pbmF0ZSB0aGUgbG9naWMgYXQgcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjIzLjA1MzgwNDQ4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2NDUxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYW9fcGFyc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTQwNzgtXFx0XFx0aWYgKCgxIFxcdTAwM2NcXHUwMDNjIHNrLVxcdTAwM2Vza19zdGF0ZSkgXFx1MDAyNiAoVENQRl9MSVNURU4gfCBUQ1BGX0NMT1NFKSlcXG5uZXQvaXB2NC90Y3AuYzo0MDc5OlxcdFxcdFxcdGdvdG8gYW9fcGFyc2U7XFxubmV0L2lwdjQvdGNwLmMtNDA4MC1cXHRcXHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0Y3Bfc2soc2spLVxcdTAwM2Vhb19pbmZvLFxcbm5ldC9pcHY0L3RjcC5jLTQwODEtXFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9zb2NrX2lzX2hlbGQoc2spKSlcXG5uZXQvaXB2NC90Y3AuYzo0MDgyOlxcdFxcdFxcdGdvdG8gYW9fcGFyc2U7XFxubmV0L2lwdjQvdGNwLmMtNDA4My1cXHRcXHRpZiAodHAtXFx1MDAzZXJlcGFpcilcXG5uZXQvaXB2NC90Y3AuYzo0MDg0OlxcdFxcdFxcdGdvdG8gYW9fcGFyc2U7XFxubmV0L2lwdjQvdGNwLmMtNDA4NS1cXHRcXHRlcnIgPSAtRUlTQ09OTjtcXG5uZXQvaXB2NC90Y3AuYy00MDg2LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L3RjcC5jOjQwODc6YW9fcGFyc2U6XFxubmV0L2lwdjQvdGNwLmM6NDA4ODpcXHRcXHRlcnIgPSB0cC1cXHUwMDNlYWZfc3BlY2lmaWMtXFx1MDAzZWFvX3BhcnNlKHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvdGNwLmMtNDA4OS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jPTEzNDA9c3RhdGljIGludCB0Y3BfYW9fdmVyaWZ5X2lwdjQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMTM3OC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoxMzc5OnN0YXRpYyBpbnQgdGNwX2FvX3BhcnNlX2NyeXB0byhjb25zdCBzdHJ1Y3QgdGNwX2FvX2FkZCAqY21kLFxcbm5ldC9pcHY0L3RjcF9hby5jLTEzODAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0Y3BfYW9fa2V5ICprZXkpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYW8uYz0xNTcxPXN0YXRpYyBpbnQgdGNwX2FvX2FkZF9jbWQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBpbnQgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmMtMTY5OC1cXG5uZXQvaXB2NC90Y3BfYW8uYzoxNjk5OlxcdHJldCA9IHRjcF9hb19wYXJzZV9jcnlwdG8oXFx1MDAyNmNtZCwga2V5KTtcXG5uZXQvaXB2NC90Y3BfYW8uYy0xNzAwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGNwX3NvY2tfYWZfb3BzIHRjcF9zb2NrX2lwdjRfc3BlY2lmaWMgPSB7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzQtXFx0LmNhbGNfYW9faGFzaFxcdFxcdD0gdGNwX3Y0X2FvX2hhc2hfc2tiLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3NTpcXHQuYW9fcGFyc2VcXHRcXHQ9IHRjcF92NF9wYXJzZV9hbyxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzNzYtXFx0LmFvX2NhbGNfa2V5X3NrXFx0XFx0PSB0Y3BfdjRfYW9fY2FsY19rZXlfc2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjIzLjEyNzQ1NjM3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODcxMDI0Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEFPIEtleSBNYW5hZ2VtZW50IENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkb190Y3Bfc2V0c29ja29wdGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgVENQIEFPIChBdXRoZW50aWNhdGlvbiBPcHRpb24pIGZ1bmN0aW9uYWxpdHkuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGNhbGxzIGBhb19wYXJzZWAgd2hlbiBlbmNvdW50ZXJpbmcgYFRDUF9BT19BRERfS0VZYCwgYFRDUF9BT19ERUxfS0VZYCwgb3IgYFRDUF9BT19JTkZPYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGB0Y3BfYW9fZGVsZXRlX2tleWAsIHdoaWNoIGlzLCBvZiBjb3Vyc2UsIGNhbGxlZCB3aGVuIGBUQ1BfQU9fREVMX0tFWWAgaXMgdXNlZC4gRnVuY3Rpb25hbGx5LCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBpbiB0aGlzIGZsb3cuIFRoZSByZWxldmFudCBjb25maWcgc3ltYm9sIGlzLCBhcyBleHBlY3RlZCwgYFRDUF9BT2AuXG5cbk5vdywgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGtleSBlbGVtZW50cy4gVGhlIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYHRjcF9hb19kZWxldGVfa2V5YCwgYHRjcF9hb19kZWxfY21kYCwgYW5kIGB0Y3BfcGFyc2VfYW9gIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBvbmVzIHdoZXJlIGFueSB2dWxuZXJhYmlsaXR5LCBvciBhIGZpeCBmb3IgdGhhdCBtYXR0ZXIsIHdvdWxkIG1vc3QgbGlrZWx5IGJlIGNvbmNlbnRyYXRlZC5cblxuSXQncyBhIGdvb2QgdGltZSB0byBleHBhbmQgdGhlIHNjb3BlIGFuZCBjaGVjayBpZiBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudC4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHRoZSBlbnRpcmUgZWNvc3lzdGVtIGlzIGJlaW5nIGFuYWx5emVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjI2Ljk5ODQ4MzQ0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NTE5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVENQX0FPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT01ND1vYmoteSArPSBtY2FzdF9zbm9vcC5vXFxubmV0L2lwdjYvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX1RDUF9BTykgKz0gdGNwX2FvLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS01Ni1lbmRpZlxcbi0tXFxubmV0L2lwdjYvdGNwX2FvLmM9MTMzPWludCB0Y3BfdjZfYW9fc3luYWNrX2hhc2goY2hhciAqYW9faGFzaCwgc3RydWN0IHRjcF9hb19rZXkgKmFvX2tleSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9hby5jLTEzNi17XFxubmV0L2lwdjYvdGNwX2FvLmM6MTM3OlxcdHU4IHRrZXlfYnVmW1RDUF9BT19NQVhfVFJBRkZJQ19LRVlfTEVOXTtcXG5uZXQvaXB2Ni90Y3BfYW8uYy0xMzgtXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTgzPWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYztcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjg0OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy04NS1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY2X3NwZWNpZmljO1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzM9c3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjM0LVxcdFxcdHNrLVxcdTAwM2Vza19iYWNrbG9nX3JjdiA9IHRjcF92NF9kb19yY3Y7XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMzU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIzNi1cXHRcXHR0cC1cXHUwMDNlYWZfc3BlY2lmaWMgPSBcXHUwMDI2dGNwX3NvY2tfaXB2Nl9tYXBwZWRfc3BlY2lmaWM7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTI0Ny1cXHRcXHRcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0Y3BfdjZfZG9fcmN2O1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjQ4OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yNDktXFx0XFx0XFx0dHAtXFx1MDAzZWFmX3NwZWNpZmljID0gXFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTgyNz1jb25zdCBzdHJ1Y3QgdGNwX3JlcXVlc3Rfc29ja19vcHMgdGNwX3JlcXVlc3Rfc29ja19pcHY2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtODMzLSNlbmRpZlxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6ODM0OiNpZmRlZiBDT05GSUdfVENQX0FPXFxubmV0L2lwdjYvdGNwX2lwdjYuYy04MzUtXFx0LmFvX2xvb2t1cFxcdD1cXHR0Y3BfdjZfYW9fbG9va3VwX3JzayxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9ODQ3PXN0YXRpYyB2b2lkIHRjcF92Nl9zZW5kX3Jlc3BvbnNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHNlcSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtOTE5LSNlbmRpZlxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6OTIwOiNpZmRlZiBDT05GSUdfVENQX0FPXFxubmV0L2lwdjYvdGNwX2lwdjYuYy05MjEtXFx0aWYgKHRjcF9rZXlfaXNfYW8oa2V5KSkge1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMDAzPXN0YXRpYyB2b2lkIHRjcF92Nl9zZW5kX3Jlc2V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAwOC1cXHRjb25zdCBfX3U4ICptZDVfaGFzaF9sb2NhdGlvbiA9IE5VTEw7XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMDA5OiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMDEwLVxcdGJvb2wgYWxsb2NhdGVkX3RyYWZmaWNfa2V5ID0gZmFsc2U7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwMzctXFx0XFx0cmV0dXJuO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTAzODojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTAzOS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEwOTEtXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMDkyOiNpZmRlZiBDT05GSUdfVENQX0FPXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMDkzLVxcdGlmIChhb2gpIHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEzMS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExMzI6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMzMtb3V0Olxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMTQ5PXN0YXRpYyB2b2lkIHRjcF92Nl90aW1ld2FpdF9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMTU4LVxcdFxcdHRjbGFzcyBcXHUwMDI2PSB+SU5FVF9FQ05fTUFTSztcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExNTk6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExNjAtXFx0c3RydWN0IHRjcF9hb19pbmZvICphb19pbmZvO1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMjA0LVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTIwNTojaWZkZWYgQ09ORklHX1RDUF9BT1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTIwNi1vdXQ6XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEyMTE9c3RhdGljIHZvaWQgdGNwX3Y2X3JlcXNrX3NlbmRfYWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTIxNS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjEyMTY6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEyMTctXFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNnRjcF9hb19uZWVkZWQua2V5KSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzQ2PXN0YXRpYyB2b2lkIHRjcF92Nl9tYXBwZWRfY2hpbGRfaW5pdChzdHJ1Y3Qgc29jayAqbmV3c2ssIGNvbnN0IHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM2MS1cXHRuZXdzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0Y3BfdjRfZG9fcmN2O1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTM2MjojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM2My1cXHR0Y3Bfc2sobmV3c2spLVxcdTAwM2VhZl9zcGVjaWZpYyA9IFxcdTAwMjZ0Y3Bfc29ja19pcHY2X21hcHBlZF9zcGVjaWZpYztcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTM4MD1zdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTUwNi0jZW5kaWZcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE1MDc6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE1MDgtXFx0LyogQ29weSBvdmVyIHRjcF9hb19pbmZvIGlmIGFueSAqL1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDAzPWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAxNC1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwMTU6I2lmIGRlZmluZWQoQ09ORklHX1RDUF9NRDVTSUcpIHx8IGRlZmluZWQoQ09ORklHX1RDUF9BTylcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMTYtc3RhdGljIGNvbnN0IHN0cnVjdCB0Y3Bfc29ja19hZl9vcHMgdGNwX3NvY2tfaXB2Nl9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAyMS0jZW5kaWZcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwMjI6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMjMtXFx0LmFvX2xvb2t1cFxcdD1cXHR0Y3BfdjZfYW9fbG9va3VwLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGlwdjZfbWFwcGVkID0ge1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDQ1LVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjA0NjojaWYgZGVmaW5lZChDT05GSUdfVENQX01ENVNJRykgfHwgZGVmaW5lZChDT05GSUdfVENQX0FPKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA0Ny1zdGF0aWMgY29uc3Qgc3RydWN0IHRjcF9zb2NrX2FmX29wcyB0Y3Bfc29ja19pcHY2X21hcHBlZF9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA1Mi0jZW5kaWZcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjIwNTM6I2lmZGVmIENPTkZJR19UQ1BfQU9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNTQtXFx0LmFvX2xvb2t1cFxcdD1cXHR0Y3BfdjZfYW9fbG9va3VwLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDcyPXN0YXRpYyBpbnQgdGNwX3Y2X2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNzktXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDgwOiNpZiBkZWZpbmVkKENPTkZJR19UQ1BfTUQ1U0lHKSB8fCBkZWZpbmVkKENPTkZJR19UQ1BfQU8pXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDgxLVxcdHRjcF9zayhzayktXFx1MDAzZWFmX3NwZWNpZmljID0gXFx1MDAyNnRjcF9zb2NrX2lwdjZfc3BlY2lmaWM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDAyOjE4OjI3LjA2OTk0MTU0NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTAzNDQ2NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIEF1dGhlbnRpY2F0aW9uIE9wdGlvbiAoVENQX0FPKSBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgVENQX0FPYCBjb25maWcsIHdoaWNoIGRlYWxzIHdpdGggdGhlIFRDUCBBdXRoZW50aWNhdGlvbiBPcHRpb24uIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMgaW4gcmVsYXRpb24gdG8gdGhlIHN5bWJvbHMgaW52b2x2ZWQuIEluaXRpYWxseSwgSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgc3ltYm9scyBhcyBgdGNwX2FvX2RlbGV0ZV9rZXlgLCBgdGNwX2FvX2RlbF9jbWRgLCBhbmQgYHRjcF9wYXJzZV9hb2AuIEkgYWxyZWFkeSBrbmV3IHRoYXQgYHRjcF9hb19kZWxldGVfa2V5YCBhbmQgYHRjcF9hb19kZWxfY21kYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9hby5jYCwgd2hpbGUgYHRjcF9wYXJzZV9hb2AgaXMgZXhwb3J0ZWQuXG5cbkkgc2VlIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpbnZvbHZlcyB1cGRhdGVzIHRvIGB0Y3BfYW9fZGVsZXRlX2tleWAuIFRoZSBhZGRlZCBsaW5lcyB3aXRoaW4gdGhlIGBpZiAoZGVsX2FzeW5jKWAgYmxvY2sgYXJlIHdoYXQgZ3JhYiBteSBhdHRlbnRpb24uIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgbWlnaHQgYmUgcmVmZXJlbmNpbmcgYSBrZXkgdGhhdCdzIGFscmVhZHkgYmVlbiBmcmVlZC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IGlmIGBhb19pbmZvLVx1MDAzZWN1cnJlbnRfa2V5YCBvciBgYW9faW5mby1cdTAwM2VybmV4dF9rZXlgIG1hdGNoZXMgdGhlIGBrZXlgIGJlaW5nIGRlbGV0ZWQsIGl0J3MgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIHVzaW5nIGBXUklURV9PTkNFYCAqYmVmb3JlKiB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IGZyZWVkIHZpYSBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmaXgg4oCTIG51bGxpbmcgdGhlIHBvaW50ZXJzIGJlZm9yZSB0aGUgbWVtb3J5IGlzIHJlbGVhc2VkLiBJdCB1c2VzIGBhdG9taWNfc3ViYCB0byBkZWFsIHdpdGggdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGJvb2trZWVwaW5nLlxuXG5JIGNvbmZpcm1lZCB0aGF0IGBUQ1BfQU9gIGlzIGluZGVlZCB0aGUgc29sZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpbnZvbHZlZCBoZXJlLiBJIGRpZCBhIHF1aWNrIGNoZWNrLCBhbmQgYHRjcF9hb19kZWxldGVfa2V5YCBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgYHNldHNvY2tvcHRgIGNhbGwgd2l0aCBgVENQX0FPX0RFTF9LRVlgLCB3aGljaCBjYWxscyBgdGNwX2FvX2RlbF9jbWRgIGFuZCB0aGVuIGB0Y3BfYW9fZGVsZXRlX2tleWAuIFRoaXMgcGF0Y2ggY2xlYXJseSBhZGRyZXNzZXMgYSBidWcgd2hlcmUgZGFuZ2xpbmcgcG9pbnRlcnMgY291bGQgb2NjdXIuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBob3cgVENQIEFPIGtleXMgYXJlIGRlbGV0ZWQsIHByZXZlbnRpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcy4gSXQgZG9lcyB0aGlzIGJ5IHNhZmVseSBudWxsaWZ5aW5nIGBjdXJyZW50X2tleWAgYW5kIGBybmV4dF9rZXlgIGJlZm9yZSBmcmVlaW5nIHRoZSBhc3NvY2lhdGVkIG1lbW9yeS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBzeW5jaHJvbml6YXRpb24gYXNwZWN0cyBpbnZvbHZlZCBoZXJlLlxuXG5Db25maWdzOiBgVENQX0FPYFxuRm9jdXNTeW1ib2xzOiBgdGNwX2FvX2RlbGV0ZV9rZXlgLCBgdGNwX2FvX2RlbF9jbWRgLCBgdGNwX3BhcnNlX2FvYFxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTU1LCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwMjoxODozNS41NzMzOTI2NzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDM0NjE1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0FPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2FvX2RlbGV0ZV9rZXlcIixcbiAgICBcInRjcF9hb19kZWxfY21kXCIsXG4gICAgXCJ0Y3BfcGFyc2VfYW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0FPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2FvX2RlbGV0ZV9rZXlcIixcbiAgICBcInRjcF9hb19kZWxfY21kXCIsXG4gICAgXCJ0Y3BfcGFyc2VfYW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBUQ1AgQXV0aGVudGljYXRpb24gT3B0aW9uIChUQ1BfQU8pIHdoZXJlIGBjdXJyZW50X2tleWAgb3IgYHJuZXh0X2tleWAgY291bGQgYmUgbGVmdCBwb2ludGluZyB0byBhIGZyZWVkIGtleSB3aGVuIGBkZWxfYXN5bmNgIGlzIHRydWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMgcmVhY2hhYmxlIHZpYSBzZXRzb2Nrb3B0IHdpdGggVENQX0FPX0RFTF9LRVkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[1] Phase: Succeeded StartedAt: 2026-06-23 02:18:47 +0000 UTC FinishedAt: 2026-06-23 02:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 02:18:47 +0000 UTC FinishedAt: 2026-06-23 02:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2] Phase: Succeeded StartedAt: 2026-06-23 02:18:47 +0000 UTC FinishedAt: 2026-06-23 06:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 02:18:47 +0000 UTC FinishedAt: 2026-06-23 06:10:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:18:47 +0000 UTC FinishedAt: 2026-06-23 02:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:18:47 +0000 UTC FinishedAt: 2026-06-23 02:18:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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-workflowd6gtb/series-workflowd6gtb-convert-artifact-2157099877/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:18:57 +0000 UTC FinishedAt: 2026-06-23 02:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:18:57 +0000 UTC FinishedAt: 2026-06-23 02:41:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f6dad7ee-0873-4839-a588-390e5908b9a3,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-workflowd6gtb/series-workflowd6gtb-convert-artifact-2157099877/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": "db35c7ae-c447-49f1-8ead-8633750ebbf3", "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-workflowd6gtb/series-workflowd6gtb-build-action-2937436043/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:18:57 +0000 UTC FinishedAt: 2026-06-23 02:41:27 +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:*f6dad7ee-0873-4839-a588-390e5908b9a3,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-workflowd6gtb/series-workflowd6gtb-convert-artifact-2157099877/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": "db35c7ae-c447-49f1-8ead-8633750ebbf3", "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-workflowd6gtb/series-workflowd6gtb-build-action-2937436043/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:41:37 +0000 UTC FinishedAt: 2026-06-23 02:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:41:37 +0000 UTC FinishedAt: 2026-06-23 02:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:41:37 +0000 UTC FinishedAt: 2026-06-23 02:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:41:37 +0000 UTC FinishedAt: 2026-06-23 02:41:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-workflowd6gtb/series-workflowd6gtb-convert-artifact-159235648/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:41:47 +0000 UTC FinishedAt: 2026-06-23 02:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:41:47 +0000 UTC FinishedAt: 2026-06-23 02:43:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*db35c7ae-c447-49f1-8ead-8633750ebbf3,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-workflowd6gtb/series-workflowd6gtb-build-action-2937436043/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-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:43:37 +0000 UTC FinishedAt: 2026-06-23 02:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:43:37 +0000 UTC FinishedAt: 2026-06-23 02:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:43:37 +0000 UTC FinishedAt: 2026-06-23 03:05:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:43:37 +0000 UTC FinishedAt: 2026-06-23 03:05:29 +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:*f6dad7ee-0873-4839-a588-390e5908b9a3,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-workflowd6gtb/series-workflowd6gtb-convert-artifact-159235648/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": "58d6498e-9eb6-41c5-afde-02af2a9b6651", "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-workflowd6gtb/series-workflowd6gtb-build-action-1478044668/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 02:43:37 +0000 UTC FinishedAt: 2026-06-23 03:05:19 +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:*f6dad7ee-0873-4839-a588-390e5908b9a3,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-workflowd6gtb/series-workflowd6gtb-convert-artifact-159235648/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": "58d6498e-9eb6-41c5-afde-02af2a9b6651", "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-workflowd6gtb/series-workflowd6gtb-build-action-1478044668/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:05:29 +0000 UTC FinishedAt: 2026-06-23 03:05:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:05:29 +0000 UTC FinishedAt: 2026-06-23 03:05:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:05:29 +0000 UTC FinishedAt: 2026-06-23 03:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:05:29 +0000 UTC FinishedAt: 2026-06-23 03:07:37 +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:*58d6498e-9eb6-41c5-afde-02af2a9b6651,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-workflowd6gtb/series-workflowd6gtb-build-action-1478044668/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-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 06:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 06:10:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"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:*db35c7ae-c447-49f1-8ead-8633750ebbf3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*58d6498e-9eb6-41c5-afde-02af2a9b6651,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-workflowd6gtb/series-workflowd6gtb-build-action-2937436043/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-workflowd6gtb/series-workflowd6gtb-build-action-1478044668/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 03:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 03:07:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"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-workflowd6gtb/series-workflowd6gtb-convert-artifact-620622745/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 03:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 03:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:47 +0000 UTC FinishedAt: 2026-06-23 03:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:58 +0000 UTC FinishedAt: 2026-06-23 06:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6gtb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"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/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_ao_delete_key","tcp_ao_del_cmd","tcp_parse_ao"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4708cac0e22cfd217f48f7cec3c35e5922efcccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_AO"],"series_id":"91d529e1-83a4-457e-b9c9-4021154b9983","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-06-23 03:07:58 +0000 UTC FinishedAt: 2026-06-23 06:10:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*db35c7ae-c447-49f1-8ead-8633750ebbf3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*58d6498e-9eb6-41c5-afde-02af2a9b6651,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-workflowd6gtb/series-workflowd6gtb-build-action-2937436043/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-workflowd6gtb/series-workflowd6gtb-build-action-1478044668/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-workflowd6gtb/series-workflowd6gtb-convert-artifact-620622745/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,}