Name: series-workflowdxk4d Phase: Succeeded StartedAt: 2026-07-31 11:37:40 +0000 UTC FinishedAt: 2026-07-31 15:18:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[0] Phase: Succeeded StartedAt: 2026-07-31 11:37:40 +0000 UTC FinishedAt: 2026-07-31 11:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 11:37:40 +0000 UTC FinishedAt: 2026-07-31 11:40:42 +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": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CEPH_FS", "CEPH_LIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CEPH_FS", "CEPH_LIB" ], "series_id": "8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ceph_con_v2_try_read" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NFUEhfRlMmIzM0OywKICAgICYjMzQ7Q0VQSF9MSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGJhbm5lciBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgaGFuZGxpbmcuIFRoaXMgaXMgcmVhY2hhYmxlIG5ldHdvcmsgcHJvdG9jb2wgcGFyc2luZyBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIG1hbGljaW91cyBvciBtaXNiZWhhdmluZyBDZXBoIHNlcnZlci9jbGllbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmNjY4MTdkOGZkMDVmYWY3MGQ3ZGZmNzkzNGM5ZTg5YjJiMTNlMTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTE6Mzk6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuaW5kZXggMDVmNmVlYTI5OWZjMC4uYjMyM2I2MWU3MDIzOSAxMDA2NDRcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuQEAgLTIxNDIsNiAmIzQzOzIxNDIsMTEgQEAgc3RhdGljIGludCBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuIFx0cGF5bG9hZF9sZW4gPSBjZXBoX2RlY29kZV8xNihcdTAwMjZwKTtcbiBcdGRvdXQoXCYjMzQ7JXMgY29uICVwIHBheWxvYWRfbGVuICVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY29uLCBwYXlsb2FkX2xlbik7XG4gXG4mIzQzO1x0aWYgKHBheWxvYWRfbGVuIFx1MDAzYyBzaXplb2YodTY0KSAmIzQzOyBzaXplb2YodTY0KSkge1xuJiM0MztcdFx0Y29uLVx1MDAzZWVycm9yX21zZyA9IFwmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuXCYjMzQ7O1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiBwcmVwYXJlX3JlYWRfYmFubmVyX3BheWxvYWQoY29uLCBwYXlsb2FkX2xlbik7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRVBIX0ZTJiMzNDssCiAgICAmIzM0O0NFUEhfTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBiYW5uZXIgcGF5bG9hZCBsZW5ndGggaW4gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sIGhhbmRsaW5nLiBUaGlzIGlzIHJlYWNoYWJsZSBuZXR3b3JrIHByb3RvY29sIHBhcnNpbmcgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIvY2xpZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjY2ODE3ZDhmZDA1ZmFmNzBkN2RmZjc5MzRjOWU4OWIyYjEzZTEwOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDExOjM5OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYwppbmRleCAwNWY2ZWVhMjk5ZmMwLi5iMzIzYjYxZTcwMjM5IDEwMDY0NAotLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYwpAQCAtMjE0Miw2ICYjNDM7MjE0MiwxMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pCiAJcGF5bG9hZF9sZW4gPSBjZXBoX2RlY29kZV8xNigmYW1wO3ApOwogCWRvdXQoJiMzNDslcyBjb24gJXAgcGF5bG9hZF9sZW4gJWRcbiYjMzQ7LCBfX2Z1bmNfXywgY29uLCBwYXlsb2FkX2xlbik7CiAKJiM0MzsJaWYgKHBheWxvYWRfbGVuICZsdDsgc2l6ZW9mKHU2NCkgJiM0Mzsgc2l6ZW9mKHU2NCkpIHsKJiM0MzsJCWNvbi0mZ3Q7ZXJyb3JfbXNnID0gJiMzNDtwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlbiYjMzQ7OwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBhZGRlZCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sIGhhbmRsaW5nLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY2hlY2sgd2l0aGluIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgOgoKYGBgYwomIzQzOwlpZiAocGF5bG9hZF9sZW4gJmx0OyBzaXplb2YodTY0KSAmIzQzOyBzaXplb2YodTY0KSkgewomIzQzOwkJY29uLSZndDtlcnJvcl9tc2cgPSAmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuJiMzNDs7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQpgYGAKCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBnb29kLCBwcm9hY3RpdmUgYWRkaXRpb24uIEl0JiMzOTtzIHZhbGlkYXRpbmcgdGhlIGBwYXlsb2FkX2xlbmAgdG8gZW5zdXJlIGl0IG1lZXRzIGEgbWluaW11bSBzaXplIHJlcXVpcmVtZW50IGJlZm9yZSB0aGUgZnVuY3Rpb24gY29udGludWVzIHByb2Nlc3NpbmcuIFRoZSBjb21wYXJpc29uIGBwYXlsb2FkX2xlbiAmbHQ7IHNpemVvZih1NjQpICYjNDM7IHNpemVvZih1NjQpYCBpbXBsaWVzIHRoYXQgdGhlIGJhbm5lciBwYXlsb2FkIHJlcXVpcmVzIGF0IGxlYXN0IHR3byA2NC1iaXQgdW5zaWduZWQgaW50ZWdlcnMuIElmIHRoZSBwYXlsb2FkIGlzIHNtYWxsZXIgdGhhbiB0aGF0LCB0aGUgY29kZSBub3cgZmxhZ3MgaXQgYXMgYSBwcm90b2NvbCBlcnJvciwgc2V0cyBhbiBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLCBhbmQgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgcHJldmVudGluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVlIHRvIG1hbGZvcm1lZCBvciB0cnVuY2F0ZWQgYmFubmVyIG1lc3NhZ2VzLgoKSSBuZWVkIHRvIGRlbHZlIGRlZXBlciBhbmQgcmV2aWV3IGJvdGggYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYCBhbmQgc3BlY2lmaWNhbGx5IGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGVjayBhbmQgd2hhdCB0aG9zZSB0d28gNjQtYml0IHZhbHVlcyByZXByZXNlbnQuIEl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIGluaXRpYWwgaGFuZHNoYWtlIGluZm9ybWF0aW9uIG9yIHZlcnNpb25pbmcuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoaXMgdmFsaWRhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBtZXNzYWdlIGhhbmRsaW5nIGFuZCBlcnJvciByZWNvdmVyeS4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgcmVhc29uYWJsZSwgdGhvdWdoIHNvbWV3aGF0IGJhc2ljLCBwcm90b2NvbCBzYW5pdHkgY2hlY2ssIGFuZCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGVmZmljYWN5IHdpdGhpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jZXNzX2Jhbm5lcl9wcmVmaXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI0LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4MC1cdGlmIChjb24tXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDgxOlx0XHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODItXHR9IGVsc2UgaWYgKGNvbi1cdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCBVc2FnZSoqCgpSaWdodCwgc28gYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAgaXMgc3RhdGljLCB3aGljaCBpcyBnb29kIGZvciBwcmVkaWN0YWJpbGl0eSwgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBwb3B1bGF0ZV9pbl9pdGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBiZWNhdXNlIGEgc3RhdGljIHByZWZpeCBpbXBsaWVzIGl0JiMzOTtzIGNvbnNpc3RlbnQgYWNyb3NzIHRoZSBpdGVyYXRpb25zLiBUaGUga2V5IHdpbGwgYmUgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgb2YgYHBvcHVsYXRlX2luX2l0ZXJgLiBVbmRlcnN0YW5kaW5nIHRob3NlIGNhbGwgc2l0ZXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBiYW5uZXIgcHJlZml4IGlzIGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkIGJ5IHRoZSBwcm9jZXNzLiBXaGF0IGNhbGxzIGBwb3B1bGF0ZV9pbl9pdGVyYCB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZywgYW5kIHdoYXQgY2FsbHMgYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9wdWxhdGVfaW5faXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNjI9c3RhdGljIHZvaWQgZmluaXNoX3NraXAoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzEtXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDcyOnN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDczLXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMTQxPWludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1Mi1cdCAqIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgcGVuZGluZyBoZXJlLiAgSWYgbm90LFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE1MzpcdCAqIGF2b2lkIGNhbGxpbmcgcG9wdWxhdGVfaW5faXRlcigpIGFzIGlmIHdlIHJlYWQgc29tZXRoaW5nXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTU0LVx0ICogKGNlcGhfdGNwX3JlY3YoKSB3b3VsZCBpbW1lZGlhdGVseSByZXR1cm4gMSkuXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2My1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNjQ6XHRcdHJldCA9IHBvcHVsYXRlX2luX2l0ZXIoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNjUtXHRcdGlmIChyZXQgXHUwMDNjPSAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFJlYWRpbmcgUHJvY2VzcyoqCgpPa2F5LCBzbyBgcG9wdWxhdGVfaW5faXRlcmAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoYXQgdGhlIHJlYWRpbmcgcHJvY2VzcyB3aXRoaW4gdGhlIENlcGggY29ubmVjdGlvbiB2ZXJzaW9uIDIgbWlnaHQgYmUgdGhlIGNyaXRpY2FsIGFyZWEgdG8gaW52ZXN0aWdhdGUuIE15IGV4cGVydCBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1heSBiZSBhbiBpc3N1ZSB3aXRoIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBwYXJzZWQgb3Igc3RydWN0dXJlZCBkdXJpbmcgYSByZWFkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgcG9pbnQgd2hlcmUgYHBvcHVsYXRlX2luX2l0ZXJgIGlzIGNhbGxlZC4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGFuZCBmdW5jdGlvbmFsaXR5IG9mIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIGRhdGEgcmV0cmlldmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NlcGhfY29uX3YyX3RyeV9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NlcGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlci5jPTE1NDI9c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc0LVx0XHRpZiAoY2VwaF9tc2dyMihmcm9tX21zZ3IoY29uLVx1MDAzZW1zZ3IpKSlcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NzU6XHRcdFx0cmV0ID0gY2VwaF9jb25fdjJfdHJ5X3JlYWQoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzYtXHRcdGVsc2Vcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0MC1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNDE6aW50IGNlcGhfY29uX3YyX3RyeV9yZWFkKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBDRVBIIE5ldHdvcmsgUHJvdG9jb2wgUGFyc2VyKioKCk9rYXksIHNvIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgaXMgY2FsbGVkIGZyb20gYGNlcGhfY29uX3dvcmtmbmAgd2l0aGluIHRoZSBgbmV0L2NlcGgvbWVzc2VuZ2VyLmNgIGZpbGUuIFJpZ2h0LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUg4oCTIHNtYWNrIGluIHRoZSBjcml0aWNhbCBwYXRoISBHaXZlbiBteSBleHBlcnRpc2UgaW4gcHJvdG9jb2wgc2VjdXJpdHksIHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9idmlvdXM6IHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gc3ViamVjdCB0aGlzIHRvIHNvbWUgc2VyaW91cyBzdHJlc3MtdGVzdGluZy4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggQ0VQSC4gS25vd2luZyBob3cgdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIGlzIGNydWNpYWwgZm9yIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGRldGVybWluZSB3aGF0IHBhcmFtZXRlcnMgbWlnaHQgaW5mbHVlbmNlIGhvdyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGJlaGF2ZXMgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMuIFRoaXMgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIG1lc3NhZ2Ugc2l6ZSBsaW1pdHMsIGNvbXByZXNzaW9uIHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIHByb3RvY29sIGZlYXR1cmVzIGluIHVzZS4gVGhpcyBjb250ZXh0dWFsIGtub3dsZWRnZSB3aWxsIGJlIGVzc2VudGlhbCB0byB0YWlsb3IgZnV6emluZyBjYW1wYWlnbnMgdGhhdCBtYXhpbWl6ZSBjb3ZlcmFnZSBhbmQgdW5jb3ZlciBoaWRkZW4gdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0VQSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xuLS1cbm5ldC9jZXBoL0tjb25maWctMjItXG5uZXQvY2VwaC9LY29uZmlnOjIzOmNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xubmV0L2NlcGgvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvY2VwaC9LY29uZmlnLTM0LVxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxubmV0L2NlcGgvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7VXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOgoKKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgdGhlIHN0YXJ0aW5nIHBvaW50IGlzIGBDRVBIX0xJQmAuIFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhcm91bmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIGx1cmtpbmcgYXJvdW5kPyBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzeXN0ZW0gYmVmb3JlIEkgY2FuIGVmZmVjdGl2ZWx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIGBDRVBIX0xJQmAgaW4gaXNvbGF0aW9uLiBXaGF0IGVsc2UgY291bGQgYmUgaW4gcGxheT8gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgb3IgY29tcGV0aW5nIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NlcGgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xubmV0L2NlcGgvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUXG5uZXQvY2VwaC9LY29uZmlnLTUtXHRzZWxlY3QgQ1JDMzJcbi0tXG5uZXQvY2VwaC9LY29uZmlnPTIzPWNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xubmV0L2NlcGgvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcJiMzNDtcbm5ldC9jZXBoL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTI2LVx0ZGVmYXVsdCBuXG4tLVxubmV0L2NlcGgvS2NvbmZpZz0zNT1jb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxubmV0L2NlcGgvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7VXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXCYjMzQ7XG5uZXQvY2VwaC9LY29uZmlnOjM3Olx0ZGVwZW5kcyBvbiBDRVBIX0xJQlxubmV0L2NlcGgvS2NvbmZpZy0zOC1cdHNlbGVjdCBETlNfUkVTT0xWRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyBEZXBlbmRlbmNpZXMgZm9yIENlcGggSW50ZWdyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBuZXcgc3lzdGVtIGlzIGdvaW5nIHRvIGludGVncmF0ZSB3aXRoIENlcGguIFRoZSBrZXkgbGlicmFyeSwgYENFUEhfTElCYCwgdGhhdCYjMzk7cyBnb3QgdG8gYmUgaW52b2x2ZWQuIEkgc2VlIGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgYWxyZWFkeSDigJMgc3BlY2lmaWNhbGx5LCBgQ0VQSF9MSUJgIGRlcGVuZHMgb24gYElORVRgLiBUaGF0JiMzOTtzIG5vdCBzdXJwcmlzaW5nLCB3ZSYjMzk7bGwgbmVlZCBuZXR3b3JrIGNvbm5lY3Rpdml0eSBmb3IgQ2VwaCBjb21tdW5pY2F0aW9uLCBzbyB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEdpdmVuIHRoYXQsIGVuYWJsaW5nIGBDRVBIX0xJQmAgYmVjb21lcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwLCBhbmQgcmVhbGx5IHRoZSBvbmx5IHNlbnNpYmxlIG9wdGlvbi4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIHdoYXQgYWJvdXQgdGhlIGZpbGVzeXN0ZW0gc2lkZT8gSXMgdGhlcmUgYSBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGEgQ2VwaCBmaWxlc3lzdGVtIHNwZWNpZmljYWxseT8gSSYjMzk7bSB0aGlua2luZywgYENFUEhfRlNgPyBMZXQmIzM5O3MgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRVBIX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfRlNcbmZzL2NlcGgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVwmIzM0O1xuLS1cbmZzL2NlcGgvS2NvbmZpZz0xOT1pZiBDRVBIX0ZTXG5mcy9jZXBoL0tjb25maWc6MjA6Y29uZmlnIENFUEhfRlNDQUNIRVxuZnMvY2VwaC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgQ2VwaCBjbGllbnQgY2FjaGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvY2VwaC9LY29uZmlnPTI3PWVuZGlmXG5mcy9jZXBoL0tjb25maWctMjgtXG5mcy9jZXBoL0tjb25maWc6Mjk6Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXG5mcy9jZXBoL0tjb25maWctMzAtXHRib29sIFwmIzM0O0NlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9jZXBoL0tjb25maWctMzgtXG5mcy9jZXBoL0tjb25maWc6Mzk6Y29uZmlnIENFUEhfRlNfU0VDVVJJVFlfTEFCRUxcbmZzL2NlcGgvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7Q2VwaEZTIFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzAwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgQ2VwaCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgQ2VwaCBjb2RlYmFzZS4gVGhlIGZpbGVzeXN0ZW0gY29tcG9uZW50LCBgQ0VQSF9GU2AsIGFuZCB0aGUgY29yZSBsaWJyYXJ5LCBgQ0VQSF9MSUJgLCBhcmUgdGhlIHByaW1lIHRhcmdldHMuIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZm9jdXMgb3VyIGVmZm9ydHMgb24gZWl0aGVyIG9mIHRoZXNlLCBidXQgaWRlYWxseSwgb24gYm90aC4gVGhlIHJlbGF0aW9uc2hpcCBpcyBpbXBvcnRhbnQuIEVuYWJsaW5nIGBDRVBIX0ZTYCBhdXRvbWF0aWNhbGx5IGJyaW5ncyBpbiBgQ0VQSF9MSUJgLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZmlsZXN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGBmcy9jZXBoL0tjb25maWdgLCB0byBzZWUgd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyB3ZSBjYW4gYmVzdCBsZXZlcmFnZSB0aGVtIGZvciBmdXp6aW5nLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgYnVpbGQgdGFyZ2V0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IENFUEhfTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvS2NvbmZpZz0yPWNvbmZpZyBDRVBIX0ZTXG4tLVxuZnMvY2VwaC9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIElORVRcbmZzL2NlcGgvS2NvbmZpZzo1Olx0c2VsZWN0IENFUEhfTElCXG5mcy9jZXBoL0tjb25maWctNi1cdHNlbGVjdCBORVRGU19TVVBQT1JUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgQ0VQSCBNb2R1bGUgRGVwZW5kZW5jaWVzIGFuZCBJZGVudGlmeWluZyBLZXkgRnVuY3Rpb25zKioKClJpZ2h0LCBzbyBgQ0VQSF9GU2AgY2xlYXJseSBkZXBlbmRzIG9uIGBDRVBIX0xJQmAuIFRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIGZpbmQgdGhlIGltcG9ydGFudCBiaXRzIHdpdGhpbiB0aGlzIHJlbGF0aW9uc2hpcC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgc3ltYm9scy4KCkZpcnN0LCBJIHNlZSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCBhbmQgYHBvcHVsYXRlX2luX2l0ZXJgIGFyZSBzdGF0aWMuIEFscmlnaHQsIGxpa2VseSBpbnRlcm5hbCB1dGlsaXRpZXMsIGJ1dCBwb3RlbnRpYWxseSByZWxldmFudC4gVGhlbiB0aGVyZSYjMzk7cyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIC0gdGhhdCYjMzk7cyAqbm90KiBzdGF0aWMsIHNvIGl0JiMzOTtzIHByb2JhYmx5IGV4cG9ydGVkIG9yIGF0IGxlYXN0IHVzZWQgbW9yZSB3aWRlbHkuIFRoYXQgb25lIGNhdGNoZXMgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5LiBMZXQmIzM5O3MgZGlnIGludG8gYGNlcGhfY29uX3YyX3RyeV9yZWFkYCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0MC1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNDE6aW50IGNlcGhfY29uX3YyX3RyeV9yZWFkKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDUyCgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENlcGggQ29ubmVjdGlvbiBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgZnVuY3Rpb247IHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgY29ubmVjdGlvbiBsb2dpYy4gQnV0LCBhcyBhbHdheXMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkgd29uZGVyLCBhcmUgdGhlcmUgb3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyBhYm91dCBiZWluZyB0aG9yb3VnaCwgYWZ0ZXIgYWxsLgoKTm93LCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgYGNlcGhfY29uX3dvcmtmbmAgaXMgcHJvYmFibHkgdGhlIGNvcmUgd29yayBmdW5jdGlvbiBpbiB0aGlzIGNvbnRleHQsIHRoZSBjZW50cmFsIHByb2Nlc3NpbmcgcG9pbnQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGFuZCB2ZXJpZnkgdGhpcy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZnVuY3Rpb27igJlzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVycyBpbiB0aGUgbGlicmFyeS4gSSBzaG91bGQgZGl2ZSBpbnRvIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AgYW5kIGh1bnQgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGZpbGUgdGhhdCBtaWdodCBiZSBjb25uZWN0ZWQuIFRoaXMgd2lsbCBoZWxwIG1lIGdhaW4gYSBtb3JlIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRhdGEgZmxvdyBhbmQgaWRlbnRpZnkgYW55IGNyaXRpY2FsIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIGNvbm5lY3Rpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogY2VwaF9jb25fdjJfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0Mi17XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzI4MT1zdGF0aWMgaW50IHBvcHVsYXRlX291dF9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzU4LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM1OTppbnQgY2VwaF9jb25fdjJfdHJ5X3dyaXRlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMzNjAte1xuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTM1NjU9c3RhdGljIHZvaWQgcmV2b2tlX2F0X2ZpbmlzaF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbixcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNjIzLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzYyNDp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHN0cnVjdCBjZXBoX21zZyAqbXNnKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzYyNS17XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzcyOD1zdGF0aWMgdm9pZCByZXZva2VfYXRfaGFuZGxlX2VwaWxvZ3VlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzQwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc0MTp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZV9pbmNvbWluZyhzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzQyLXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzY1LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc2Njpib29sIGNlcGhfY29uX3YyX29wZW5lZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzY3LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzcwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc3MTp2b2lkIGNlcGhfY29uX3YyX3Jlc2V0X3Nlc3Npb24oc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3Mi17XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3OS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjM3ODA6dm9pZCBjZXBoX2Nvbl92Ml9yZXNldF9wcm90b2NvbChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzgxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA4NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gQ2VwaCBDb25uZWN0aW9uIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBvbiB0aGVzZSBjb25uZWN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdywgZXNwZWNpYWxseSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIFNvLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGNlcGhfY29uX3dvcmtmbmAgZnVuY3Rpb24sIHNpbmNlIHRoYXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgdGhlIGhlYXZ5IGxpZnRpbmcgd2l0aGluIHRoYXQgY29ubmVjdGlvbiBoYW5kbGVyIGhhcHBlbnMuIExvb2tpbmcgaW4gYG5ldC9jZXBoL21lc3Nlbmdlci5jYCBzZWVtcyBsaWtlIHRoZSBjb3JyZWN0IHNwb3QgZm9yIHRoYXQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZXBoX2Nvbl93b3JrZm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNDY9c3RhdGljIHZvaWQgY2FuY2VsX2NvbihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTQ3OnN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNDgtc3RhdGljIHZvaWQgY29uX2ZhdWx0KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbik7XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmM9NjMyPXZvaWQgY2VwaF9jb25faW5pdChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHZvaWQgKnByaXZhdGUsXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtNjQ2LVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y29uLVx1MDAzZW91dF9zZW50KTtcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjY0NzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmNvbi1cdTAwM2V3b3JrLCBjZXBoX2Nvbl93b3JrZm4pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmMtNjQ4LVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlci5jPTE1MjA9c3RhdGljIHZvaWQgY29uX2ZhdWx0X2ZpbmlzaChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU0MS0gKi9cbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NDI6c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjAzCgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ2VwaCBNZXNzZW5nZXIgdjIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgQ2VwaCBwYXRjaC4gVGhlIGBjZXBoX2Nvbl93b3JrZm5gIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIHN0YXRpYywgc28gdGhhdCBuYXJyb3dzIGRvd24gbXkgZm9jdXMuIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgc2VlbXMgbGlrZSB0aGUgbW9zdCByZWxldmFudCBzeW1ib2wgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gVGhhdCYjMzk7cyB0aGUga2V5IGVudHJ5IHBvaW50LCB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4KCk5vdywgYmVmb3JlIEkgY29tbWl0LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkgc2VlIHRoYXQgYENFUEhfRlNgIGRlcGVuZHMgb24gYElORVRgLCBhbmQgYENFUEhfTElCYCBhbHNvIGRlcGVuZHMgb24gYElORVRgLiAgU2luY2UgYENFUEhfRlNgIGluY2x1ZGVzIGBJTkVUYCwgdGhhdCBhbG9uZSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZnV6emluZy4gYENFUEhfTElCYCBpcyBhbHNvIGdvb2QsIGJ1dCBub3QgKm5lY2Vzc2FyeSouCgpTbywgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIGFzc2Vzc21lbnQ6CgoqICAgKipXb3J0aEZ1enppbmc6KiogQWJzb2x1dGVseSwgeWVzLgoqICAgKipGb2N1c1N5bWJvbHM6KiogSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogIEkmIzM5O2xsIGVuYWJsZSBgQ0VQSF9GU2AgYW5kIGBDRVBIX0xJQmAganVzdCB0byBiZSBzYWZlLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyBuZXR3b3JrLWFjY2Vzc2libGUgY29kZSBpbnZvbHZlZCBpbiBwYXJzaW5nIHRoZSBwcm90b2NvbC4gVGhpcyBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIgb3IgY2xpZW50LiBJdCYjMzk7cyBhIGNsYXNzaWMgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtDRVBIX0xJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NlcGhfY29uX3YyX3RyeV9yZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtDRVBIX0xJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NlcGhfY29uX3YyX3RyeV9yZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjI1LjM0NDkwNzQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1ODM0MDQ5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQ0VQSF9MSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6MjUuMzQ0OTEyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE1NzkyNzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjY2ODE3ZDhmZDA1ZmFmNzBkN2RmZjc5MzRjOWU4OWIyYjEzZTEwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxMTozOToyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXFxuaW5kZXggMDVmNmVlYTI5OWZjMC4uYjMyM2I2MWU3MDIzOSAxMDA2NDRcXG4tLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xcbisrKyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXFxuQEAgLTIxNDIsNiArMjE0MiwxMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuIFxcdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXFx1MDAyNnApO1xcbiBcXHRkb3V0KFxcXCIlcyBjb24gJXAgcGF5bG9hZF9sZW4gJWRcXFxcblxcXCIsIF9fZnVuY19fLCBjb24sIHBheWxvYWRfbGVuKTtcXG4gXFxuK1xcdGlmIChwYXlsb2FkX2xlbiBcXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcXG4rXFx0XFx0Y29uLVxcdTAwM2VlcnJvcl9tc2cgPSBcXFwicHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW5cXFwiO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIHByZXBhcmVfcmVhZF9iYW5uZXJfcGF5bG9hZChjb24sIHBheWxvYWRfbGVuKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6MjUuNjYxMzM0NDc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDMyNjY5NjkyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQ0VQSF9MSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjY2ODE3ZDhmZDA1ZmFmNzBkN2RmZjc5MzRjOWU4OWIyYjEzZTEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDExOjM5OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuaW5kZXggMDVmNmVlYTI5OWZjMC4uYjMyM2I2MWU3MDIzOSAxMDA2NDRcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG4rKysgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuQEAgLTIxNDIsNiArMjE0MiwxMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4gXHRwYXlsb2FkX2xlbiA9IGNlcGhfZGVjb2RlXzE2KFx1MDAyNnApO1xuIFx0ZG91dChcIiVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxcblwiLCBfX2Z1bmNfXywgY29uLCBwYXlsb2FkX2xlbik7XG4gXG4rXHRpZiAocGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcbitcdFx0Y29uLVx1MDAzZWVycm9yX21zZyA9IFwicHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW5cIjtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjI1LjY2MTMzNTU4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjI1NjczNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgYWRkZWQgc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhleSd2ZSBpbnRyb2R1Y2VkIGEgY2hlY2sgd2l0aGluIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgOlxuXG5gYGBjXG4rXHRpZiAocGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcbitcdFx0Y29uLVx1MDAzZWVycm9yX21zZyA9IFwicHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW5cIjtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGdvb2QsIHByb2FjdGl2ZSBhZGRpdGlvbi4gSXQncyB2YWxpZGF0aW5nIHRoZSBgcGF5bG9hZF9sZW5gIHRvIGVuc3VyZSBpdCBtZWV0cyBhIG1pbmltdW0gc2l6ZSByZXF1aXJlbWVudCBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNvbnRpbnVlcyBwcm9jZXNzaW5nLiBUaGUgY29tcGFyaXNvbiBgcGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NClgIGltcGxpZXMgdGhhdCB0aGUgYmFubmVyIHBheWxvYWQgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2Vycy4gSWYgdGhlIHBheWxvYWQgaXMgc21hbGxlciB0aGFuIHRoYXQsIHRoZSBjb2RlIG5vdyBmbGFncyBpdCBhcyBhIHByb3RvY29sIGVycm9yLCBzZXRzIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UsIGFuZCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBwcmV2ZW50aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdWUgdG8gbWFsZm9ybWVkIG9yIHRydW5jYXRlZCBiYW5uZXIgbWVzc2FnZXMuXG5cbkkgbmVlZCB0byBkZWx2ZSBkZWVwZXIgYW5kIHJldmlldyBib3RoIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AgYW5kIHNwZWNpZmljYWxseSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hlY2sgYW5kIHdoYXQgdGhvc2UgdHdvIDY0LWJpdCB2YWx1ZXMgcmVwcmVzZW50LiBJdCdzIGxpa2VseSByZWxhdGVkIHRvIGluaXRpYWwgaGFuZHNoYWtlIGluZm9ybWF0aW9uIG9yIHZlcnNpb25pbmcuIEknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhpcyB2YWxpZGF0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIGVycm9yIHJlY292ZXJ5LiBUaGlzIGFwcGVhcnMgdG8gYmUgYSByZWFzb25hYmxlLCB0aG91Z2ggc29tZXdoYXQgYmFzaWMsIHByb3RvY29sIHNhbml0eSBjaGVjaywgYW5kIEknbGwgbmVlZCB0byBjb25maXJtIGl0cyBlZmZpY2FjeSB3aXRoaW4gdGhlIENlcGggbWVzc2VuZ2VyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOToyOS44MjM5MDU0MTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMjkzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY2Vzc19iYW5uZXJfcHJlZml4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTIxMDc9c3RhdGljIHZvaWQgcHJlcGFyZV9za2lwX21lc3NhZ2Uoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjEyNC1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzoyMTI1OnN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODAtXFx0aWYgKGNvbi1cXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzA4MTpcXHRcXHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDgyLVxcdH0gZWxzZSBpZiAoY29uLVxcdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjI5Ljg2NTAzOTYzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODg1NzQyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIFVzYWdlKipcblxuUmlnaHQsIHNvIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIGlzIHN0YXRpYywgd2hpY2ggaXMgZ29vZCBmb3IgcHJlZGljdGFiaWxpdHksIGFuZCBpdCdzIGNhbGxlZCBmcm9tIGBwb3B1bGF0ZV9pbl9pdGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBiZWNhdXNlIGEgc3RhdGljIHByZWZpeCBpbXBsaWVzIGl0J3MgY29uc2lzdGVudCBhY3Jvc3MgdGhlIGl0ZXJhdGlvbnMuIFRoZSBrZXkgd2lsbCBiZSB0byBpZGVudGlmeSB0aGUgY2FsbCBzaXRlcyBvZiBgcG9wdWxhdGVfaW5faXRlcmAuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGJhbm5lciBwcmVmaXggaXMgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQgYnkgdGhlIHByb2Nlc3MuIFdoYXQgY2FsbHMgYHBvcHVsYXRlX2luX2l0ZXJgIHdpbGwgdGVsbCBtZSBldmVyeXRoaW5nLCBhbmQgd2hhdCBjYWxscyBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjMzLjA1MzYxNzkwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDUwNzgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwb3B1bGF0ZV9pbl9pdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNjI9c3RhdGljIHZvaWQgZmluaXNoX3NraXAoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA3MS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDcyOnN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA3My17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMTQxPWludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTUyLVxcdCAqIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgcGVuZGluZyBoZXJlLiAgSWYgbm90LFxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNTM6XFx0ICogYXZvaWQgY2FsbGluZyBwb3B1bGF0ZV9pbl9pdGVyKCkgYXMgaWYgd2UgcmVhZCBzb21ldGhpbmdcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTU0LVxcdCAqIChjZXBoX3RjcF9yZWN2KCkgd291bGQgaW1tZWRpYXRlbHkgcmV0dXJuIDEpLlxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2My1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTY0OlxcdFxcdHJldCA9IHBvcHVsYXRlX2luX2l0ZXIoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTY1LVxcdFxcdGlmIChyZXQgXFx1MDAzYz0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozMy4wOTQxMjkzMTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEzNTgyOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBgcG9wdWxhdGVfaW5faXRlcmAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoYXQgdGhlIHJlYWRpbmcgcHJvY2VzcyB3aXRoaW4gdGhlIENlcGggY29ubmVjdGlvbiB2ZXJzaW9uIDIgbWlnaHQgYmUgdGhlIGNyaXRpY2FsIGFyZWEgdG8gaW52ZXN0aWdhdGUuIE15IGV4cGVydCBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1heSBiZSBhbiBpc3N1ZSB3aXRoIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBwYXJzZWQgb3Igc3RydWN0dXJlZCBkdXJpbmcgYSByZWFkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGF0IHRoZSBwb2ludCB3aGVyZSBgcG9wdWxhdGVfaW5faXRlcmAgaXMgY2FsbGVkLiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gYW5kIGZ1bmN0aW9uYWxpdHkgb2YgYGNlcGhfY29uX3YyX3RyeV9yZWFkYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gZGF0YSByZXRyaWV2YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozNi4zMDc3MTU0NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0ODUxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2VwaF9jb25fdjJfdHJ5X3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NlcGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlci5jPTE1NDI9c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzQtXFx0XFx0aWYgKGNlcGhfbXNncjIoZnJvbV9tc2dyKGNvbi1cXHUwMDNlbXNncikpKVxcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NzU6XFx0XFx0XFx0cmV0ID0gY2VwaF9jb25fdjJfdHJ5X3JlYWQoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc2LVxcdFxcdGVsc2VcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozNi4zNjcyMDQwMzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE1MjExMjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIENFUEggTmV0d29yayBQcm90b2NvbCBQYXJzZXIqKlxuXG5Pa2F5LCBzbyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGlzIGNhbGxlZCBmcm9tIGBjZXBoX2Nvbl93b3JrZm5gIHdpdGhpbiB0aGUgYG5ldC9jZXBoL21lc3Nlbmdlci5jYCBmaWxlLiBSaWdodCwgdGhhdCdzIGRlZmluaXRlbHkgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUg4oCTIHNtYWNrIGluIHRoZSBjcml0aWNhbCBwYXRoISBHaXZlbiBteSBleHBlcnRpc2UgaW4gcHJvdG9jb2wgc2VjdXJpdHksIHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9idmlvdXM6IHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gc3ViamVjdCB0aGlzIHRvIHNvbWUgc2VyaW91cyBzdHJlc3MtdGVzdGluZy5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBDRVBILiBLbm93aW5nIGhvdyB0aGUgc3lzdGVtIGlzIGNvbmZpZ3VyZWQgaXMgY3J1Y2lhbCBmb3IgY3JhZnRpbmcgZWZmZWN0aXZlIGZ1enppbmcgaW5wdXRzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZGV0ZXJtaW5lIHdoYXQgcGFyYW1ldGVycyBtaWdodCBpbmZsdWVuY2UgaG93IGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgYmVoYXZlcyB1bmRlciBkaWZmZXJlbnQgY29uZGl0aW9ucy4gVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSB0aGUgbWVzc2FnZSBzaXplIGxpbWl0cywgY29tcHJlc3Npb24gc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgcHJvdG9jb2wgZmVhdHVyZXMgaW4gdXNlLiBUaGlzIGNvbnRleHR1YWwga25vd2xlZGdlIHdpbGwgYmUgZXNzZW50aWFsIHRvIHRhaWxvciBmdXp6aW5nIGNhbXBhaWducyB0aGF0IG1heGltaXplIGNvdmVyYWdlIGFuZCB1bmNvdmVyIGhpZGRlbiB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozOS45ODI0MTgyODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTEyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRVBIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0xJQlxcbm5ldC9jZXBoL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ2VwaCBjb3JlIGxpYnJhcnlcXFwiXFxuLS1cXG5uZXQvY2VwaC9LY29uZmlnLTIyLVxcbm5ldC9jZXBoL0tjb25maWc6MjM6Y29uZmlnIENFUEhfTElCX1BSRVRUWURFQlVHXFxubmV0L2NlcGgvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJJbmNsdWRlIGZpbGU6bGluZSBpbiBjZXBoIGRlYnVnIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9jZXBoL0tjb25maWctMzQtXFxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxcbm5ldC9jZXBoL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiVXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo0MC4wMjQzMzYwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU2MzYzNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBpczpcblxuKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCB0aGUgc3RhcnRpbmcgcG9pbnQgaXMgYENFUEhfTElCYC4gVGhhdCdzIHdoYXQgSSdtIGRlYWxpbmcgd2l0aC4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIGxldCdzIHRha2UgYSBxdWljayBsb29rIGFyb3VuZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncyBsdXJraW5nIGFyb3VuZD8gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgc3lzdGVtIGJlZm9yZSBJIGNhbiBlZmZlY3RpdmVseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiBgQ0VQSF9MSUJgIGluIGlzb2xhdGlvbi4gV2hhdCBlbHNlIGNvdWxkIGJlIGluIHBsYXk/IExldCBtZSBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIG9yIGNvbXBldGluZyBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjQzLjQ4MDcwMjI4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMzEyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL0tjb25maWc9Mj1jb25maWcgQ0VQSF9MSUJcXG5uZXQvY2VwaC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNlcGggY29yZSBsaWJyYXJ5XFxcIlxcbm5ldC9jZXBoL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvY2VwaC9LY29uZmlnLTUtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5uZXQvY2VwaC9LY29uZmlnPTIzPWNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xcbm5ldC9jZXBoL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiSW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcXFwiXFxubmV0L2NlcGgvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIENFUEhfTElCXFxubmV0L2NlcGgvS2NvbmZpZy0yNi1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9jZXBoL0tjb25maWc9MzU9Y29uZmlnIENFUEhfTElCX1VTRV9ETlNfUkVTT0xWRVJcXG5uZXQvY2VwaC9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlVzZSBpbi1rZXJuZWwgc3VwcG9ydCBmb3IgRE5TIGxvb2t1cFxcXCJcXG5uZXQvY2VwaC9LY29uZmlnOjM3OlxcdGRlcGVuZHMgb24gQ0VQSF9MSUJcXG5uZXQvY2VwaC9LY29uZmlnLTM4LVxcdHNlbGVjdCBETlNfUkVTT0xWRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6NDMuNTI0MDM4MTg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTc2NDgxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyBEZXBlbmRlbmNpZXMgZm9yIENlcGggSW50ZWdyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgbmV3IHN5c3RlbSBpcyBnb2luZyB0byBpbnRlZ3JhdGUgd2l0aCBDZXBoLiBUaGUga2V5IGxpYnJhcnksIGBDRVBIX0xJQmAsIHRoYXQncyBnb3QgdG8gYmUgaW52b2x2ZWQuIEkgc2VlIGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgYWxyZWFkeSDigJMgc3BlY2lmaWNhbGx5LCBgQ0VQSF9MSUJgIGRlcGVuZHMgb24gYElORVRgLiBUaGF0J3Mgbm90IHN1cnByaXNpbmcsIHdlJ2xsIG5lZWQgbmV0d29yayBjb25uZWN0aXZpdHkgZm9yIENlcGggY29tbXVuaWNhdGlvbiwgc28gdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBHaXZlbiB0aGF0LCBlbmFibGluZyBgQ0VQSF9MSUJgIGJlY29tZXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCwgYW5kIHJlYWxseSB0aGUgb25seSBzZW5zaWJsZSBvcHRpb24uIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCB3aGF0IGFib3V0IHRoZSBmaWxlc3lzdGVtIHNpZGU/IElzIHRoZXJlIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBhIENlcGggZmlsZXN5c3RlbSBzcGVjaWZpY2FsbHk/IEknbSB0aGlua2luZywgYENFUEhfRlNgPyBMZXQncyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjQ3LjU0MTY4OTM0OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNjc1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENFUEhfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0ZTXFxuZnMvY2VwaC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNlcGggZGlzdHJpYnV0ZWQgZmlsZSBzeXN0ZW1cXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9MTk9aWYgQ0VQSF9GU1xcbmZzL2NlcGgvS2NvbmZpZzoyMDpjb25maWcgQ0VQSF9GU0NBQ0hFXFxuZnMvY2VwaC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkVuYWJsZSBDZXBoIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mjc9ZW5kaWZcXG5mcy9jZXBoL0tjb25maWctMjgtXFxuZnMvY2VwaC9LY29uZmlnOjI5OmNvbmZpZyBDRVBIX0ZTX1BPU0lYX0FDTFxcbmZzL2NlcGgvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJDZXBoIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvY2VwaC9LY29uZmlnLTM4LVxcbmZzL2NlcGgvS2NvbmZpZzozOTpjb25maWcgQ0VQSF9GU19TRUNVUklUWV9MQUJFTFxcbmZzL2NlcGgvS2NvbmZpZy00MC1cXHRib29sIFxcXCJDZXBoRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo0Ny41ODUwNjQyNTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNzY3MjAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBDZXBoKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgQ2VwaCBjb2RlYmFzZS4gVGhlIGZpbGVzeXN0ZW0gY29tcG9uZW50LCBgQ0VQSF9GU2AsIGFuZCB0aGUgY29yZSBsaWJyYXJ5LCBgQ0VQSF9MSUJgLCBhcmUgdGhlIHByaW1lIHRhcmdldHMuIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZm9jdXMgb3VyIGVmZm9ydHMgb24gZWl0aGVyIG9mIHRoZXNlLCBidXQgaWRlYWxseSwgb24gYm90aC4gVGhlIHJlbGF0aW9uc2hpcCBpcyBpbXBvcnRhbnQuIEVuYWJsaW5nIGBDRVBIX0ZTYCBhdXRvbWF0aWNhbGx5IGJyaW5ncyBpbiBgQ0VQSF9MSUJgLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gYGZzL2NlcGgvS2NvbmZpZ2AsIHRvIHNlZSB3aGF0J3MgYXZhaWxhYmxlIGFuZCBob3cgd2UgY2FuIGJlc3QgbGV2ZXJhZ2UgdGhlbSBmb3IgZnV6emluZy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo1MS42OTI3MzkzNzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjk4NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBDRVBIX0xJQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jZXBoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcXG4tLVxcbmZzL2NlcGgvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gSU5FVFxcbmZzL2NlcGgvS2NvbmZpZzo1OlxcdHNlbGVjdCBDRVBIX0xJQlxcbmZzL2NlcGgvS2NvbmZpZy02LVxcdHNlbGVjdCBORVRGU19TVVBQT1JUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjUxLjczNDQ0MTUzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ3MjIzOTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgQ0VQSCBNb2R1bGUgRGVwZW5kZW5jaWVzIGFuZCBJZGVudGlmeWluZyBLZXkgRnVuY3Rpb25zKipcblxuUmlnaHQsIHNvIGBDRVBIX0ZTYCBjbGVhcmx5IGRlcGVuZHMgb24gYENFUEhfTElCYC4gVGhhdCBtYWtlcyBzZW5zZS4gTm93LCBsZXQncyBkcmlsbCBkb3duIGFuZCBmaW5kIHRoZSBpbXBvcnRhbnQgYml0cyB3aXRoaW4gdGhpcyByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIHN5bWJvbHMuXG5cbkZpcnN0LCBJIHNlZSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCBhbmQgYHBvcHVsYXRlX2luX2l0ZXJgIGFyZSBzdGF0aWMuIEFscmlnaHQsIGxpa2VseSBpbnRlcm5hbCB1dGlsaXRpZXMsIGJ1dCBwb3RlbnRpYWxseSByZWxldmFudC4gVGhlbiB0aGVyZSdzIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgLSB0aGF0J3MgKm5vdCogc3RhdGljLCBzbyBpdCdzIHByb2JhYmx5IGV4cG9ydGVkIG9yIGF0IGxlYXN0IHVzZWQgbW9yZSB3aWRlbHkuIFRoYXQgb25lIGNhdGNoZXMgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5LiBMZXQncyBkaWcgaW50byBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjMzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6NTUuODgxNjY4NDY0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzM5OTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NlcGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo1NS45MjUwNzM2NDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0OTY2OTQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ2VwaCBDb25uZWN0aW9uIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgZnVuY3Rpb247IHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgY29ubmVjdGlvbiBsb2dpYy4gQnV0LCBhcyBhbHdheXMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSB3b25kZXIsIGFyZSB0aGVyZSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBUaGlzIGlzIGFib3V0IGJlaW5nIHRob3JvdWdoLCBhZnRlciBhbGwuXG5cbk5vdywgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBjZXBoX2Nvbl93b3JrZm5gIGlzIHByb2JhYmx5IHRoZSBjb3JlIHdvcmsgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LCB0aGUgY2VudHJhbCBwcm9jZXNzaW5nIHBvaW50LiBUaW1lIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhbmQgdmVyaWZ5IHRoaXMuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZnVuY3Rpb27igJlzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVycyBpbiB0aGUgbGlicmFyeS4gSSBzaG91bGQgZGl2ZSBpbnRvIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AgYW5kIGh1bnQgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGZpbGUgdGhhdCBtaWdodCBiZSBjb25uZWN0ZWQuIFRoaXMgd2lsbCBoZWxwIG1lIGdhaW4gYSBtb3JlIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRhdGEgZmxvdyBhbmQgaWRlbnRpZnkgYW55IGNyaXRpY2FsIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIGNvbm5lY3Rpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1MiwiT3V0cHV0VG9rZW5zIjo2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjU5Ljc3NDc0NTk0OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxODUzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogY2VwaF9jb25fdjJfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzI4MT1zdGF0aWMgaW50IHBvcHVsYXRlX291dF9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMzNTgtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM1OTppbnQgY2VwaF9jb25fdjJfdHJ5X3dyaXRlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzYwLXtcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTM1NjU9c3RhdGljIHZvaWQgcmV2b2tlX2F0X2ZpbmlzaF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbixcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM2MjMtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzYyNDp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHN0cnVjdCBjZXBoX21zZyAqbXNnKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM2MjUte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzcyOD1zdGF0aWMgdm9pZCByZXZva2VfYXRfaGFuZGxlX2VwaWxvZ3VlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM3NDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc0MTp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZV9pbmNvbWluZyhzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc0Mi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzY1LVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjM3NjY6Ym9vbCBjZXBoX2Nvbl92Ml9vcGVuZWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM3Njcte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3MC1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozNzcxOnZvaWQgY2VwaF9jb25fdjJfcmVzZXRfc2Vzc2lvbihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3Mi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzc5LVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjM3ODA6dm9pZCBjZXBoX2Nvbl92Ml9yZXNldF9wcm90b2NvbChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc4MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjU5LjgxODk0NTIwN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA3MTkzMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIENlcGggQ29ubmVjdGlvbiBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGlzIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIG9uIHRoZXNlIGNvbm5lY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBlc3BlY2lhbGx5IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29yayBzdGFjay4gU28sIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgY2VwaF9jb25fd29ya2ZuYCBmdW5jdGlvbiwgc2luY2UgdGhhdCdzIHByb2JhYmx5IHdoZXJlIHRoZSBoZWF2eSBsaWZ0aW5nIHdpdGhpbiB0aGF0IGNvbm5lY3Rpb24gaGFuZGxlciBoYXBwZW5zLiBMb29raW5nIGluIGBuZXQvY2VwaC9tZXNzZW5nZXIuY2Agc2VlbXMgbGlrZSB0aGUgY29ycmVjdCBzcG90IGZvciB0aGF0LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGhvdyB0aGUgcGllY2VzIGZpdCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA4NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjQwOjAzLjMyNjE0MDcyNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4Mjg4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2VwaF9jb25fd29ya2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlci5jPTE0Nj1zdGF0aWMgdm9pZCBjYW5jZWxfY29uKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTQ3OnN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTQ4LXN0YXRpYyB2b2lkIGNvbl9mYXVsdChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pO1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM9NjMyPXZvaWQgY2VwaF9jb25faW5pdChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHZvaWQgKnByaXZhdGUsXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy02NDYtXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmNvbi1cXHUwMDNlb3V0X3NlbnQpO1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjY0NzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2Y29uLVxcdTAwM2V3b3JrLCBjZXBoX2Nvbl93b3JrZm4pO1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTY0OC1cXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlci5jPTE1MjA9c3RhdGljIHZvaWQgY29uX2ZhdWx0X2ZpbmlzaChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTQxLSAqL1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NDI6c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTQzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6NDA6MDMuMzY5OTc1NTM0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Nzg3MTgzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIENlcGggTWVzc2VuZ2VyIHYyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBDZXBoIHBhdGNoLiBUaGUgYGNlcGhfY29uX3dvcmtmbmAgZnVuY3Rpb24gaXMgZGVjbGFyZWQgc3RhdGljLCBzbyB0aGF0IG5hcnJvd3MgZG93biBteSBmb2N1cy4gYGNlcGhfY29uX3YyX3RyeV9yZWFkYCBzZWVtcyBsaWtlIHRoZSBtb3N0IHJlbGV2YW50IHN5bWJvbCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaGF0J3MgdGhlIGtleSBlbnRyeSBwb2ludCwgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0LCBsZXQncyBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGUgY29uZmlnIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhhdCBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAsIGFuZCBgQ0VQSF9MSUJgIGFsc28gZGVwZW5kcyBvbiBgSU5FVGAuICBTaW5jZSBgQ0VQSF9GU2AgaW5jbHVkZXMgYElORVRgLCB0aGF0IGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBmdXp6aW5nLiBgQ0VQSF9MSUJgIGlzIGFsc28gZ29vZCwgYnV0IG5vdCAqbmVjZXNzYXJ5Ki5cblxuU28sIGhlcmUncyBteSBzdW1tYXJpemVkIGFzc2Vzc21lbnQ6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBBYnNvbHV0ZWx5LCB5ZXMuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogSSdtIHplcm9pbmcgaW4gb24gYGNlcGhfY29uX3YyX3RyeV9yZWFkYC5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogIEknbGwgZW5hYmxlIGBDRVBIX0ZTYCBhbmQgYENFUEhfTElCYCBqdXN0IHRvIGJlIHNhZmUuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyBuZXR3b3JrLWFjY2Vzc2libGUgY29kZSBpbnZvbHZlZCBpbiBwYXJzaW5nIHRoZSBwcm90b2NvbC4gVGhpcyBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIgb3IgY2xpZW50LiBJdCdzIGEgY2xhc3NpYyB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MDMsIk91dHB1dFRva2VucyI6MTAxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjQwOjA4Ljg0ODY5NzE0MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjAzOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRVBIX0ZTXCIsXG4gICAgXCJDRVBIX0xJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBiYW5uZXIgcGF5bG9hZCBsZW5ndGggaW4gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sIGhhbmRsaW5nLiBUaGlzIGlzIHJlYWNoYWJsZSBuZXR3b3JrIHByb3RvY29sIHBhcnNpbmcgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIvY2xpZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNFUEhfRlNcIixcbiAgICBcIkNFUEhfTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF9jb25fdjJfdHJ5X3JlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGJhbm5lciBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgaGFuZGxpbmcuIFRoaXMgaXMgcmVhY2hhYmxlIG5ldHdvcmsgcHJvdG9jb2wgcGFyc2luZyBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIG1hbGljaW91cyBvciBtaXNiZWhhdmluZyBDZXBoIHNlcnZlci9jbGllbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 11:37:40 +0000 UTC FinishedAt: 2026-07-31 11:40:10 +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": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CEPH_FS", "CEPH_LIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CEPH_FS", "CEPH_LIB" ], "series_id": "8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ceph_con_v2_try_read" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NFUEhfRlMmIzM0OywKICAgICYjMzQ7Q0VQSF9MSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGJhbm5lciBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgaGFuZGxpbmcuIFRoaXMgaXMgcmVhY2hhYmxlIG5ldHdvcmsgcHJvdG9jb2wgcGFyc2luZyBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIG1hbGljaW91cyBvciBtaXNiZWhhdmluZyBDZXBoIHNlcnZlci9jbGllbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmNjY4MTdkOGZkMDVmYWY3MGQ3ZGZmNzkzNGM5ZTg5YjJiMTNlMTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTE6Mzk6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuaW5kZXggMDVmNmVlYTI5OWZjMC4uYjMyM2I2MWU3MDIzOSAxMDA2NDRcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuQEAgLTIxNDIsNiAmIzQzOzIxNDIsMTEgQEAgc3RhdGljIGludCBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuIFx0cGF5bG9hZF9sZW4gPSBjZXBoX2RlY29kZV8xNihcdTAwMjZwKTtcbiBcdGRvdXQoXCYjMzQ7JXMgY29uICVwIHBheWxvYWRfbGVuICVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY29uLCBwYXlsb2FkX2xlbik7XG4gXG4mIzQzO1x0aWYgKHBheWxvYWRfbGVuIFx1MDAzYyBzaXplb2YodTY0KSAmIzQzOyBzaXplb2YodTY0KSkge1xuJiM0MztcdFx0Y29uLVx1MDAzZWVycm9yX21zZyA9IFwmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuXCYjMzQ7O1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiBwcmVwYXJlX3JlYWRfYmFubmVyX3BheWxvYWQoY29uLCBwYXlsb2FkX2xlbik7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRVBIX0ZTJiMzNDssCiAgICAmIzM0O0NFUEhfTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBiYW5uZXIgcGF5bG9hZCBsZW5ndGggaW4gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sIGhhbmRsaW5nLiBUaGlzIGlzIHJlYWNoYWJsZSBuZXR3b3JrIHByb3RvY29sIHBhcnNpbmcgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIvY2xpZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjY2ODE3ZDhmZDA1ZmFmNzBkN2RmZjc5MzRjOWU4OWIyYjEzZTEwOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDExOjM5OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYwppbmRleCAwNWY2ZWVhMjk5ZmMwLi5iMzIzYjYxZTcwMjM5IDEwMDY0NAotLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYwpAQCAtMjE0Miw2ICYjNDM7MjE0MiwxMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pCiAJcGF5bG9hZF9sZW4gPSBjZXBoX2RlY29kZV8xNigmYW1wO3ApOwogCWRvdXQoJiMzNDslcyBjb24gJXAgcGF5bG9hZF9sZW4gJWRcbiYjMzQ7LCBfX2Z1bmNfXywgY29uLCBwYXlsb2FkX2xlbik7CiAKJiM0MzsJaWYgKHBheWxvYWRfbGVuICZsdDsgc2l6ZW9mKHU2NCkgJiM0Mzsgc2l6ZW9mKHU2NCkpIHsKJiM0MzsJCWNvbi0mZ3Q7ZXJyb3JfbXNnID0gJiMzNDtwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlbiYjMzQ7OwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBhZGRlZCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sIGhhbmRsaW5nLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY2hlY2sgd2l0aGluIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgOgoKYGBgYwomIzQzOwlpZiAocGF5bG9hZF9sZW4gJmx0OyBzaXplb2YodTY0KSAmIzQzOyBzaXplb2YodTY0KSkgewomIzQzOwkJY29uLSZndDtlcnJvcl9tc2cgPSAmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuJiMzNDs7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQpgYGAKCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBnb29kLCBwcm9hY3RpdmUgYWRkaXRpb24uIEl0JiMzOTtzIHZhbGlkYXRpbmcgdGhlIGBwYXlsb2FkX2xlbmAgdG8gZW5zdXJlIGl0IG1lZXRzIGEgbWluaW11bSBzaXplIHJlcXVpcmVtZW50IGJlZm9yZSB0aGUgZnVuY3Rpb24gY29udGludWVzIHByb2Nlc3NpbmcuIFRoZSBjb21wYXJpc29uIGBwYXlsb2FkX2xlbiAmbHQ7IHNpemVvZih1NjQpICYjNDM7IHNpemVvZih1NjQpYCBpbXBsaWVzIHRoYXQgdGhlIGJhbm5lciBwYXlsb2FkIHJlcXVpcmVzIGF0IGxlYXN0IHR3byA2NC1iaXQgdW5zaWduZWQgaW50ZWdlcnMuIElmIHRoZSBwYXlsb2FkIGlzIHNtYWxsZXIgdGhhbiB0aGF0LCB0aGUgY29kZSBub3cgZmxhZ3MgaXQgYXMgYSBwcm90b2NvbCBlcnJvciwgc2V0cyBhbiBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLCBhbmQgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgcHJldmVudGluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVlIHRvIG1hbGZvcm1lZCBvciB0cnVuY2F0ZWQgYmFubmVyIG1lc3NhZ2VzLgoKSSBuZWVkIHRvIGRlbHZlIGRlZXBlciBhbmQgcmV2aWV3IGJvdGggYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYCBhbmQgc3BlY2lmaWNhbGx5IGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGVjayBhbmQgd2hhdCB0aG9zZSB0d28gNjQtYml0IHZhbHVlcyByZXByZXNlbnQuIEl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIGluaXRpYWwgaGFuZHNoYWtlIGluZm9ybWF0aW9uIG9yIHZlcnNpb25pbmcuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoaXMgdmFsaWRhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBtZXNzYWdlIGhhbmRsaW5nIGFuZCBlcnJvciByZWNvdmVyeS4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgcmVhc29uYWJsZSwgdGhvdWdoIHNvbWV3aGF0IGJhc2ljLCBwcm90b2NvbCBzYW5pdHkgY2hlY2ssIGFuZCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGVmZmljYWN5IHdpdGhpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jZXNzX2Jhbm5lcl9wcmVmaXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI0LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4MC1cdGlmIChjb24tXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDgxOlx0XHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODItXHR9IGVsc2UgaWYgKGNvbi1cdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCBVc2FnZSoqCgpSaWdodCwgc28gYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAgaXMgc3RhdGljLCB3aGljaCBpcyBnb29kIGZvciBwcmVkaWN0YWJpbGl0eSwgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBwb3B1bGF0ZV9pbl9pdGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBiZWNhdXNlIGEgc3RhdGljIHByZWZpeCBpbXBsaWVzIGl0JiMzOTtzIGNvbnNpc3RlbnQgYWNyb3NzIHRoZSBpdGVyYXRpb25zLiBUaGUga2V5IHdpbGwgYmUgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgb2YgYHBvcHVsYXRlX2luX2l0ZXJgLiBVbmRlcnN0YW5kaW5nIHRob3NlIGNhbGwgc2l0ZXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBiYW5uZXIgcHJlZml4IGlzIGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkIGJ5IHRoZSBwcm9jZXNzLiBXaGF0IGNhbGxzIGBwb3B1bGF0ZV9pbl9pdGVyYCB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZywgYW5kIHdoYXQgY2FsbHMgYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9wdWxhdGVfaW5faXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNjI9c3RhdGljIHZvaWQgZmluaXNoX3NraXAoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzEtXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDcyOnN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDczLXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMTQxPWludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1Mi1cdCAqIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgcGVuZGluZyBoZXJlLiAgSWYgbm90LFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE1MzpcdCAqIGF2b2lkIGNhbGxpbmcgcG9wdWxhdGVfaW5faXRlcigpIGFzIGlmIHdlIHJlYWQgc29tZXRoaW5nXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTU0LVx0ICogKGNlcGhfdGNwX3JlY3YoKSB3b3VsZCBpbW1lZGlhdGVseSByZXR1cm4gMSkuXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2My1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNjQ6XHRcdHJldCA9IHBvcHVsYXRlX2luX2l0ZXIoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNjUtXHRcdGlmIChyZXQgXHUwMDNjPSAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFJlYWRpbmcgUHJvY2VzcyoqCgpPa2F5LCBzbyBgcG9wdWxhdGVfaW5faXRlcmAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoYXQgdGhlIHJlYWRpbmcgcHJvY2VzcyB3aXRoaW4gdGhlIENlcGggY29ubmVjdGlvbiB2ZXJzaW9uIDIgbWlnaHQgYmUgdGhlIGNyaXRpY2FsIGFyZWEgdG8gaW52ZXN0aWdhdGUuIE15IGV4cGVydCBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1heSBiZSBhbiBpc3N1ZSB3aXRoIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBwYXJzZWQgb3Igc3RydWN0dXJlZCBkdXJpbmcgYSByZWFkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgcG9pbnQgd2hlcmUgYHBvcHVsYXRlX2luX2l0ZXJgIGlzIGNhbGxlZC4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGFuZCBmdW5jdGlvbmFsaXR5IG9mIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIGRhdGEgcmV0cmlldmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NlcGhfY29uX3YyX3RyeV9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NlcGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlci5jPTE1NDI9c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc0LVx0XHRpZiAoY2VwaF9tc2dyMihmcm9tX21zZ3IoY29uLVx1MDAzZW1zZ3IpKSlcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NzU6XHRcdFx0cmV0ID0gY2VwaF9jb25fdjJfdHJ5X3JlYWQoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzYtXHRcdGVsc2Vcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0MC1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNDE6aW50IGNlcGhfY29uX3YyX3RyeV9yZWFkKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBDRVBIIE5ldHdvcmsgUHJvdG9jb2wgUGFyc2VyKioKCk9rYXksIHNvIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgaXMgY2FsbGVkIGZyb20gYGNlcGhfY29uX3dvcmtmbmAgd2l0aGluIHRoZSBgbmV0L2NlcGgvbWVzc2VuZ2VyLmNgIGZpbGUuIFJpZ2h0LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUg4oCTIHNtYWNrIGluIHRoZSBjcml0aWNhbCBwYXRoISBHaXZlbiBteSBleHBlcnRpc2UgaW4gcHJvdG9jb2wgc2VjdXJpdHksIHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9idmlvdXM6IHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gc3ViamVjdCB0aGlzIHRvIHNvbWUgc2VyaW91cyBzdHJlc3MtdGVzdGluZy4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggQ0VQSC4gS25vd2luZyBob3cgdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIGlzIGNydWNpYWwgZm9yIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGRldGVybWluZSB3aGF0IHBhcmFtZXRlcnMgbWlnaHQgaW5mbHVlbmNlIGhvdyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGJlaGF2ZXMgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMuIFRoaXMgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIG1lc3NhZ2Ugc2l6ZSBsaW1pdHMsIGNvbXByZXNzaW9uIHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIHByb3RvY29sIGZlYXR1cmVzIGluIHVzZS4gVGhpcyBjb250ZXh0dWFsIGtub3dsZWRnZSB3aWxsIGJlIGVzc2VudGlhbCB0byB0YWlsb3IgZnV6emluZyBjYW1wYWlnbnMgdGhhdCBtYXhpbWl6ZSBjb3ZlcmFnZSBhbmQgdW5jb3ZlciBoaWRkZW4gdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0VQSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xuLS1cbm5ldC9jZXBoL0tjb25maWctMjItXG5uZXQvY2VwaC9LY29uZmlnOjIzOmNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xubmV0L2NlcGgvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvY2VwaC9LY29uZmlnLTM0LVxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxubmV0L2NlcGgvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7VXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOgoKKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgdGhlIHN0YXJ0aW5nIHBvaW50IGlzIGBDRVBIX0xJQmAuIFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhcm91bmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIGx1cmtpbmcgYXJvdW5kPyBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzeXN0ZW0gYmVmb3JlIEkgY2FuIGVmZmVjdGl2ZWx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIGBDRVBIX0xJQmAgaW4gaXNvbGF0aW9uLiBXaGF0IGVsc2UgY291bGQgYmUgaW4gcGxheT8gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgb3IgY29tcGV0aW5nIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NlcGgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xubmV0L2NlcGgvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUXG5uZXQvY2VwaC9LY29uZmlnLTUtXHRzZWxlY3QgQ1JDMzJcbi0tXG5uZXQvY2VwaC9LY29uZmlnPTIzPWNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xubmV0L2NlcGgvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcJiMzNDtcbm5ldC9jZXBoL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTI2LVx0ZGVmYXVsdCBuXG4tLVxubmV0L2NlcGgvS2NvbmZpZz0zNT1jb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxubmV0L2NlcGgvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7VXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXCYjMzQ7XG5uZXQvY2VwaC9LY29uZmlnOjM3Olx0ZGVwZW5kcyBvbiBDRVBIX0xJQlxubmV0L2NlcGgvS2NvbmZpZy0zOC1cdHNlbGVjdCBETlNfUkVTT0xWRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyBEZXBlbmRlbmNpZXMgZm9yIENlcGggSW50ZWdyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBuZXcgc3lzdGVtIGlzIGdvaW5nIHRvIGludGVncmF0ZSB3aXRoIENlcGguIFRoZSBrZXkgbGlicmFyeSwgYENFUEhfTElCYCwgdGhhdCYjMzk7cyBnb3QgdG8gYmUgaW52b2x2ZWQuIEkgc2VlIGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgYWxyZWFkeSDigJMgc3BlY2lmaWNhbGx5LCBgQ0VQSF9MSUJgIGRlcGVuZHMgb24gYElORVRgLiBUaGF0JiMzOTtzIG5vdCBzdXJwcmlzaW5nLCB3ZSYjMzk7bGwgbmVlZCBuZXR3b3JrIGNvbm5lY3Rpdml0eSBmb3IgQ2VwaCBjb21tdW5pY2F0aW9uLCBzbyB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEdpdmVuIHRoYXQsIGVuYWJsaW5nIGBDRVBIX0xJQmAgYmVjb21lcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwLCBhbmQgcmVhbGx5IHRoZSBvbmx5IHNlbnNpYmxlIG9wdGlvbi4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIHdoYXQgYWJvdXQgdGhlIGZpbGVzeXN0ZW0gc2lkZT8gSXMgdGhlcmUgYSBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGEgQ2VwaCBmaWxlc3lzdGVtIHNwZWNpZmljYWxseT8gSSYjMzk7bSB0aGlua2luZywgYENFUEhfRlNgPyBMZXQmIzM5O3MgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRVBIX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfRlNcbmZzL2NlcGgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVwmIzM0O1xuLS1cbmZzL2NlcGgvS2NvbmZpZz0xOT1pZiBDRVBIX0ZTXG5mcy9jZXBoL0tjb25maWc6MjA6Y29uZmlnIENFUEhfRlNDQUNIRVxuZnMvY2VwaC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgQ2VwaCBjbGllbnQgY2FjaGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvY2VwaC9LY29uZmlnPTI3PWVuZGlmXG5mcy9jZXBoL0tjb25maWctMjgtXG5mcy9jZXBoL0tjb25maWc6Mjk6Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXG5mcy9jZXBoL0tjb25maWctMzAtXHRib29sIFwmIzM0O0NlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9jZXBoL0tjb25maWctMzgtXG5mcy9jZXBoL0tjb25maWc6Mzk6Y29uZmlnIENFUEhfRlNfU0VDVVJJVFlfTEFCRUxcbmZzL2NlcGgvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7Q2VwaEZTIFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzAwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgQ2VwaCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgQ2VwaCBjb2RlYmFzZS4gVGhlIGZpbGVzeXN0ZW0gY29tcG9uZW50LCBgQ0VQSF9GU2AsIGFuZCB0aGUgY29yZSBsaWJyYXJ5LCBgQ0VQSF9MSUJgLCBhcmUgdGhlIHByaW1lIHRhcmdldHMuIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZm9jdXMgb3VyIGVmZm9ydHMgb24gZWl0aGVyIG9mIHRoZXNlLCBidXQgaWRlYWxseSwgb24gYm90aC4gVGhlIHJlbGF0aW9uc2hpcCBpcyBpbXBvcnRhbnQuIEVuYWJsaW5nIGBDRVBIX0ZTYCBhdXRvbWF0aWNhbGx5IGJyaW5ncyBpbiBgQ0VQSF9MSUJgLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZmlsZXN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGBmcy9jZXBoL0tjb25maWdgLCB0byBzZWUgd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyB3ZSBjYW4gYmVzdCBsZXZlcmFnZSB0aGVtIGZvciBmdXp6aW5nLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgYnVpbGQgdGFyZ2V0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IENFUEhfTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvS2NvbmZpZz0yPWNvbmZpZyBDRVBIX0ZTXG4tLVxuZnMvY2VwaC9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIElORVRcbmZzL2NlcGgvS2NvbmZpZzo1Olx0c2VsZWN0IENFUEhfTElCXG5mcy9jZXBoL0tjb25maWctNi1cdHNlbGVjdCBORVRGU19TVVBQT1JUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgQ0VQSCBNb2R1bGUgRGVwZW5kZW5jaWVzIGFuZCBJZGVudGlmeWluZyBLZXkgRnVuY3Rpb25zKioKClJpZ2h0LCBzbyBgQ0VQSF9GU2AgY2xlYXJseSBkZXBlbmRzIG9uIGBDRVBIX0xJQmAuIFRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIGZpbmQgdGhlIGltcG9ydGFudCBiaXRzIHdpdGhpbiB0aGlzIHJlbGF0aW9uc2hpcC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgc3ltYm9scy4KCkZpcnN0LCBJIHNlZSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCBhbmQgYHBvcHVsYXRlX2luX2l0ZXJgIGFyZSBzdGF0aWMuIEFscmlnaHQsIGxpa2VseSBpbnRlcm5hbCB1dGlsaXRpZXMsIGJ1dCBwb3RlbnRpYWxseSByZWxldmFudC4gVGhlbiB0aGVyZSYjMzk7cyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIC0gdGhhdCYjMzk7cyAqbm90KiBzdGF0aWMsIHNvIGl0JiMzOTtzIHByb2JhYmx5IGV4cG9ydGVkIG9yIGF0IGxlYXN0IHVzZWQgbW9yZSB3aWRlbHkuIFRoYXQgb25lIGNhdGNoZXMgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5LiBMZXQmIzM5O3MgZGlnIGludG8gYGNlcGhfY29uX3YyX3RyeV9yZWFkYCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0MC1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNDE6aW50IGNlcGhfY29uX3YyX3RyeV9yZWFkKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDUyCgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENlcGggQ29ubmVjdGlvbiBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgZnVuY3Rpb247IHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgY29ubmVjdGlvbiBsb2dpYy4gQnV0LCBhcyBhbHdheXMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkgd29uZGVyLCBhcmUgdGhlcmUgb3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyBhYm91dCBiZWluZyB0aG9yb3VnaCwgYWZ0ZXIgYWxsLgoKTm93LCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgYGNlcGhfY29uX3dvcmtmbmAgaXMgcHJvYmFibHkgdGhlIGNvcmUgd29yayBmdW5jdGlvbiBpbiB0aGlzIGNvbnRleHQsIHRoZSBjZW50cmFsIHByb2Nlc3NpbmcgcG9pbnQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGFuZCB2ZXJpZnkgdGhpcy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZnVuY3Rpb27igJlzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVycyBpbiB0aGUgbGlicmFyeS4gSSBzaG91bGQgZGl2ZSBpbnRvIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AgYW5kIGh1bnQgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGZpbGUgdGhhdCBtaWdodCBiZSBjb25uZWN0ZWQuIFRoaXMgd2lsbCBoZWxwIG1lIGdhaW4gYSBtb3JlIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRhdGEgZmxvdyBhbmQgaWRlbnRpZnkgYW55IGNyaXRpY2FsIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIGNvbm5lY3Rpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogY2VwaF9jb25fdjJfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0Mi17XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzI4MT1zdGF0aWMgaW50IHBvcHVsYXRlX291dF9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzU4LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM1OTppbnQgY2VwaF9jb25fdjJfdHJ5X3dyaXRlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMzNjAte1xuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTM1NjU9c3RhdGljIHZvaWQgcmV2b2tlX2F0X2ZpbmlzaF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbixcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNjIzLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzYyNDp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHN0cnVjdCBjZXBoX21zZyAqbXNnKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzYyNS17XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzcyOD1zdGF0aWMgdm9pZCByZXZva2VfYXRfaGFuZGxlX2VwaWxvZ3VlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzQwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc0MTp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZV9pbmNvbWluZyhzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzQyLXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzY1LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc2Njpib29sIGNlcGhfY29uX3YyX29wZW5lZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzY3LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzcwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc3MTp2b2lkIGNlcGhfY29uX3YyX3Jlc2V0X3Nlc3Npb24oc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3Mi17XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3OS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjM3ODA6dm9pZCBjZXBoX2Nvbl92Ml9yZXNldF9wcm90b2NvbChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzgxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA4NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gQ2VwaCBDb25uZWN0aW9uIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBvbiB0aGVzZSBjb25uZWN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdywgZXNwZWNpYWxseSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIFNvLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGNlcGhfY29uX3dvcmtmbmAgZnVuY3Rpb24sIHNpbmNlIHRoYXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgdGhlIGhlYXZ5IGxpZnRpbmcgd2l0aGluIHRoYXQgY29ubmVjdGlvbiBoYW5kbGVyIGhhcHBlbnMuIExvb2tpbmcgaW4gYG5ldC9jZXBoL21lc3Nlbmdlci5jYCBzZWVtcyBsaWtlIHRoZSBjb3JyZWN0IHNwb3QgZm9yIHRoYXQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZXBoX2Nvbl93b3JrZm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNDY9c3RhdGljIHZvaWQgY2FuY2VsX2NvbihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTQ3OnN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNDgtc3RhdGljIHZvaWQgY29uX2ZhdWx0KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbik7XG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmM9NjMyPXZvaWQgY2VwaF9jb25faW5pdChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHZvaWQgKnByaXZhdGUsXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtNjQ2LVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y29uLVx1MDAzZW91dF9zZW50KTtcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjY0NzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmNvbi1cdTAwM2V3b3JrLCBjZXBoX2Nvbl93b3JrZm4pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmMtNjQ4LVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlci5jPTE1MjA9c3RhdGljIHZvaWQgY29uX2ZhdWx0X2ZpbmlzaChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU0MS0gKi9cbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NDI6c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjAzCgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ2VwaCBNZXNzZW5nZXIgdjIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgQ2VwaCBwYXRjaC4gVGhlIGBjZXBoX2Nvbl93b3JrZm5gIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIHN0YXRpYywgc28gdGhhdCBuYXJyb3dzIGRvd24gbXkgZm9jdXMuIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgc2VlbXMgbGlrZSB0aGUgbW9zdCByZWxldmFudCBzeW1ib2wgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gVGhhdCYjMzk7cyB0aGUga2V5IGVudHJ5IHBvaW50LCB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4KCk5vdywgYmVmb3JlIEkgY29tbWl0LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkgc2VlIHRoYXQgYENFUEhfRlNgIGRlcGVuZHMgb24gYElORVRgLCBhbmQgYENFUEhfTElCYCBhbHNvIGRlcGVuZHMgb24gYElORVRgLiAgU2luY2UgYENFUEhfRlNgIGluY2x1ZGVzIGBJTkVUYCwgdGhhdCBhbG9uZSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZnV6emluZy4gYENFUEhfTElCYCBpcyBhbHNvIGdvb2QsIGJ1dCBub3QgKm5lY2Vzc2FyeSouCgpTbywgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIGFzc2Vzc21lbnQ6CgoqICAgKipXb3J0aEZ1enppbmc6KiogQWJzb2x1dGVseSwgeWVzLgoqICAgKipGb2N1c1N5bWJvbHM6KiogSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogIEkmIzM5O2xsIGVuYWJsZSBgQ0VQSF9GU2AgYW5kIGBDRVBIX0xJQmAganVzdCB0byBiZSBzYWZlLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyBuZXR3b3JrLWFjY2Vzc2libGUgY29kZSBpbnZvbHZlZCBpbiBwYXJzaW5nIHRoZSBwcm90b2NvbC4gVGhpcyBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIgb3IgY2xpZW50LiBJdCYjMzk7cyBhIGNsYXNzaWMgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtDRVBIX0xJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NlcGhfY29uX3YyX3RyeV9yZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtDRVBIX0xJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NlcGhfY29uX3YyX3RyeV9yZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjI1LjM0NDkwNzQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1ODM0MDQ5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQ0VQSF9MSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6MjUuMzQ0OTEyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE1NzkyNzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjY2ODE3ZDhmZDA1ZmFmNzBkN2RmZjc5MzRjOWU4OWIyYjEzZTEwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxMTozOToyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXFxuaW5kZXggMDVmNmVlYTI5OWZjMC4uYjMyM2I2MWU3MDIzOSAxMDA2NDRcXG4tLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xcbisrKyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXFxuQEAgLTIxNDIsNiArMjE0MiwxMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuIFxcdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXFx1MDAyNnApO1xcbiBcXHRkb3V0KFxcXCIlcyBjb24gJXAgcGF5bG9hZF9sZW4gJWRcXFxcblxcXCIsIF9fZnVuY19fLCBjb24sIHBheWxvYWRfbGVuKTtcXG4gXFxuK1xcdGlmIChwYXlsb2FkX2xlbiBcXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcXG4rXFx0XFx0Y29uLVxcdTAwM2VlcnJvcl9tc2cgPSBcXFwicHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW5cXFwiO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIHByZXBhcmVfcmVhZF9iYW5uZXJfcGF5bG9hZChjb24sIHBheWxvYWRfbGVuKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6MjUuNjYxMzM0NDc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDMyNjY5NjkyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQ0VQSF9MSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyByZWFjaGFibGUgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1pc2JlaGF2aW5nIENlcGggc2VydmVyL2NsaWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjY2ODE3ZDhmZDA1ZmFmNzBkN2RmZjc5MzRjOWU4OWIyYjEzZTEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDExOjM5OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuaW5kZXggMDVmNmVlYTI5OWZjMC4uYjMyM2I2MWU3MDIzOSAxMDA2NDRcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG4rKysgYi9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuQEAgLTIxNDIsNiArMjE0MiwxMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4gXHRwYXlsb2FkX2xlbiA9IGNlcGhfZGVjb2RlXzE2KFx1MDAyNnApO1xuIFx0ZG91dChcIiVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxcblwiLCBfX2Z1bmNfXywgY29uLCBwYXlsb2FkX2xlbik7XG4gXG4rXHRpZiAocGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcbitcdFx0Y29uLVx1MDAzZWVycm9yX21zZyA9IFwicHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW5cIjtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjI1LjY2MTMzNTU4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjI1NjczNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgYWRkZWQgc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhleSd2ZSBpbnRyb2R1Y2VkIGEgY2hlY2sgd2l0aGluIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgOlxuXG5gYGBjXG4rXHRpZiAocGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcbitcdFx0Y29uLVx1MDAzZWVycm9yX21zZyA9IFwicHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW5cIjtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGdvb2QsIHByb2FjdGl2ZSBhZGRpdGlvbi4gSXQncyB2YWxpZGF0aW5nIHRoZSBgcGF5bG9hZF9sZW5gIHRvIGVuc3VyZSBpdCBtZWV0cyBhIG1pbmltdW0gc2l6ZSByZXF1aXJlbWVudCBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNvbnRpbnVlcyBwcm9jZXNzaW5nLiBUaGUgY29tcGFyaXNvbiBgcGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NClgIGltcGxpZXMgdGhhdCB0aGUgYmFubmVyIHBheWxvYWQgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2Vycy4gSWYgdGhlIHBheWxvYWQgaXMgc21hbGxlciB0aGFuIHRoYXQsIHRoZSBjb2RlIG5vdyBmbGFncyBpdCBhcyBhIHByb3RvY29sIGVycm9yLCBzZXRzIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UsIGFuZCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBwcmV2ZW50aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdWUgdG8gbWFsZm9ybWVkIG9yIHRydW5jYXRlZCBiYW5uZXIgbWVzc2FnZXMuXG5cbkkgbmVlZCB0byBkZWx2ZSBkZWVwZXIgYW5kIHJldmlldyBib3RoIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AgYW5kIHNwZWNpZmljYWxseSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hlY2sgYW5kIHdoYXQgdGhvc2UgdHdvIDY0LWJpdCB2YWx1ZXMgcmVwcmVzZW50LiBJdCdzIGxpa2VseSByZWxhdGVkIHRvIGluaXRpYWwgaGFuZHNoYWtlIGluZm9ybWF0aW9uIG9yIHZlcnNpb25pbmcuIEknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhpcyB2YWxpZGF0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIGVycm9yIHJlY292ZXJ5LiBUaGlzIGFwcGVhcnMgdG8gYmUgYSByZWFzb25hYmxlLCB0aG91Z2ggc29tZXdoYXQgYmFzaWMsIHByb3RvY29sIHNhbml0eSBjaGVjaywgYW5kIEknbGwgbmVlZCB0byBjb25maXJtIGl0cyBlZmZpY2FjeSB3aXRoaW4gdGhlIENlcGggbWVzc2VuZ2VyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOToyOS44MjM5MDU0MTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMjkzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY2Vzc19iYW5uZXJfcHJlZml4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTIxMDc9c3RhdGljIHZvaWQgcHJlcGFyZV9za2lwX21lc3NhZ2Uoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjEyNC1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzoyMTI1OnN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODAtXFx0aWYgKGNvbi1cXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzA4MTpcXHRcXHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDgyLVxcdH0gZWxzZSBpZiAoY29uLVxcdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjI5Ljg2NTAzOTYzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODg1NzQyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIFVzYWdlKipcblxuUmlnaHQsIHNvIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIGlzIHN0YXRpYywgd2hpY2ggaXMgZ29vZCBmb3IgcHJlZGljdGFiaWxpdHksIGFuZCBpdCdzIGNhbGxlZCBmcm9tIGBwb3B1bGF0ZV9pbl9pdGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBiZWNhdXNlIGEgc3RhdGljIHByZWZpeCBpbXBsaWVzIGl0J3MgY29uc2lzdGVudCBhY3Jvc3MgdGhlIGl0ZXJhdGlvbnMuIFRoZSBrZXkgd2lsbCBiZSB0byBpZGVudGlmeSB0aGUgY2FsbCBzaXRlcyBvZiBgcG9wdWxhdGVfaW5faXRlcmAuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGJhbm5lciBwcmVmaXggaXMgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQgYnkgdGhlIHByb2Nlc3MuIFdoYXQgY2FsbHMgYHBvcHVsYXRlX2luX2l0ZXJgIHdpbGwgdGVsbCBtZSBldmVyeXRoaW5nLCBhbmQgd2hhdCBjYWxscyBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjMzLjA1MzYxNzkwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDUwNzgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwb3B1bGF0ZV9pbl9pdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNjI9c3RhdGljIHZvaWQgZmluaXNoX3NraXAoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA3MS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDcyOnN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA3My17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMTQxPWludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTUyLVxcdCAqIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgcGVuZGluZyBoZXJlLiAgSWYgbm90LFxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNTM6XFx0ICogYXZvaWQgY2FsbGluZyBwb3B1bGF0ZV9pbl9pdGVyKCkgYXMgaWYgd2UgcmVhZCBzb21ldGhpbmdcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTU0LVxcdCAqIChjZXBoX3RjcF9yZWN2KCkgd291bGQgaW1tZWRpYXRlbHkgcmV0dXJuIDEpLlxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2My1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTY0OlxcdFxcdHJldCA9IHBvcHVsYXRlX2luX2l0ZXIoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTY1LVxcdFxcdGlmIChyZXQgXFx1MDAzYz0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozMy4wOTQxMjkzMTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEzNTgyOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBgcG9wdWxhdGVfaW5faXRlcmAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoYXQgdGhlIHJlYWRpbmcgcHJvY2VzcyB3aXRoaW4gdGhlIENlcGggY29ubmVjdGlvbiB2ZXJzaW9uIDIgbWlnaHQgYmUgdGhlIGNyaXRpY2FsIGFyZWEgdG8gaW52ZXN0aWdhdGUuIE15IGV4cGVydCBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1heSBiZSBhbiBpc3N1ZSB3aXRoIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBwYXJzZWQgb3Igc3RydWN0dXJlZCBkdXJpbmcgYSByZWFkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGF0IHRoZSBwb2ludCB3aGVyZSBgcG9wdWxhdGVfaW5faXRlcmAgaXMgY2FsbGVkLiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gYW5kIGZ1bmN0aW9uYWxpdHkgb2YgYGNlcGhfY29uX3YyX3RyeV9yZWFkYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gZGF0YSByZXRyaWV2YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozNi4zMDc3MTU0NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0ODUxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2VwaF9jb25fdjJfdHJ5X3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NlcGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlci5jPTE1NDI9c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzQtXFx0XFx0aWYgKGNlcGhfbXNncjIoZnJvbV9tc2dyKGNvbi1cXHUwMDNlbXNncikpKVxcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NzU6XFx0XFx0XFx0cmV0ID0gY2VwaF9jb25fdjJfdHJ5X3JlYWQoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc2LVxcdFxcdGVsc2VcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozNi4zNjcyMDQwMzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE1MjExMjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIENFUEggTmV0d29yayBQcm90b2NvbCBQYXJzZXIqKlxuXG5Pa2F5LCBzbyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGlzIGNhbGxlZCBmcm9tIGBjZXBoX2Nvbl93b3JrZm5gIHdpdGhpbiB0aGUgYG5ldC9jZXBoL21lc3Nlbmdlci5jYCBmaWxlLiBSaWdodCwgdGhhdCdzIGRlZmluaXRlbHkgbmV0d29yayBwcm90b2NvbCBwYXJzaW5nIGNvZGUg4oCTIHNtYWNrIGluIHRoZSBjcml0aWNhbCBwYXRoISBHaXZlbiBteSBleHBlcnRpc2UgaW4gcHJvdG9jb2wgc2VjdXJpdHksIHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9idmlvdXM6IHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gc3ViamVjdCB0aGlzIHRvIHNvbWUgc2VyaW91cyBzdHJlc3MtdGVzdGluZy5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBDRVBILiBLbm93aW5nIGhvdyB0aGUgc3lzdGVtIGlzIGNvbmZpZ3VyZWQgaXMgY3J1Y2lhbCBmb3IgY3JhZnRpbmcgZWZmZWN0aXZlIGZ1enppbmcgaW5wdXRzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZGV0ZXJtaW5lIHdoYXQgcGFyYW1ldGVycyBtaWdodCBpbmZsdWVuY2UgaG93IGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgYmVoYXZlcyB1bmRlciBkaWZmZXJlbnQgY29uZGl0aW9ucy4gVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSB0aGUgbWVzc2FnZSBzaXplIGxpbWl0cywgY29tcHJlc3Npb24gc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgcHJvdG9jb2wgZmVhdHVyZXMgaW4gdXNlLiBUaGlzIGNvbnRleHR1YWwga25vd2xlZGdlIHdpbGwgYmUgZXNzZW50aWFsIHRvIHRhaWxvciBmdXp6aW5nIGNhbXBhaWducyB0aGF0IG1heGltaXplIGNvdmVyYWdlIGFuZCB1bmNvdmVyIGhpZGRlbiB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTozOS45ODI0MTgyODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTEyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRVBIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0xJQlxcbm5ldC9jZXBoL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ2VwaCBjb3JlIGxpYnJhcnlcXFwiXFxuLS1cXG5uZXQvY2VwaC9LY29uZmlnLTIyLVxcbm5ldC9jZXBoL0tjb25maWc6MjM6Y29uZmlnIENFUEhfTElCX1BSRVRUWURFQlVHXFxubmV0L2NlcGgvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJJbmNsdWRlIGZpbGU6bGluZSBpbiBjZXBoIGRlYnVnIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9jZXBoL0tjb25maWctMzQtXFxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxcbm5ldC9jZXBoL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiVXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo0MC4wMjQzMzYwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU2MzYzNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBpczpcblxuKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCB0aGUgc3RhcnRpbmcgcG9pbnQgaXMgYENFUEhfTElCYC4gVGhhdCdzIHdoYXQgSSdtIGRlYWxpbmcgd2l0aC4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIGxldCdzIHRha2UgYSBxdWljayBsb29rIGFyb3VuZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncyBsdXJraW5nIGFyb3VuZD8gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgc3lzdGVtIGJlZm9yZSBJIGNhbiBlZmZlY3RpdmVseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiBgQ0VQSF9MSUJgIGluIGlzb2xhdGlvbi4gV2hhdCBlbHNlIGNvdWxkIGJlIGluIHBsYXk/IExldCBtZSBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIG9yIGNvbXBldGluZyBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjQzLjQ4MDcwMjI4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMzEyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL0tjb25maWc9Mj1jb25maWcgQ0VQSF9MSUJcXG5uZXQvY2VwaC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNlcGggY29yZSBsaWJyYXJ5XFxcIlxcbm5ldC9jZXBoL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvY2VwaC9LY29uZmlnLTUtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5uZXQvY2VwaC9LY29uZmlnPTIzPWNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xcbm5ldC9jZXBoL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiSW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcXFwiXFxubmV0L2NlcGgvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIENFUEhfTElCXFxubmV0L2NlcGgvS2NvbmZpZy0yNi1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9jZXBoL0tjb25maWc9MzU9Y29uZmlnIENFUEhfTElCX1VTRV9ETlNfUkVTT0xWRVJcXG5uZXQvY2VwaC9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlVzZSBpbi1rZXJuZWwgc3VwcG9ydCBmb3IgRE5TIGxvb2t1cFxcXCJcXG5uZXQvY2VwaC9LY29uZmlnOjM3OlxcdGRlcGVuZHMgb24gQ0VQSF9MSUJcXG5uZXQvY2VwaC9LY29uZmlnLTM4LVxcdHNlbGVjdCBETlNfUkVTT0xWRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6NDMuNTI0MDM4MTg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTc2NDgxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyBEZXBlbmRlbmNpZXMgZm9yIENlcGggSW50ZWdyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgbmV3IHN5c3RlbSBpcyBnb2luZyB0byBpbnRlZ3JhdGUgd2l0aCBDZXBoLiBUaGUga2V5IGxpYnJhcnksIGBDRVBIX0xJQmAsIHRoYXQncyBnb3QgdG8gYmUgaW52b2x2ZWQuIEkgc2VlIGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgYWxyZWFkeSDigJMgc3BlY2lmaWNhbGx5LCBgQ0VQSF9MSUJgIGRlcGVuZHMgb24gYElORVRgLiBUaGF0J3Mgbm90IHN1cnByaXNpbmcsIHdlJ2xsIG5lZWQgbmV0d29yayBjb25uZWN0aXZpdHkgZm9yIENlcGggY29tbXVuaWNhdGlvbiwgc28gdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBHaXZlbiB0aGF0LCBlbmFibGluZyBgQ0VQSF9MSUJgIGJlY29tZXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCwgYW5kIHJlYWxseSB0aGUgb25seSBzZW5zaWJsZSBvcHRpb24uIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCB3aGF0IGFib3V0IHRoZSBmaWxlc3lzdGVtIHNpZGU/IElzIHRoZXJlIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBhIENlcGggZmlsZXN5c3RlbSBzcGVjaWZpY2FsbHk/IEknbSB0aGlua2luZywgYENFUEhfRlNgPyBMZXQncyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjQ3LjU0MTY4OTM0OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNjc1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENFUEhfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0ZTXFxuZnMvY2VwaC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNlcGggZGlzdHJpYnV0ZWQgZmlsZSBzeXN0ZW1cXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9MTk9aWYgQ0VQSF9GU1xcbmZzL2NlcGgvS2NvbmZpZzoyMDpjb25maWcgQ0VQSF9GU0NBQ0hFXFxuZnMvY2VwaC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkVuYWJsZSBDZXBoIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mjc9ZW5kaWZcXG5mcy9jZXBoL0tjb25maWctMjgtXFxuZnMvY2VwaC9LY29uZmlnOjI5OmNvbmZpZyBDRVBIX0ZTX1BPU0lYX0FDTFxcbmZzL2NlcGgvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJDZXBoIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvY2VwaC9LY29uZmlnLTM4LVxcbmZzL2NlcGgvS2NvbmZpZzozOTpjb25maWcgQ0VQSF9GU19TRUNVUklUWV9MQUJFTFxcbmZzL2NlcGgvS2NvbmZpZy00MC1cXHRib29sIFxcXCJDZXBoRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo0Ny41ODUwNjQyNTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNzY3MjAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBDZXBoKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgQ2VwaCBjb2RlYmFzZS4gVGhlIGZpbGVzeXN0ZW0gY29tcG9uZW50LCBgQ0VQSF9GU2AsIGFuZCB0aGUgY29yZSBsaWJyYXJ5LCBgQ0VQSF9MSUJgLCBhcmUgdGhlIHByaW1lIHRhcmdldHMuIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZm9jdXMgb3VyIGVmZm9ydHMgb24gZWl0aGVyIG9mIHRoZXNlLCBidXQgaWRlYWxseSwgb24gYm90aC4gVGhlIHJlbGF0aW9uc2hpcCBpcyBpbXBvcnRhbnQuIEVuYWJsaW5nIGBDRVBIX0ZTYCBhdXRvbWF0aWNhbGx5IGJyaW5ncyBpbiBgQ0VQSF9MSUJgLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gYGZzL2NlcGgvS2NvbmZpZ2AsIHRvIHNlZSB3aGF0J3MgYXZhaWxhYmxlIGFuZCBob3cgd2UgY2FuIGJlc3QgbGV2ZXJhZ2UgdGhlbSBmb3IgZnV6emluZy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo1MS42OTI3MzkzNzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjk4NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBDRVBIX0xJQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jZXBoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcXG4tLVxcbmZzL2NlcGgvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gSU5FVFxcbmZzL2NlcGgvS2NvbmZpZzo1OlxcdHNlbGVjdCBDRVBIX0xJQlxcbmZzL2NlcGgvS2NvbmZpZy02LVxcdHNlbGVjdCBORVRGU19TVVBQT1JUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjUxLjczNDQ0MTUzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ3MjIzOTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgQ0VQSCBNb2R1bGUgRGVwZW5kZW5jaWVzIGFuZCBJZGVudGlmeWluZyBLZXkgRnVuY3Rpb25zKipcblxuUmlnaHQsIHNvIGBDRVBIX0ZTYCBjbGVhcmx5IGRlcGVuZHMgb24gYENFUEhfTElCYC4gVGhhdCBtYWtlcyBzZW5zZS4gTm93LCBsZXQncyBkcmlsbCBkb3duIGFuZCBmaW5kIHRoZSBpbXBvcnRhbnQgYml0cyB3aXRoaW4gdGhpcyByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIHN5bWJvbHMuXG5cbkZpcnN0LCBJIHNlZSBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCBhbmQgYHBvcHVsYXRlX2luX2l0ZXJgIGFyZSBzdGF0aWMuIEFscmlnaHQsIGxpa2VseSBpbnRlcm5hbCB1dGlsaXRpZXMsIGJ1dCBwb3RlbnRpYWxseSByZWxldmFudC4gVGhlbiB0aGVyZSdzIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgLSB0aGF0J3MgKm5vdCogc3RhdGljLCBzbyBpdCdzIHByb2JhYmx5IGV4cG9ydGVkIG9yIGF0IGxlYXN0IHVzZWQgbW9yZSB3aWRlbHkuIFRoYXQgb25lIGNhdGNoZXMgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5LiBMZXQncyBkaWcgaW50byBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjMzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6Mzk6NTUuODgxNjY4NDY0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzM5OTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NlcGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMTozOTo1NS45MjUwNzM2NDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0OTY2OTQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ2VwaCBDb25uZWN0aW9uIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgZnVuY3Rpb247IHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgY29ubmVjdGlvbiBsb2dpYy4gQnV0LCBhcyBhbHdheXMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSB3b25kZXIsIGFyZSB0aGVyZSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBUaGlzIGlzIGFib3V0IGJlaW5nIHRob3JvdWdoLCBhZnRlciBhbGwuXG5cbk5vdywgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBjZXBoX2Nvbl93b3JrZm5gIGlzIHByb2JhYmx5IHRoZSBjb3JlIHdvcmsgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LCB0aGUgY2VudHJhbCBwcm9jZXNzaW5nIHBvaW50LiBUaW1lIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhbmQgdmVyaWZ5IHRoaXMuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZnVuY3Rpb27igJlzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVycyBpbiB0aGUgbGlicmFyeS4gSSBzaG91bGQgZGl2ZSBpbnRvIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AgYW5kIGh1bnQgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGZpbGUgdGhhdCBtaWdodCBiZSBjb25uZWN0ZWQuIFRoaXMgd2lsbCBoZWxwIG1lIGdhaW4gYSBtb3JlIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRhdGEgZmxvdyBhbmQgaWRlbnRpZnkgYW55IGNyaXRpY2FsIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIGNvbm5lY3Rpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1MiwiT3V0cHV0VG9rZW5zIjo2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjU5Ljc3NDc0NTk0OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxODUzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogY2VwaF9jb25fdjJfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDIte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzI4MT1zdGF0aWMgaW50IHBvcHVsYXRlX291dF9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMzNTgtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM1OTppbnQgY2VwaF9jb25fdjJfdHJ5X3dyaXRlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzYwLXtcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTM1NjU9c3RhdGljIHZvaWQgcmV2b2tlX2F0X2ZpbmlzaF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbixcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM2MjMtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzYyNDp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHN0cnVjdCBjZXBoX21zZyAqbXNnKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM2MjUte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzcyOD1zdGF0aWMgdm9pZCByZXZva2VfYXRfaGFuZGxlX2VwaWxvZ3VlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM3NDAtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6Mzc0MTp2b2lkIGNlcGhfY29uX3YyX3Jldm9rZV9pbmNvbWluZyhzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc0Mi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzY1LVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjM3NjY6Ym9vbCBjZXBoX2Nvbl92Ml9vcGVuZWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTM3Njcte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3MC1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozNzcxOnZvaWQgY2VwaF9jb25fdjJfcmVzZXRfc2Vzc2lvbihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc3Mi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zNzc5LVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjM3ODA6dm9pZCBjZXBoX2Nvbl92Ml9yZXNldF9wcm90b2NvbChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzc4MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjM5OjU5LjgxODk0NTIwN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA3MTkzMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIENlcGggQ29ubmVjdGlvbiBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGlzIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIG9uIHRoZXNlIGNvbm5lY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBlc3BlY2lhbGx5IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29yayBzdGFjay4gU28sIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgY2VwaF9jb25fd29ya2ZuYCBmdW5jdGlvbiwgc2luY2UgdGhhdCdzIHByb2JhYmx5IHdoZXJlIHRoZSBoZWF2eSBsaWZ0aW5nIHdpdGhpbiB0aGF0IGNvbm5lY3Rpb24gaGFuZGxlciBoYXBwZW5zLiBMb29raW5nIGluIGBuZXQvY2VwaC9tZXNzZW5nZXIuY2Agc2VlbXMgbGlrZSB0aGUgY29ycmVjdCBzcG90IGZvciB0aGF0LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGhvdyB0aGUgcGllY2VzIGZpdCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA4NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjQwOjAzLjMyNjE0MDcyNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4Mjg4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2VwaF9jb25fd29ya2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL21lc3Nlbmdlci5jPTE0Nj1zdGF0aWMgdm9pZCBjYW5jZWxfY29uKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTQ3OnN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTQ4LXN0YXRpYyB2b2lkIGNvbl9mYXVsdChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pO1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM9NjMyPXZvaWQgY2VwaF9jb25faW5pdChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sIHZvaWQgKnByaXZhdGUsXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy02NDYtXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmNvbi1cXHUwMDNlb3V0X3NlbnQpO1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjY0NzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2Y29uLVxcdTAwM2V3b3JrLCBjZXBoX2Nvbl93b3JrZm4pO1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTY0OC1cXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlci5jPTE1MjA9c3RhdGljIHZvaWQgY29uX2ZhdWx0X2ZpbmlzaChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTQxLSAqL1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jOjE1NDI6c3RhdGljIHZvaWQgY2VwaF9jb25fd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTQzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTE6NDA6MDMuMzY5OTc1NTM0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Nzg3MTgzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIENlcGggTWVzc2VuZ2VyIHYyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBDZXBoIHBhdGNoLiBUaGUgYGNlcGhfY29uX3dvcmtmbmAgZnVuY3Rpb24gaXMgZGVjbGFyZWQgc3RhdGljLCBzbyB0aGF0IG5hcnJvd3MgZG93biBteSBmb2N1cy4gYGNlcGhfY29uX3YyX3RyeV9yZWFkYCBzZWVtcyBsaWtlIHRoZSBtb3N0IHJlbGV2YW50IHN5bWJvbCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaGF0J3MgdGhlIGtleSBlbnRyeSBwb2ludCwgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0LCBsZXQncyBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGUgY29uZmlnIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhhdCBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAsIGFuZCBgQ0VQSF9MSUJgIGFsc28gZGVwZW5kcyBvbiBgSU5FVGAuICBTaW5jZSBgQ0VQSF9GU2AgaW5jbHVkZXMgYElORVRgLCB0aGF0IGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBmdXp6aW5nLiBgQ0VQSF9MSUJgIGlzIGFsc28gZ29vZCwgYnV0IG5vdCAqbmVjZXNzYXJ5Ki5cblxuU28sIGhlcmUncyBteSBzdW1tYXJpemVkIGFzc2Vzc21lbnQ6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBBYnNvbHV0ZWx5LCB5ZXMuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogSSdtIHplcm9pbmcgaW4gb24gYGNlcGhfY29uX3YyX3RyeV9yZWFkYC5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogIEknbGwgZW5hYmxlIGBDRVBIX0ZTYCBhbmQgYENFUEhfTElCYCBqdXN0IHRvIGJlIHNhZmUuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgYmFubmVyIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCBoYW5kbGluZy4gVGhpcyBpcyBuZXR3b3JrLWFjY2Vzc2libGUgY29kZSBpbnZvbHZlZCBpbiBwYXJzaW5nIHRoZSBwcm90b2NvbC4gVGhpcyBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIgb3IgY2xpZW50LiBJdCdzIGEgY2xhc3NpYyB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MDMsIk91dHB1dFRva2VucyI6MTAxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDExOjQwOjA4Ljg0ODY5NzE0MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjAzOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRVBIX0ZTXCIsXG4gICAgXCJDRVBIX0xJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBiYW5uZXIgcGF5bG9hZCBsZW5ndGggaW4gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sIGhhbmRsaW5nLiBUaGlzIGlzIHJlYWNoYWJsZSBuZXR3b3JrIHByb3RvY29sIHBhcnNpbmcgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgb3IgbWlzYmVoYXZpbmcgQ2VwaCBzZXJ2ZXIvY2xpZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNFUEhfRlNcIixcbiAgICBcIkNFUEhfTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF9jb25fdjJfdHJ5X3JlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGJhbm5lciBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgaGFuZGxpbmcuIFRoaXMgaXMgcmVhY2hhYmxlIG5ldHdvcmsgcHJvdG9jb2wgcGFyc2luZyBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIG1hbGljaW91cyBvciBtaXNiZWhhdmluZyBDZXBoIHNlcnZlci9jbGllbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[1] Phase: Succeeded StartedAt: 2026-07-31 11:40:42 +0000 UTC FinishedAt: 2026-07-31 11:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 11:40:42 +0000 UTC FinishedAt: 2026-07-31 11:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2] Phase: Succeeded StartedAt: 2026-07-31 11:40:42 +0000 UTC FinishedAt: 2026-07-31 15:18:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:40:42 +0000 UTC FinishedAt: 2026-07-31 15:18:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:40:42 +0000 UTC FinishedAt: 2026-07-31 11:41:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:40:42 +0000 UTC FinishedAt: 2026-07-31 11:40:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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-workflowdxk4d/series-workflowdxk4d-convert-artifact-2258980278/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:41:07 +0000 UTC FinishedAt: 2026-07-31 11:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:41:07 +0000 UTC FinishedAt: 2026-07-31 11:56:53 +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:*eb30a11f-2fca-4113-98c7-d04d8ebbc0b7,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-workflowdxk4d/series-workflowdxk4d-convert-artifact-2258980278/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": "537059ec-75cb-492d-af72-50f6a17ee435", "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-workflowdxk4d/series-workflowdxk4d-build-action-2180412620/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:41:07 +0000 UTC FinishedAt: 2026-07-31 11:56:43 +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:*eb30a11f-2fca-4113-98c7-d04d8ebbc0b7,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-workflowdxk4d/series-workflowdxk4d-convert-artifact-2258980278/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": "537059ec-75cb-492d-af72-50f6a17ee435", "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-workflowdxk4d/series-workflowdxk4d-build-action-2180412620/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:56:53 +0000 UTC FinishedAt: 2026-07-31 11:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:56:53 +0000 UTC FinishedAt: 2026-07-31 11:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:56:53 +0000 UTC FinishedAt: 2026-07-31 11:57:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:56:53 +0000 UTC FinishedAt: 2026-07-31 11:56:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-workflowdxk4d/series-workflowdxk4d-convert-artifact-2715965257/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:57:03 +0000 UTC FinishedAt: 2026-07-31 11:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:57:03 +0000 UTC FinishedAt: 2026-07-31 11:58:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*537059ec-75cb-492d-af72-50f6a17ee435,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-workflowdxk4d/series-workflowdxk4d-build-action-2180412620/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-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:58:55 +0000 UTC FinishedAt: 2026-07-31 11:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:58:55 +0000 UTC FinishedAt: 2026-07-31 11:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:58:55 +0000 UTC FinishedAt: 2026-07-31 12:14:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:58:55 +0000 UTC FinishedAt: 2026-07-31 12:14:54 +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:*eb30a11f-2fca-4113-98c7-d04d8ebbc0b7,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-workflowdxk4d/series-workflowdxk4d-convert-artifact-2715965257/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": "1dc643ff-d328-494e-b7fd-0b8381540f5a", "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-workflowdxk4d/series-workflowdxk4d-build-action-333964837/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 11:58:55 +0000 UTC FinishedAt: 2026-07-31 12:14:44 +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:*eb30a11f-2fca-4113-98c7-d04d8ebbc0b7,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-workflowdxk4d/series-workflowdxk4d-convert-artifact-2715965257/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": "1dc643ff-d328-494e-b7fd-0b8381540f5a", "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-workflowdxk4d/series-workflowdxk4d-build-action-333964837/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:14:54 +0000 UTC FinishedAt: 2026-07-31 12:14:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:14:54 +0000 UTC FinishedAt: 2026-07-31 12:14:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:14:54 +0000 UTC FinishedAt: 2026-07-31 12:16:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:14:54 +0000 UTC FinishedAt: 2026-07-31 12:16:46 +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:*1dc643ff-d328-494e-b7fd-0b8381540f5a,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-workflowdxk4d/series-workflowdxk4d-build-action-333964837/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-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:55 +0000 UTC FinishedAt: 2026-07-31 15:18:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:55 +0000 UTC FinishedAt: 2026-07-31 15:18:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"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:*537059ec-75cb-492d-af72-50f6a17ee435,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1dc643ff-d328-494e-b7fd-0b8381540f5a,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-workflowdxk4d/series-workflowdxk4d-build-action-2180412620/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-workflowdxk4d/series-workflowdxk4d-build-action-333964837/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:55 +0000 UTC FinishedAt: 2026-07-31 12:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:55 +0000 UTC FinishedAt: 2026-07-31 12:17:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"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-workflowdxk4d/series-workflowdxk4d-convert-artifact-667059358/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:55 +0000 UTC FinishedAt: 2026-07-31 12:16:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:55 +0000 UTC FinishedAt: 2026-07-31 12:16:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:16:56 +0000 UTC FinishedAt: 2026-07-31 12:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:17:06 +0000 UTC FinishedAt: 2026-07-31 15:18:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxk4d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ceph_con_v2_try_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CEPH_FS","CEPH_LIB"],"series_id":"8ba3e7f3-2f2e-4e83-ba42-5b56b5cf2a8d","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-07-31 12:17:06 +0000 UTC FinishedAt: 2026-07-31 15:18:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*537059ec-75cb-492d-af72-50f6a17ee435,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1dc643ff-d328-494e-b7fd-0b8381540f5a,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-workflowdxk4d/series-workflowdxk4d-build-action-2180412620/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-workflowdxk4d/series-workflowdxk4d-build-action-333964837/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-workflowdxk4d/series-workflowdxk4d-convert-artifact-667059358/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,}