Name: series-workflowfrq8g Phase: Succeeded StartedAt: 2026-08-14 22:43:59 +0000 UTC FinishedAt: 2026-08-15 02:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[0] Phase: Succeeded StartedAt: 2026-08-14 22:43:59 +0000 UTC FinishedAt: 2026-08-14 23:05:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 22:43:59 +0000 UTC FinishedAt: 2026-08-14 23:05:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "IOSCHED_BFQ", "BLK_CGROUP_IOCOST", "BLK_CGROUP_IOLATENCY", "BLK_DEV_THROTTLING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "IOSCHED_BFQ", "BLK_CGROUP_IOCOST", "BLK_CGROUP_IOLATENCY", "BLK_DEV_THROTTLING" ], "series_id": "bdec939f-e66e-4523-9fe2-3dcc140cc791" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blkg_conf_open_bdev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVAmIzM0OywKICAgICYjMzQ7SU9TQ0hFRF9CRlEmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0NPU1QmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0xBVEVOQ1kmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9USFJPVFRMSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZ19jb25mX29wZW5fYmRldiYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgYnVnIGJ5IHJlb3JkZXJpbmcgYSBtdXRleF91bmxvY2sgYW5kIGEgZnVuY3Rpb24gY2FsbCB0aGF0IGRyb3BzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgbXV0ZXguIFNwZWNpZmljYWxseSwgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgbWlnaHQgZnJlZSBgYmRldmAgb3IgaXRzIHF1ZXVlLCBzbyBjYWxsaW5nIGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYCBhZnRlcndhcmRzIHdvdWxkIGFjY2VzcyBmcmVlZCBtZW1vcnkuIFRoaXMgdHlwZSBvZiBidWcgKHVzZS1hZnRlci1mcmVlKSBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCwgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpbiBgYmxrZ19jb25mX29wZW5fYmRldmAgYnkgcmVvcmRlcmluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCBhbmQgYG11dGV4X3VubG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDQ0YWE4OWEyN2E4Y2Y0Y2ExNWM3ZTc3ODMzZjg3OWU3YmNjNWFmMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDIzOjA0OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jZ3JvdXAuYyBiL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuaW5kZXggZDk2NzYxMjZjNWI1ZC4uODYyOGFiNmFkZmE5YiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNncm91cC5jXG5AQCAtNzk5LDggJiM0Mzs3OTksOCBAQCBpbnQgYmxrZ19jb25mX29wZW5fYmRldihzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZiZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleCk7XG4gXHRpZiAoIWRpc2tfbGl2ZShiZGV2LVx1MDAzZWJkX2Rpc2spKSB7XG4tXHRcdGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KTtcbiYjNDM7XHRcdGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVAmIzM0OywKICAgICYjMzQ7SU9TQ0hFRF9CRlEmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0NPU1QmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0xBVEVOQ1kmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9USFJPVFRMSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZ19jb25mX29wZW5fYmRldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpbiBgYmxrZ19jb25mX29wZW5fYmRldmAgYnkgcmVvcmRlcmluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCBhbmQgYG11dGV4X3VubG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDQ0YWE4OWEyN2E4Y2Y0Y2ExNWM3ZTc3ODMzZjg3OWU3YmNjNWFmMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDIzOjA0OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jCmluZGV4IGQ5Njc2MTI2YzViNWQuLjg2MjhhYjZhZGZhOWIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuYwomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstY2dyb3VwLmMKQEAgLTc5OSw4ICYjNDM7Nzk5LDggQEAgaW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eCkKIAogCW11dGV4X2xvY2soJmFtcDtiZGV2LSZndDtiZF9xdWV1ZS0mZ3Q7cnFfcW9zX211dGV4KTsKIAlpZiAoIWRpc2tfbGl2ZShiZGV2LSZndDtiZF9kaXNrKSkgewotCQlibGtkZXZfcHV0X25vX29wZW4oYmRldik7CiAJCW11dGV4X3VubG9jaygmYW1wO2JkZXYtJmd0O2JkX3F1ZXVlLSZndDtycV9xb3NfbXV0ZXgpOwomIzQzOwkJYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBgYmxrLWNncm91cC5jYCBQYXRjaDogUG90ZW50aWFsIFVzZS1BZnRlci1GcmVlL0RlYWRsb2NrIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGJsay1jZ3JvdXAuY2AuIEltbWVkaWF0ZWx5LCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgYnVnIGZpeCDigJMgYWx3YXlzIGdvb2QgdG8gY2F0Y2ggdGhlc2UgYmVmb3JlIHRoZXkgY2F1c2UgdHJvdWJsZS4gVGhlIGRpZmYgaXMgc2ltcGxlIGVub3VnaCwganVzdCBhIHJlb3JkZXJpbmcgb2YgdHdvIGxpbmVzIHdpdGhpbiBhIGNvbmRpdGlvbmFsIGJsb2NrLiBJIHNlZSB0aGV5JiMzOTt2ZSBzd2FwcGVkIHRoZSBwb3NpdGlvbnMgb2YgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgYW5kIGBtdXRleF91bmxvY2soJmFtcDtiZGV2LSZndDtiZF9xdWV1ZS0mZ3Q7cnFfcW9zX211dGV4KWAuCgpCZWZvcmUsIGl0IGxvb2tzIGxpa2UgYGJsa2Rldl9wdXRfbm9fb3BlbmAgd2FzIGNhbGxlZCAqYmVmb3JlKiB0aGUgbXV0ZXggcmVsZWFzZS4gVGhlIGNvbW1lbnQgY29ycmVjdGx5IGlkZW50aWZpZXMgdGhlIHBvdGVudGlhbCBpc3N1ZTogYGJsa2Rldl9wdXRfbm9fb3BlbmAgY291bGQgZnJlZSB0aGUgYGJkZXZgIG9yLCBjcml0aWNhbGx5LCBpdHMgcXVldWUsIHdoaWNoIGNvbnRhaW5zIHRoZSBtdXRleC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gd2FpdGluZyB0byBoYXBwZW4uIElmIGBibGtkZXZfcHV0X25vX29wZW5gIGRvZXMgaW5kZWVkIGZyZWUgdGhlIGBiZGV2YCwgdGhlbiB0cnlpbmcgdG8gdW5sb2NrIHRoZSBtdXRleCBvbiBhIGZyZWVkIG9iamVjdCBsZWFkcyBzdHJhaWdodCB0byBkaXNhc3RlciDigJMgcHJvYmFibHkgYSBrZXJuZWwgcGFuaWMgb3IgYXQgbGVhc3QgYSBjb3JydXB0ZWQgc3RhdGUuIEFuZCB0aGUgb3Bwb3NpdGUgb3JkZXIgbG9va3MgbGlrZSBhIGRlYWRsb2NrLgoKU28sIHRoZSBuZXcgb3JkZXIsIHVubG9ja2luZyAqYmVmb3JlKiB0aGUgcG90ZW50aWFsbHkgZnJlZWluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCwgc2VlbXMgbXVjaCBzYWZlci4gSXQgYXZvaWRzIHRoZSB1c2UtYWZ0ZXItZnJlZSBlbnRpcmVseSBvciB0aGUgZGVhZGxvY2suIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhpcyBidWcuIEnigJltIHRoaW5raW5nIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjayBpcyB3aGVyZSBgYmxrZ19jb25mX29wZW5fYmRldmAgaXMgY2FsbGVkLiBUaGF0IGlzLCB3aGF0IGZ1bmN0aW9uIGNhbGxzIGBibGtnX2NvbmZfb3Blbl9iZGV2YD8gTGV0IG1lIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtnX2NvbmZfb3Blbl9iZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWNncm91cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1jZ3JvdXAuYz03NDc9RVhQT1JUX1NZTUJPTF9HUEwoX19ibGtnX3ByZmlsbF91NjQpO1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy03NTQtICogSW5pdGlhbGl6ZSBAY3R4IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHBhcnNlIGJsa2cgY29uZmlnIGlucHV0IHN0cmluZyBAaW5wdXQuXG5ibG9jay9ibGstY2dyb3VwLmM6NzU1OiAqIE9uY2UgaW5pdGlhbGl6ZWQsIEBjdHggY2FuIGJlIHVzZWQgd2l0aCBibGtnX2NvbmZfb3Blbl9iZGV2KCkgYW5kXG5ibG9jay9ibGstY2dyb3VwLmMtNzU2LSAqIGJsa2dfY29uZl9wcmVwKCkuXG4tLVxuYmxvY2svYmxrLWNncm91cC5jPTc2Mj1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfaW5pdCk7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTc2NC0vKipcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NjU6ICogYmxrZ19jb25mX29wZW5fYmRldiAtIHBhcnNlIGFuZCBvcGVuIGJkZXYgZm9yIHBlci1ibGtnIGNvbmZpZyB1cGRhdGVcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NjYtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtNzczLSAqL1xuYmxvY2svYmxrLWNncm91cC5jOjc3NDppbnQgYmxrZ19jb25mX29wZW5fYmRldihzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4KVxuYmxvY2svYmxrLWNncm91cC5jLTc3NS17XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTgxMC19XG5ibG9jay9ibGstY2dyb3VwLmM6ODExOkVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9vcGVuX2JkZXYpO1xuYmxvY2svYmxrLWNncm91cC5jLTgxMi1cbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtODIzLSAqXG5ibG9jay9ibGstY2dyb3VwLmM6ODI0OiAqIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBtdXN0IGJlIGNhbGxlZCBvbiBAY3R4IGJlZm9yZWhhbmQuIE9uIHN1Y2Nlc3MsIHRoaXNcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjUtICogZnVuY3Rpb24gcmV0dXJucyB3aXRoIHF1ZXVlIGxvY2sgaGVsZCBhbmQgbXVzdCBiZSBmb2xsb3dlZCBieVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz05NDQ9RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX3VucHJlcCk7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTk0Ni0vKipcbmJsb2NrL2Jsay1jZ3JvdXAuYzo5NDc6ICogYmxrZ19jb25mX2Nsb3NlX2JkZXYgLSBjb3VudGVycGFydCBvZiBibGtnX2NvbmZfb3Blbl9iZGV2KClcbmJsb2NrL2Jsay1jZ3JvdXAuYy05NDgtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzIxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBibG9jay9ibGstY2dyb3VwLmNgKioKCkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpczogd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWN0dWFsbHkgZW5hYmxlIHRoZSBjb2RlIHdpdGhpbiBgYmxvY2svYmxrLWNncm91cC5jYD8gVGhpcyBpc24mIzM5O3QganVzdCBhIHNpbXBsZSAmIzM0O2lzIGl0IGNvbXBpbGVkJiMzNDsgcXVlcnk7IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqc3BlY2lmaWMqIEtjb25maWcgb3B0aW9ucyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgYmxvY2sgSS9PIGNncm91cCBpbXBsZW1lbnRhdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUga2VybmVsIGJ1aWxkLgoKSSYjMzk7ZCBpbW1lZGlhdGVseSB0aGluayBhYm91dCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaW4gdGhlIGtlcm5lbCB3b3Jrcy4gSXQgaGluZ2VzIG9uIHRoZSBgLmNvbmZpZ2AgZmlsZSBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lZCB3aXRoaW4gdGhlIHZhcmlvdXMgYEtjb25maWdgIGZpbGVzIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBzb3VyY2UgdHJlZS4gYGJsb2NrL2Jsay1jZ3JvdXAuY2AgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyeSBzb21ld2hlcmUuIEkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgd2lsbCBiZSBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0JMS19DR1JPVVBgIG9yIHNpbWlsYXIuIEkgZXhwZWN0IGl0IGlzIGxpa2VseSB0byBiZSBhIHN1Yi1vcHRpb24gb2YgdGhlIGJsb2NrIGxheWVyIGNvbmZpZ3VyYXRpb24sIGJ1dCBJIGNhbiYjMzk7dCBiZSBzdXJlIHVudGlsIEkgaGF2ZSBjaGVja2VkLgoKU28sIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcy4gSSYjMzk7ZCBiZWdpbiBieSBsb29raW5nIGluIHRoZSBgYmxvY2tgIGRpcmVjdG9yeSBpdHNlbGYsIGhvcGluZyB0byBmaW5kIGEgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBzcGVjaWZpYyBkaXJlY3RvcnkuIEkgY2FuIHByb2JhYmx5IGp1bXAgdG8gdGhhdCBsb2NhdGlvbiBkaXJlY3RseS4gVGhlbiwgSSB3b3VsZCBsb29rIGZvciBhbiBvcHRpb24gcmVsYXRlZCB0byBjZ3JvdXBzLCBibG9jayBJL08sIG9yIHJlc291cmNlIGNvbnRyb2wuIElmIHRoYXQgZG9lc24mIzM5O3Qgd29yaywgSSYjMzk7ZCB0cnkgdG8gZmlndXJlIG91dCB3aGljaCBtb2R1bGUgb3ducyBgYmxrLWNncm91cC5jYCBhbmQgc2VhcmNoIGJhc2VkIG9uIHRoZSBtb2R1bGUmIzM5O3MgbmFtZS4KCk15IGdvYWwgaXMgdG8gZmluZCB0aGUgS2NvbmZpZyBzeW1ib2wgdGhhdCwgd2hlbiBzZXQgdG8gJiMzNDt5JiMzNDsgb3IgJiMzNDttJiMzNDsgaW4gdGhlIGAuY29uZmlnYCBmaWxlLCBpbmNsdWRlcyB0aGlzIGNvZGUuIFRoYXQgc3ltYm9sIG1pZ2h0IGJlIGRpcmVjdGx5IGRlZmluZWQgaW4gYGJsb2NrL0tjb25maWdgLCBvciBpdCBtaWdodCBiZSBkZXBlbmRlbnQgb24gb3RoZXIgc3ltYm9scy4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBgZGVwZW5kcyBvbmAgY2xhdXNlcyBpbiB0aGUgS2NvbmZpZyBmaWxlIHRvIHNlZSB0aGUgd2hvbGUgZGVwZW5kZW5jeSBjaGFpbi4gT25jZSBJIGhhdmUgdGhlIGtleSBLY29uZmlnIHN5bWJvbCwgSSBjYW4gZWFzaWx5IHVzZSB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSB0b29scywgc3VjaCBhcyBgbWFrZSBtZW51Y29uZmlnYCBvciBgbWFrZSBrZXJuZWxyZWxlYXNlX2NvbmZpZ2AsIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24mIzM5O3MgY3VycmVudCBzdGF0ZSBhbmQgcG90ZW50aWFsbHkgZXhwbG9yZSB0aGUgb3B0aW9ucyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWNncm91cC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MTg9b2JqLSQoQ09ORklHX0JMS19ERVZfQlNHTElCKVx0JiM0Mzs9IGJzZy1saWIub1xuYmxvY2svTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0JMS19DR1JPVVApXHQmIzQzOz0gYmxrLWNncm91cC5vXG5ibG9jay9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9SV1NUQVQpXHQmIzQzOz0gYmxrLWNncm91cC1yd3N0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWE6CgoqKkRpZ2dpbmcgaW50byBCbG9jayBJTyBhbmQgY2dyb3VwcyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfQkxLX0NHUk9VUGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE5vdyB0aGF0IEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBjdXJyZW50bHkgY29uZmlndXJlZC4gTGV0JiMzOTtzIHRyYWNlIGl0IHRocm91Z2ggdGhlIGNhbGwgY2hhaW4uIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBpcyB1c2VkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgYW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGluZyB0byBibG9jayBJTyBhbmQgY2dyb3VwcyBpcyBiZWluZyBpbml0aWFsaXplZCBhbmQgYWNjZXNzZWQgd2l0aGluIHRoZSBrZXJuZWwuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gYXNzZXNzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY3VycmVudCBzZXQtdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrZ19jb25mX29wZW5fYmRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9iZnEtY2dyb3VwLmM9MTA1OT1zdGF0aWMgc3NpemVfdCBiZnFfaW9fc2V0X2RldmljZV93ZWlnaHQoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbmJsb2NrL2JmcS1jZ3JvdXAuYy0xMDcwLVxuYmxvY2svYmZxLWNncm91cC5jOjEwNzE6XHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFx1MDAyNmN0eCk7XG5ibG9jay9iZnEtY2dyb3VwLmMtMTA3Mi1cdGlmIChyZXQpXG4tLVxuYmxvY2svYmxrLWNncm91cC5jPTc0Nz1FWFBPUlRfU1lNQk9MX0dQTChfX2Jsa2dfcHJmaWxsX3U2NCk7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTc1NC0gKiBJbml0aWFsaXplIEBjdHggd2hpY2ggY2FuIGJlIHVzZWQgdG8gcGFyc2UgYmxrZyBjb25maWcgaW5wdXQgc3RyaW5nIEBpbnB1dC5cbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NTU6ICogT25jZSBpbml0aWFsaXplZCwgQGN0eCBjYW4gYmUgdXNlZCB3aXRoIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBhbmRcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NTYtICogYmxrZ19jb25mX3ByZXAoKS5cbi0tXG5ibG9jay9ibGstY2dyb3VwLmM9NzYyPUVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9pbml0KTtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtNzY0LS8qKlxuYmxvY2svYmxrLWNncm91cC5jOjc2NTogKiBibGtnX2NvbmZfb3Blbl9iZGV2IC0gcGFyc2UgYW5kIG9wZW4gYmRldiBmb3IgcGVyLWJsa2cgY29uZmlnIHVwZGF0ZVxuYmxvY2svYmxrLWNncm91cC5jLTc2Ni0gKiBAY3R4OiBibGtnX2NvbmZfY3R4IGluaXRpYWxpemVkIHdpdGggYmxrZ19jb25mX2luaXQoKVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy03NzMtICovXG5ibG9jay9ibGstY2dyb3VwLmM6Nzc0OmludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXG5ibG9jay9ibGstY2dyb3VwLmMtNzc1LXtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtODEwLX1cbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MTE6RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX29wZW5fYmRldik7XG5ibG9jay9ibGstY2dyb3VwLmMtODEyLVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjMtICpcbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MjQ6ICogYmxrZ19jb25mX29wZW5fYmRldigpIG11c3QgYmUgY2FsbGVkIG9uIEBjdHggYmVmb3JlaGFuZC4gT24gc3VjY2VzcywgdGhpc1xuYmxvY2svYmxrLWNncm91cC5jLTgyNS0gKiBmdW5jdGlvbiByZXR1cm5zIHdpdGggcXVldWUgbG9jayBoZWxkIGFuZCBtdXN0IGJlIGZvbGxvd2VkIGJ5XG4tLVxuYmxvY2svYmxrLWNncm91cC5jPTk0ND1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfdW5wcmVwKTtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtOTQ2LS8qKlxuYmxvY2svYmxrLWNncm91cC5jOjk0NzogKiBibGtnX2NvbmZfY2xvc2VfYmRldiAtIGNvdW50ZXJwYXJ0IG9mIGJsa2dfY29uZl9vcGVuX2JkZXYoKVxuYmxvY2svYmxrLWNncm91cC5jLTk0OC0gKiBAY3R4OiBibGtnX2NvbmZfY3R4IGluaXRpYWxpemVkIHdpdGggYmxrZ19jb25mX2luaXQoKVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuaD0yMjI9dm9pZCBibGtnX2NvbmZfaW5pdChzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4LCBjaGFyICppbnB1dCk7XG5ibG9jay9ibGstY2dyb3VwLmg6MjIzOmludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXG5ibG9jay9ibGstY2dyb3VwLmgtMjI0LVx0X19jb25kX2FjcXVpcmVzKDAsIFx1MDAyNmN0eC1cdTAwM2ViZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleCk7XG4tLVxuYmxvY2svYmxrLWlvY29zdC5jPTMxMzg9c3RhdGljIHNzaXplX3QgaW9jX3dlaWdodF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1Zixcbi0tXG5ibG9jay9ibGstaW9jb3N0LmMtMzE3Ni1cbmJsb2NrL2Jsay1pb2Nvc3QuYzozMTc3Olx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcdTAwMjZjdHgpO1xuYmxvY2svYmxrLWlvY29zdC5jLTMxNzgtXHRpZiAocmV0KVxuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYz0zMjY2PXN0YXRpYyBzc2l6ZV90IGlvY19xb3Nfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICppbnB1dCxcbi0tXG5ibG9jay9ibGstaW9jb3N0LmMtMzI4MC1cbmJsb2NrL2Jsay1pb2Nvc3QuYzozMjgxOlx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcdTAwMjZjdHgpO1xuYmxvY2svYmxrLWlvY29zdC5jLTMyODItXHRpZiAocmV0KVxuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYz0zNDY5PXN0YXRpYyBzc2l6ZV90IGlvY19jb3N0X21vZGVsX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTM0ODItXG5ibG9jay9ibGstaW9jb3N0LmM6MzQ4MzpcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXHUwMDI2Y3R4KTtcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNDg0LVx0aWYgKHJldClcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9ODI3PXN0YXRpYyBzc2l6ZV90IGlvbGF0ZW5jeV9zZXRfbGltaXQoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTg0MC1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzo4NDE6XHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFx1MDAyNmN0eCk7XG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODQyLVx0aWYgKHJldClcbi0tXG5ibG9jay9ibGstdGhyb3R0bGUuYz0xMzUyPXN0YXRpYyBzc2l6ZV90IHRnX3NldF9jb25mKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xMzYyLVxuYmxvY2svYmxrLXRocm90dGxlLmM6MTM2MzpcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXHUwMDI2Y3R4KTtcbmJsb2NrL2Jsay10aHJvdHRsZS5jLTEzNjQtXHRpZiAocmV0KVxuLS1cbmJsb2NrL2Jsay10aHJvdHRsZS5jPTE1NDA9c3RhdGljIHNzaXplX3QgdGdfc2V0X2xpbWl0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xNTUwLVxuYmxvY2svYmxrLXRocm90dGxlLmM6MTU1MTpcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXHUwMDI2Y3R4KTtcbmJsb2NrL2Jsay10aHJvdHRsZS5jLTE1NTItXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBmdW5jdGlvbiBoYXMgbXkgYXR0ZW50aW9uLiBJdCYjMzk7cyB1c2VkIGFjcm9zcyBhIGhhbmRmdWwgb2Yga2V5IGJsb2NrIGNncm91cCB3cml0ZSBoYW5kbGVyczogYGJmcV9pb19zZXRfZGV2aWNlX3dlaWdodGAsIGBpb2Nfd2VpZ2h0X3dyaXRlYCwgYGlvY19xb3Nfd3JpdGVgLCBgaW9jX2Nvc3RfbW9kZWxfd3JpdGVgLCBgaW9sYXRlbmN5X3NldF9saW1pdGAsIGB0Z19zZXRfY29uZmAsIGFuZCBgdGdfc2V0X2xpbWl0YC4gUmlnaHQsIHRoZXNlIGFyZSBhbGwgdXNlci1zcGFjZSBhY2Nlc3NpYmxlIHZpYSBjZ3JvdXAgZmlsZSB3cml0ZXMg4oCTICpkaW5nIGRpbmcgZGluZyosIHRoYXQgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC4KClRpbWUgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgZ2F0ZSB0aGVzZSBmaWxlcy4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyBsaWtlIGBibG9jay9iZnEtY2dyb3VwLmNgIGlzIHRoZSBsaWtlbHkgcGxhY2UgdG8gc3RhcnQuIE5vdywgaXMgdGhpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfQkZRX0NHUk9VUF9ERUJVR2Agb3IgYENPTkZJR19JT1NDSEVEX0JGUWA/IE5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgYmxvY2svTWFrZWZpbGVgIHRvIGJlIHN1cmUuIFRoaXMgZmVlbHMgbGlrZSBhIHByb21pc2luZyBsZWFkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb25zIHJldmVhbCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmZxLWNncm91cC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX01RX0lPU0NIRURfS1lCRVIpXHQmIzQzOz0ga3liZXItaW9zY2hlZC5vXG5ibG9jay9NYWtlZmlsZToyODpiZnEteVx0XHRcdFx0Oj0gYmZxLWlvc2NoZWQubyBiZnEtd2YycS5vIGJmcS1jZ3JvdXAub1xuYmxvY2svTWFrZWZpbGUtMjktb2JqLSQoQ09ORklHX0lPU0NIRURfQkZRKVx0JiM0Mzs9IGJmcS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipCRlEgYW5kIGNncm91cHM6IEEgUXVpY2sgQ29ubmVjdGlvbioqCgpBbHJpZ2h0LCBzbyBJIHNlZSBgQ09ORklHX0lPU0NIRURfQkZRYCBpcyBzZXQuIFRoYXQgYXV0b21hdGljYWxseSBtZWFucyB0aGUgYGJmcS1jZ3JvdXAub2AgbW9kdWxlIGlzIGJlaW5nIGJyb3VnaHQgaW50byB0aGUgcGljdHVyZS4gTm8gc3VycHJpc2VzIHRoZXJlOyBCRlEgKEJ1ZGdldCBGYWlyIFF1ZXVlaW5nKSBpcyAqZGVzaWduZWQqIHRvIGJlIGNncm91cC1hd2FyZS4gSXQmIzM5O3MgdGhlIHdob2xlIHBvaW50LCByZWFsbHksIHRvIHByb3ZpZGUgcGVyLWNncm91cCBJL08gaXNvbGF0aW9uIGFuZCBmYWlybmVzcy4gVGhlIGtlcm5lbCYjMzk7cyBjb25maWcgb3B0aW9ucyByZWFsbHkgYXJlIHRoZSBicmVhZGNydW1icyB0aGF0IGxheSBvdXQgdGhlIGxhbmRzY2FwZSBvZiB3aGljaCBiaXRzIHdlJiMzOTtyZSB1c2luZy4gSSB3b3VsZCBob3BlIHRoYXQgdGhlIHVzZXIgaGFzIGEgc291bmQgYmFzZSBrbm93bGVkZ2Ugb2YgY2dyb3VwcywgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWlvY29zdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuYmxvY2svTWFrZWZpbGUtMjYtb2JqLSQoQ09ORklHX01RX0lPU0NIRURfREVBRExJTkUpXHQmIzQzOz0gbXEtZGVhZGxpbmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDY4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqRW5hYmxlZCBNb2R1bGUgYmxrLWlvY29zdC5vKioKCkFscmlnaHQsIEkgc2VlIGl0LiBUaGUgcHJlc2VuY2Ugb2YgYENPTkZJR19CTEtfQ0dST1VQX0lPQ09TVGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGlyZWN0bHkgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHRoZSBgYmxrLWlvY29zdC5vYCBtb2R1bGUgaW50byB0aGUga2VybmVsIGJ1aWxkLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3kuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwcmFjdGljZSwgYSBjbGVhbiBhbmQgZWZmaWNpZW50IHdheSB0byBpbnRlZ3JhdGUgdGhpcyBwYXJ0aWN1bGFyIEkvTyBjb3N0IGFjY291bnRpbmcgZnVuY3Rpb25hbGl0eSB3aGVuIGl0JiMzOTtzIHJlcXVlc3RlZCBieSB0aGUgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgZ29vZCB0byBzZWUgaXQgaW1wbGVtZW50ZWQgdGhpcyB3YXksIG1ha2luZyB0aGUgbW9kdWxlIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBmZWF0dXJlIGZsYWcgaXMgZW5hYmxlZC4gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGFsbG93aW5nIHRoZSBJL08gY29zdCBhY2NvdW50aW5nIHRvIGJlIG1hbmFnZWQgd2l0aCBjb250cm9sIGdyb3Vwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWlvbGF0ZW5jeS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVx0JiM0Mzs9IGJsay1pb3ByaW8ub1xuYmxvY2svTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzkyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7QWgsIHRoYXQgZW5hYmxlcyB0aGUgYGJsay1pb2xhdGVuY3kub2AgbW9kdWxlLiYjMzQ7IEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBkZXBlbmRlbmN5LCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24uIFRoaXMgbWVhbnMgaWYgSSBlbmFibGUgYmxvY2sgSS9PIGxhdGVuY3kgbW9uaXRvcmluZyB2aWEgY2dyb3VwcywgSSYjMzk7bSBnb2luZyB0byBwdWxsIGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlLiBJdCBpcyBhIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kuIE5vdywgSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgc3lzdGVtLiBBbSBJIGdvaW5nIHRvIGJlIGRlYWxpbmcgd2l0aCB0aGUgdHlwaWNhbCBpbnN0cnVtZW50YXRpb24gb3ZlcmhlYWQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRyYWNlcG9pbnRzIG9yIG90aGVyIHJlbGF0ZWQga2VybmVsIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBibG9jayBJL08gc2NoZWR1bGVycyBvciBjb250cm9sbGVycyB0aGF0IGFyZSBhbHJlYWR5IGluIHVzZT8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgYW5kIHBlcmZvcm1hbmNlIHRhcmdldHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgY29kZSBvZiBgYmxrLWlvbGF0ZW5jeS5vYCB0byBmdWxseSBncmFzcCBpdHMgaW1wYWN0LCBvZiBjb3Vyc2UsIGFuZCB3aGV0aGVyIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgaW1wb3J0YW50IGZvciBteSB1c2UtY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLXRocm90dGxlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9GQ19BUFBJRCkgJiM0Mzs9IGJsay1jZ3JvdXAtZmMtYXBwaWQub1xuYmxvY2svTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JMS19ERVZfVEhST1RUTElORylcdCYjNDM7PSBibGstdGhyb3R0bGUub1xuYmxvY2svTWFrZWZpbGUtMjMtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVx0JiM0Mzs9IGJsay1pb3ByaW8ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTkxCgkJCQkJCQlvdXRwdXQ6IDE1OQoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBgYmxrZ19jb25mX29wZW5fYmRldmAqKgoKT2theSwgc28gYENPTkZJR19CTEtfREVWX1RIUk9UVExJTkdgIHB1bGxzIGluIGBibGstdGhyb3R0bGUub2AuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlIGlzIGBibGtnX2NvbmZfb3Blbl9iZGV2YCwgYW5kIGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIGBibG9jay9ibGstY2dyb3VwLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIHRyaWdnZXJlZCBieSBjZ3JvdXAgd3JpdGVzLCBtZWFuaW5nIGl0JiMzOTtzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSDigJMgcGVyZmVjdCBmb3IgZnV6emluZy4gT2YgY291cnNlLCBgQ09ORklHX0JMS19DR1JPVVBgIGlzIGEgbXVzdC1oYXZlIGZvciB0aGlzIHRvIHdvcmsuIFRoZSBgYmxrZ19jb25mX29wZW5fYmRldmAgZnVuY3Rpb24gaXMgdGhlIGtleSBzeW1ib2wgSSBuZWVkIHRvIGZvY3VzIG9uLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSBpdHMgdmlzaWJpbGl0eS4gQWhhISBJdCYjMzk7cyBleHBvcnRlZCwgYEVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9vcGVuX2JkZXYpYCwgYW5kIGRlZmluaXRpdmVseSBkZWZpbmVkIGluIGBibG9jay9ibGstY2dyb3VwLmNgLiBUaGF0IHNvbGlkaWZpZXMgaXRzIGltcG9ydGFuY2UuCgpUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIE15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZXhjbHVzaXZlbHkgYGJsa2dfY29uZl9vcGVuX2JkZXZgLgoKQW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zPyBJIG5lZWQgdG8gZW5hYmxlIGBCTEtfQ0dST1VQYCwgb2J2aW91c2x5LCBhbmQgdGhlbiBJJiMzOTttIGFsc28gZ29pbmcgdG8gZW5hYmxlIGBJT1NDSEVEX0JGUWAsIGBCTEtfQ0dST1VQX0lPQ09TVGAsIGBCTEtfQ0dST1VQX0lPTEFURU5DWWAsIGFuZCBvZiBjb3Vyc2UgYEJMS19ERVZfVEhST1RUTElOR2AuCgpNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBzaXR1YXRpb24gd2l0aGluIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBieSBhZGp1c3RpbmcgdGhlIG9yZGVyIG9mIGBibGtkZXZfcHV0X25vX29wZW5gIGFuZCBgbXV0ZXhfdW5sb2NrYC4gR2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIGl0JiMzOTtzIGFuIGV4Y2VsbGVudCB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQJiMzNDssCiAgICAmIzM0O0lPU0NIRURfQkZRJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9DT1NUJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDssCiAgICAmIzM0O0JMS19ERVZfVEhST1RUTElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa2dfY29uZl9vcGVuX2JkZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0NHUk9VUCYjMzQ7LAogICAgJiMzNDtJT1NDSEVEX0JGUSYjMzQ7LAogICAgJiMzNDtCTEtfQ0dST1VQX0lPQ09TVCYjMzQ7LAogICAgJiMzNDtCTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7LAogICAgJiMzNDtCTEtfREVWX1RIUk9UVExJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtnX2NvbmZfb3Blbl9iZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGluIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBieSByZW9yZGVyaW5nIGBibGtkZXZfcHV0X25vX29wZW5gIGFuZCBgbXV0ZXhfdW5sb2NrYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGJsb2NrIGNncm91cCB3cml0ZSBoYW5kbGVycywgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSBidWcgYnkgcmVvcmRlcmluZyBhIG11dGV4X3VubG9jayBhbmQgYSBmdW5jdGlvbiBjYWxsIHRoYXQgZHJvcHMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBtdXRleC4gU3BlY2lmaWNhbGx5LCBgYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpYCBtaWdodCBmcmVlIGBiZGV2YCBvciBpdHMgcXVldWUsIHNvIGNhbGxpbmcgYG11dGV4X3VubG9jayhcdTAwMjZiZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleClgIGFmdGVyd2FyZHMgd291bGQgYWNjZXNzIGZyZWVkIG1lbW9yeS4gVGhpcyB0eXBlIG9mIGJ1ZyAodXNlLWFmdGVyLWZyZWUpIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLCBzbyBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA0NGFhODlhMjdhOGNmNGNhMTVjN2U3NzgzM2Y4NzllN2JjYzVhZjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAyMzowNDo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jZ3JvdXAuYyBiL2Jsb2NrL2Jsay1jZ3JvdXAuYwppbmRleCBkOTY3NjEyNmM1YjVkLi44NjI4YWI2YWRmYTliIDEwMDY0NAotLS0gYS9ibG9jay9ibGstY2dyb3VwLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNncm91cC5jCkBAIC03OTksOCAmIzQzOzc5OSw4IEBAIGludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpCiAKIAltdXRleF9sb2NrKCZhbXA7YmRldi0mZ3Q7YmRfcXVldWUtJmd0O3JxX3Fvc19tdXRleCk7CiAJaWYgKCFkaXNrX2xpdmUoYmRldi0mZ3Q7YmRfZGlzaykpIHsKLQkJYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpOwogCQltdXRleF91bmxvY2soJmFtcDtiZGV2LSZndDtiZF9xdWV1ZS0mZ3Q7cnFfcW9zX211dGV4KTsKJiM0MzsJCWJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk2CgkJCQkJCQlvdXRwdXQ6IDE1OAoJCQkJCQkJdGhvdWdodHM6IDM0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEEgVXNlLUFmdGVyLUZyZWUgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIHJlb3JkZXJpbmcgb2YgdGhvc2UgdHdvIGxpbmVzIHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24hJiMzNDsgSSBzZWUgdGhlIG9yaWdpbmFsIG9yZGVyOiBgYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpYCBmb2xsb3dlZCBieSBgbXV0ZXhfdW5sb2NrKCZhbXA7YmRldi0mZ3Q7YmRfcXVldWUtJmd0O3JxX3Fvc19tdXRleClgLiBBbmQgdGhlIGZpeCBzaW1wbHkgc3dhcHMgdGhlbTogYG11dGV4X3VubG9jaygmYW1wO2JkZXYtJmd0O2JkX3F1ZXVlLSZndDtycV9xb3NfbXV0ZXgpYCBub3cgY29tZXMgKmJlZm9yZSogYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAuCgpUaGUgY3J1Y2lhbCBiaXQgaXMgdGhhdCBgYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpYCBsaWtlbHkgZHJvcHMgYSByZWZlcmVuY2UgY291bnQgb24gYGJkZXZgLiBJZiB0aGF0JiMzOTtzIHRoZSAqbGFzdCogcmVmZXJlbmNlLCBib29tLCBgYmRldmAgYW5kLCBjcml0aWNhbGx5LCBgYmRldi0mZ3Q7YmRfcXVldWVgIGNvdWxkIGJlIGZyZWVkIHJpZ2h0IHRoZW4gYW5kIHRoZXJlLiBUaGVuLCB0cnlpbmcgdG8gdW5sb2NrIHRoZSBtdXRleCBvbiBhIGZyZWVkIGBiZF9xdWV1ZWAgd2l0aCB0aGF0IHNlY29uZCBsaW5lIGlzIHRleHRib29rIHVzZS1hZnRlci1mcmVlIChVQUYpLiBXZSYjMzk7cmUgdHJ5aW5nIHRvIGFjY2VzcyBtZW1vcnkgdGhhdCYjMzk7cyBiZWVuIHJlY2xhaW1lZCwgd2hpY2ggaXMgYSBiaWcgbm8tbm8uCgpUaGUgS0FTQU4gcmVwb3J0IGlzIGEgZ29vZCBpbmRpY2F0aW9uIHRoYXQgdGhpcyBpcyB0aGUgY2FzZS4gVGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgS0FTQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2gg4oCTIHRob3NlIGlsbGVnYWwgbWVtb3J5IGFjY2Vzc2VzLiBObyBuZWVkIHRvIGJyaW5nIGluIEtNU0FOIGhlcmU7IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjbGVhciBVQUYgYnVnLCBhbmQgS0FTQU4gaXMgcGVyZmVjdGx5IHN1aXRlZCBmb3IgdGhpcyB0eXBlIG9mIGlzc3VlLiBUaGUgY29kZSBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGNvbW1lbnQsIGhpZ2hsaWdodCB0aGlzLgoKVGhlcmVmb3JlLCBJJiMzOTtsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBtYWtlIHN1cmUgdGhlIGV4cGxhbmF0aW9uIGNsZWFybHkgc3RhdGVzIHRoaXMgaXMgYSB1c2UtYWZ0ZXItZnJlZSBmaXguIE5vIHJlYXNvbiB0byBvdmVyY29tcGxpY2F0ZSB0aGUgZml4IHdpdGggYSB0b29sIHRoYXQgaXMgbm90IG5lZWRlZCBmb3IgdGhpcyB0eXBlIG9mIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgYnVnIGJ5IHJlb3JkZXJpbmcgYSBtdXRleF91bmxvY2sgYW5kIGEgZnVuY3Rpb24gY2FsbCB0aGF0IGRyb3BzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgbXV0ZXguIFNwZWNpZmljYWxseSwgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgbWlnaHQgZnJlZSBgYmRldmAgb3IgaXRzIHF1ZXVlLCBzbyBjYWxsaW5nIGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYCBhZnRlcndhcmRzIHdvdWxkIGFjY2VzcyBmcmVlZCBtZW1vcnkuIFRoaXMgdHlwZSBvZiBidWcgKHVzZS1hZnRlci1mcmVlKSBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCwgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1Ny40NzE4NDYxMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTI3NzgzMjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpbiBgYmxrZ19jb25mX29wZW5fYmRldmAgYnkgcmVvcmRlcmluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCBhbmQgYG11dGV4X3VubG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1Ny40NzE4NTcwMTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2ODE3OTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA0NGFhODlhMjdhOGNmNGNhMTVjN2U3NzgzM2Y4NzllN2JjYzVhZjBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMjM6MDQ6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jXFxuaW5kZXggZDk2NzYxMjZjNWI1ZC4uODYyOGFiNmFkZmE5YiAxMDA2NDRcXG4tLS0gYS9ibG9jay9ibGstY2dyb3VwLmNcXG4rKysgYi9ibG9jay9ibGstY2dyb3VwLmNcXG5AQCAtNzk5LDggKzc5OSw4IEBAIGludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KTtcXG4gXFx0aWYgKCFkaXNrX2xpdmUoYmRldi1cXHUwMDNlYmRfZGlzaykpIHtcXG4tXFx0XFx0YmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpO1xcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJkZXYtXFx1MDAzZWJkX3F1ZXVlLVxcdTAwM2VycV9xb3NfbXV0ZXgpO1xcbitcXHRcXHRibGtkZXZfcHV0X25vX29wZW4oYmRldik7XFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1OC4xNDA4NjMzODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNDgwOTM0MzQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDQ0YWE4OWEyN2E4Y2Y0Y2ExNWM3ZTc3ODMzZjg3OWU3YmNjNWFmMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDIzOjA0OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jXG5pbmRleCBkOTY3NjEyNmM1YjVkLi44NjI4YWI2YWRmYTliIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWNncm91cC5jXG4rKysgYi9ibG9jay9ibGstY2dyb3VwLmNcbkBAIC03OTksOCArNzk5LDggQEAgaW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eClcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpO1xuIFx0aWYgKCFkaXNrX2xpdmUoYmRldi1cdTAwM2ViZF9kaXNrKSkge1xuLVx0XHRibGtkZXZfcHV0X25vX29wZW4oYmRldik7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZiZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleCk7XG4rXHRcdGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1OC4xNDA4NzIzOTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQzMDc4NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBibGstY2dyb3VwLmNgIFBhdGNoOiBQb3RlbnRpYWwgVXNlLUFmdGVyLUZyZWUvRGVhZGxvY2sgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGJsay1jZ3JvdXAuY2AuIEltbWVkaWF0ZWx5LCBpdCdzIGNsZWFyIHRoaXMgaXMgYSBidWcgZml4IOKAkyBhbHdheXMgZ29vZCB0byBjYXRjaCB0aGVzZSBiZWZvcmUgdGhleSBjYXVzZSB0cm91YmxlLiBUaGUgZGlmZiBpcyBzaW1wbGUgZW5vdWdoLCBqdXN0IGEgcmVvcmRlcmluZyBvZiB0d28gbGluZXMgd2l0aGluIGEgY29uZGl0aW9uYWwgYmxvY2suIEkgc2VlIHRoZXkndmUgc3dhcHBlZCB0aGUgcG9zaXRpb25zIG9mIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIGFuZCBgbXV0ZXhfdW5sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KWAuXG5cbkJlZm9yZSwgaXQgbG9va3MgbGlrZSBgYmxrZGV2X3B1dF9ub19vcGVuYCB3YXMgY2FsbGVkICpiZWZvcmUqIHRoZSBtdXRleCByZWxlYXNlLiBUaGUgY29tbWVudCBjb3JyZWN0bHkgaWRlbnRpZmllcyB0aGUgcG90ZW50aWFsIGlzc3VlOiBgYmxrZGV2X3B1dF9ub19vcGVuYCBjb3VsZCBmcmVlIHRoZSBgYmRldmAgb3IsIGNyaXRpY2FsbHksIGl0cyBxdWV1ZSwgd2hpY2ggY29udGFpbnMgdGhlIG11dGV4LiBUaGF0J3MgYSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHdhaXRpbmcgdG8gaGFwcGVuLiBJZiBgYmxrZGV2X3B1dF9ub19vcGVuYCBkb2VzIGluZGVlZCBmcmVlIHRoZSBgYmRldmAsIHRoZW4gdHJ5aW5nIHRvIHVubG9jayB0aGUgbXV0ZXggb24gYSBmcmVlZCBvYmplY3QgbGVhZHMgc3RyYWlnaHQgdG8gZGlzYXN0ZXIg4oCTIHByb2JhYmx5IGEga2VybmVsIHBhbmljIG9yIGF0IGxlYXN0IGEgY29ycnVwdGVkIHN0YXRlLiBBbmQgdGhlIG9wcG9zaXRlIG9yZGVyIGxvb2tzIGxpa2UgYSBkZWFkbG9jay5cblxuU28sIHRoZSBuZXcgb3JkZXIsIHVubG9ja2luZyAqYmVmb3JlKiB0aGUgcG90ZW50aWFsbHkgZnJlZWluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCwgc2VlbXMgbXVjaCBzYWZlci4gSXQgYXZvaWRzIHRoZSB1c2UtYWZ0ZXItZnJlZSBlbnRpcmVseSBvciB0aGUgZGVhZGxvY2suIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGlzIGJ1Zy4gSeKAmW0gdGhpbmtpbmcgdGhlIGZpcnN0IHRoaW5nIHRvIGNoZWNrIGlzIHdoZXJlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBpcyBjYWxsZWQuIFRoYXQgaXMsIHdoYXQgZnVuY3Rpb24gY2FsbHMgYGJsa2dfY29uZl9vcGVuX2JkZXZgPyBMZXQgbWUgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MDMuNTgzOTU1MDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgwNDA5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZ19jb25mX29wZW5fYmRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9ibGstY2dyb3VwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmxrLWNncm91cC5jPTc0Nz1FWFBPUlRfU1lNQk9MX0dQTChfX2Jsa2dfcHJmaWxsX3U2NCk7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtNzU0LSAqIEluaXRpYWxpemUgQGN0eCB3aGljaCBjYW4gYmUgdXNlZCB0byBwYXJzZSBibGtnIGNvbmZpZyBpbnB1dCBzdHJpbmcgQGlucHV0LlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NTU6ICogT25jZSBpbml0aWFsaXplZCwgQGN0eCBjYW4gYmUgdXNlZCB3aXRoIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBhbmRcXG5ibG9jay9ibGstY2dyb3VwLmMtNzU2LSAqIGJsa2dfY29uZl9wcmVwKCkuXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmM9NzYyPUVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9pbml0KTtcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NjQtLyoqXFxuYmxvY2svYmxrLWNncm91cC5jOjc2NTogKiBibGtnX2NvbmZfb3Blbl9iZGV2IC0gcGFyc2UgYW5kIG9wZW4gYmRldiBmb3IgcGVyLWJsa2cgY29uZmlnIHVwZGF0ZVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NjYtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NzMtICovXFxuYmxvY2svYmxrLWNncm91cC5jOjc3NDppbnQgYmxrZ19jb25mX29wZW5fYmRldihzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4KVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NzUte1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTgxMC19XFxuYmxvY2svYmxrLWNncm91cC5jOjgxMTpFWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfb3Blbl9iZGV2KTtcXG5ibG9jay9ibGstY2dyb3VwLmMtODEyLVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTgyMy0gKlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MjQ6ICogYmxrZ19jb25mX29wZW5fYmRldigpIG11c3QgYmUgY2FsbGVkIG9uIEBjdHggYmVmb3JlaGFuZC4gT24gc3VjY2VzcywgdGhpc1xcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjUtICogZnVuY3Rpb24gcmV0dXJucyB3aXRoIHF1ZXVlIGxvY2sgaGVsZCBhbmQgbXVzdCBiZSBmb2xsb3dlZCBieVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTk0ND1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfdW5wcmVwKTtcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy05NDYtLyoqXFxuYmxvY2svYmxrLWNncm91cC5jOjk0NzogKiBibGtnX2NvbmZfY2xvc2VfYmRldiAtIGNvdW50ZXJwYXJ0IG9mIGJsa2dfY29uZl9vcGVuX2JkZXYoKVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy05NDgtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MDMuNjgyMDAzNDc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MzEwMTczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgYmxvY2svYmxrLWNncm91cC5jYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpczogd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWN0dWFsbHkgZW5hYmxlIHRoZSBjb2RlIHdpdGhpbiBgYmxvY2svYmxrLWNncm91cC5jYD8gVGhpcyBpc24ndCBqdXN0IGEgc2ltcGxlIFwiaXMgaXQgY29tcGlsZWRcIiBxdWVyeTsgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICpzcGVjaWZpYyogS2NvbmZpZyBvcHRpb25zIHRoYXQgY29udHJvbCB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBibG9jayBJL08gY2dyb3VwIGltcGxlbWVudGF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwgYnVpbGQuXG5cbkknZCBpbW1lZGlhdGVseSB0aGluayBhYm91dCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaW4gdGhlIGtlcm5lbCB3b3Jrcy4gSXQgaGluZ2VzIG9uIHRoZSBgLmNvbmZpZ2AgZmlsZSBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lZCB3aXRoaW4gdGhlIHZhcmlvdXMgYEtjb25maWdgIGZpbGVzIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBzb3VyY2UgdHJlZS4gYGJsb2NrL2Jsay1jZ3JvdXAuY2AgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyeSBzb21ld2hlcmUuIEkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgd2lsbCBiZSBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0JMS19DR1JPVVBgIG9yIHNpbWlsYXIuIEkgZXhwZWN0IGl0IGlzIGxpa2VseSB0byBiZSBhIHN1Yi1vcHRpb24gb2YgdGhlIGJsb2NrIGxheWVyIGNvbmZpZ3VyYXRpb24sIGJ1dCBJIGNhbid0IGJlIHN1cmUgdW50aWwgSSBoYXZlIGNoZWNrZWQuXG5cblNvLCBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMuIEknZCBiZWdpbiBieSBsb29raW5nIGluIHRoZSBgYmxvY2tgIGRpcmVjdG9yeSBpdHNlbGYsIGhvcGluZyB0byBmaW5kIGEgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBzcGVjaWZpYyBkaXJlY3RvcnkuIEkgY2FuIHByb2JhYmx5IGp1bXAgdG8gdGhhdCBsb2NhdGlvbiBkaXJlY3RseS4gVGhlbiwgSSB3b3VsZCBsb29rIGZvciBhbiBvcHRpb24gcmVsYXRlZCB0byBjZ3JvdXBzLCBibG9jayBJL08sIG9yIHJlc291cmNlIGNvbnRyb2wuIElmIHRoYXQgZG9lc24ndCB3b3JrLCBJJ2QgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hpY2ggbW9kdWxlIG93bnMgYGJsay1jZ3JvdXAuY2AgYW5kIHNlYXJjaCBiYXNlZCBvbiB0aGUgbW9kdWxlJ3MgbmFtZS5cblxuTXkgZ29hbCBpcyB0byBmaW5kIHRoZSBLY29uZmlnIHN5bWJvbCB0aGF0LCB3aGVuIHNldCB0byBcInlcIiBvciBcIm1cIiBpbiB0aGUgYC5jb25maWdgIGZpbGUsIGluY2x1ZGVzIHRoaXMgY29kZS4gVGhhdCBzeW1ib2wgbWlnaHQgYmUgZGlyZWN0bHkgZGVmaW5lZCBpbiBgYmxvY2svS2NvbmZpZ2AsIG9yIGl0IG1pZ2h0IGJlIGRlcGVuZGVudCBvbiBvdGhlciBzeW1ib2xzLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgYGRlcGVuZHMgb25gIGNsYXVzZXMgaW4gdGhlIEtjb25maWcgZmlsZSB0byBzZWUgdGhlIHdob2xlIGRlcGVuZGVuY3kgY2hhaW4uIE9uY2UgSSBoYXZlIHRoZSBrZXkgS2NvbmZpZyBzeW1ib2wsIEkgY2FuIGVhc2lseSB1c2UgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdG9vbHMsIHN1Y2ggYXMgYG1ha2UgbWVudWNvbmZpZ2Agb3IgYG1ha2Uga2VybmVscmVsZWFzZV9jb25maWdgLCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uJ3MgY3VycmVudCBzdGF0ZSBhbmQgcG90ZW50aWFsbHkgZXhwbG9yZSB0aGUgb3B0aW9ucyBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNTowNy44MzUxMDg1NTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MjQ2MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsay1jZ3JvdXAub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfQkxLX0RFVl9CU0dMSUIpXFx0Kz0gYnNnLWxpYi5vXFxuYmxvY2svTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0JMS19DR1JPVVApXFx0Kz0gYmxrLWNncm91cC5vXFxuYmxvY2svTWFrZWZpbGUtMjAtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfUldTVEFUKVxcdCs9IGJsay1jZ3JvdXAtcndzdGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MDcuOTQ5MzYwODdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM3MjUxMjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggdGhpcyBhcmVhOlxuXG4qKkRpZ2dpbmcgaW50byBCbG9jayBJTyBhbmQgY2dyb3VwcyBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19CTEtfQ0dST1VQYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3cgdGhhdCBJJ3ZlIGNvbmZpcm1lZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBjdXJyZW50bHkgY29uZmlndXJlZC4gTGV0J3MgdHJhY2UgaXQgdGhyb3VnaCB0aGUgY2FsbCBjaGFpbi4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBldmVyeSBpbnN0YW5jZSB3aGVyZSBgYmxrZ19jb25mX29wZW5fYmRldmAgaXMgdXNlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIGFuZCBob3cgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRpbmcgdG8gYmxvY2sgSU8gYW5kIGNncm91cHMgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIGFjY2Vzc2VkIHdpdGhpbiB0aGUga2VybmVsLiBJIGNhbiB0aGVuIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGFzc2VzcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGN1cnJlbnQgc2V0LXVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MTAuNjg2NjE1NzU4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTk0MTUyODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZ19jb25mX29wZW5fYmRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmZxLWNncm91cC5jPTEwNTk9c3RhdGljIHNzaXplX3QgYmZxX2lvX3NldF9kZXZpY2Vfd2VpZ2h0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbmJsb2NrL2JmcS1jZ3JvdXAuYy0xMDcwLVxcbmJsb2NrL2JmcS1jZ3JvdXAuYzoxMDcxOlxcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXFx1MDAyNmN0eCk7XFxuYmxvY2svYmZxLWNncm91cC5jLTEwNzItXFx0aWYgKHJldClcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYz03NDc9RVhQT1JUX1NZTUJPTF9HUEwoX19ibGtnX3ByZmlsbF91NjQpO1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTc1NC0gKiBJbml0aWFsaXplIEBjdHggd2hpY2ggY2FuIGJlIHVzZWQgdG8gcGFyc2UgYmxrZyBjb25maWcgaW5wdXQgc3RyaW5nIEBpbnB1dC5cXG5ibG9jay9ibGstY2dyb3VwLmM6NzU1OiAqIE9uY2UgaW5pdGlhbGl6ZWQsIEBjdHggY2FuIGJlIHVzZWQgd2l0aCBibGtnX2NvbmZfb3Blbl9iZGV2KCkgYW5kXFxuYmxvY2svYmxrLWNncm91cC5jLTc1Ni0gKiBibGtnX2NvbmZfcHJlcCgpLlxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTc2Mj1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfaW5pdCk7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtNzY0LS8qKlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NjU6ICogYmxrZ19jb25mX29wZW5fYmRldiAtIHBhcnNlIGFuZCBvcGVuIGJkZXYgZm9yIHBlci1ibGtnIGNvbmZpZyB1cGRhdGVcXG5ibG9jay9ibGstY2dyb3VwLmMtNzY2LSAqIEBjdHg6IGJsa2dfY29uZl9jdHggaW5pdGlhbGl6ZWQgd2l0aCBibGtnX2NvbmZfaW5pdCgpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtNzczLSAqL1xcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NzQ6aW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eClcXG5ibG9jay9ibGstY2dyb3VwLmMtNzc1LXtcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MTAtfVxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MTE6RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX29wZW5fYmRldik7XFxuYmxvY2svYmxrLWNncm91cC5jLTgxMi1cXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjMtICpcXG5ibG9jay9ibGstY2dyb3VwLmM6ODI0OiAqIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBtdXN0IGJlIGNhbGxlZCBvbiBAY3R4IGJlZm9yZWhhbmQuIE9uIHN1Y2Nlc3MsIHRoaXNcXG5ibG9jay9ibGstY2dyb3VwLmMtODI1LSAqIGZ1bmN0aW9uIHJldHVybnMgd2l0aCBxdWV1ZSBsb2NrIGhlbGQgYW5kIG11c3QgYmUgZm9sbG93ZWQgYnlcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYz05NDQ9RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX3VucHJlcCk7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtOTQ2LS8qKlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo5NDc6ICogYmxrZ19jb25mX2Nsb3NlX2JkZXYgLSBjb3VudGVycGFydCBvZiBibGtnX2NvbmZfb3Blbl9iZGV2KClcXG5ibG9jay9ibGstY2dyb3VwLmMtOTQ4LSAqIEBjdHg6IGJsa2dfY29uZl9jdHggaW5pdGlhbGl6ZWQgd2l0aCBibGtnX2NvbmZfaW5pdCgpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmg9MjIyPXZvaWQgYmxrZ19jb25mX2luaXQoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eCwgY2hhciAqaW5wdXQpO1xcbmJsb2NrL2Jsay1jZ3JvdXAuaDoyMjM6aW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eClcXG5ibG9jay9ibGstY2dyb3VwLmgtMjI0LVxcdF9fY29uZF9hY3F1aXJlcygwLCBcXHUwMDI2Y3R4LVxcdTAwM2ViZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KTtcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYz0zMTM4PXN0YXRpYyBzc2l6ZV90IGlvY193ZWlnaHRfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzE3Ni1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzE3NzpcXHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFxcdTAwMjZjdHgpO1xcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMTc4LVxcdGlmIChyZXQpXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmM9MzI2Nj1zdGF0aWMgc3NpemVfdCBpb2NfcW9zX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzI4MC1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzI4MTpcXHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFxcdTAwMjZjdHgpO1xcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMjgyLVxcdGlmIChyZXQpXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmM9MzQ2OT1zdGF0aWMgc3NpemVfdCBpb2NfY29zdF9tb2RlbF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmlucHV0LFxcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jLTM0ODItXFxuYmxvY2svYmxrLWlvY29zdC5jOjM0ODM6XFx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcXHUwMDI2Y3R4KTtcXG5ibG9jay9ibGstaW9jb3N0LmMtMzQ4NC1cXHRpZiAocmV0KVxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTgyNz1zdGF0aWMgc3NpemVfdCBpb2xhdGVuY3lfc2V0X2xpbWl0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTg0MC1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODQxOlxcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXFx1MDAyNmN0eCk7XFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTg0Mi1cXHRpZiAocmV0KVxcbi0tXFxuYmxvY2svYmxrLXRocm90dGxlLmM9MTM1Mj1zdGF0aWMgc3NpemVfdCB0Z19zZXRfY29uZihzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xMzYyLVxcbmJsb2NrL2Jsay10aHJvdHRsZS5jOjEzNjM6XFx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcXHUwMDI2Y3R4KTtcXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xMzY0LVxcdGlmIChyZXQpXFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYz0xNTQwPXN0YXRpYyBzc2l6ZV90IHRnX3NldF9saW1pdChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xNTUwLVxcbmJsb2NrL2Jsay10aHJvdHRsZS5jOjE1NTE6XFx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcXHUwMDI2Y3R4KTtcXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xNTUyLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDIzOjA1OjEzLjk4NjA0MDgwOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDI1NDIyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYGJsa2dfY29uZl9vcGVuX2JkZXZgIGZ1bmN0aW9uIGhhcyBteSBhdHRlbnRpb24uIEl0J3MgdXNlZCBhY3Jvc3MgYSBoYW5kZnVsIG9mIGtleSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnM6IGBiZnFfaW9fc2V0X2RldmljZV93ZWlnaHRgLCBgaW9jX3dlaWdodF93cml0ZWAsIGBpb2NfcW9zX3dyaXRlYCwgYGlvY19jb3N0X21vZGVsX3dyaXRlYCwgYGlvbGF0ZW5jeV9zZXRfbGltaXRgLCBgdGdfc2V0X2NvbmZgLCBhbmQgYHRnX3NldF9saW1pdGAuIFJpZ2h0LCB0aGVzZSBhcmUgYWxsIHVzZXItc3BhY2UgYWNjZXNzaWJsZSB2aWEgY2dyb3VwIGZpbGUgd3JpdGVzIOKAkyAqZGluZyBkaW5nIGRpbmcqLCB0aGF0IHNjcmVhbXMgZnV6emluZyB0YXJnZXQuXG5cblRpbWUgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgZ2F0ZSB0aGVzZSBmaWxlcy4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIGxpa2UgYGJsb2NrL2JmcS1jZ3JvdXAuY2AgaXMgdGhlIGxpa2VseSBwbGFjZSB0byBzdGFydC4gTm93LCBpcyB0aGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19CRlFfQ0dST1VQX0RFQlVHYCBvciBgQ09ORklHX0lPU0NIRURfQkZRYD8gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBibG9jay9NYWtlZmlsZWAgdG8gYmUgc3VyZS4gVGhpcyBmZWVscyBsaWtlIGEgcHJvbWlzaW5nIGxlYWQuIExldCdzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9ucyByZXZlYWwhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MTguMDg4NTg2MzQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODk3NzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiZnEtY2dyb3VwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX01RX0lPU0NIRURfS1lCRVIpXFx0Kz0ga3liZXItaW9zY2hlZC5vXFxuYmxvY2svTWFrZWZpbGU6Mjg6YmZxLXlcXHRcXHRcXHRcXHQ6PSBiZnEtaW9zY2hlZC5vIGJmcS13ZjJxLm8gYmZxLWNncm91cC5vXFxuYmxvY2svTWFrZWZpbGUtMjktb2JqLSQoQ09ORklHX0lPU0NIRURfQkZRKVxcdCs9IGJmcS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDIzOjA1OjE4LjE1NzU3MDQ5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc2MTQ0MDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCRlEgYW5kIGNncm91cHM6IEEgUXVpY2sgQ29ubmVjdGlvbioqXG5cbkFscmlnaHQsIHNvIEkgc2VlIGBDT05GSUdfSU9TQ0hFRF9CRlFgIGlzIHNldC4gVGhhdCBhdXRvbWF0aWNhbGx5IG1lYW5zIHRoZSBgYmZxLWNncm91cC5vYCBtb2R1bGUgaXMgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBwaWN0dXJlLiBObyBzdXJwcmlzZXMgdGhlcmU7IEJGUSAoQnVkZ2V0IEZhaXIgUXVldWVpbmcpIGlzICpkZXNpZ25lZCogdG8gYmUgY2dyb3VwLWF3YXJlLiBJdCdzIHRoZSB3aG9sZSBwb2ludCwgcmVhbGx5LCB0byBwcm92aWRlIHBlci1jZ3JvdXAgSS9PIGlzb2xhdGlvbiBhbmQgZmFpcm5lc3MuIFRoZSBrZXJuZWwncyBjb25maWcgb3B0aW9ucyByZWFsbHkgYXJlIHRoZSBicmVhZGNydW1icyB0aGF0IGxheSBvdXQgdGhlIGxhbmRzY2FwZSBvZiB3aGljaCBiaXRzIHdlJ3JlIHVzaW5nLiBJIHdvdWxkIGhvcGUgdGhhdCB0aGUgdXNlciBoYXMgYSBzb3VuZCBiYXNlIGtub3dsZWRnZSBvZiBjZ3JvdXBzLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTU3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjEuNDMzNzE5MDE3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU5NjE3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrLWlvY29zdC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL01ha2VmaWxlPTI0PW9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWSlcXHQrPSBibGstaW9sYXRlbmN5Lm9cXG5ibG9jay9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1QpXFx0Kz0gYmxrLWlvY29zdC5vXFxuYmxvY2svTWFrZWZpbGUtMjYtb2JqLSQoQ09ORklHX01RX0lPU0NIRURfREVBRExJTkUpXFx0Kz0gbXEtZGVhZGxpbmUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNToyMS41NDk2ODkyMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUwMTU1NDUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6XG5cbioqRW5hYmxlZCBNb2R1bGUgYmxrLWlvY29zdC5vKipcblxuQWxyaWdodCwgSSBzZWUgaXQuIFRoZSBwcmVzZW5jZSBvZiBgQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUYCBpbiB0aGUgY29uZmlndXJhdGlvbiBpcyBkaXJlY3RseSByZXNwb25zaWJsZSBmb3IgYnJpbmdpbmcgdGhlIGBibGstaW9jb3N0Lm9gIG1vZHVsZSBpbnRvIHRoZSBrZXJuZWwgYnVpbGQuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgY29uZGl0aW9uYWwgZGVwZW5kZW5jeS4gSXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIGEgY2xlYW4gYW5kIGVmZmljaWVudCB3YXkgdG8gaW50ZWdyYXRlIHRoaXMgcGFydGljdWxhciBJL08gY29zdCBhY2NvdW50aW5nIGZ1bmN0aW9uYWxpdHkgd2hlbiBpdCdzIHJlcXVlc3RlZCBieSB0aGUgY29uZmlndXJhdGlvbi4gSXQncyBnb29kIHRvIHNlZSBpdCBpbXBsZW1lbnRlZCB0aGlzIHdheSwgbWFraW5nIHRoZSBtb2R1bGUgYXZhaWxhYmxlIG9ubHkgaWYgdGhlIGZlYXR1cmUgZmxhZyBpcyBlbmFibGVkLiBUaGlzIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYWxsb3dpbmcgdGhlIEkvTyBjb3N0IGFjY291bnRpbmcgdG8gYmUgbWFuYWdlZCB3aXRoIGNvbnRyb2wgZ3JvdXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDY4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjQuMDUxMjQ3NDM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQwOTcyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGstaW9sYXRlbmN5Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVxcdCs9IGJsay1pb3ByaW8ub1xcbmJsb2NrL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWSlcXHQrPSBibGstaW9sYXRlbmN5Lm9cXG5ibG9jay9NYWtlZmlsZS0yNS1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1QpXFx0Kz0gYmxrLWlvY29zdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDIzOjA1OjI0LjE0OTY2NDEyNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE2NjI0MjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIHRoYXQgZW5hYmxlcyB0aGUgYGJsay1pb2xhdGVuY3kub2AgbW9kdWxlLlwiIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIGJ1dCBpdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBjb25uZWN0aW9uLiBUaGlzIG1lYW5zIGlmIEkgZW5hYmxlIGJsb2NrIEkvTyBsYXRlbmN5IG1vbml0b3JpbmcgdmlhIGNncm91cHMsIEknbSBnb2luZyB0byBwdWxsIGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlLiBJdCBpcyBhIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kuIE5vdywgSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgc3lzdGVtLiBBbSBJIGdvaW5nIHRvIGJlIGRlYWxpbmcgd2l0aCB0aGUgdHlwaWNhbCBpbnN0cnVtZW50YXRpb24gb3ZlcmhlYWQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRyYWNlcG9pbnRzIG9yIG90aGVyIHJlbGF0ZWQga2VybmVsIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBibG9jayBJL08gc2NoZWR1bGVycyBvciBjb250cm9sbGVycyB0aGF0IGFyZSBhbHJlYWR5IGluIHVzZT8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgYW5kIHBlcmZvcm1hbmNlIHRhcmdldHMuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjb2RlIG9mIGBibGstaW9sYXRlbmN5Lm9gIHRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3QsIG9mIGNvdXJzZSwgYW5kIHdoZXRoZXIgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBpbXBvcnRhbnQgZm9yIG15IHVzZS1jYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzkyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjcuMjY2Mjk0NzMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDkzNjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGstdGhyb3R0bGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9GQ19BUFBJRCkgKz0gYmxrLWNncm91cC1mYy1hcHBpZC5vXFxuYmxvY2svTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JMS19ERVZfVEhST1RUTElORylcXHQrPSBibGstdGhyb3R0bGUub1xcbmJsb2NrL01ha2VmaWxlLTIzLW9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPUFJJTylcXHQrPSBibGstaW9wcmlvLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjcuMzUxMjM4ODRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2ODM0Njc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBgYmxrZ19jb25mX29wZW5fYmRldmAqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0JMS19ERVZfVEhST1RUTElOR2AgcHVsbHMgaW4gYGJsay10aHJvdHRsZS5vYC4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYGJsa2dfY29uZl9vcGVuX2JkZXZgLCBhbmQgaXQncyBsb2NhdGVkIHdpdGhpbiBgYmxvY2svYmxrLWNncm91cC5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIHRyaWdnZXJlZCBieSBjZ3JvdXAgd3JpdGVzLCBtZWFuaW5nIGl0J3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIOKAkyBwZXJmZWN0IGZvciBmdXp6aW5nLiBPZiBjb3Vyc2UsIGBDT05GSUdfQkxLX0NHUk9VUGAgaXMgYSBtdXN0LWhhdmUgZm9yIHRoaXMgdG8gd29yay4gVGhlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBmdW5jdGlvbiBpcyB0aGUga2V5IHN5bWJvbCBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBpdHMgdmlzaWJpbGl0eS4gQWhhISBJdCdzIGV4cG9ydGVkLCBgRVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX29wZW5fYmRldilgLCBhbmQgZGVmaW5pdGl2ZWx5IGRlZmluZWQgaW4gYGJsb2NrL2Jsay1jZ3JvdXAuY2AuIFRoYXQgc29saWRpZmllcyBpdHMgaW1wb3J0YW5jZS5cblxuVGhlcmVmb3JlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIE15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZXhjbHVzaXZlbHkgYGJsa2dfY29uZl9vcGVuX2JkZXZgLlxuXG5BbmQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnM/IEkgbmVlZCB0byBlbmFibGUgYEJMS19DR1JPVVBgLCBvYnZpb3VzbHksIGFuZCB0aGVuIEknbSBhbHNvIGdvaW5nIHRvIGVuYWJsZSBgSU9TQ0hFRF9CRlFgLCBgQkxLX0NHUk9VUF9JT0NPU1RgLCBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLCBhbmQgb2YgY291cnNlIGBCTEtfREVWX1RIUk9UVExJTkdgLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBzaXR1YXRpb24gd2l0aGluIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBieSBhZGp1c3RpbmcgdGhlIG9yZGVyIG9mIGBibGtkZXZfcHV0X25vX29wZW5gIGFuZCBgbXV0ZXhfdW5sb2NrYC4gR2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIGl0J3MgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5MSwiT3V0cHV0VG9rZW5zIjoxNTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuODE5NTg5NTY3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNjEyMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuOTUwMjEzMTMzWiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk5NDU0OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuOTUwODI2NTQzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3OTg4MzczNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgYnVnIGJ5IHJlb3JkZXJpbmcgYSBtdXRleF91bmxvY2sgYW5kIGEgZnVuY3Rpb24gY2FsbCB0aGF0IGRyb3BzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgbXV0ZXguIFNwZWNpZmljYWxseSwgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgbWlnaHQgZnJlZSBgYmRldmAgb3IgaXRzIHF1ZXVlLCBzbyBjYWxsaW5nIGBtdXRleF91bmxvY2soXFx1MDAyNmJkZXYtXFx1MDAzZWJkX3F1ZXVlLVxcdTAwM2VycV9xb3NfbXV0ZXgpYCBhZnRlcndhcmRzIHdvdWxkIGFjY2VzcyBmcmVlZCBtZW1vcnkuIFRoaXMgdHlwZSBvZiBidWcgKHVzZS1hZnRlci1mcmVlKSBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCwgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA0NGFhODlhMjdhOGNmNGNhMTVjN2U3NzgzM2Y4NzllN2JjYzVhZjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAyMzowNDo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jZ3JvdXAuYyBiL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuaW5kZXggZDk2NzYxMjZjNWI1ZC4uODYyOGFiNmFkZmE5YiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuKysrIGIvYmxvY2svYmxrLWNncm91cC5jXG5AQCAtNzk5LDggKzc5OSw4IEBAIGludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KTtcbiBcdGlmICghZGlza19saXZlKGJkZXYtXHUwMDNlYmRfZGlzaykpIHtcbi1cdFx0YmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpO1xuK1x0XHRibGtkZXZfcHV0X25vX29wZW4oYmRldik7XG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuOTUwODI3MjYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTg4MDgyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBBIFVzZS1BZnRlci1GcmVlIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgcmVvcmRlcmluZyBvZiB0aG9zZSB0d28gbGluZXMgc2NyZWFtcyBcInBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiFcIiBJIHNlZSB0aGUgb3JpZ2luYWwgb3JkZXI6IGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIGZvbGxvd2VkIGJ5IGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYC4gQW5kIHRoZSBmaXggc2ltcGx5IHN3YXBzIHRoZW06IGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYCBub3cgY29tZXMgKmJlZm9yZSogYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAuXG5cblRoZSBjcnVjaWFsIGJpdCBpcyB0aGF0IGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIGxpa2VseSBkcm9wcyBhIHJlZmVyZW5jZSBjb3VudCBvbiBgYmRldmAuIElmIHRoYXQncyB0aGUgKmxhc3QqIHJlZmVyZW5jZSwgYm9vbSwgYGJkZXZgIGFuZCwgY3JpdGljYWxseSwgYGJkZXYtXHUwMDNlYmRfcXVldWVgIGNvdWxkIGJlIGZyZWVkIHJpZ2h0IHRoZW4gYW5kIHRoZXJlLiBUaGVuLCB0cnlpbmcgdG8gdW5sb2NrIHRoZSBtdXRleCBvbiBhIGZyZWVkIGBiZF9xdWV1ZWAgd2l0aCB0aGF0IHNlY29uZCBsaW5lIGlzIHRleHRib29rIHVzZS1hZnRlci1mcmVlIChVQUYpLiBXZSdyZSB0cnlpbmcgdG8gYWNjZXNzIG1lbW9yeSB0aGF0J3MgYmVlbiByZWNsYWltZWQsIHdoaWNoIGlzIGEgYmlnIG5vLW5vLlxuXG5UaGUgS0FTQU4gcmVwb3J0IGlzIGEgZ29vZCBpbmRpY2F0aW9uIHRoYXQgdGhpcyBpcyB0aGUgY2FzZS4gVGhhdCdzIGV4YWN0bHkgd2hhdCBLQVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCDigJMgdGhvc2UgaWxsZWdhbCBtZW1vcnkgYWNjZXNzZXMuIE5vIG5lZWQgdG8gYnJpbmcgaW4gS01TQU4gaGVyZTsgd2UncmUgZGVhbGluZyB3aXRoIGEgY2xlYXIgVUFGIGJ1ZywgYW5kIEtBU0FOIGlzIHBlcmZlY3RseSBzdWl0ZWQgZm9yIHRoaXMgdHlwZSBvZiBpc3N1ZS4gVGhlIGNvZGUgaXRzZWxmLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBjb21tZW50LCBoaWdobGlnaHQgdGhpcy5cblxuVGhlcmVmb3JlLCBJJ2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIG1ha2Ugc3VyZSB0aGUgZXhwbGFuYXRpb24gY2xlYXJseSBzdGF0ZXMgdGhpcyBpcyBhIHVzZS1hZnRlci1mcmVlIGZpeC4gTm8gcmVhc29uIHRvIG92ZXJjb21wbGljYXRlIHRoZSBmaXggd2l0aCBhIHRvb2wgdGhhdCBpcyBub3QgbmVlZGVkIGZvciB0aGlzIHR5cGUgb2YgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTYsIk91dHB1dFRva2VucyI6MTU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzguNzQ5NjM5NDA5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 22:43:59 +0000 UTC FinishedAt: 2026-08-14 23:05:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "IOSCHED_BFQ", "BLK_CGROUP_IOCOST", "BLK_CGROUP_IOLATENCY", "BLK_DEV_THROTTLING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "IOSCHED_BFQ", "BLK_CGROUP_IOCOST", "BLK_CGROUP_IOLATENCY", "BLK_DEV_THROTTLING" ], "series_id": "bdec939f-e66e-4523-9fe2-3dcc140cc791" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blkg_conf_open_bdev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVAmIzM0OywKICAgICYjMzQ7SU9TQ0hFRF9CRlEmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0NPU1QmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0xBVEVOQ1kmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9USFJPVFRMSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZ19jb25mX29wZW5fYmRldiYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgYnVnIGJ5IHJlb3JkZXJpbmcgYSBtdXRleF91bmxvY2sgYW5kIGEgZnVuY3Rpb24gY2FsbCB0aGF0IGRyb3BzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgbXV0ZXguIFNwZWNpZmljYWxseSwgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgbWlnaHQgZnJlZSBgYmRldmAgb3IgaXRzIHF1ZXVlLCBzbyBjYWxsaW5nIGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYCBhZnRlcndhcmRzIHdvdWxkIGFjY2VzcyBmcmVlZCBtZW1vcnkuIFRoaXMgdHlwZSBvZiBidWcgKHVzZS1hZnRlci1mcmVlKSBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCwgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpbiBgYmxrZ19jb25mX29wZW5fYmRldmAgYnkgcmVvcmRlcmluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCBhbmQgYG11dGV4X3VubG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDQ0YWE4OWEyN2E4Y2Y0Y2ExNWM3ZTc3ODMzZjg3OWU3YmNjNWFmMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDIzOjA0OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jZ3JvdXAuYyBiL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuaW5kZXggZDk2NzYxMjZjNWI1ZC4uODYyOGFiNmFkZmE5YiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNncm91cC5jXG5AQCAtNzk5LDggJiM0Mzs3OTksOCBAQCBpbnQgYmxrZ19jb25mX29wZW5fYmRldihzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZiZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleCk7XG4gXHRpZiAoIWRpc2tfbGl2ZShiZGV2LVx1MDAzZWJkX2Rpc2spKSB7XG4tXHRcdGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KTtcbiYjNDM7XHRcdGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVAmIzM0OywKICAgICYjMzQ7SU9TQ0hFRF9CRlEmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0NPU1QmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0xBVEVOQ1kmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9USFJPVFRMSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZ19jb25mX29wZW5fYmRldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpbiBgYmxrZ19jb25mX29wZW5fYmRldmAgYnkgcmVvcmRlcmluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCBhbmQgYG11dGV4X3VubG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDQ0YWE4OWEyN2E4Y2Y0Y2ExNWM3ZTc3ODMzZjg3OWU3YmNjNWFmMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDIzOjA0OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jCmluZGV4IGQ5Njc2MTI2YzViNWQuLjg2MjhhYjZhZGZhOWIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuYwomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstY2dyb3VwLmMKQEAgLTc5OSw4ICYjNDM7Nzk5LDggQEAgaW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eCkKIAogCW11dGV4X2xvY2soJmFtcDtiZGV2LSZndDtiZF9xdWV1ZS0mZ3Q7cnFfcW9zX211dGV4KTsKIAlpZiAoIWRpc2tfbGl2ZShiZGV2LSZndDtiZF9kaXNrKSkgewotCQlibGtkZXZfcHV0X25vX29wZW4oYmRldik7CiAJCW11dGV4X3VubG9jaygmYW1wO2JkZXYtJmd0O2JkX3F1ZXVlLSZndDtycV9xb3NfbXV0ZXgpOwomIzQzOwkJYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBgYmxrLWNncm91cC5jYCBQYXRjaDogUG90ZW50aWFsIFVzZS1BZnRlci1GcmVlL0RlYWRsb2NrIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGJsay1jZ3JvdXAuY2AuIEltbWVkaWF0ZWx5LCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgYnVnIGZpeCDigJMgYWx3YXlzIGdvb2QgdG8gY2F0Y2ggdGhlc2UgYmVmb3JlIHRoZXkgY2F1c2UgdHJvdWJsZS4gVGhlIGRpZmYgaXMgc2ltcGxlIGVub3VnaCwganVzdCBhIHJlb3JkZXJpbmcgb2YgdHdvIGxpbmVzIHdpdGhpbiBhIGNvbmRpdGlvbmFsIGJsb2NrLiBJIHNlZSB0aGV5JiMzOTt2ZSBzd2FwcGVkIHRoZSBwb3NpdGlvbnMgb2YgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgYW5kIGBtdXRleF91bmxvY2soJmFtcDtiZGV2LSZndDtiZF9xdWV1ZS0mZ3Q7cnFfcW9zX211dGV4KWAuCgpCZWZvcmUsIGl0IGxvb2tzIGxpa2UgYGJsa2Rldl9wdXRfbm9fb3BlbmAgd2FzIGNhbGxlZCAqYmVmb3JlKiB0aGUgbXV0ZXggcmVsZWFzZS4gVGhlIGNvbW1lbnQgY29ycmVjdGx5IGlkZW50aWZpZXMgdGhlIHBvdGVudGlhbCBpc3N1ZTogYGJsa2Rldl9wdXRfbm9fb3BlbmAgY291bGQgZnJlZSB0aGUgYGJkZXZgIG9yLCBjcml0aWNhbGx5LCBpdHMgcXVldWUsIHdoaWNoIGNvbnRhaW5zIHRoZSBtdXRleC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gd2FpdGluZyB0byBoYXBwZW4uIElmIGBibGtkZXZfcHV0X25vX29wZW5gIGRvZXMgaW5kZWVkIGZyZWUgdGhlIGBiZGV2YCwgdGhlbiB0cnlpbmcgdG8gdW5sb2NrIHRoZSBtdXRleCBvbiBhIGZyZWVkIG9iamVjdCBsZWFkcyBzdHJhaWdodCB0byBkaXNhc3RlciDigJMgcHJvYmFibHkgYSBrZXJuZWwgcGFuaWMgb3IgYXQgbGVhc3QgYSBjb3JydXB0ZWQgc3RhdGUuIEFuZCB0aGUgb3Bwb3NpdGUgb3JkZXIgbG9va3MgbGlrZSBhIGRlYWRsb2NrLgoKU28sIHRoZSBuZXcgb3JkZXIsIHVubG9ja2luZyAqYmVmb3JlKiB0aGUgcG90ZW50aWFsbHkgZnJlZWluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCwgc2VlbXMgbXVjaCBzYWZlci4gSXQgYXZvaWRzIHRoZSB1c2UtYWZ0ZXItZnJlZSBlbnRpcmVseSBvciB0aGUgZGVhZGxvY2suIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhpcyBidWcuIEnigJltIHRoaW5raW5nIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjayBpcyB3aGVyZSBgYmxrZ19jb25mX29wZW5fYmRldmAgaXMgY2FsbGVkLiBUaGF0IGlzLCB3aGF0IGZ1bmN0aW9uIGNhbGxzIGBibGtnX2NvbmZfb3Blbl9iZGV2YD8gTGV0IG1lIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtnX2NvbmZfb3Blbl9iZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWNncm91cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1jZ3JvdXAuYz03NDc9RVhQT1JUX1NZTUJPTF9HUEwoX19ibGtnX3ByZmlsbF91NjQpO1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy03NTQtICogSW5pdGlhbGl6ZSBAY3R4IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHBhcnNlIGJsa2cgY29uZmlnIGlucHV0IHN0cmluZyBAaW5wdXQuXG5ibG9jay9ibGstY2dyb3VwLmM6NzU1OiAqIE9uY2UgaW5pdGlhbGl6ZWQsIEBjdHggY2FuIGJlIHVzZWQgd2l0aCBibGtnX2NvbmZfb3Blbl9iZGV2KCkgYW5kXG5ibG9jay9ibGstY2dyb3VwLmMtNzU2LSAqIGJsa2dfY29uZl9wcmVwKCkuXG4tLVxuYmxvY2svYmxrLWNncm91cC5jPTc2Mj1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfaW5pdCk7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTc2NC0vKipcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NjU6ICogYmxrZ19jb25mX29wZW5fYmRldiAtIHBhcnNlIGFuZCBvcGVuIGJkZXYgZm9yIHBlci1ibGtnIGNvbmZpZyB1cGRhdGVcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NjYtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtNzczLSAqL1xuYmxvY2svYmxrLWNncm91cC5jOjc3NDppbnQgYmxrZ19jb25mX29wZW5fYmRldihzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4KVxuYmxvY2svYmxrLWNncm91cC5jLTc3NS17XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTgxMC19XG5ibG9jay9ibGstY2dyb3VwLmM6ODExOkVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9vcGVuX2JkZXYpO1xuYmxvY2svYmxrLWNncm91cC5jLTgxMi1cbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtODIzLSAqXG5ibG9jay9ibGstY2dyb3VwLmM6ODI0OiAqIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBtdXN0IGJlIGNhbGxlZCBvbiBAY3R4IGJlZm9yZWhhbmQuIE9uIHN1Y2Nlc3MsIHRoaXNcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjUtICogZnVuY3Rpb24gcmV0dXJucyB3aXRoIHF1ZXVlIGxvY2sgaGVsZCBhbmQgbXVzdCBiZSBmb2xsb3dlZCBieVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz05NDQ9RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX3VucHJlcCk7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTk0Ni0vKipcbmJsb2NrL2Jsay1jZ3JvdXAuYzo5NDc6ICogYmxrZ19jb25mX2Nsb3NlX2JkZXYgLSBjb3VudGVycGFydCBvZiBibGtnX2NvbmZfb3Blbl9iZGV2KClcbmJsb2NrL2Jsay1jZ3JvdXAuYy05NDgtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzIxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBibG9jay9ibGstY2dyb3VwLmNgKioKCkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpczogd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWN0dWFsbHkgZW5hYmxlIHRoZSBjb2RlIHdpdGhpbiBgYmxvY2svYmxrLWNncm91cC5jYD8gVGhpcyBpc24mIzM5O3QganVzdCBhIHNpbXBsZSAmIzM0O2lzIGl0IGNvbXBpbGVkJiMzNDsgcXVlcnk7IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqc3BlY2lmaWMqIEtjb25maWcgb3B0aW9ucyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgYmxvY2sgSS9PIGNncm91cCBpbXBsZW1lbnRhdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUga2VybmVsIGJ1aWxkLgoKSSYjMzk7ZCBpbW1lZGlhdGVseSB0aGluayBhYm91dCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaW4gdGhlIGtlcm5lbCB3b3Jrcy4gSXQgaGluZ2VzIG9uIHRoZSBgLmNvbmZpZ2AgZmlsZSBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lZCB3aXRoaW4gdGhlIHZhcmlvdXMgYEtjb25maWdgIGZpbGVzIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBzb3VyY2UgdHJlZS4gYGJsb2NrL2Jsay1jZ3JvdXAuY2AgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyeSBzb21ld2hlcmUuIEkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgd2lsbCBiZSBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0JMS19DR1JPVVBgIG9yIHNpbWlsYXIuIEkgZXhwZWN0IGl0IGlzIGxpa2VseSB0byBiZSBhIHN1Yi1vcHRpb24gb2YgdGhlIGJsb2NrIGxheWVyIGNvbmZpZ3VyYXRpb24sIGJ1dCBJIGNhbiYjMzk7dCBiZSBzdXJlIHVudGlsIEkgaGF2ZSBjaGVja2VkLgoKU28sIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcy4gSSYjMzk7ZCBiZWdpbiBieSBsb29raW5nIGluIHRoZSBgYmxvY2tgIGRpcmVjdG9yeSBpdHNlbGYsIGhvcGluZyB0byBmaW5kIGEgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBzcGVjaWZpYyBkaXJlY3RvcnkuIEkgY2FuIHByb2JhYmx5IGp1bXAgdG8gdGhhdCBsb2NhdGlvbiBkaXJlY3RseS4gVGhlbiwgSSB3b3VsZCBsb29rIGZvciBhbiBvcHRpb24gcmVsYXRlZCB0byBjZ3JvdXBzLCBibG9jayBJL08sIG9yIHJlc291cmNlIGNvbnRyb2wuIElmIHRoYXQgZG9lc24mIzM5O3Qgd29yaywgSSYjMzk7ZCB0cnkgdG8gZmlndXJlIG91dCB3aGljaCBtb2R1bGUgb3ducyBgYmxrLWNncm91cC5jYCBhbmQgc2VhcmNoIGJhc2VkIG9uIHRoZSBtb2R1bGUmIzM5O3MgbmFtZS4KCk15IGdvYWwgaXMgdG8gZmluZCB0aGUgS2NvbmZpZyBzeW1ib2wgdGhhdCwgd2hlbiBzZXQgdG8gJiMzNDt5JiMzNDsgb3IgJiMzNDttJiMzNDsgaW4gdGhlIGAuY29uZmlnYCBmaWxlLCBpbmNsdWRlcyB0aGlzIGNvZGUuIFRoYXQgc3ltYm9sIG1pZ2h0IGJlIGRpcmVjdGx5IGRlZmluZWQgaW4gYGJsb2NrL0tjb25maWdgLCBvciBpdCBtaWdodCBiZSBkZXBlbmRlbnQgb24gb3RoZXIgc3ltYm9scy4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBgZGVwZW5kcyBvbmAgY2xhdXNlcyBpbiB0aGUgS2NvbmZpZyBmaWxlIHRvIHNlZSB0aGUgd2hvbGUgZGVwZW5kZW5jeSBjaGFpbi4gT25jZSBJIGhhdmUgdGhlIGtleSBLY29uZmlnIHN5bWJvbCwgSSBjYW4gZWFzaWx5IHVzZSB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSB0b29scywgc3VjaCBhcyBgbWFrZSBtZW51Y29uZmlnYCBvciBgbWFrZSBrZXJuZWxyZWxlYXNlX2NvbmZpZ2AsIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24mIzM5O3MgY3VycmVudCBzdGF0ZSBhbmQgcG90ZW50aWFsbHkgZXhwbG9yZSB0aGUgb3B0aW9ucyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWNncm91cC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MTg9b2JqLSQoQ09ORklHX0JMS19ERVZfQlNHTElCKVx0JiM0Mzs9IGJzZy1saWIub1xuYmxvY2svTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0JMS19DR1JPVVApXHQmIzQzOz0gYmxrLWNncm91cC5vXG5ibG9jay9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9SV1NUQVQpXHQmIzQzOz0gYmxrLWNncm91cC1yd3N0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWE6CgoqKkRpZ2dpbmcgaW50byBCbG9jayBJTyBhbmQgY2dyb3VwcyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfQkxLX0NHUk9VUGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE5vdyB0aGF0IEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBjdXJyZW50bHkgY29uZmlndXJlZC4gTGV0JiMzOTtzIHRyYWNlIGl0IHRocm91Z2ggdGhlIGNhbGwgY2hhaW4uIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBpcyB1c2VkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgYW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGluZyB0byBibG9jayBJTyBhbmQgY2dyb3VwcyBpcyBiZWluZyBpbml0aWFsaXplZCBhbmQgYWNjZXNzZWQgd2l0aGluIHRoZSBrZXJuZWwuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gYXNzZXNzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY3VycmVudCBzZXQtdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrZ19jb25mX29wZW5fYmRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9iZnEtY2dyb3VwLmM9MTA1OT1zdGF0aWMgc3NpemVfdCBiZnFfaW9fc2V0X2RldmljZV93ZWlnaHQoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbmJsb2NrL2JmcS1jZ3JvdXAuYy0xMDcwLVxuYmxvY2svYmZxLWNncm91cC5jOjEwNzE6XHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFx1MDAyNmN0eCk7XG5ibG9jay9iZnEtY2dyb3VwLmMtMTA3Mi1cdGlmIChyZXQpXG4tLVxuYmxvY2svYmxrLWNncm91cC5jPTc0Nz1FWFBPUlRfU1lNQk9MX0dQTChfX2Jsa2dfcHJmaWxsX3U2NCk7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTc1NC0gKiBJbml0aWFsaXplIEBjdHggd2hpY2ggY2FuIGJlIHVzZWQgdG8gcGFyc2UgYmxrZyBjb25maWcgaW5wdXQgc3RyaW5nIEBpbnB1dC5cbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NTU6ICogT25jZSBpbml0aWFsaXplZCwgQGN0eCBjYW4gYmUgdXNlZCB3aXRoIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBhbmRcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NTYtICogYmxrZ19jb25mX3ByZXAoKS5cbi0tXG5ibG9jay9ibGstY2dyb3VwLmM9NzYyPUVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9pbml0KTtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtNzY0LS8qKlxuYmxvY2svYmxrLWNncm91cC5jOjc2NTogKiBibGtnX2NvbmZfb3Blbl9iZGV2IC0gcGFyc2UgYW5kIG9wZW4gYmRldiBmb3IgcGVyLWJsa2cgY29uZmlnIHVwZGF0ZVxuYmxvY2svYmxrLWNncm91cC5jLTc2Ni0gKiBAY3R4OiBibGtnX2NvbmZfY3R4IGluaXRpYWxpemVkIHdpdGggYmxrZ19jb25mX2luaXQoKVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy03NzMtICovXG5ibG9jay9ibGstY2dyb3VwLmM6Nzc0OmludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXG5ibG9jay9ibGstY2dyb3VwLmMtNzc1LXtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtODEwLX1cbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MTE6RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX29wZW5fYmRldik7XG5ibG9jay9ibGstY2dyb3VwLmMtODEyLVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjMtICpcbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MjQ6ICogYmxrZ19jb25mX29wZW5fYmRldigpIG11c3QgYmUgY2FsbGVkIG9uIEBjdHggYmVmb3JlaGFuZC4gT24gc3VjY2VzcywgdGhpc1xuYmxvY2svYmxrLWNncm91cC5jLTgyNS0gKiBmdW5jdGlvbiByZXR1cm5zIHdpdGggcXVldWUgbG9jayBoZWxkIGFuZCBtdXN0IGJlIGZvbGxvd2VkIGJ5XG4tLVxuYmxvY2svYmxrLWNncm91cC5jPTk0ND1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfdW5wcmVwKTtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtOTQ2LS8qKlxuYmxvY2svYmxrLWNncm91cC5jOjk0NzogKiBibGtnX2NvbmZfY2xvc2VfYmRldiAtIGNvdW50ZXJwYXJ0IG9mIGJsa2dfY29uZl9vcGVuX2JkZXYoKVxuYmxvY2svYmxrLWNncm91cC5jLTk0OC0gKiBAY3R4OiBibGtnX2NvbmZfY3R4IGluaXRpYWxpemVkIHdpdGggYmxrZ19jb25mX2luaXQoKVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuaD0yMjI9dm9pZCBibGtnX2NvbmZfaW5pdChzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4LCBjaGFyICppbnB1dCk7XG5ibG9jay9ibGstY2dyb3VwLmg6MjIzOmludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXG5ibG9jay9ibGstY2dyb3VwLmgtMjI0LVx0X19jb25kX2FjcXVpcmVzKDAsIFx1MDAyNmN0eC1cdTAwM2ViZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleCk7XG4tLVxuYmxvY2svYmxrLWlvY29zdC5jPTMxMzg9c3RhdGljIHNzaXplX3QgaW9jX3dlaWdodF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1Zixcbi0tXG5ibG9jay9ibGstaW9jb3N0LmMtMzE3Ni1cbmJsb2NrL2Jsay1pb2Nvc3QuYzozMTc3Olx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcdTAwMjZjdHgpO1xuYmxvY2svYmxrLWlvY29zdC5jLTMxNzgtXHRpZiAocmV0KVxuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYz0zMjY2PXN0YXRpYyBzc2l6ZV90IGlvY19xb3Nfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICppbnB1dCxcbi0tXG5ibG9jay9ibGstaW9jb3N0LmMtMzI4MC1cbmJsb2NrL2Jsay1pb2Nvc3QuYzozMjgxOlx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcdTAwMjZjdHgpO1xuYmxvY2svYmxrLWlvY29zdC5jLTMyODItXHRpZiAocmV0KVxuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYz0zNDY5PXN0YXRpYyBzc2l6ZV90IGlvY19jb3N0X21vZGVsX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTM0ODItXG5ibG9jay9ibGstaW9jb3N0LmM6MzQ4MzpcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXHUwMDI2Y3R4KTtcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNDg0LVx0aWYgKHJldClcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9ODI3PXN0YXRpYyBzc2l6ZV90IGlvbGF0ZW5jeV9zZXRfbGltaXQoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTg0MC1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzo4NDE6XHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFx1MDAyNmN0eCk7XG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODQyLVx0aWYgKHJldClcbi0tXG5ibG9jay9ibGstdGhyb3R0bGUuYz0xMzUyPXN0YXRpYyBzc2l6ZV90IHRnX3NldF9jb25mKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xMzYyLVxuYmxvY2svYmxrLXRocm90dGxlLmM6MTM2MzpcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXHUwMDI2Y3R4KTtcbmJsb2NrL2Jsay10aHJvdHRsZS5jLTEzNjQtXHRpZiAocmV0KVxuLS1cbmJsb2NrL2Jsay10aHJvdHRsZS5jPTE1NDA9c3RhdGljIHNzaXplX3QgdGdfc2V0X2xpbWl0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xNTUwLVxuYmxvY2svYmxrLXRocm90dGxlLmM6MTU1MTpcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXHUwMDI2Y3R4KTtcbmJsb2NrL2Jsay10aHJvdHRsZS5jLTE1NTItXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBmdW5jdGlvbiBoYXMgbXkgYXR0ZW50aW9uLiBJdCYjMzk7cyB1c2VkIGFjcm9zcyBhIGhhbmRmdWwgb2Yga2V5IGJsb2NrIGNncm91cCB3cml0ZSBoYW5kbGVyczogYGJmcV9pb19zZXRfZGV2aWNlX3dlaWdodGAsIGBpb2Nfd2VpZ2h0X3dyaXRlYCwgYGlvY19xb3Nfd3JpdGVgLCBgaW9jX2Nvc3RfbW9kZWxfd3JpdGVgLCBgaW9sYXRlbmN5X3NldF9saW1pdGAsIGB0Z19zZXRfY29uZmAsIGFuZCBgdGdfc2V0X2xpbWl0YC4gUmlnaHQsIHRoZXNlIGFyZSBhbGwgdXNlci1zcGFjZSBhY2Nlc3NpYmxlIHZpYSBjZ3JvdXAgZmlsZSB3cml0ZXMg4oCTICpkaW5nIGRpbmcgZGluZyosIHRoYXQgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC4KClRpbWUgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgZ2F0ZSB0aGVzZSBmaWxlcy4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyBsaWtlIGBibG9jay9iZnEtY2dyb3VwLmNgIGlzIHRoZSBsaWtlbHkgcGxhY2UgdG8gc3RhcnQuIE5vdywgaXMgdGhpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfQkZRX0NHUk9VUF9ERUJVR2Agb3IgYENPTkZJR19JT1NDSEVEX0JGUWA/IE5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgYmxvY2svTWFrZWZpbGVgIHRvIGJlIHN1cmUuIFRoaXMgZmVlbHMgbGlrZSBhIHByb21pc2luZyBsZWFkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb25zIHJldmVhbCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmZxLWNncm91cC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX01RX0lPU0NIRURfS1lCRVIpXHQmIzQzOz0ga3liZXItaW9zY2hlZC5vXG5ibG9jay9NYWtlZmlsZToyODpiZnEteVx0XHRcdFx0Oj0gYmZxLWlvc2NoZWQubyBiZnEtd2YycS5vIGJmcS1jZ3JvdXAub1xuYmxvY2svTWFrZWZpbGUtMjktb2JqLSQoQ09ORklHX0lPU0NIRURfQkZRKVx0JiM0Mzs9IGJmcS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipCRlEgYW5kIGNncm91cHM6IEEgUXVpY2sgQ29ubmVjdGlvbioqCgpBbHJpZ2h0LCBzbyBJIHNlZSBgQ09ORklHX0lPU0NIRURfQkZRYCBpcyBzZXQuIFRoYXQgYXV0b21hdGljYWxseSBtZWFucyB0aGUgYGJmcS1jZ3JvdXAub2AgbW9kdWxlIGlzIGJlaW5nIGJyb3VnaHQgaW50byB0aGUgcGljdHVyZS4gTm8gc3VycHJpc2VzIHRoZXJlOyBCRlEgKEJ1ZGdldCBGYWlyIFF1ZXVlaW5nKSBpcyAqZGVzaWduZWQqIHRvIGJlIGNncm91cC1hd2FyZS4gSXQmIzM5O3MgdGhlIHdob2xlIHBvaW50LCByZWFsbHksIHRvIHByb3ZpZGUgcGVyLWNncm91cCBJL08gaXNvbGF0aW9uIGFuZCBmYWlybmVzcy4gVGhlIGtlcm5lbCYjMzk7cyBjb25maWcgb3B0aW9ucyByZWFsbHkgYXJlIHRoZSBicmVhZGNydW1icyB0aGF0IGxheSBvdXQgdGhlIGxhbmRzY2FwZSBvZiB3aGljaCBiaXRzIHdlJiMzOTtyZSB1c2luZy4gSSB3b3VsZCBob3BlIHRoYXQgdGhlIHVzZXIgaGFzIGEgc291bmQgYmFzZSBrbm93bGVkZ2Ugb2YgY2dyb3VwcywgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWlvY29zdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuYmxvY2svTWFrZWZpbGUtMjYtb2JqLSQoQ09ORklHX01RX0lPU0NIRURfREVBRExJTkUpXHQmIzQzOz0gbXEtZGVhZGxpbmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDY4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqRW5hYmxlZCBNb2R1bGUgYmxrLWlvY29zdC5vKioKCkFscmlnaHQsIEkgc2VlIGl0LiBUaGUgcHJlc2VuY2Ugb2YgYENPTkZJR19CTEtfQ0dST1VQX0lPQ09TVGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGlyZWN0bHkgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHRoZSBgYmxrLWlvY29zdC5vYCBtb2R1bGUgaW50byB0aGUga2VybmVsIGJ1aWxkLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3kuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwcmFjdGljZSwgYSBjbGVhbiBhbmQgZWZmaWNpZW50IHdheSB0byBpbnRlZ3JhdGUgdGhpcyBwYXJ0aWN1bGFyIEkvTyBjb3N0IGFjY291bnRpbmcgZnVuY3Rpb25hbGl0eSB3aGVuIGl0JiMzOTtzIHJlcXVlc3RlZCBieSB0aGUgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgZ29vZCB0byBzZWUgaXQgaW1wbGVtZW50ZWQgdGhpcyB3YXksIG1ha2luZyB0aGUgbW9kdWxlIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBmZWF0dXJlIGZsYWcgaXMgZW5hYmxlZC4gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGFsbG93aW5nIHRoZSBJL08gY29zdCBhY2NvdW50aW5nIHRvIGJlIG1hbmFnZWQgd2l0aCBjb250cm9sIGdyb3Vwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWlvbGF0ZW5jeS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVx0JiM0Mzs9IGJsay1pb3ByaW8ub1xuYmxvY2svTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzkyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7QWgsIHRoYXQgZW5hYmxlcyB0aGUgYGJsay1pb2xhdGVuY3kub2AgbW9kdWxlLiYjMzQ7IEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBkZXBlbmRlbmN5LCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24uIFRoaXMgbWVhbnMgaWYgSSBlbmFibGUgYmxvY2sgSS9PIGxhdGVuY3kgbW9uaXRvcmluZyB2aWEgY2dyb3VwcywgSSYjMzk7bSBnb2luZyB0byBwdWxsIGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlLiBJdCBpcyBhIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kuIE5vdywgSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgc3lzdGVtLiBBbSBJIGdvaW5nIHRvIGJlIGRlYWxpbmcgd2l0aCB0aGUgdHlwaWNhbCBpbnN0cnVtZW50YXRpb24gb3ZlcmhlYWQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRyYWNlcG9pbnRzIG9yIG90aGVyIHJlbGF0ZWQga2VybmVsIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBibG9jayBJL08gc2NoZWR1bGVycyBvciBjb250cm9sbGVycyB0aGF0IGFyZSBhbHJlYWR5IGluIHVzZT8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgYW5kIHBlcmZvcm1hbmNlIHRhcmdldHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgY29kZSBvZiBgYmxrLWlvbGF0ZW5jeS5vYCB0byBmdWxseSBncmFzcCBpdHMgaW1wYWN0LCBvZiBjb3Vyc2UsIGFuZCB3aGV0aGVyIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgaW1wb3J0YW50IGZvciBteSB1c2UtY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLXRocm90dGxlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9GQ19BUFBJRCkgJiM0Mzs9IGJsay1jZ3JvdXAtZmMtYXBwaWQub1xuYmxvY2svTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JMS19ERVZfVEhST1RUTElORylcdCYjNDM7PSBibGstdGhyb3R0bGUub1xuYmxvY2svTWFrZWZpbGUtMjMtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVx0JiM0Mzs9IGJsay1pb3ByaW8ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTkxCgkJCQkJCQlvdXRwdXQ6IDE1OQoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBgYmxrZ19jb25mX29wZW5fYmRldmAqKgoKT2theSwgc28gYENPTkZJR19CTEtfREVWX1RIUk9UVExJTkdgIHB1bGxzIGluIGBibGstdGhyb3R0bGUub2AuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlIGlzIGBibGtnX2NvbmZfb3Blbl9iZGV2YCwgYW5kIGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIGBibG9jay9ibGstY2dyb3VwLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIHRyaWdnZXJlZCBieSBjZ3JvdXAgd3JpdGVzLCBtZWFuaW5nIGl0JiMzOTtzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSDigJMgcGVyZmVjdCBmb3IgZnV6emluZy4gT2YgY291cnNlLCBgQ09ORklHX0JMS19DR1JPVVBgIGlzIGEgbXVzdC1oYXZlIGZvciB0aGlzIHRvIHdvcmsuIFRoZSBgYmxrZ19jb25mX29wZW5fYmRldmAgZnVuY3Rpb24gaXMgdGhlIGtleSBzeW1ib2wgSSBuZWVkIHRvIGZvY3VzIG9uLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSBpdHMgdmlzaWJpbGl0eS4gQWhhISBJdCYjMzk7cyBleHBvcnRlZCwgYEVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9vcGVuX2JkZXYpYCwgYW5kIGRlZmluaXRpdmVseSBkZWZpbmVkIGluIGBibG9jay9ibGstY2dyb3VwLmNgLiBUaGF0IHNvbGlkaWZpZXMgaXRzIGltcG9ydGFuY2UuCgpUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIE15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZXhjbHVzaXZlbHkgYGJsa2dfY29uZl9vcGVuX2JkZXZgLgoKQW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zPyBJIG5lZWQgdG8gZW5hYmxlIGBCTEtfQ0dST1VQYCwgb2J2aW91c2x5LCBhbmQgdGhlbiBJJiMzOTttIGFsc28gZ29pbmcgdG8gZW5hYmxlIGBJT1NDSEVEX0JGUWAsIGBCTEtfQ0dST1VQX0lPQ09TVGAsIGBCTEtfQ0dST1VQX0lPTEFURU5DWWAsIGFuZCBvZiBjb3Vyc2UgYEJMS19ERVZfVEhST1RUTElOR2AuCgpNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBzaXR1YXRpb24gd2l0aGluIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBieSBhZGp1c3RpbmcgdGhlIG9yZGVyIG9mIGBibGtkZXZfcHV0X25vX29wZW5gIGFuZCBgbXV0ZXhfdW5sb2NrYC4gR2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIGl0JiMzOTtzIGFuIGV4Y2VsbGVudCB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQJiMzNDssCiAgICAmIzM0O0lPU0NIRURfQkZRJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9DT1NUJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDssCiAgICAmIzM0O0JMS19ERVZfVEhST1RUTElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa2dfY29uZl9vcGVuX2JkZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0NHUk9VUCYjMzQ7LAogICAgJiMzNDtJT1NDSEVEX0JGUSYjMzQ7LAogICAgJiMzNDtCTEtfQ0dST1VQX0lPQ09TVCYjMzQ7LAogICAgJiMzNDtCTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7LAogICAgJiMzNDtCTEtfREVWX1RIUk9UVExJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtnX2NvbmZfb3Blbl9iZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGluIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBieSByZW9yZGVyaW5nIGBibGtkZXZfcHV0X25vX29wZW5gIGFuZCBgbXV0ZXhfdW5sb2NrYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGJsb2NrIGNncm91cCB3cml0ZSBoYW5kbGVycywgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDIzOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMjM6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSBidWcgYnkgcmVvcmRlcmluZyBhIG11dGV4X3VubG9jayBhbmQgYSBmdW5jdGlvbiBjYWxsIHRoYXQgZHJvcHMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBtdXRleC4gU3BlY2lmaWNhbGx5LCBgYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpYCBtaWdodCBmcmVlIGBiZGV2YCBvciBpdHMgcXVldWUsIHNvIGNhbGxpbmcgYG11dGV4X3VubG9jayhcdTAwMjZiZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleClgIGFmdGVyd2FyZHMgd291bGQgYWNjZXNzIGZyZWVkIG1lbW9yeS4gVGhpcyB0eXBlIG9mIGJ1ZyAodXNlLWFmdGVyLWZyZWUpIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLCBzbyBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA0NGFhODlhMjdhOGNmNGNhMTVjN2U3NzgzM2Y4NzllN2JjYzVhZjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAyMzowNDo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jZ3JvdXAuYyBiL2Jsb2NrL2Jsay1jZ3JvdXAuYwppbmRleCBkOTY3NjEyNmM1YjVkLi44NjI4YWI2YWRmYTliIDEwMDY0NAotLS0gYS9ibG9jay9ibGstY2dyb3VwLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNncm91cC5jCkBAIC03OTksOCAmIzQzOzc5OSw4IEBAIGludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpCiAKIAltdXRleF9sb2NrKCZhbXA7YmRldi0mZ3Q7YmRfcXVldWUtJmd0O3JxX3Fvc19tdXRleCk7CiAJaWYgKCFkaXNrX2xpdmUoYmRldi0mZ3Q7YmRfZGlzaykpIHsKLQkJYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpOwogCQltdXRleF91bmxvY2soJmFtcDtiZGV2LSZndDtiZF9xdWV1ZS0mZ3Q7cnFfcW9zX211dGV4KTsKJiM0MzsJCWJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk2CgkJCQkJCQlvdXRwdXQ6IDE1OAoJCQkJCQkJdGhvdWdodHM6IDM0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEEgVXNlLUFmdGVyLUZyZWUgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIHJlb3JkZXJpbmcgb2YgdGhvc2UgdHdvIGxpbmVzIHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24hJiMzNDsgSSBzZWUgdGhlIG9yaWdpbmFsIG9yZGVyOiBgYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpYCBmb2xsb3dlZCBieSBgbXV0ZXhfdW5sb2NrKCZhbXA7YmRldi0mZ3Q7YmRfcXVldWUtJmd0O3JxX3Fvc19tdXRleClgLiBBbmQgdGhlIGZpeCBzaW1wbHkgc3dhcHMgdGhlbTogYG11dGV4X3VubG9jaygmYW1wO2JkZXYtJmd0O2JkX3F1ZXVlLSZndDtycV9xb3NfbXV0ZXgpYCBub3cgY29tZXMgKmJlZm9yZSogYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAuCgpUaGUgY3J1Y2lhbCBiaXQgaXMgdGhhdCBgYmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpYCBsaWtlbHkgZHJvcHMgYSByZWZlcmVuY2UgY291bnQgb24gYGJkZXZgLiBJZiB0aGF0JiMzOTtzIHRoZSAqbGFzdCogcmVmZXJlbmNlLCBib29tLCBgYmRldmAgYW5kLCBjcml0aWNhbGx5LCBgYmRldi0mZ3Q7YmRfcXVldWVgIGNvdWxkIGJlIGZyZWVkIHJpZ2h0IHRoZW4gYW5kIHRoZXJlLiBUaGVuLCB0cnlpbmcgdG8gdW5sb2NrIHRoZSBtdXRleCBvbiBhIGZyZWVkIGBiZF9xdWV1ZWAgd2l0aCB0aGF0IHNlY29uZCBsaW5lIGlzIHRleHRib29rIHVzZS1hZnRlci1mcmVlIChVQUYpLiBXZSYjMzk7cmUgdHJ5aW5nIHRvIGFjY2VzcyBtZW1vcnkgdGhhdCYjMzk7cyBiZWVuIHJlY2xhaW1lZCwgd2hpY2ggaXMgYSBiaWcgbm8tbm8uCgpUaGUgS0FTQU4gcmVwb3J0IGlzIGEgZ29vZCBpbmRpY2F0aW9uIHRoYXQgdGhpcyBpcyB0aGUgY2FzZS4gVGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgS0FTQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2gg4oCTIHRob3NlIGlsbGVnYWwgbWVtb3J5IGFjY2Vzc2VzLiBObyBuZWVkIHRvIGJyaW5nIGluIEtNU0FOIGhlcmU7IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjbGVhciBVQUYgYnVnLCBhbmQgS0FTQU4gaXMgcGVyZmVjdGx5IHN1aXRlZCBmb3IgdGhpcyB0eXBlIG9mIGlzc3VlLiBUaGUgY29kZSBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGNvbW1lbnQsIGhpZ2hsaWdodCB0aGlzLgoKVGhlcmVmb3JlLCBJJiMzOTtsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBtYWtlIHN1cmUgdGhlIGV4cGxhbmF0aW9uIGNsZWFybHkgc3RhdGVzIHRoaXMgaXMgYSB1c2UtYWZ0ZXItZnJlZSBmaXguIE5vIHJlYXNvbiB0byBvdmVyY29tcGxpY2F0ZSB0aGUgZml4IHdpdGggYSB0b29sIHRoYXQgaXMgbm90IG5lZWRlZCBmb3IgdGhpcyB0eXBlIG9mIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAyMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgYnVnIGJ5IHJlb3JkZXJpbmcgYSBtdXRleF91bmxvY2sgYW5kIGEgZnVuY3Rpb24gY2FsbCB0aGF0IGRyb3BzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgbXV0ZXguIFNwZWNpZmljYWxseSwgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgbWlnaHQgZnJlZSBgYmRldmAgb3IgaXRzIHF1ZXVlLCBzbyBjYWxsaW5nIGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYCBhZnRlcndhcmRzIHdvdWxkIGFjY2VzcyBmcmVlZCBtZW1vcnkuIFRoaXMgdHlwZSBvZiBidWcgKHVzZS1hZnRlci1mcmVlKSBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCwgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1Ny40NzE4NDYxMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTI3NzgzMjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpbiBgYmxrZ19jb25mX29wZW5fYmRldmAgYnkgcmVvcmRlcmluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCBhbmQgYG11dGV4X3VubG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1Ny40NzE4NTcwMTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2ODE3OTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA0NGFhODlhMjdhOGNmNGNhMTVjN2U3NzgzM2Y4NzllN2JjYzVhZjBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMjM6MDQ6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jXFxuaW5kZXggZDk2NzYxMjZjNWI1ZC4uODYyOGFiNmFkZmE5YiAxMDA2NDRcXG4tLS0gYS9ibG9jay9ibGstY2dyb3VwLmNcXG4rKysgYi9ibG9jay9ibGstY2dyb3VwLmNcXG5AQCAtNzk5LDggKzc5OSw4IEBAIGludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KTtcXG4gXFx0aWYgKCFkaXNrX2xpdmUoYmRldi1cXHUwMDNlYmRfZGlzaykpIHtcXG4tXFx0XFx0YmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpO1xcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJkZXYtXFx1MDAzZWJkX3F1ZXVlLVxcdTAwM2VycV9xb3NfbXV0ZXgpO1xcbitcXHRcXHRibGtkZXZfcHV0X25vX29wZW4oYmRldik7XFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1OC4xNDA4NjMzODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNDgwOTM0MzQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDQ0YWE4OWEyN2E4Y2Y0Y2ExNWM3ZTc3ODMzZjg3OWU3YmNjNWFmMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDIzOjA0OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jXG5pbmRleCBkOTY3NjEyNmM1YjVkLi44NjI4YWI2YWRmYTliIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWNncm91cC5jXG4rKysgYi9ibG9jay9ibGstY2dyb3VwLmNcbkBAIC03OTksOCArNzk5LDggQEAgaW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eClcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpO1xuIFx0aWYgKCFkaXNrX2xpdmUoYmRldi1cdTAwM2ViZF9kaXNrKSkge1xuLVx0XHRibGtkZXZfcHV0X25vX29wZW4oYmRldik7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZiZGV2LVx1MDAzZWJkX3F1ZXVlLVx1MDAzZXJxX3Fvc19tdXRleCk7XG4rXHRcdGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNDo1OC4xNDA4NzIzOTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQzMDc4NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBibGstY2dyb3VwLmNgIFBhdGNoOiBQb3RlbnRpYWwgVXNlLUFmdGVyLUZyZWUvRGVhZGxvY2sgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGJsay1jZ3JvdXAuY2AuIEltbWVkaWF0ZWx5LCBpdCdzIGNsZWFyIHRoaXMgaXMgYSBidWcgZml4IOKAkyBhbHdheXMgZ29vZCB0byBjYXRjaCB0aGVzZSBiZWZvcmUgdGhleSBjYXVzZSB0cm91YmxlLiBUaGUgZGlmZiBpcyBzaW1wbGUgZW5vdWdoLCBqdXN0IGEgcmVvcmRlcmluZyBvZiB0d28gbGluZXMgd2l0aGluIGEgY29uZGl0aW9uYWwgYmxvY2suIEkgc2VlIHRoZXkndmUgc3dhcHBlZCB0aGUgcG9zaXRpb25zIG9mIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIGFuZCBgbXV0ZXhfdW5sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KWAuXG5cbkJlZm9yZSwgaXQgbG9va3MgbGlrZSBgYmxrZGV2X3B1dF9ub19vcGVuYCB3YXMgY2FsbGVkICpiZWZvcmUqIHRoZSBtdXRleCByZWxlYXNlLiBUaGUgY29tbWVudCBjb3JyZWN0bHkgaWRlbnRpZmllcyB0aGUgcG90ZW50aWFsIGlzc3VlOiBgYmxrZGV2X3B1dF9ub19vcGVuYCBjb3VsZCBmcmVlIHRoZSBgYmRldmAgb3IsIGNyaXRpY2FsbHksIGl0cyBxdWV1ZSwgd2hpY2ggY29udGFpbnMgdGhlIG11dGV4LiBUaGF0J3MgYSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHdhaXRpbmcgdG8gaGFwcGVuLiBJZiBgYmxrZGV2X3B1dF9ub19vcGVuYCBkb2VzIGluZGVlZCBmcmVlIHRoZSBgYmRldmAsIHRoZW4gdHJ5aW5nIHRvIHVubG9jayB0aGUgbXV0ZXggb24gYSBmcmVlZCBvYmplY3QgbGVhZHMgc3RyYWlnaHQgdG8gZGlzYXN0ZXIg4oCTIHByb2JhYmx5IGEga2VybmVsIHBhbmljIG9yIGF0IGxlYXN0IGEgY29ycnVwdGVkIHN0YXRlLiBBbmQgdGhlIG9wcG9zaXRlIG9yZGVyIGxvb2tzIGxpa2UgYSBkZWFkbG9jay5cblxuU28sIHRoZSBuZXcgb3JkZXIsIHVubG9ja2luZyAqYmVmb3JlKiB0aGUgcG90ZW50aWFsbHkgZnJlZWluZyBgYmxrZGV2X3B1dF9ub19vcGVuYCwgc2VlbXMgbXVjaCBzYWZlci4gSXQgYXZvaWRzIHRoZSB1c2UtYWZ0ZXItZnJlZSBlbnRpcmVseSBvciB0aGUgZGVhZGxvY2suIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGlzIGJ1Zy4gSeKAmW0gdGhpbmtpbmcgdGhlIGZpcnN0IHRoaW5nIHRvIGNoZWNrIGlzIHdoZXJlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBpcyBjYWxsZWQuIFRoYXQgaXMsIHdoYXQgZnVuY3Rpb24gY2FsbHMgYGJsa2dfY29uZl9vcGVuX2JkZXZgPyBMZXQgbWUgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MDMuNTgzOTU1MDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgwNDA5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZ19jb25mX29wZW5fYmRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9ibGstY2dyb3VwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmxrLWNncm91cC5jPTc0Nz1FWFBPUlRfU1lNQk9MX0dQTChfX2Jsa2dfcHJmaWxsX3U2NCk7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtNzU0LSAqIEluaXRpYWxpemUgQGN0eCB3aGljaCBjYW4gYmUgdXNlZCB0byBwYXJzZSBibGtnIGNvbmZpZyBpbnB1dCBzdHJpbmcgQGlucHV0LlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NTU6ICogT25jZSBpbml0aWFsaXplZCwgQGN0eCBjYW4gYmUgdXNlZCB3aXRoIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBhbmRcXG5ibG9jay9ibGstY2dyb3VwLmMtNzU2LSAqIGJsa2dfY29uZl9wcmVwKCkuXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmM9NzYyPUVYUE9SVF9TWU1CT0xfR1BMKGJsa2dfY29uZl9pbml0KTtcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NjQtLyoqXFxuYmxvY2svYmxrLWNncm91cC5jOjc2NTogKiBibGtnX2NvbmZfb3Blbl9iZGV2IC0gcGFyc2UgYW5kIG9wZW4gYmRldiBmb3IgcGVyLWJsa2cgY29uZmlnIHVwZGF0ZVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NjYtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NzMtICovXFxuYmxvY2svYmxrLWNncm91cC5jOjc3NDppbnQgYmxrZ19jb25mX29wZW5fYmRldihzdHJ1Y3QgYmxrZ19jb25mX2N0eCAqY3R4KVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy03NzUte1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTgxMC19XFxuYmxvY2svYmxrLWNncm91cC5jOjgxMTpFWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfb3Blbl9iZGV2KTtcXG5ibG9jay9ibGstY2dyb3VwLmMtODEyLVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTgyMy0gKlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MjQ6ICogYmxrZ19jb25mX29wZW5fYmRldigpIG11c3QgYmUgY2FsbGVkIG9uIEBjdHggYmVmb3JlaGFuZC4gT24gc3VjY2VzcywgdGhpc1xcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjUtICogZnVuY3Rpb24gcmV0dXJucyB3aXRoIHF1ZXVlIGxvY2sgaGVsZCBhbmQgbXVzdCBiZSBmb2xsb3dlZCBieVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTk0ND1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfdW5wcmVwKTtcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy05NDYtLyoqXFxuYmxvY2svYmxrLWNncm91cC5jOjk0NzogKiBibGtnX2NvbmZfY2xvc2VfYmRldiAtIGNvdW50ZXJwYXJ0IG9mIGJsa2dfY29uZl9vcGVuX2JkZXYoKVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy05NDgtICogQGN0eDogYmxrZ19jb25mX2N0eCBpbml0aWFsaXplZCB3aXRoIGJsa2dfY29uZl9pbml0KClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MDMuNjgyMDAzNDc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MzEwMTczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgYmxvY2svYmxrLWNncm91cC5jYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpczogd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWN0dWFsbHkgZW5hYmxlIHRoZSBjb2RlIHdpdGhpbiBgYmxvY2svYmxrLWNncm91cC5jYD8gVGhpcyBpc24ndCBqdXN0IGEgc2ltcGxlIFwiaXMgaXQgY29tcGlsZWRcIiBxdWVyeTsgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICpzcGVjaWZpYyogS2NvbmZpZyBvcHRpb25zIHRoYXQgY29udHJvbCB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBibG9jayBJL08gY2dyb3VwIGltcGxlbWVudGF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwgYnVpbGQuXG5cbkknZCBpbW1lZGlhdGVseSB0aGluayBhYm91dCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaW4gdGhlIGtlcm5lbCB3b3Jrcy4gSXQgaGluZ2VzIG9uIHRoZSBgLmNvbmZpZ2AgZmlsZSBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lZCB3aXRoaW4gdGhlIHZhcmlvdXMgYEtjb25maWdgIGZpbGVzIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBzb3VyY2UgdHJlZS4gYGJsb2NrL2Jsay1jZ3JvdXAuY2AgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyeSBzb21ld2hlcmUuIEkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQgd2lsbCBiZSBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0JMS19DR1JPVVBgIG9yIHNpbWlsYXIuIEkgZXhwZWN0IGl0IGlzIGxpa2VseSB0byBiZSBhIHN1Yi1vcHRpb24gb2YgdGhlIGJsb2NrIGxheWVyIGNvbmZpZ3VyYXRpb24sIGJ1dCBJIGNhbid0IGJlIHN1cmUgdW50aWwgSSBoYXZlIGNoZWNrZWQuXG5cblNvLCBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMuIEknZCBiZWdpbiBieSBsb29raW5nIGluIHRoZSBgYmxvY2tgIGRpcmVjdG9yeSBpdHNlbGYsIGhvcGluZyB0byBmaW5kIGEgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBzcGVjaWZpYyBkaXJlY3RvcnkuIEkgY2FuIHByb2JhYmx5IGp1bXAgdG8gdGhhdCBsb2NhdGlvbiBkaXJlY3RseS4gVGhlbiwgSSB3b3VsZCBsb29rIGZvciBhbiBvcHRpb24gcmVsYXRlZCB0byBjZ3JvdXBzLCBibG9jayBJL08sIG9yIHJlc291cmNlIGNvbnRyb2wuIElmIHRoYXQgZG9lc24ndCB3b3JrLCBJJ2QgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hpY2ggbW9kdWxlIG93bnMgYGJsay1jZ3JvdXAuY2AgYW5kIHNlYXJjaCBiYXNlZCBvbiB0aGUgbW9kdWxlJ3MgbmFtZS5cblxuTXkgZ29hbCBpcyB0byBmaW5kIHRoZSBLY29uZmlnIHN5bWJvbCB0aGF0LCB3aGVuIHNldCB0byBcInlcIiBvciBcIm1cIiBpbiB0aGUgYC5jb25maWdgIGZpbGUsIGluY2x1ZGVzIHRoaXMgY29kZS4gVGhhdCBzeW1ib2wgbWlnaHQgYmUgZGlyZWN0bHkgZGVmaW5lZCBpbiBgYmxvY2svS2NvbmZpZ2AsIG9yIGl0IG1pZ2h0IGJlIGRlcGVuZGVudCBvbiBvdGhlciBzeW1ib2xzLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgYGRlcGVuZHMgb25gIGNsYXVzZXMgaW4gdGhlIEtjb25maWcgZmlsZSB0byBzZWUgdGhlIHdob2xlIGRlcGVuZGVuY3kgY2hhaW4uIE9uY2UgSSBoYXZlIHRoZSBrZXkgS2NvbmZpZyBzeW1ib2wsIEkgY2FuIGVhc2lseSB1c2UgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdG9vbHMsIHN1Y2ggYXMgYG1ha2UgbWVudWNvbmZpZ2Agb3IgYG1ha2Uga2VybmVscmVsZWFzZV9jb25maWdgLCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uJ3MgY3VycmVudCBzdGF0ZSBhbmQgcG90ZW50aWFsbHkgZXhwbG9yZSB0aGUgb3B0aW9ucyBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNTowNy44MzUxMDg1NTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MjQ2MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsay1jZ3JvdXAub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfQkxLX0RFVl9CU0dMSUIpXFx0Kz0gYnNnLWxpYi5vXFxuYmxvY2svTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0JMS19DR1JPVVApXFx0Kz0gYmxrLWNncm91cC5vXFxuYmxvY2svTWFrZWZpbGUtMjAtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfUldTVEFUKVxcdCs9IGJsay1jZ3JvdXAtcndzdGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MDcuOTQ5MzYwODdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM3MjUxMjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggdGhpcyBhcmVhOlxuXG4qKkRpZ2dpbmcgaW50byBCbG9jayBJTyBhbmQgY2dyb3VwcyBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19CTEtfQ0dST1VQYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3cgdGhhdCBJJ3ZlIGNvbmZpcm1lZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBjdXJyZW50bHkgY29uZmlndXJlZC4gTGV0J3MgdHJhY2UgaXQgdGhyb3VnaCB0aGUgY2FsbCBjaGFpbi4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBldmVyeSBpbnN0YW5jZSB3aGVyZSBgYmxrZ19jb25mX29wZW5fYmRldmAgaXMgdXNlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIGFuZCBob3cgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRpbmcgdG8gYmxvY2sgSU8gYW5kIGNncm91cHMgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIGFjY2Vzc2VkIHdpdGhpbiB0aGUga2VybmVsLiBJIGNhbiB0aGVuIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGFzc2VzcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGN1cnJlbnQgc2V0LXVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MTAuNjg2NjE1NzU4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTk0MTUyODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZ19jb25mX29wZW5fYmRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmZxLWNncm91cC5jPTEwNTk9c3RhdGljIHNzaXplX3QgYmZxX2lvX3NldF9kZXZpY2Vfd2VpZ2h0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbmJsb2NrL2JmcS1jZ3JvdXAuYy0xMDcwLVxcbmJsb2NrL2JmcS1jZ3JvdXAuYzoxMDcxOlxcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXFx1MDAyNmN0eCk7XFxuYmxvY2svYmZxLWNncm91cC5jLTEwNzItXFx0aWYgKHJldClcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYz03NDc9RVhQT1JUX1NZTUJPTF9HUEwoX19ibGtnX3ByZmlsbF91NjQpO1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTc1NC0gKiBJbml0aWFsaXplIEBjdHggd2hpY2ggY2FuIGJlIHVzZWQgdG8gcGFyc2UgYmxrZyBjb25maWcgaW5wdXQgc3RyaW5nIEBpbnB1dC5cXG5ibG9jay9ibGstY2dyb3VwLmM6NzU1OiAqIE9uY2UgaW5pdGlhbGl6ZWQsIEBjdHggY2FuIGJlIHVzZWQgd2l0aCBibGtnX2NvbmZfb3Blbl9iZGV2KCkgYW5kXFxuYmxvY2svYmxrLWNncm91cC5jLTc1Ni0gKiBibGtnX2NvbmZfcHJlcCgpLlxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTc2Mj1FWFBPUlRfU1lNQk9MX0dQTChibGtnX2NvbmZfaW5pdCk7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtNzY0LS8qKlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NjU6ICogYmxrZ19jb25mX29wZW5fYmRldiAtIHBhcnNlIGFuZCBvcGVuIGJkZXYgZm9yIHBlci1ibGtnIGNvbmZpZyB1cGRhdGVcXG5ibG9jay9ibGstY2dyb3VwLmMtNzY2LSAqIEBjdHg6IGJsa2dfY29uZl9jdHggaW5pdGlhbGl6ZWQgd2l0aCBibGtnX2NvbmZfaW5pdCgpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtNzczLSAqL1xcbmJsb2NrL2Jsay1jZ3JvdXAuYzo3NzQ6aW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eClcXG5ibG9jay9ibGstY2dyb3VwLmMtNzc1LXtcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MTAtfVxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo4MTE6RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX29wZW5fYmRldik7XFxuYmxvY2svYmxrLWNncm91cC5jLTgxMi1cXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy04MjMtICpcXG5ibG9jay9ibGstY2dyb3VwLmM6ODI0OiAqIGJsa2dfY29uZl9vcGVuX2JkZXYoKSBtdXN0IGJlIGNhbGxlZCBvbiBAY3R4IGJlZm9yZWhhbmQuIE9uIHN1Y2Nlc3MsIHRoaXNcXG5ibG9jay9ibGstY2dyb3VwLmMtODI1LSAqIGZ1bmN0aW9uIHJldHVybnMgd2l0aCBxdWV1ZSBsb2NrIGhlbGQgYW5kIG11c3QgYmUgZm9sbG93ZWQgYnlcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYz05NDQ9RVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX3VucHJlcCk7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtOTQ2LS8qKlxcbmJsb2NrL2Jsay1jZ3JvdXAuYzo5NDc6ICogYmxrZ19jb25mX2Nsb3NlX2JkZXYgLSBjb3VudGVycGFydCBvZiBibGtnX2NvbmZfb3Blbl9iZGV2KClcXG5ibG9jay9ibGstY2dyb3VwLmMtOTQ4LSAqIEBjdHg6IGJsa2dfY29uZl9jdHggaW5pdGlhbGl6ZWQgd2l0aCBibGtnX2NvbmZfaW5pdCgpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmg9MjIyPXZvaWQgYmxrZ19jb25mX2luaXQoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eCwgY2hhciAqaW5wdXQpO1xcbmJsb2NrL2Jsay1jZ3JvdXAuaDoyMjM6aW50IGJsa2dfY29uZl9vcGVuX2JkZXYoc3RydWN0IGJsa2dfY29uZl9jdHggKmN0eClcXG5ibG9jay9ibGstY2dyb3VwLmgtMjI0LVxcdF9fY29uZF9hY3F1aXJlcygwLCBcXHUwMDI2Y3R4LVxcdTAwM2ViZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KTtcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYz0zMTM4PXN0YXRpYyBzc2l6ZV90IGlvY193ZWlnaHRfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzE3Ni1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzE3NzpcXHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFxcdTAwMjZjdHgpO1xcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMTc4LVxcdGlmIChyZXQpXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmM9MzI2Nj1zdGF0aWMgc3NpemVfdCBpb2NfcW9zX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzI4MC1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzI4MTpcXHRyZXQgPSBibGtnX2NvbmZfb3Blbl9iZGV2KFxcdTAwMjZjdHgpO1xcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMjgyLVxcdGlmIChyZXQpXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmM9MzQ2OT1zdGF0aWMgc3NpemVfdCBpb2NfY29zdF9tb2RlbF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmlucHV0LFxcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jLTM0ODItXFxuYmxvY2svYmxrLWlvY29zdC5jOjM0ODM6XFx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcXHUwMDI2Y3R4KTtcXG5ibG9jay9ibGstaW9jb3N0LmMtMzQ4NC1cXHRpZiAocmV0KVxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTgyNz1zdGF0aWMgc3NpemVfdCBpb2xhdGVuY3lfc2V0X2xpbWl0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTg0MC1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODQxOlxcdHJldCA9IGJsa2dfY29uZl9vcGVuX2JkZXYoXFx1MDAyNmN0eCk7XFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTg0Mi1cXHRpZiAocmV0KVxcbi0tXFxuYmxvY2svYmxrLXRocm90dGxlLmM9MTM1Mj1zdGF0aWMgc3NpemVfdCB0Z19zZXRfY29uZihzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xMzYyLVxcbmJsb2NrL2Jsay10aHJvdHRsZS5jOjEzNjM6XFx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcXHUwMDI2Y3R4KTtcXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xMzY0LVxcdGlmIChyZXQpXFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYz0xNTQwPXN0YXRpYyBzc2l6ZV90IHRnX3NldF9saW1pdChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xNTUwLVxcbmJsb2NrL2Jsay10aHJvdHRsZS5jOjE1NTE6XFx0cmV0ID0gYmxrZ19jb25mX29wZW5fYmRldihcXHUwMDI2Y3R4KTtcXG5ibG9jay9ibGstdGhyb3R0bGUuYy0xNTUyLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDIzOjA1OjEzLjk4NjA0MDgwOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDI1NDIyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYGJsa2dfY29uZl9vcGVuX2JkZXZgIGZ1bmN0aW9uIGhhcyBteSBhdHRlbnRpb24uIEl0J3MgdXNlZCBhY3Jvc3MgYSBoYW5kZnVsIG9mIGtleSBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnM6IGBiZnFfaW9fc2V0X2RldmljZV93ZWlnaHRgLCBgaW9jX3dlaWdodF93cml0ZWAsIGBpb2NfcW9zX3dyaXRlYCwgYGlvY19jb3N0X21vZGVsX3dyaXRlYCwgYGlvbGF0ZW5jeV9zZXRfbGltaXRgLCBgdGdfc2V0X2NvbmZgLCBhbmQgYHRnX3NldF9saW1pdGAuIFJpZ2h0LCB0aGVzZSBhcmUgYWxsIHVzZXItc3BhY2UgYWNjZXNzaWJsZSB2aWEgY2dyb3VwIGZpbGUgd3JpdGVzIOKAkyAqZGluZyBkaW5nIGRpbmcqLCB0aGF0IHNjcmVhbXMgZnV6emluZyB0YXJnZXQuXG5cblRpbWUgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgZ2F0ZSB0aGVzZSBmaWxlcy4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIGxpa2UgYGJsb2NrL2JmcS1jZ3JvdXAuY2AgaXMgdGhlIGxpa2VseSBwbGFjZSB0byBzdGFydC4gTm93LCBpcyB0aGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19CRlFfQ0dST1VQX0RFQlVHYCBvciBgQ09ORklHX0lPU0NIRURfQkZRYD8gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBibG9jay9NYWtlZmlsZWAgdG8gYmUgc3VyZS4gVGhpcyBmZWVscyBsaWtlIGEgcHJvbWlzaW5nIGxlYWQuIExldCdzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9ucyByZXZlYWwhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MTguMDg4NTg2MzQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODk3NzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiZnEtY2dyb3VwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX01RX0lPU0NIRURfS1lCRVIpXFx0Kz0ga3liZXItaW9zY2hlZC5vXFxuYmxvY2svTWFrZWZpbGU6Mjg6YmZxLXlcXHRcXHRcXHRcXHQ6PSBiZnEtaW9zY2hlZC5vIGJmcS13ZjJxLm8gYmZxLWNncm91cC5vXFxuYmxvY2svTWFrZWZpbGUtMjktb2JqLSQoQ09ORklHX0lPU0NIRURfQkZRKVxcdCs9IGJmcS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDIzOjA1OjE4LjE1NzU3MDQ5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc2MTQ0MDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCRlEgYW5kIGNncm91cHM6IEEgUXVpY2sgQ29ubmVjdGlvbioqXG5cbkFscmlnaHQsIHNvIEkgc2VlIGBDT05GSUdfSU9TQ0hFRF9CRlFgIGlzIHNldC4gVGhhdCBhdXRvbWF0aWNhbGx5IG1lYW5zIHRoZSBgYmZxLWNncm91cC5vYCBtb2R1bGUgaXMgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBwaWN0dXJlLiBObyBzdXJwcmlzZXMgdGhlcmU7IEJGUSAoQnVkZ2V0IEZhaXIgUXVldWVpbmcpIGlzICpkZXNpZ25lZCogdG8gYmUgY2dyb3VwLWF3YXJlLiBJdCdzIHRoZSB3aG9sZSBwb2ludCwgcmVhbGx5LCB0byBwcm92aWRlIHBlci1jZ3JvdXAgSS9PIGlzb2xhdGlvbiBhbmQgZmFpcm5lc3MuIFRoZSBrZXJuZWwncyBjb25maWcgb3B0aW9ucyByZWFsbHkgYXJlIHRoZSBicmVhZGNydW1icyB0aGF0IGxheSBvdXQgdGhlIGxhbmRzY2FwZSBvZiB3aGljaCBiaXRzIHdlJ3JlIHVzaW5nLiBJIHdvdWxkIGhvcGUgdGhhdCB0aGUgdXNlciBoYXMgYSBzb3VuZCBiYXNlIGtub3dsZWRnZSBvZiBjZ3JvdXBzLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTU3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjEuNDMzNzE5MDE3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU5NjE3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrLWlvY29zdC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL01ha2VmaWxlPTI0PW9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWSlcXHQrPSBibGstaW9sYXRlbmN5Lm9cXG5ibG9jay9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1QpXFx0Kz0gYmxrLWlvY29zdC5vXFxuYmxvY2svTWFrZWZpbGUtMjYtb2JqLSQoQ09ORklHX01RX0lPU0NIRURfREVBRExJTkUpXFx0Kz0gbXEtZGVhZGxpbmUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQyMzowNToyMS41NDk2ODkyMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUwMTU1NDUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6XG5cbioqRW5hYmxlZCBNb2R1bGUgYmxrLWlvY29zdC5vKipcblxuQWxyaWdodCwgSSBzZWUgaXQuIFRoZSBwcmVzZW5jZSBvZiBgQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUYCBpbiB0aGUgY29uZmlndXJhdGlvbiBpcyBkaXJlY3RseSByZXNwb25zaWJsZSBmb3IgYnJpbmdpbmcgdGhlIGBibGstaW9jb3N0Lm9gIG1vZHVsZSBpbnRvIHRoZSBrZXJuZWwgYnVpbGQuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgY29uZGl0aW9uYWwgZGVwZW5kZW5jeS4gSXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIGEgY2xlYW4gYW5kIGVmZmljaWVudCB3YXkgdG8gaW50ZWdyYXRlIHRoaXMgcGFydGljdWxhciBJL08gY29zdCBhY2NvdW50aW5nIGZ1bmN0aW9uYWxpdHkgd2hlbiBpdCdzIHJlcXVlc3RlZCBieSB0aGUgY29uZmlndXJhdGlvbi4gSXQncyBnb29kIHRvIHNlZSBpdCBpbXBsZW1lbnRlZCB0aGlzIHdheSwgbWFraW5nIHRoZSBtb2R1bGUgYXZhaWxhYmxlIG9ubHkgaWYgdGhlIGZlYXR1cmUgZmxhZyBpcyBlbmFibGVkLiBUaGlzIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYWxsb3dpbmcgdGhlIEkvTyBjb3N0IGFjY291bnRpbmcgdG8gYmUgbWFuYWdlZCB3aXRoIGNvbnRyb2wgZ3JvdXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDY4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjQuMDUxMjQ3NDM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQwOTcyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGstaW9sYXRlbmN5Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVxcdCs9IGJsay1pb3ByaW8ub1xcbmJsb2NrL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWSlcXHQrPSBibGstaW9sYXRlbmN5Lm9cXG5ibG9jay9NYWtlZmlsZS0yNS1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1QpXFx0Kz0gYmxrLWlvY29zdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDIzOjA1OjI0LjE0OTY2NDEyNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE2NjI0MjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIHRoYXQgZW5hYmxlcyB0aGUgYGJsay1pb2xhdGVuY3kub2AgbW9kdWxlLlwiIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIGJ1dCBpdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBjb25uZWN0aW9uLiBUaGlzIG1lYW5zIGlmIEkgZW5hYmxlIGJsb2NrIEkvTyBsYXRlbmN5IG1vbml0b3JpbmcgdmlhIGNncm91cHMsIEknbSBnb2luZyB0byBwdWxsIGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlLiBJdCBpcyBhIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kuIE5vdywgSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgc3lzdGVtLiBBbSBJIGdvaW5nIHRvIGJlIGRlYWxpbmcgd2l0aCB0aGUgdHlwaWNhbCBpbnN0cnVtZW50YXRpb24gb3ZlcmhlYWQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRyYWNlcG9pbnRzIG9yIG90aGVyIHJlbGF0ZWQga2VybmVsIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBibG9jayBJL08gc2NoZWR1bGVycyBvciBjb250cm9sbGVycyB0aGF0IGFyZSBhbHJlYWR5IGluIHVzZT8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgYW5kIHBlcmZvcm1hbmNlIHRhcmdldHMuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjb2RlIG9mIGBibGstaW9sYXRlbmN5Lm9gIHRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3QsIG9mIGNvdXJzZSwgYW5kIHdoZXRoZXIgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBpbXBvcnRhbnQgZm9yIG15IHVzZS1jYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzkyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjcuMjY2Mjk0NzMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDkzNjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGstdGhyb3R0bGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfQkxLX0NHUk9VUF9GQ19BUFBJRCkgKz0gYmxrLWNncm91cC1mYy1hcHBpZC5vXFxuYmxvY2svTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JMS19ERVZfVEhST1RUTElORylcXHQrPSBibGstdGhyb3R0bGUub1xcbmJsb2NrL01ha2VmaWxlLTIzLW9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPUFJJTylcXHQrPSBibGstaW9wcmlvLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MjcuMzUxMjM4ODRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2ODM0Njc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBgYmxrZ19jb25mX29wZW5fYmRldmAqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0JMS19ERVZfVEhST1RUTElOR2AgcHVsbHMgaW4gYGJsay10aHJvdHRsZS5vYC4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYGJsa2dfY29uZl9vcGVuX2JkZXZgLCBhbmQgaXQncyBsb2NhdGVkIHdpdGhpbiBgYmxvY2svYmxrLWNncm91cC5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIHRyaWdnZXJlZCBieSBjZ3JvdXAgd3JpdGVzLCBtZWFuaW5nIGl0J3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIOKAkyBwZXJmZWN0IGZvciBmdXp6aW5nLiBPZiBjb3Vyc2UsIGBDT05GSUdfQkxLX0NHUk9VUGAgaXMgYSBtdXN0LWhhdmUgZm9yIHRoaXMgdG8gd29yay4gVGhlIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBmdW5jdGlvbiBpcyB0aGUga2V5IHN5bWJvbCBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBpdHMgdmlzaWJpbGl0eS4gQWhhISBJdCdzIGV4cG9ydGVkLCBgRVhQT1JUX1NZTUJPTF9HUEwoYmxrZ19jb25mX29wZW5fYmRldilgLCBhbmQgZGVmaW5pdGl2ZWx5IGRlZmluZWQgaW4gYGJsb2NrL2Jsay1jZ3JvdXAuY2AuIFRoYXQgc29saWRpZmllcyBpdHMgaW1wb3J0YW5jZS5cblxuVGhlcmVmb3JlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIE15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZXhjbHVzaXZlbHkgYGJsa2dfY29uZl9vcGVuX2JkZXZgLlxuXG5BbmQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnM/IEkgbmVlZCB0byBlbmFibGUgYEJMS19DR1JPVVBgLCBvYnZpb3VzbHksIGFuZCB0aGVuIEknbSBhbHNvIGdvaW5nIHRvIGVuYWJsZSBgSU9TQ0hFRF9CRlFgLCBgQkxLX0NHUk9VUF9JT0NPU1RgLCBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLCBhbmQgb2YgY291cnNlIGBCTEtfREVWX1RIUk9UVExJTkdgLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBzaXR1YXRpb24gd2l0aGluIGBibGtnX2NvbmZfb3Blbl9iZGV2YCBieSBhZGp1c3RpbmcgdGhlIG9yZGVyIG9mIGBibGtkZXZfcHV0X25vX29wZW5gIGFuZCBgbXV0ZXhfdW5sb2NrYC4gR2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBibG9jayBjZ3JvdXAgd3JpdGUgaGFuZGxlcnMsIGl0J3MgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5MSwiT3V0cHV0VG9rZW5zIjoxNTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuODE5NTg5NTY3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNjEyMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJJT1NDSEVEX0JGUVwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gICAgXCJCTEtfREVWX1RIUk9UVExJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtnX2NvbmZfb3Blbl9iZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaW4gYGJsa2dfY29uZl9vcGVuX2JkZXZgIGJ5IHJlb3JkZXJpbmcgYGJsa2Rldl9wdXRfbm9fb3BlbmAgYW5kIGBtdXRleF91bmxvY2tgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYmxvY2sgY2dyb3VwIHdyaXRlIGhhbmRsZXJzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuOTUwMjEzMTMzWiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk5NDU0OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuOTUwODI2NTQzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3OTg4MzczNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgYnVnIGJ5IHJlb3JkZXJpbmcgYSBtdXRleF91bmxvY2sgYW5kIGEgZnVuY3Rpb24gY2FsbCB0aGF0IGRyb3BzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgbXV0ZXguIFNwZWNpZmljYWxseSwgYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAgbWlnaHQgZnJlZSBgYmRldmAgb3IgaXRzIHF1ZXVlLCBzbyBjYWxsaW5nIGBtdXRleF91bmxvY2soXFx1MDAyNmJkZXYtXFx1MDAzZWJkX3F1ZXVlLVxcdTAwM2VycV9xb3NfbXV0ZXgpYCBhZnRlcndhcmRzIHdvdWxkIGFjY2VzcyBmcmVlZCBtZW1vcnkuIFRoaXMgdHlwZSBvZiBidWcgKHVzZS1hZnRlci1mcmVlKSBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCwgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA0NGFhODlhMjdhOGNmNGNhMTVjN2U3NzgzM2Y4NzllN2JjYzVhZjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAyMzowNDo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jZ3JvdXAuYyBiL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuaW5kZXggZDk2NzYxMjZjNWI1ZC4uODYyOGFiNmFkZmE5YiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuY1xuKysrIGIvYmxvY2svYmxrLWNncm91cC5jXG5AQCAtNzk5LDggKzc5OSw4IEBAIGludCBibGtnX2NvbmZfb3Blbl9iZGV2KHN0cnVjdCBibGtnX2NvbmZfY3R4ICpjdHgpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmJkZXYtXHUwMDNlYmRfcXVldWUtXHUwMDNlcnFfcW9zX211dGV4KTtcbiBcdGlmICghZGlza19saXZlKGJkZXYtXHUwMDNlYmRfZGlzaykpIHtcbi1cdFx0YmxrZGV2X3B1dF9ub19vcGVuKGJkZXYpO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpO1xuK1x0XHRibGtkZXZfcHV0X25vX29wZW4oYmRldik7XG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzIuOTUwODI3MjYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTg4MDgyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBBIFVzZS1BZnRlci1GcmVlIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgcmVvcmRlcmluZyBvZiB0aG9zZSB0d28gbGluZXMgc2NyZWFtcyBcInBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiFcIiBJIHNlZSB0aGUgb3JpZ2luYWwgb3JkZXI6IGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIGZvbGxvd2VkIGJ5IGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYC4gQW5kIHRoZSBmaXggc2ltcGx5IHN3YXBzIHRoZW06IGBtdXRleF91bmxvY2soXHUwMDI2YmRldi1cdTAwM2ViZF9xdWV1ZS1cdTAwM2VycV9xb3NfbXV0ZXgpYCBub3cgY29tZXMgKmJlZm9yZSogYGJsa2Rldl9wdXRfbm9fb3BlbihiZGV2KWAuXG5cblRoZSBjcnVjaWFsIGJpdCBpcyB0aGF0IGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIGxpa2VseSBkcm9wcyBhIHJlZmVyZW5jZSBjb3VudCBvbiBgYmRldmAuIElmIHRoYXQncyB0aGUgKmxhc3QqIHJlZmVyZW5jZSwgYm9vbSwgYGJkZXZgIGFuZCwgY3JpdGljYWxseSwgYGJkZXYtXHUwMDNlYmRfcXVldWVgIGNvdWxkIGJlIGZyZWVkIHJpZ2h0IHRoZW4gYW5kIHRoZXJlLiBUaGVuLCB0cnlpbmcgdG8gdW5sb2NrIHRoZSBtdXRleCBvbiBhIGZyZWVkIGBiZF9xdWV1ZWAgd2l0aCB0aGF0IHNlY29uZCBsaW5lIGlzIHRleHRib29rIHVzZS1hZnRlci1mcmVlIChVQUYpLiBXZSdyZSB0cnlpbmcgdG8gYWNjZXNzIG1lbW9yeSB0aGF0J3MgYmVlbiByZWNsYWltZWQsIHdoaWNoIGlzIGEgYmlnIG5vLW5vLlxuXG5UaGUgS0FTQU4gcmVwb3J0IGlzIGEgZ29vZCBpbmRpY2F0aW9uIHRoYXQgdGhpcyBpcyB0aGUgY2FzZS4gVGhhdCdzIGV4YWN0bHkgd2hhdCBLQVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCDigJMgdGhvc2UgaWxsZWdhbCBtZW1vcnkgYWNjZXNzZXMuIE5vIG5lZWQgdG8gYnJpbmcgaW4gS01TQU4gaGVyZTsgd2UncmUgZGVhbGluZyB3aXRoIGEgY2xlYXIgVUFGIGJ1ZywgYW5kIEtBU0FOIGlzIHBlcmZlY3RseSBzdWl0ZWQgZm9yIHRoaXMgdHlwZSBvZiBpc3N1ZS4gVGhlIGNvZGUgaXRzZWxmLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBjb21tZW50LCBoaWdobGlnaHQgdGhpcy5cblxuVGhlcmVmb3JlLCBJJ2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIG1ha2Ugc3VyZSB0aGUgZXhwbGFuYXRpb24gY2xlYXJseSBzdGF0ZXMgdGhpcyBpcyBhIHVzZS1hZnRlci1mcmVlIGZpeC4gTm8gcmVhc29uIHRvIG92ZXJjb21wbGljYXRlIHRoZSBmaXggd2l0aCBhIHRvb2wgdGhhdCBpcyBub3QgbmVlZGVkIGZvciB0aGlzIHR5cGUgb2YgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTYsIk91dHB1dFRva2VucyI6MTU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMjM6MDU6MzguNzQ5NjM5NDA5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIGJ1ZyBieSByZW9yZGVyaW5nIGEgbXV0ZXhfdW5sb2NrIGFuZCBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBkcm9wcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG11dGV4LiBTcGVjaWZpY2FsbHksIGBibGtkZXZfcHV0X25vX29wZW4oYmRldilgIG1pZ2h0IGZyZWUgYGJkZXZgIG9yIGl0cyBxdWV1ZSwgc28gY2FsbGluZyBgbXV0ZXhfdW5sb2NrKFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9xdWV1ZS1cXHUwMDNlcnFfcW9zX211dGV4KWAgYWZ0ZXJ3YXJkcyB3b3VsZCBhY2Nlc3MgZnJlZWQgbWVtb3J5LiBUaGlzIHR5cGUgb2YgYnVnICh1c2UtYWZ0ZXItZnJlZSkgaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[1] Phase: Succeeded StartedAt: 2026-08-14 23:05:50 +0000 UTC FinishedAt: 2026-08-14 23:05:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 23:05:50 +0000 UTC FinishedAt: 2026-08-14 23:05:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2] Phase: Succeeded StartedAt: 2026-08-14 23:05:50 +0000 UTC FinishedAt: 2026-08-15 02:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 23:05:50 +0000 UTC FinishedAt: 2026-08-15 02:50:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 23:05:50 +0000 UTC FinishedAt: 2026-08-14 23:06:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 23:05:50 +0000 UTC FinishedAt: 2026-08-14 23:05:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfrq8g/series-workflowfrq8g-convert-artifact-2462691474/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 23:06:00 +0000 UTC FinishedAt: 2026-08-14 23:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 23:06:00 +0000 UTC FinishedAt: 2026-08-14 23:26:00 +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:*bcfa305a-c41e-465f-b5bd-d7b63c75aefa,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-workflowfrq8g/series-workflowfrq8g-convert-artifact-2462691474/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": "001f45b9-ced9-49e1-84f6-1d24e96c1d75", "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-workflowfrq8g/series-workflowfrq8g-build-action-585380368/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 23:06:00 +0000 UTC FinishedAt: 2026-08-14 23:25:50 +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:*bcfa305a-c41e-465f-b5bd-d7b63c75aefa,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-workflowfrq8g/series-workflowfrq8g-convert-artifact-2462691474/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": "001f45b9-ced9-49e1-84f6-1d24e96c1d75", "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-workflowfrq8g/series-workflowfrq8g-build-action-585380368/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 23:26:00 +0000 UTC FinishedAt: 2026-08-14 23:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 23:26:00 +0000 UTC FinishedAt: 2026-08-14 23:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 23:26:00 +0000 UTC FinishedAt: 2026-08-14 23:26:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 23:26:00 +0000 UTC FinishedAt: 2026-08-14 23:26:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfrq8g/series-workflowfrq8g-convert-artifact-2977440173/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 23:26:10 +0000 UTC FinishedAt: 2026-08-14 23:28:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 23:26:10 +0000 UTC FinishedAt: 2026-08-14 23:28:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*001f45b9-ced9-49e1-84f6-1d24e96c1d75,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-workflowfrq8g/series-workflowfrq8g-build-action-585380368/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-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 23:28:20 +0000 UTC FinishedAt: 2026-08-14 23:28:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 23:28:20 +0000 UTC FinishedAt: 2026-08-14 23:28:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 23:28:20 +0000 UTC FinishedAt: 2026-08-14 23:44:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 23:28:20 +0000 UTC FinishedAt: 2026-08-14 23:44:43 +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:*bcfa305a-c41e-465f-b5bd-d7b63c75aefa,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-workflowfrq8g/series-workflowfrq8g-convert-artifact-2977440173/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": "94157973-244d-4420-bc82-ec5cb532aa75", "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-workflowfrq8g/series-workflowfrq8g-build-action-2730255881/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 23:28:20 +0000 UTC FinishedAt: 2026-08-14 23:44:33 +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:*bcfa305a-c41e-465f-b5bd-d7b63c75aefa,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-workflowfrq8g/series-workflowfrq8g-convert-artifact-2977440173/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": "94157973-244d-4420-bc82-ec5cb532aa75", "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-workflowfrq8g/series-workflowfrq8g-build-action-2730255881/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 23:44:43 +0000 UTC FinishedAt: 2026-08-14 23:44:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 23:44:43 +0000 UTC FinishedAt: 2026-08-14 23:44:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 23:44:43 +0000 UTC FinishedAt: 2026-08-14 23:47:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 23:44:43 +0000 UTC FinishedAt: 2026-08-14 23:46:56 +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:*94157973-244d-4420-bc82-ec5cb532aa75,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-workflowfrq8g/series-workflowfrq8g-build-action-2730255881/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-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-15 02:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-15 02:50:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"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:*001f45b9-ced9-49e1-84f6-1d24e96c1d75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*94157973-244d-4420-bc82-ec5cb532aa75,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-workflowfrq8g/series-workflowfrq8g-build-action-585380368/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-workflowfrq8g/series-workflowfrq8g-build-action-2730255881/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-14 23:47:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-14 23:47:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"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-workflowfrq8g/series-workflowfrq8g-convert-artifact-1643276050/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-14 23:47:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-14 23:47:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 23:47:06 +0000 UTC FinishedAt: 2026-08-14 23:47:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 23:47:16 +0000 UTC FinishedAt: 2026-08-15 02:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrq8g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkg_conf_open_bdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","IOSCHED_BFQ","BLK_CGROUP_IOCOST","BLK_CGROUP_IOLATENCY","BLK_DEV_THROTTLING"],"series_id":"bdec939f-e66e-4523-9fe2-3dcc140cc791","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 23:47:16 +0000 UTC FinishedAt: 2026-08-15 02:50:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*001f45b9-ced9-49e1-84f6-1d24e96c1d75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*94157973-244d-4420-bc82-ec5cb532aa75,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-workflowfrq8g/series-workflowfrq8g-build-action-585380368/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-workflowfrq8g/series-workflowfrq8g-build-action-2730255881/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-workflowfrq8g/series-workflowfrq8g-convert-artifact-1643276050/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,}