Name: series-workflowz4xgq Phase: Succeeded StartedAt: 2026-07-31 12:25:11 +0000 UTC FinishedAt: 2026-07-31 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[0] Phase: Succeeded StartedAt: 2026-07-31 12:25:11 +0000 UTC FinishedAt: 2026-07-31 12:27:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 12:25:11 +0000 UTC FinishedAt: 2026-07-31 12:27:45 +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_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_LIB" ], "series_id": "2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2" }, "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NFUEhfTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2I5NGM5MmFiOTAwYTViOGM0NTRhOTQxZDYyZTc5YjFkNjNmMjhiYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDEyOjI2OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jIGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcbmluZGV4IDA1ZjZlZWEyOTlmYzAuLmIzMjNiNjFlNzAyMzkgMTAwNjQ0XG4tLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcbkBAIC0yMTQyLDYgJiM0MzsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbiBcdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXHUwMDI2cCk7XG4gXHRkb3V0KFwmIzM0OyVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxcblwmIzM0OywgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pO1xuIFxuJiM0MztcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2Mgc2l6ZW9mKHU2NCkgJiM0Mzsgc2l6ZW9mKHU2NCkpIHtcbiYjNDM7XHRcdGNvbi1cdTAwM2VlcnJvcl9tc2cgPSBcJiMzNDtwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblwmIzM0OztcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9MSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCB3aGVuIHByb2Nlc3NpbmcgdGhlIGJhbm5lciBwcmVmaXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1hbGZvcm1lZCBwZWVyLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcmVhZCBwYXRoIG9mIHRoZSBtZXNzZW5nZXIgdjIgcHJvdG9jb2wuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3Yjk0YzkyYWI5MDBhNWI4YzQ1NGE5NDFkNjJlNzliMWQ2M2YyOGJhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMzEgMTI6MjY6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jCmluZGV4IDA1ZjZlZWEyOTlmYzAuLmIzMjNiNjFlNzAyMzkgMTAwNjQ0Ci0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jCkBAIC0yMTQyLDYgJiM0MzsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbikKIAlwYXlsb2FkX2xlbiA9IGNlcGhfZGVjb2RlXzE2KCZhbXA7cCk7CiAJZG91dCgmIzM0OyVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxuJiMzNDssIF9fZnVuY19fLCBjb24sIHBheWxvYWRfbGVuKTsKIAomIzQzOwlpZiAocGF5bG9hZF9sZW4gJmx0OyBzaXplb2YodTY0KSAmIzQzOyBzaXplb2YodTY0KSkgewomIzQzOwkJY29uLSZndDtlcnJvcl9tc2cgPSAmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuJiMzNDs7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCXJldHVybiBwcmVwYXJlX3JlYWRfYmFubmVyX3BheWxvYWQoY29uLCBwYXlsb2FkX2xlbik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYC4gSXQgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbiB0byB0aGUgYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgb24gYHBheWxvYWRfbGVuYCwgc3BlY2lmaWNhbGx5OgoKYGBgYwoJaWYgKHBheWxvYWRfbGVuICZsdDsgc2l6ZW9mKHU2NCkgJiM0Mzsgc2l6ZW9mKHU2NCkpIHsKCQljb24tJmd0O2Vycm9yX21zZyA9ICYjMzQ7cHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW4mIzM0OzsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KYGBgCgpUaGlzIGlzIHByZXR0eSBzdGFuZGFyZC4gV2UmIzM5O3JlIGVzc2VudGlhbGx5IHZhbGlkYXRpbmcgdGhlIHNpemUgb2YgdGhlIHBheWxvYWQgYmVpbmcgc2VudCBpbiB0aGUgYmFubmVyLiBUaGUgY2hlY2sgZW5zdXJlcyB0aGUgYHBheWxvYWRfbGVuYCBpcyBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0d28gYHU2NGAgdmFsdWVzLiBJZiBpdCYjMzk7cyBzaG9ydGVyLCB3ZSByZWplY3QgdGhlIGNvbm5lY3Rpb24gd2l0aCBhbiBgLUVJTlZBTGAgYW5kIHNldCBgY29uLSZndDtlcnJvcl9tc2dgIHRvICYjMzQ7cHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW4mIzM0Oy4gVGhpcyBpcyBnb29kOyBpdCBwcmV2ZW50cyBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyBvciBvdGhlciBwcm90b2NvbC1yZWxhdGVkIGlzc3VlcyBieSByZWplY3Rpbmcgb2J2aW91c2x5IG1hbGZvcm1lZCBiYW5uZXIgbWVzc2FnZXMgZWFybHkuCgpHaXZlbiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRpbmcgdG8gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIENlcGggdG8gc2VlIGlmIGFueXRoaW5nIG5lZWRzIHRvIGJlIHVwZGF0ZWQgb3IgY29uc2lkZXJlZCBhbG9uZ3NpZGUgdGhpcyBwYXRjaC4gSXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byBtYWtlIHN1cmUgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIGltcGxpY2F0aW9ucyBhcmUgY29uc2lkZXJlZCBhdCB0aGlzIHN0YWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRVBIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NlcGgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xuLS1cbm5ldC9jZXBoL0tjb25maWctMjItXG5uZXQvY2VwaC9LY29uZmlnOjIzOmNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xubmV0L2NlcGgvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvY2VwaC9LY29uZmlnLTM0LVxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxubmV0L2NlcGgvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7VXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIENlcGggTWVzc2VuZ2VyIHYyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBgQ0VQSF9MSUJgIGNvbmZpZ3VyYXRpb24gaGVyZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiwgYW5kIEkga25vdyBleGFjdGx5IHdoZXJlIHRvIHN0YXJ0OiBgbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHRoZSBvbmx5IGtub2Igd2UgaGF2ZSB0byBwbGF5IHdpdGggb3IgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGx1cmtpbmcgaW4gdGhlcmUgdGhhdCBtaWdodCBwcm92aWRlIGZpbmVyLWdyYWluZWQgY29udHJvbC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUg4oCTIHdoYXQgb3RoZXIgcGFyYW1ldGVycyBhcmUgYmVpbmcgY2hlY2tlZCwgd2hhdCBkZWZhdWx0cyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNldHRpbmcgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgbWVzc2VuZ2VyIGFyY2hpdGVjdHVyZS4gVGhlcmUmIzM5O3MgYSBoaWdoIHByb2JhYmlsaXR5IHRoYXQgb3RoZXIgdmFyaWFibGVzIGluIHRoZSBzYW1lIGZpbGUgd2lsbCBiZSB1c2VmdWwuIEhvcGVmdWxseSwgdGhlcmUgaXMgZG9jdW1lbnRhdGlvbiBhcm91bmQgdGhlc2Ugc2V0dGluZ3MsIG90aGVyd2lzZSwgSSBhbSByZWFkeSB0byBkZWVwIGRpdmUgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jZXNzX2Jhbm5lcl9wcmVmaXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI0LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4MC1cdGlmIChjb24tXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDgxOlx0XHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODItXHR9IGVsc2UgaWYgKGNvbi1cdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgQ29kZSBGbG93OiBiYW5uZXJfcHJlZml4IGFuZCBwb3B1bGF0ZV9pbl9pdGVyKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUgZnVuY3Rpb24gYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAg4oCTIHRoYXQmIzM5O3MgYSBzdGF0aWMgbWV0aG9kLCBJIHNlZS4gT2theSwgc28gc3RhdGljLiBUaGUgc2lnbmlmaWNhbnQgcG9pbnQgaXMgdGhhdCBpdCBpcyBjYWxsZWQgYnkgYHBvcHVsYXRlX2luX2l0ZXJgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbGFyZ2VyIGNvbnRleHQsIHNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIGNhbGxzIHRvIGBwb3B1bGF0ZV9pbl9pdGVyYC4gVW5kZXJzdGFuZGluZyAqd2hhdCogaXMgY2FsbGluZyAqdGhhdCogZnVuY3Rpb24gd2lsbCBoZWxwIG1lIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdyBhbmQgdGhlIHJvbGUgb2YgYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAuIEl0JiMzOTtzIGFsbCBhYm91dCBmb2xsb3dpbmcgdGhlIGRhdGEgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHBhcnRzIGZpdCB0b2dldGhlciB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRob3NlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9wdWxhdGVfaW5faXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNjI9c3RhdGljIHZvaWQgZmluaXNoX3NraXAoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzEtXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDcyOnN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDczLXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMTQxPWludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1Mi1cdCAqIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgcGVuZGluZyBoZXJlLiAgSWYgbm90LFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE1MzpcdCAqIGF2b2lkIGNhbGxpbmcgcG9wdWxhdGVfaW5faXRlcigpIGFzIGlmIHdlIHJlYWQgc29tZXRoaW5nXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTU0LVx0ICogKGNlcGhfdGNwX3JlY3YoKSB3b3VsZCBpbW1lZGlhdGVseSByZXR1cm4gMSkuXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2My1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNjQ6XHRcdHJldCA9IHBvcHVsYXRlX2luX2l0ZXIoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNjUtXHRcdGlmIChyZXQgXHUwMDNjPSAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIENlcGggaW50ZXJuYWxzOgoKKipJbnZlc3RpZ2F0aW5nIGEgTm9uLVN0YXRpYyBSZWFkIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGlzbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZWQgbXkgaW50ZXJlc3QuIFNpbmNlIGl0JiMzOTtzIHZpc2libGUgb3V0c2lkZSBpdHMgaW1tZWRpYXRlIHNjb3BlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQgYWNyb3NzIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLCBzZWUgd2hlcmUgaXQmIzM5O3MgY2FsbGVkLCBhbmQgd2hhdCBpdCBkb2VzLiBUaGUgbGFjayBvZiBgc3RhdGljYCBpbXBsaWVzIHdpZGVyIHBvdGVudGlhbCB1c2FnZSwgYW5kIHRoYXQgcmVxdWlyZXMgY2FyZWZ1bCBzY3J1dGlueS4gR290dGEgY2hlY2sgaXQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNTQyPXN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3NC1cdFx0aWYgKGNlcGhfbXNncjIoZnJvbV9tc2dyKGNvbi1cdTAwM2Vtc2dyKSkpXG5uZXQvY2VwaC9tZXNzZW5nZXIuYzoxNTc1Olx0XHRcdHJldCA9IGNlcGhfY29uX3YyX3RyeV9yZWFkKGNvbik7XG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc2LVx0XHRlbHNlXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzA3Mj1zdGF0aWMgaW50IHBvcHVsYXRlX2luX2l0ZXIoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTQxOmludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGNlcGhfY29uX3YyX3RyeV9yZWFkYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBjZXBoX2Nvbl93b3JrZm5gLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgc2luY2UgYGNlcGhfY29uX3dvcmtmbmAgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGZ1enppbmcgb3Bwb3J0dW5pdGllcy4gU3BlY2lmaWNhbGx5LCBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIG1vcmUgaW4tZGVwdGggZnV6emluZy4KCkkmIzM5O20gYWxzbyByZS1ldmFsdWF0aW5nIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgLiBJdCYjMzk7cyBwYXJ0IG9mIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBwcm90b2NvbCwgYW5kIGhlcmUmIzM5O3MgdGhlIHJlbGV2YW50IGNvZGU6CgpgYGBjCnN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbikKewoJaW50IHBheWxvYWRfbGVuOwoJdm9pZCAqcDsKCglCVUdfT04oY29uLSZndDtpbl9iYXNlX3BvcyAhPSAwKTsKCglpZiAoY29uLSZndDtpbl9idmVjLmJ2X2xlbiAhPSBDRVBIX0JBTk5FUl9WMl9QUkVGSVhfTEVOKQoJCXJldHVybiAtRUlPOwoKCXAgPSBwYWdlX2FkZHJlc3MoY29uLSZndDtpbl9idmVjLmJ2X3BhZ2UpICYjNDM7IGNvbi0mZ3Q7aW5fYnZlYy5idl9vZmZzZXQ7CglpZiAobWVtY21wKHAsIENFUEhfQkFOTkVSX1YyLCBDRVBIX0JBTk5FUl9WMl9MRU4pKSB7CgkJcHJfZXJyKCYjMzQ7YmFkIGJhbm5lciBmcm9tICVzXG4mIzM0OywgY2VwaF9wcl9hZGRyKCZhbXA7Y29uLSZndDtwZWVyX2FkZHIpKTsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCglwICYjNDM7PSBDRVBIX0JBTk5FUl9WMl9MRU47CglwYXlsb2FkX2xlbiA9IGNlcGhfZGVjb2RlXzE2KCZhbXA7cCk7Cglkb3V0KCYjMzQ7JXMgY29uICVwIHBheWxvYWRfbGVuICVkXG4mIzM0OywgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pOwoKCWlmIChwYXlsb2FkX2xlbiAmbHQ7IHNpemVvZih1NjQpICYjNDM7IHNpemVvZih1NjQpKSB7CgkJY29uLSZndDtlcnJvcl9tc2cgPSAmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuJiMzNDs7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9CgoJcmV0dXJuIHByZXBhcmVfcmVhZF9iYW5uZXJfcGF5bG9hZChjb24sIHBheWxvYWRfbGVuKTsKfQpgYGAKClRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcyBhIGNoZWNrIGZvciBgcGF5bG9hZF9sZW5gLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgc2VnbWVudCBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSBmb3IgZnV6emluZyB0byBlbnN1cmUgaXQgaGFuZGxlcyB2YXJpb3VzIGlucHV0IGxlbmd0aHMgcm9idXN0bHkuIEdpdmVuIHRoYXQgaXQmIzM5O3MgbGlua2VkIHRvIHRoZSBgQ0VQSF9MSUJgIGNvbmZpZywgSSBrbm93IHRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYXJlYSBJIHNob3VsZCBzcGVuZCB0aW1lIGludmVzdGlnYXRpbmcuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWdzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0VQSF9MSUImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9jZXBoL0tjb25maWc6Mjpjb25maWcgQ0VQSF9MSUJcbm5ldC9jZXBoL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0NlcGggY29yZSBsaWJyYXJ5XCYjMzQ7XG4tLVxubmV0L2NlcGgvS2NvbmZpZy0yMi1cbm5ldC9jZXBoL0tjb25maWc6MjM6Y29uZmlnIENFUEhfTElCX1BSRVRUWURFQlVHXG5uZXQvY2VwaC9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtJbmNsdWRlIGZpbGU6bGluZSBpbiBjZXBoIGRlYnVnIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9jZXBoL0tjb25maWctMzQtXG5uZXQvY2VwaC9LY29uZmlnOjM1OmNvbmZpZyBDRVBIX0xJQl9VU0VfRE5TX1JFU09MVkVSXG5uZXQvY2VwaC9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtVc2UgaW4ta2VybmVsIHN1cHBvcnQgZm9yIEROUyBsb29rdXBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMgZm9yIENFUEhfTElCKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0JiMzOTtzIGRlcGVuZGVudCBvbiBgQ0VQSF9MSUJgLiBUaGlzIGlzbiYjMzk7dCBhYm91dCBpbnR1aXRpb24gb3IgZ3Vlc3N3b3JrOyBpdCYjMzk7cyBhYm91dCBzb2xpZGlmeWluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gdmVyaWZ5IHdoZXJlIHRoaXMgbGlicmFyeSBpcyB1dGlsaXplZCBhbmQgaG93IG90aGVyIGNvbXBvbmVudHMgcmVseSBvbiBpdHMgYXZhaWxhYmlsaXR5LiBJdCYjMzk7cyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIHRvLCBvciByZW1vdmFsIG9mLCBgQ0VQSF9MSUJgLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayB0aGUgYGRlcGVuZHMgb25gIHNlY3Rpb24gcmVsYXRlZCB0byBgQ0VQSF9MSUJgLiBUaGlzIGlzIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlZ3JhdGlvbiBhbmQgaW1wb3J0YW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIENFUEhfTElCXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA1Olx0XHRzZWxlY3QgQ1JDMzJcbiAgIDY6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0NCQ1xuICAgODpcdFx0c2VsZWN0IENSWVBUT19HQ01cbiAgIDk6XHRcdHNlbGVjdCBDUllQVE9fS1JCNVxuICAxMDpcdFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2XG4gIDExOlx0XHRzZWxlY3QgQ1JZUFRPXG4gIDEyOlx0XHRzZWxlY3QgS0VZU1xuICAxMzpcdFx0ZGVmYXVsdCBuXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIENob29zZSBZIG9yIE0gaGVyZSB0byBpbmNsdWRlIGNlcGhsaWIsIHdoaWNoIHByb3ZpZGVzIHRoZVxuICAxNjpcdFx0ICBjb21tb24gZnVuY3Rpb25hbGl0eSB0byBib3RoIHRoZSBDZXBoIGZpbGVzeXN0ZW0gYW5kXG4gIDE3Olx0XHQgIHRvIHRoZSByYWRvcyBibG9jayBkZXZpY2UgKHJiZCkuXG4gIDE4Olx0XG4gIDE5Olx0XHQgIE1vcmUgaW5mb3JtYXRpb24gYXQgaHR0cHM6Ly9jZXBoLmlvLy5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZXBlbmRlbmN5IEFuYWx5c2lzIGFuZCBFbnRyeSBQb2ludCBJZGVudGlmaWNhdGlvbioqCgpSaWdodCwgc28gYENFUEhfTElCYCBoaW5nZXMgb24gYElORVRgLiAgVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gRXNzZW50aWFsbHksIGVuYWJsaW5nIGBDRVBIX0xJQmAgaXMgdGhlIHdheSB0byBnbywgY29uZmlnLXdpc2UsIHRvIHRhY2tsZSB0aGUgcHJvYmxlbS4gTm93LCBJIG5lZWQgdG8gem9vbSBpbiBhbmQgc2VlIHdoYXQgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIGRlcGVuZGVuY3kgYXJlIGtleS4KCkxvb2tzIGxpa2UgYGNlcGhfY29uX3YyX3RyeV9yZWFkYCBpcyBhIHNvbGlkIGZ1bmN0aW9uIHRvIHB1dCB1bmRlciB0aGUgbWljcm9zY29wZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGVudHJ5IHBvaW50cyB0aGF0IEkgc2hvdWxkIHByb2JhYmx5IGJlIGNvbnNpZGVyaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSBpcyBvbiBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NlcGgvbWVzc2VuZ2VyLmM9MTU0Mj1zdGF0aWMgdm9pZCBjZXBoX2Nvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzQtXHRcdGlmIChjZXBoX21zZ3IyKGZyb21fbXNncihjb24tXHUwMDNlbXNncikpKVxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTU3NTpcdFx0XHRyZXQgPSBjZXBoX2Nvbl92Ml90cnlfcmVhZChjb24pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3Ni1cdFx0ZWxzZVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIGNlcGhfY29uX3YyIGFuZCBpdHMgUmVhZCBGdW5jdGlvbioqCgpSaWdodCwgYGNlcGhfY29uX3YyX3RyeV9yZWFkYC4uLiB0aGF0JiMzOTtzIHRoZSBjb3JlIHJlYWQgZnVuY3Rpb24gd2l0aGluIHRoZSBNZXNzZW5nZXIgdjIgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsICYjMzQ7T2theSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcmVhZGluZyBkYXRhIGFjcm9zcyB0aGUgQ2VwaCBuZXR3b3JrIHVzaW5nIHRoZSB2MiBwcm90b2NvbC4mIzM0OyBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIEl0IGhhbmRsZXMgdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIHJlY2VpdmluZyBhbmQgcHJvY2Vzc2luZyBkYXRhLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgZWZmaWNpZW5jeSwgZXJyb3IgaGFuZGxpbmcsIGFuZCBzZWN1cml0eSB3aXRoaW4gdGhlIHJlYWRpbmcgY29udGV4dC4gSXMgaXQgcm9idXN0IGFnYWluc3QgbWFsaWNpb3VzIGFjdG9ycywgaXMgaXQgb3B0aW1pemVkPyBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyBpdCBpcyBoYW5kbGluZyBmcmFnbWVudGVkIG1lc3NhZ2VzLCBob3cgaXQgaXMgdmFsaWRhdGluZyBwYXlsb2Fkcywgd2hldGhlciBpdCBpcyB1c2luZyB0aGUgcmluZyBidWZmZXIgZWZmZWN0aXZlbHksIGV0Yy4KCkJ1dCBub3csIHdoYXQgYWJvdXQgdGhlIHdyaXRpbmcgc2lkZSBvZiB0aGluZ3M/IE15IGJyYWluIGltbWVkaWF0ZWx5IGp1bXBzIHRvLCAmIzM0O1dhaXQgYSBtaW51dGUsIHdoYXQmIzM5O3MgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gZm9yIHdyaXRpbmcgaW4gbWVzc2VuZ2VyIHYyPyYjMzQ7IEkgY2FuJiMzOTt0IGp1c3QgZm9jdXMgb24gcmVhZHMsIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgY29tcGxlbWVudGFyeSB3cml0ZSBwcm9jZXNzIHdvcmtzLiBJcyBpdCBuYW1lZCBzaW1pbGFybHk/IElzIHRoZSBhcmNoaXRlY3R1cmUgbWlycm9yaW5nIHRoZSByZWFkIHByb2Nlc3M/IElzIGl0IGBjZXBoX2Nvbl92Ml90cnlfd3JpdGVgPyBJIGNhbiYjMzk7dCBqdXN0IGJlIGZvY3VzaW5nIG9uIG9uZSBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLiBJIG5lZWQgdG8ga25vdyBhYm91dCBwb3NzaWJsZSBib3R0bGVuZWNrcywgbXV0ZXhlcywgcmVzb3VyY2UgY29udGVudGlvbiB0aGF0IG11c3QgaGFwcGVuIGF0IHRoZXNlIHBvaW50cy4gSSBuZWVkIHRvIHN0YXJ0IGFza2luZyBxdWVzdGlvbnMgYWJvdXQgbG9jayBvcmRlcmluZyBhbmQgcG9zc2libGUgZGVhZGxvY2tzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgYmFsYW5jZSBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgQ2VwaCBoYW5kbGVzIGl0cyBuZXR3b3JrIG9wZXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NlcGhfY29uX3YyX3RyeV93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNTQyPXN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU4Ny1cdFx0aWYgKGNlcGhfbXNncjIoZnJvbV9tc2dyKGNvbi1cdTAwM2Vtc2dyKSkpXG5uZXQvY2VwaC9tZXNzZW5nZXIuYzoxNTg4Olx0XHRcdHJldCA9IGNlcGhfY29uX3YyX3RyeV93cml0ZShjb24pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU4OS1cdFx0ZWxzZVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMyODE9c3RhdGljIGludCBwb3B1bGF0ZV9vdXRfaXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM1OC1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMzNTk6aW50IGNlcGhfY29uX3YyX3RyeV93cml0ZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzYwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA2NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkFuYWx5emluZyBCYW5uZXIgUHJlZml4IFJlYWRpbmcgaW4gQ2VwaCBDb25uZWN0aW9uIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmb2N1c2VkIG9uIGhvdyB0aGUgYmFubmVyIHByZWZpeCBpcyByZWFkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gYGNlcGhfY29uX3YyX3RyeV9yZWFkYC4gVGhhdCBmZWVscyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBmdW5jdGlvbiBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MuIEFuZCBvZiBjb3Vyc2UsIGBjZXBoX2Nvbl93b3JrZm5gIGlzIGtleSwgc2luY2UgdGhhdOKAmXMgdGhlIHdvcmsgZnVuY3Rpb24gdGhhdCBwcm9iYWJseSBjYWxscyBpdC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQmIzM5O3MgdGhlIG9ubHkgcG9pbnQgdGhhdCBkb2VzIGNhbGwgaXQuCgpCdXQgbGV0JiMzOTtzIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGZvciBiYW5uZXIgcmVhZGluZy4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgc2hvdWxkIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgb3IgY29kZSBwYXRocy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBvc3NpYmxlIGNvbm5lY3Rpb24gaW5pdGlhdGlvbiBvciBtZXNzYWdlIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0JiMzOTtzIGNhc3QgYSB3aWRlciBuZXQgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2Nlc3NfYmFubmVyX3ByZWZpeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI0LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4MC1cdGlmIChjb24tXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDgxOlx0XHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODItXHR9IGVsc2UgaWYgKGNvbi1cdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MDIKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuIFRoaXMgZmVlbHMgbGlrZSB0aGUgY3JpdGljYWwgZnVuY3Rpb24sIHRoZSByaWdodCAqZm9jdXMgc3ltYm9sKiwgaW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLiBOb3cgdGhhdCBJIGhhdmUgdGhpcyBpZGVudGlmaWVkLCBJIGNhbiBzdGFydCB0byB0aGluayBhYm91dCB0aGUgbmV4dCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgb3IgZGVidWdnaW5nIHRoaXMgcHJvY2Vzcy4gSSYjMzk7bSBnb2luZyB0byBjYWxsIHNldC1yZXN1bHRzIGFuZCBzZWUgd2hlcmUgdGhhdCBsZWFkcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQgYW5kIHByb3ZpZGUgc29tZSBicmVhZGNydW1icyB0byBmb2xsb3cgZm9yIGZ1dHVyZSBpdGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9MSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCB3aGVuIHByb2Nlc3NpbmcgdGhlIGJhbm5lciBwcmVmaXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1hbGZvcm1lZCBwZWVyLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcmVhZCBwYXRoIG9mIHRoZSBtZXNzZW5nZXIgdjIgcHJvdG9jb2wuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NFUEhfTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTEuNjAwMTAyODIyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzOTgyMDY5NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0VQSF9MSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgcGF5bG9hZCBsZW5ndGggaW4gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sIHdoZW4gcHJvY2Vzc2luZyB0aGUgYmFubmVyIHByZWZpeC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHByb3RvY29sIGhhbmRsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgYSBtYWxpY2lvdXMgb3IgbWFsZm9ybWVkIHBlZXIuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSByZWFkIHBhdGggb2YgdGhlIG1lc3NlbmdlciB2MiBwcm90b2NvbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTEuNjAwMTA5NDEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTE0MzU1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3Yjk0YzkyYWI5MDBhNWI4YzQ1NGE5NDFkNjJlNzliMWQ2M2YyOGJhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDEyOjI2OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jIGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcXG5pbmRleCAwNWY2ZWVhMjk5ZmMwLi5iMzIzYjYxZTcwMjM5IDEwMDY0NFxcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXFxuKysrIGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcXG5AQCAtMjE0Miw2ICsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4gXFx0cGF5bG9hZF9sZW4gPSBjZXBoX2RlY29kZV8xNihcXHUwMDI2cCk7XFxuIFxcdGRvdXQoXFxcIiVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxcXFxuXFxcIiwgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pO1xcbiBcXG4rXFx0aWYgKHBheWxvYWRfbGVuIFxcdTAwM2Mgc2l6ZW9mKHU2NCkgKyBzaXplb2YodTY0KSkge1xcbitcXHRcXHRjb24tXFx1MDAzZWVycm9yX21zZyA9IFxcXCJwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblxcXCI7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNjo1MS45MTIxODYwNzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjA4NjExNTczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRVBIX0xJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3Yjk0YzkyYWI5MDBhNWI4YzQ1NGE5NDFkNjJlNzliMWQ2M2YyOGJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTI6MjY6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG5pbmRleCAwNWY2ZWVhMjk5ZmMwLi5iMzIzYjYxZTcwMjM5IDEwMDY0NFxuLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcbisrKyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG5AQCAtMjE0Miw2ICsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbiBcdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXHUwMDI2cCk7XG4gXHRkb3V0KFwiJXMgY29uICVwIHBheWxvYWRfbGVuICVkXFxuXCIsIF9fZnVuY19fLCBjb24sIHBheWxvYWRfbGVuKTtcbiBcbitcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2Mgc2l6ZW9mKHU2NCkgKyBzaXplb2YodTY0KSkge1xuK1x0XHRjb24tXHUwMDNlZXJyb3JfbXNnID0gXCJwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblwiO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHJldHVybiBwcmVwYXJlX3JlYWRfYmFubmVyX3BheWxvYWQoY29uLCBwYXlsb2FkX2xlbik7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTEuOTEyMTg3Mzg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5OTQ1NDAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AuIEl0IGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gdG8gdGhlIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIG9uIGBwYXlsb2FkX2xlbmAsIHNwZWNpZmljYWxseTpcblxuYGBgY1xuXHRpZiAocGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcblx0XHRjb24tXHUwMDNlZXJyb3JfbXNnID0gXCJwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblwiO1xuXHRcdHJldHVybiAtRUlOVkFMO1xuXHR9XG5gYGBcblxuVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQuIFdlJ3JlIGVzc2VudGlhbGx5IHZhbGlkYXRpbmcgdGhlIHNpemUgb2YgdGhlIHBheWxvYWQgYmVpbmcgc2VudCBpbiB0aGUgYmFubmVyLiBUaGUgY2hlY2sgZW5zdXJlcyB0aGUgYHBheWxvYWRfbGVuYCBpcyBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0d28gYHU2NGAgdmFsdWVzLiBJZiBpdCdzIHNob3J0ZXIsIHdlIHJlamVjdCB0aGUgY29ubmVjdGlvbiB3aXRoIGFuIGAtRUlOVkFMYCBhbmQgc2V0IGBjb24tXHUwMDNlZXJyb3JfbXNnYCB0byBcInByb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuXCIuIFRoaXMgaXMgZ29vZDsgaXQgcHJldmVudHMgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3Mgb3Igb3RoZXIgcHJvdG9jb2wtcmVsYXRlZCBpc3N1ZXMgYnkgcmVqZWN0aW5nIG9idmlvdXNseSBtYWxmb3JtZWQgYmFubmVyIG1lc3NhZ2VzIGVhcmx5LlxuXG5HaXZlbiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRpbmcgdG8gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gQ2VwaCB0byBzZWUgaWYgYW55dGhpbmcgbmVlZHMgdG8gYmUgdXBkYXRlZCBvciBjb25zaWRlcmVkIGFsb25nc2lkZSB0aGlzIHBhdGNoLiBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gbWFrZSBzdXJlIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciBpbXBsaWNhdGlvbnMgYXJlIGNvbnNpZGVyZWQgYXQgdGhpcyBzdGFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI2OjU2LjUxMTY0NDE5OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTY2MzAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0VQSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfTElCXFxubmV0L2NlcGgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDZXBoIGNvcmUgbGlicmFyeVxcXCJcXG4tLVxcbm5ldC9jZXBoL0tjb25maWctMjItXFxubmV0L2NlcGgvS2NvbmZpZzoyMzpjb25maWcgQ0VQSF9MSUJfUFJFVFRZREVCVUdcXG5uZXQvY2VwaC9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkluY2x1ZGUgZmlsZTpsaW5lIGluIGNlcGggZGVidWcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L2NlcGgvS2NvbmZpZy0zNC1cXG5uZXQvY2VwaC9LY29uZmlnOjM1OmNvbmZpZyBDRVBIX0xJQl9VU0VfRE5TX1JFU09MVkVSXFxubmV0L2NlcGgvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJVc2UgaW4ta2VybmVsIHN1cHBvcnQgZm9yIEROUyBsb29rdXBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI2OjU2LjU2MTMxMjgxN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjI3MzQ5NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIENlcGggTWVzc2VuZ2VyIHYyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgYENFUEhfTElCYCBjb25maWd1cmF0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24sIGFuZCBJIGtub3cgZXhhY3RseSB3aGVyZSB0byBzdGFydDogYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyB0aGUgb25seSBrbm9iIHdlIGhhdmUgdG8gcGxheSB3aXRoIG9yIGlmIHRoZXJlIGFyZSBvdGhlciwgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGluIHRoZXJlIHRoYXQgbWlnaHQgcHJvdmlkZSBmaW5lci1ncmFpbmVkIGNvbnRyb2wuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUg4oCTIHdoYXQgb3RoZXIgcGFyYW1ldGVycyBhcmUgYmVpbmcgY2hlY2tlZCwgd2hhdCBkZWZhdWx0cyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNldHRpbmcgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgbWVzc2VuZ2VyIGFyY2hpdGVjdHVyZS4gVGhlcmUncyBhIGhpZ2ggcHJvYmFiaWxpdHkgdGhhdCBvdGhlciB2YXJpYWJsZXMgaW4gdGhlIHNhbWUgZmlsZSB3aWxsIGJlIHVzZWZ1bC4gSG9wZWZ1bGx5LCB0aGVyZSBpcyBkb2N1bWVudGF0aW9uIGFyb3VuZCB0aGVzZSBzZXR0aW5ncywgb3RoZXJ3aXNlLCBJIGFtIHJlYWR5IHRvIGRlZXAgZGl2ZSBpbnRvIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTkuOTg0MDQ5MzY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODc0MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2Nlc3NfYmFubmVyX3ByZWZpeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTIxMjQtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjEyNi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDgwLVxcdGlmIChjb24tXFx1MDAzZXN0YXRlID09IENFUEhfQ09OX1NfVjJfQkFOTkVSX1BSRUZJWCkge1xcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMwODE6XFx0XFx0cmV0ID0gcHJvY2Vzc19iYW5uZXJfcHJlZml4KGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4Mi1cXHR9IGVsc2UgaWYgKGNvbi1cXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUEFZTE9BRCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzowMC4wMzA5MjkxNThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgyMTExNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIENvZGUgRmxvdzogYmFubmVyX3ByZWZpeCBhbmQgcG9wdWxhdGVfaW5faXRlcioqXG5cblJpZ2h0LCBsZXQncyBzZWUuIFRoZSBmdW5jdGlvbiBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCDigJMgdGhhdCdzIGEgc3RhdGljIG1ldGhvZCwgSSBzZWUuIE9rYXksIHNvIHN0YXRpYy4gVGhlIHNpZ25pZmljYW50IHBvaW50IGlzIHRoYXQgaXQgaXMgY2FsbGVkIGJ5IGBwb3B1bGF0ZV9pbl9pdGVyYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGxhcmdlciBjb250ZXh0LCBzbywgdGhlIG5leHQgc3RlcCBpcyB0byB0cmFjZSBjYWxscyB0byBgcG9wdWxhdGVfaW5faXRlcmAuIFVuZGVyc3RhbmRpbmcgKndoYXQqIGlzIGNhbGxpbmcgKnRoYXQqIGZ1bmN0aW9uIHdpbGwgaGVscCBtZSBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cgYW5kIHRoZSByb2xlIG9mIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgLiBJdCdzIGFsbCBhYm91dCBmb2xsb3dpbmcgdGhlIGRhdGEgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHBhcnRzIGZpdCB0b2dldGhlciB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzowMy41MTMwNDM3OTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2NDY5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9wdWxhdGVfaW5faXRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDYyPXN0YXRpYyB2b2lkIGZpbmlzaF9za2lwKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzEtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzA3MjpzdGF0aWMgaW50IHBvcHVsYXRlX2luX2l0ZXIoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzMte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzE0MT1pbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1Mi1cXHQgKiBXZSBzaG91bGQgYWx3YXlzIGhhdmUgc29tZXRoaW5nIHBlbmRpbmcgaGVyZS4gIElmIG5vdCxcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTUzOlxcdCAqIGF2b2lkIGNhbGxpbmcgcG9wdWxhdGVfaW5faXRlcigpIGFzIGlmIHdlIHJlYWQgc29tZXRoaW5nXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1NC1cXHQgKiAoY2VwaF90Y3BfcmVjdigpIHdvdWxkIGltbWVkaWF0ZWx5IHJldHVybiAxKS5cXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNjMtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE2NDpcXHRcXHRyZXQgPSBwb3B1bGF0ZV9pbl9pdGVyKGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2NS1cXHRcXHRpZiAocmV0IFxcdTAwM2M9IDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MDMuNTU1Njk2MTY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5ODUwMDY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gd2VsbC12ZXJzZWQgaW4gQ2VwaCBpbnRlcm5hbHM6XG5cbioqSW52ZXN0aWdhdGluZyBhIE5vbi1TdGF0aWMgUmVhZCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGlzbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlZCBteSBpbnRlcmVzdC4gU2luY2UgaXQncyB2aXNpYmxlIG91dHNpZGUgaXRzIGltbWVkaWF0ZSBzY29wZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgYWNyb3NzIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLCBzZWUgd2hlcmUgaXQncyBjYWxsZWQsIGFuZCB3aGF0IGl0IGRvZXMuIFRoZSBsYWNrIG9mIGBzdGF0aWNgIGltcGxpZXMgd2lkZXIgcG90ZW50aWFsIHVzYWdlLCBhbmQgdGhhdCByZXF1aXJlcyBjYXJlZnVsIHNjcnV0aW55LiBHb3R0YSBjaGVjayBpdCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzowNi42NTQxOTk2NTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjAzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNTQyPXN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc0LVxcdFxcdGlmIChjZXBoX21zZ3IyKGZyb21fbXNncihjb24tXFx1MDAzZW1zZ3IpKSlcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYzoxNTc1OlxcdFxcdFxcdHJldCA9IGNlcGhfY29uX3YyX3RyeV9yZWFkKGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3Ni1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQwLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNDE6aW50IGNlcGhfY29uX3YyX3RyeV9yZWFkKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MDYuNjk2NDA4NDM1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MzQ5ODQ5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGNlcGhfY29uX3dvcmtmbmAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHNpbmNlIGBjZXBoX2Nvbl93b3JrZm5gIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB0aGF0IHN1Z2dlc3RzIGl0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGZ1enppbmcgb3Bwb3J0dW5pdGllcy4gU3BlY2lmaWNhbGx5LCBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIG1vcmUgaW4tZGVwdGggZnV6emluZy5cblxuSSdtIGFsc28gcmUtZXZhbHVhdGluZyBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YC4gSXQncyBwYXJ0IG9mIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBwcm90b2NvbCwgYW5kIGhlcmUncyB0aGUgcmVsZXZhbnQgY29kZTpcblxuYGBgY1xuc3RhdGljIGludCBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxue1xuXHRpbnQgcGF5bG9hZF9sZW47XG5cdHZvaWQgKnA7XG5cblx0QlVHX09OKGNvbi1cdTAwM2Vpbl9iYXNlX3BvcyAhPSAwKTtcblxuXHRpZiAoY29uLVx1MDAzZWluX2J2ZWMuYnZfbGVuICE9IENFUEhfQkFOTkVSX1YyX1BSRUZJWF9MRU4pXG5cdFx0cmV0dXJuIC1FSU87XG5cblx0cCA9IHBhZ2VfYWRkcmVzcyhjb24tXHUwMDNlaW5fYnZlYy5idl9wYWdlKSArIGNvbi1cdTAwM2Vpbl9idmVjLmJ2X29mZnNldDtcblx0aWYgKG1lbWNtcChwLCBDRVBIX0JBTk5FUl9WMiwgQ0VQSF9CQU5ORVJfVjJfTEVOKSkge1xuXHRcdHByX2VycihcImJhZCBiYW5uZXIgZnJvbSAlc1xcblwiLCBjZXBoX3ByX2FkZHIoXHUwMDI2Y29uLVx1MDAzZXBlZXJfYWRkcikpO1xuXHRcdHJldHVybiAtRUlOVkFMO1xuXHR9XG5cblx0cCArPSBDRVBIX0JBTk5FUl9WMl9MRU47XG5cdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXHUwMDI2cCk7XG5cdGRvdXQoXCIlcyBjb24gJXAgcGF5bG9hZF9sZW4gJWRcXG5cIiwgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pO1xuXG5cdGlmIChwYXlsb2FkX2xlbiBcdTAwM2Mgc2l6ZW9mKHU2NCkgKyBzaXplb2YodTY0KSkge1xuXHRcdGNvbi1cdTAwM2VlcnJvcl9tc2cgPSBcInByb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuXCI7XG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5cdH1cblxuXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xufVxuYGBgXG5cblRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcyBhIGNoZWNrIGZvciBgcGF5bG9hZF9sZW5gLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgc2VnbWVudCBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSBmb3IgZnV6emluZyB0byBlbnN1cmUgaXQgaGFuZGxlcyB2YXJpb3VzIGlucHV0IGxlbmd0aHMgcm9idXN0bHkuIEdpdmVuIHRoYXQgaXQncyBsaW5rZWQgdG8gdGhlIGBDRVBIX0xJQmAgY29uZmlnLCBJIGtub3cgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBhcmVhIEkgc2hvdWxkIHNwZW5kIHRpbWUgaW52ZXN0aWdhdGluZy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMDIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MTMuMjMxMzk1NDQ1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTcyNTk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0VQSF9MSUJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NlcGgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0xJQlxcbm5ldC9jZXBoL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ2VwaCBjb3JlIGxpYnJhcnlcXFwiXFxuLS1cXG5uZXQvY2VwaC9LY29uZmlnLTIyLVxcbm5ldC9jZXBoL0tjb25maWc6MjM6Y29uZmlnIENFUEhfTElCX1BSRVRUWURFQlVHXFxubmV0L2NlcGgvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJJbmNsdWRlIGZpbGU6bGluZSBpbiBjZXBoIGRlYnVnIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9jZXBoL0tjb25maWctMzQtXFxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxcbm5ldC9jZXBoL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiVXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzoxMy4yNzMxMjkzOTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5NjA3NjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgQ0VQSF9MSUIqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgZGVwZW5kZW50IG9uIGBDRVBIX0xJQmAuIFRoaXMgaXNuJ3QgYWJvdXQgaW50dWl0aW9uIG9yIGd1ZXNzd29yazsgaXQncyBhYm91dCBzb2xpZGlmeWluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gdmVyaWZ5IHdoZXJlIHRoaXMgbGlicmFyeSBpcyB1dGlsaXplZCBhbmQgaG93IG90aGVyIGNvbXBvbmVudHMgcmVseSBvbiBpdHMgYXZhaWxhYmlsaXR5LiBJdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgdG8sIG9yIHJlbW92YWwgb2YsIGBDRVBIX0xJQmAuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgZGVwZW5kcyBvbmAgc2VjdGlvbiByZWxhdGVkIHRvIGBDRVBIX0xJQmAuIFRoaXMgaXMgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaXRzIGludGVncmF0aW9uIGFuZCBpbXBvcnRhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTAzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MTYuNTY5MjA4Njc4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jZXBoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBDRVBIX0xJQlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkNlcGggY29yZSBsaWJyYXJ5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NCQ1xcbiAgIDg6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gICA5OlxcdFxcdHNlbGVjdCBDUllQVE9fS1JCNVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2XFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAxMjpcXHRcXHRzZWxlY3QgS0VZU1xcbiAgMTM6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIENob29zZSBZIG9yIE0gaGVyZSB0byBpbmNsdWRlIGNlcGhsaWIsIHdoaWNoIHByb3ZpZGVzIHRoZVxcbiAgMTY6XFx0XFx0ICBjb21tb24gZnVuY3Rpb25hbGl0eSB0byBib3RoIHRoZSBDZXBoIGZpbGVzeXN0ZW0gYW5kXFxuICAxNzpcXHRcXHQgIHRvIHRoZSByYWRvcyBibG9jayBkZXZpY2UgKHJiZCkuXFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgTW9yZSBpbmZvcm1hdGlvbiBhdCBodHRwczovL2NlcGguaW8vLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjE2LjU2OTI2MjYwOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDY5NzgyMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGVwZW5kZW5jeSBBbmFseXNpcyBhbmQgRW50cnkgUG9pbnQgSWRlbnRpZmljYXRpb24qKlxuXG5SaWdodCwgc28gYENFUEhfTElCYCBoaW5nZXMgb24gYElORVRgLiAgVGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LiBFc3NlbnRpYWxseSwgZW5hYmxpbmcgYENFUEhfTElCYCBpcyB0aGUgd2F5IHRvIGdvLCBjb25maWctd2lzZSwgdG8gdGFja2xlIHRoZSBwcm9ibGVtLiBOb3csIEkgbmVlZCB0byB6b29tIGluIGFuZCBzZWUgd2hhdCBmdW5jdGlvbnMgd2l0aGluIHRoaXMgZGVwZW5kZW5jeSBhcmUga2V5LlxuXG5Mb29rcyBsaWtlIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgaXMgYSBzb2xpZCBmdW5jdGlvbiB0byBwdXQgdW5kZXIgdGhlIG1pY3Jvc2NvcGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBuZWVkIHRvIGNoZWNrIGZvciBvdGhlciByZWxldmFudCBlbnRyeSBwb2ludHMgdGhhdCBJIHNob3VsZCBwcm9iYWJseSBiZSBjb25zaWRlcmluZy4gTGV0J3Mgc2VlIHdoYXQgZWxzZSBpcyBvbiBvZmZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MjEuMDM5MDQ3MzgzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI1MDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NlcGgvbWVzc2VuZ2VyLmM9MTU0Mj1zdGF0aWMgdm9pZCBjZXBoX2Nvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3NC1cXHRcXHRpZiAoY2VwaF9tc2dyMihmcm9tX21zZ3IoY29uLVxcdTAwM2Vtc2dyKSkpXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTU3NTpcXHRcXHRcXHRyZXQgPSBjZXBoX2Nvbl92Ml90cnlfcmVhZChjb24pO1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzYtXFx0XFx0ZWxzZVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzA3Mj1zdGF0aWMgaW50IHBvcHVsYXRlX2luX2l0ZXIoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0MC1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTQxOmludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjIxLjA4MTMwMjI3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk1MDc5ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gY2VwaF9jb25fdjIgYW5kIGl0cyBSZWFkIEZ1bmN0aW9uKipcblxuUmlnaHQsIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuLi4gdGhhdCdzIHRoZSBjb3JlIHJlYWQgZnVuY3Rpb24gd2l0aGluIHRoZSBNZXNzZW5nZXIgdjIgaW1wbGVtZW50YXRpb24uIEknbSBpbW1lZGlhdGVseSB0aGlua2luZywgXCJPa2F5LCB3ZSdyZSB0YWxraW5nIGFib3V0IHJlYWRpbmcgZGF0YSBhY3Jvc3MgdGhlIENlcGggbmV0d29yayB1c2luZyB0aGUgdjIgcHJvdG9jb2wuXCIgVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCBoYW5kbGVzIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiByZWNlaXZpbmcgYW5kIHByb2Nlc3NpbmcgZGF0YS4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IGVmZmljaWVuY3ksIGVycm9yIGhhbmRsaW5nLCBhbmQgc2VjdXJpdHkgd2l0aGluIHRoZSByZWFkaW5nIGNvbnRleHQuIElzIGl0IHJvYnVzdCBhZ2FpbnN0IG1hbGljaW91cyBhY3RvcnMsIGlzIGl0IG9wdGltaXplZD8gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgaXQgaXMgaGFuZGxpbmcgZnJhZ21lbnRlZCBtZXNzYWdlcywgaG93IGl0IGlzIHZhbGlkYXRpbmcgcGF5bG9hZHMsIHdoZXRoZXIgaXQgaXMgdXNpbmcgdGhlIHJpbmcgYnVmZmVyIGVmZmVjdGl2ZWx5LCBldGMuXG5cbkJ1dCBub3csIHdoYXQgYWJvdXQgdGhlIHdyaXRpbmcgc2lkZSBvZiB0aGluZ3M/IE15IGJyYWluIGltbWVkaWF0ZWx5IGp1bXBzIHRvLCBcIldhaXQgYSBtaW51dGUsIHdoYXQncyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBmb3Igd3JpdGluZyBpbiBtZXNzZW5nZXIgdjI/XCIgSSBjYW4ndCBqdXN0IGZvY3VzIG9uIHJlYWRzLCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGNvbXBsZW1lbnRhcnkgd3JpdGUgcHJvY2VzcyB3b3Jrcy4gSXMgaXQgbmFtZWQgc2ltaWxhcmx5PyBJcyB0aGUgYXJjaGl0ZWN0dXJlIG1pcnJvcmluZyB0aGUgcmVhZCBwcm9jZXNzPyBJcyBpdCBgY2VwaF9jb25fdjJfdHJ5X3dyaXRlYD8gSSBjYW4ndCBqdXN0IGJlIGZvY3VzaW5nIG9uIG9uZSBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLiBJIG5lZWQgdG8ga25vdyBhYm91dCBwb3NzaWJsZSBib3R0bGVuZWNrcywgbXV0ZXhlcywgcmVzb3VyY2UgY29udGVudGlvbiB0aGF0IG11c3QgaGFwcGVuIGF0IHRoZXNlIHBvaW50cy4gSSBuZWVkIHRvIHN0YXJ0IGFza2luZyBxdWVzdGlvbnMgYWJvdXQgbG9jayBvcmRlcmluZyBhbmQgcG9zc2libGUgZGVhZGxvY2tzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgYmFsYW5jZSBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgQ2VwaCBoYW5kbGVzIGl0cyBuZXR3b3JrIG9wZXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzoyNS4wNzYzODQwODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDM5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNlcGhfY29uX3YyX3RyeV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NlcGgvbWVzc2VuZ2VyLmM9MTU0Mj1zdGF0aWMgdm9pZCBjZXBoX2Nvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU4Ny1cXHRcXHRpZiAoY2VwaF9tc2dyMihmcm9tX21zZ3IoY29uLVxcdTAwM2Vtc2dyKSkpXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTU4ODpcXHRcXHRcXHRyZXQgPSBjZXBoX2Nvbl92Ml90cnlfd3JpdGUoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTg5LVxcdFxcdGVsc2VcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMyODE9c3RhdGljIGludCBwb3B1bGF0ZV9vdXRfaXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzU4LVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMzNTk6aW50IGNlcGhfY29uX3YyX3RyeV93cml0ZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM2MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjI1LjExODgyOTY5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk3OTk1Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkFuYWx5emluZyBCYW5uZXIgUHJlZml4IFJlYWRpbmcgaW4gQ2VwaCBDb25uZWN0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaG93IHRoZSBiYW5uZXIgcHJlZml4IGlzIHJlYWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGF0IGZlZWxzIGxpa2UgdGhlIG1vc3QgZGlyZWN0IGZ1bmN0aW9uIGludm9sdmVkIGluIHRoaXMgcHJvY2Vzcy4gQW5kIG9mIGNvdXJzZSwgYGNlcGhfY29uX3dvcmtmbmAgaXMga2V5LCBzaW5jZSB0aGF04oCZcyB0aGUgd29yayBmdW5jdGlvbiB0aGF0IHByb2JhYmx5IGNhbGxzIGl0LiBJIHNob3VsZCB2ZXJpZnkgdGhhdCdzIHRoZSBvbmx5IHBvaW50IHRoYXQgZG9lcyBjYWxsIGl0LlxuXG5CdXQgbGV0J3MgYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgYmFubmVyIHJlYWRpbmcuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCBJIHNob3VsZCBjaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIG9yIGNvZGUgcGF0aHMuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBvc3NpYmxlIGNvbm5lY3Rpb24gaW5pdGlhdGlvbiBvciBtZXNzYWdlIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0J3MgY2FzdCBhIHdpZGVyIG5ldCBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA2NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjI5LjMxNjgyNzcwM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMTUyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY2Vzc19iYW5uZXJfcHJlZml4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTIxMjQtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjEyNi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDgwLVxcdGlmIChjb24tXFx1MDAzZXN0YXRlID09IENFUEhfQ09OX1NfVjJfQkFOTkVSX1BSRUZJWCkge1xcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMwODE6XFx0XFx0cmV0ID0gcHJvY2Vzc19iYW5uZXJfcHJlZml4KGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4Mi1cXHR9IGVsc2UgaWYgKGNvbi1cXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUEFZTE9BRCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzoyOS4zNTc5NTE3MTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2MzE5MTIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGlzIGZlZWxzIGxpa2UgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uLCB0aGUgcmlnaHQgKmZvY3VzIHN5bWJvbCosIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZS4gTm93IHRoYXQgSSBoYXZlIHRoaXMgaWRlbnRpZmllZCwgSSBjYW4gc3RhcnQgdG8gdGhpbmsgYWJvdXQgdGhlIG5leHQgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIG9yIGRlYnVnZ2luZyB0aGlzIHByb2Nlc3MuIEknbSBnb2luZyB0byBjYWxsIHNldC1yZXN1bHRzIGFuZCBzZWUgd2hlcmUgdGhhdCBsZWFkcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQgYW5kIHByb3ZpZGUgc29tZSBicmVhZGNydW1icyB0byBmb2xsb3cgZm9yIGZ1dHVyZSBpdGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjAyLCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjMzLjkyMTE0NjI4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MTUzMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRVBIX0xJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNFUEhfTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF9jb25fdjJfdHJ5X3JlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCB3aGVuIHByb2Nlc3NpbmcgdGhlIGJhbm5lciBwcmVmaXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1hbGZvcm1lZCBwZWVyLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcmVhZCBwYXRoIG9mIHRoZSBtZXNzZW5nZXIgdjIgcHJvdG9jb2wuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowz4xgq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 12:25:11 +0000 UTC FinishedAt: 2026-07-31 12:27:36 +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_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_LIB" ], "series_id": "2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2" }, "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NFUEhfTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2I5NGM5MmFiOTAwYTViOGM0NTRhOTQxZDYyZTc5YjFkNjNmMjhiYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDEyOjI2OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jIGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcbmluZGV4IDA1ZjZlZWEyOTlmYzAuLmIzMjNiNjFlNzAyMzkgMTAwNjQ0XG4tLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcbkBAIC0yMTQyLDYgJiM0MzsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbiBcdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXHUwMDI2cCk7XG4gXHRkb3V0KFwmIzM0OyVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxcblwmIzM0OywgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pO1xuIFxuJiM0MztcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2Mgc2l6ZW9mKHU2NCkgJiM0Mzsgc2l6ZW9mKHU2NCkpIHtcbiYjNDM7XHRcdGNvbi1cdTAwM2VlcnJvcl9tc2cgPSBcJiMzNDtwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblwmIzM0OztcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9MSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCB3aGVuIHByb2Nlc3NpbmcgdGhlIGJhbm5lciBwcmVmaXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1hbGZvcm1lZCBwZWVyLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcmVhZCBwYXRoIG9mIHRoZSBtZXNzZW5nZXIgdjIgcHJvdG9jb2wuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3Yjk0YzkyYWI5MDBhNWI4YzQ1NGE5NDFkNjJlNzliMWQ2M2YyOGJhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMzEgMTI6MjY6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jCmluZGV4IDA1ZjZlZWEyOTlmYzAuLmIzMjNiNjFlNzAyMzkgMTAwNjQ0Ci0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jCkBAIC0yMTQyLDYgJiM0MzsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbikKIAlwYXlsb2FkX2xlbiA9IGNlcGhfZGVjb2RlXzE2KCZhbXA7cCk7CiAJZG91dCgmIzM0OyVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxuJiMzNDssIF9fZnVuY19fLCBjb24sIHBheWxvYWRfbGVuKTsKIAomIzQzOwlpZiAocGF5bG9hZF9sZW4gJmx0OyBzaXplb2YodTY0KSAmIzQzOyBzaXplb2YodTY0KSkgewomIzQzOwkJY29uLSZndDtlcnJvcl9tc2cgPSAmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuJiMzNDs7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCXJldHVybiBwcmVwYXJlX3JlYWRfYmFubmVyX3BheWxvYWQoY29uLCBwYXlsb2FkX2xlbik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYC4gSXQgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbiB0byB0aGUgYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgb24gYHBheWxvYWRfbGVuYCwgc3BlY2lmaWNhbGx5OgoKYGBgYwoJaWYgKHBheWxvYWRfbGVuICZsdDsgc2l6ZW9mKHU2NCkgJiM0Mzsgc2l6ZW9mKHU2NCkpIHsKCQljb24tJmd0O2Vycm9yX21zZyA9ICYjMzQ7cHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW4mIzM0OzsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KYGBgCgpUaGlzIGlzIHByZXR0eSBzdGFuZGFyZC4gV2UmIzM5O3JlIGVzc2VudGlhbGx5IHZhbGlkYXRpbmcgdGhlIHNpemUgb2YgdGhlIHBheWxvYWQgYmVpbmcgc2VudCBpbiB0aGUgYmFubmVyLiBUaGUgY2hlY2sgZW5zdXJlcyB0aGUgYHBheWxvYWRfbGVuYCBpcyBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0d28gYHU2NGAgdmFsdWVzLiBJZiBpdCYjMzk7cyBzaG9ydGVyLCB3ZSByZWplY3QgdGhlIGNvbm5lY3Rpb24gd2l0aCBhbiBgLUVJTlZBTGAgYW5kIHNldCBgY29uLSZndDtlcnJvcl9tc2dgIHRvICYjMzQ7cHJvdG9jb2wgZXJyb3IsIGJhZCBiYW5uZXIgcGF5bG9hZCBsZW4mIzM0Oy4gVGhpcyBpcyBnb29kOyBpdCBwcmV2ZW50cyBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyBvciBvdGhlciBwcm90b2NvbC1yZWxhdGVkIGlzc3VlcyBieSByZWplY3Rpbmcgb2J2aW91c2x5IG1hbGZvcm1lZCBiYW5uZXIgbWVzc2FnZXMgZWFybHkuCgpHaXZlbiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRpbmcgdG8gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIENlcGggdG8gc2VlIGlmIGFueXRoaW5nIG5lZWRzIHRvIGJlIHVwZGF0ZWQgb3IgY29uc2lkZXJlZCBhbG9uZ3NpZGUgdGhpcyBwYXRjaC4gSXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byBtYWtlIHN1cmUgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIGltcGxpY2F0aW9ucyBhcmUgY29uc2lkZXJlZCBhdCB0aGlzIHN0YWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRVBIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NlcGgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfTElCXG5uZXQvY2VwaC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xuLS1cbm5ldC9jZXBoL0tjb25maWctMjItXG5uZXQvY2VwaC9LY29uZmlnOjIzOmNvbmZpZyBDRVBIX0xJQl9QUkVUVFlERUJVR1xubmV0L2NlcGgvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmaWxlOmxpbmUgaW4gY2VwaCBkZWJ1ZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvY2VwaC9LY29uZmlnLTM0LVxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxubmV0L2NlcGgvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7VXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIENlcGggTWVzc2VuZ2VyIHYyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBgQ0VQSF9MSUJgIGNvbmZpZ3VyYXRpb24gaGVyZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiwgYW5kIEkga25vdyBleGFjdGx5IHdoZXJlIHRvIHN0YXJ0OiBgbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHRoZSBvbmx5IGtub2Igd2UgaGF2ZSB0byBwbGF5IHdpdGggb3IgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGx1cmtpbmcgaW4gdGhlcmUgdGhhdCBtaWdodCBwcm92aWRlIGZpbmVyLWdyYWluZWQgY29udHJvbC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUg4oCTIHdoYXQgb3RoZXIgcGFyYW1ldGVycyBhcmUgYmVpbmcgY2hlY2tlZCwgd2hhdCBkZWZhdWx0cyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNldHRpbmcgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgbWVzc2VuZ2VyIGFyY2hpdGVjdHVyZS4gVGhlcmUmIzM5O3MgYSBoaWdoIHByb2JhYmlsaXR5IHRoYXQgb3RoZXIgdmFyaWFibGVzIGluIHRoZSBzYW1lIGZpbGUgd2lsbCBiZSB1c2VmdWwuIEhvcGVmdWxseSwgdGhlcmUgaXMgZG9jdW1lbnRhdGlvbiBhcm91bmQgdGhlc2Ugc2V0dGluZ3MsIG90aGVyd2lzZSwgSSBhbSByZWFkeSB0byBkZWVwIGRpdmUgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jZXNzX2Jhbm5lcl9wcmVmaXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI0LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4MC1cdGlmIChjb24tXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDgxOlx0XHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODItXHR9IGVsc2UgaWYgKGNvbi1cdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgQ29kZSBGbG93OiBiYW5uZXJfcHJlZml4IGFuZCBwb3B1bGF0ZV9pbl9pdGVyKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUgZnVuY3Rpb24gYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAg4oCTIHRoYXQmIzM5O3MgYSBzdGF0aWMgbWV0aG9kLCBJIHNlZS4gT2theSwgc28gc3RhdGljLiBUaGUgc2lnbmlmaWNhbnQgcG9pbnQgaXMgdGhhdCBpdCBpcyBjYWxsZWQgYnkgYHBvcHVsYXRlX2luX2l0ZXJgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbGFyZ2VyIGNvbnRleHQsIHNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIGNhbGxzIHRvIGBwb3B1bGF0ZV9pbl9pdGVyYC4gVW5kZXJzdGFuZGluZyAqd2hhdCogaXMgY2FsbGluZyAqdGhhdCogZnVuY3Rpb24gd2lsbCBoZWxwIG1lIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdyBhbmQgdGhlIHJvbGUgb2YgYHByb2Nlc3NfYmFubmVyX3ByZWZpeGAuIEl0JiMzOTtzIGFsbCBhYm91dCBmb2xsb3dpbmcgdGhlIGRhdGEgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHBhcnRzIGZpdCB0b2dldGhlciB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRob3NlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9wdWxhdGVfaW5faXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNjI9c3RhdGljIHZvaWQgZmluaXNoX3NraXAoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzEtXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDcyOnN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDczLXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMTQxPWludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1Mi1cdCAqIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgcGVuZGluZyBoZXJlLiAgSWYgbm90LFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE1MzpcdCAqIGF2b2lkIGNhbGxpbmcgcG9wdWxhdGVfaW5faXRlcigpIGFzIGlmIHdlIHJlYWQgc29tZXRoaW5nXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTU0LVx0ICogKGNlcGhfdGNwX3JlY3YoKSB3b3VsZCBpbW1lZGlhdGVseSByZXR1cm4gMSkuXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2My1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNjQ6XHRcdHJldCA9IHBvcHVsYXRlX2luX2l0ZXIoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNjUtXHRcdGlmIChyZXQgXHUwMDNjPSAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIENlcGggaW50ZXJuYWxzOgoKKipJbnZlc3RpZ2F0aW5nIGEgTm9uLVN0YXRpYyBSZWFkIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGlzbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZWQgbXkgaW50ZXJlc3QuIFNpbmNlIGl0JiMzOTtzIHZpc2libGUgb3V0c2lkZSBpdHMgaW1tZWRpYXRlIHNjb3BlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQgYWNyb3NzIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLCBzZWUgd2hlcmUgaXQmIzM5O3MgY2FsbGVkLCBhbmQgd2hhdCBpdCBkb2VzLiBUaGUgbGFjayBvZiBgc3RhdGljYCBpbXBsaWVzIHdpZGVyIHBvdGVudGlhbCB1c2FnZSwgYW5kIHRoYXQgcmVxdWlyZXMgY2FyZWZ1bCBzY3J1dGlueS4gR290dGEgY2hlY2sgaXQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNTQyPXN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3NC1cdFx0aWYgKGNlcGhfbXNncjIoZnJvbV9tc2dyKGNvbi1cdTAwM2Vtc2dyKSkpXG5uZXQvY2VwaC9tZXNzZW5nZXIuYzoxNTc1Olx0XHRcdHJldCA9IGNlcGhfY29uX3YyX3RyeV9yZWFkKGNvbik7XG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc2LVx0XHRlbHNlXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzA3Mj1zdGF0aWMgaW50IHBvcHVsYXRlX2luX2l0ZXIoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNDAtXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTQxOmludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGNlcGhfY29uX3YyX3RyeV9yZWFkYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBjZXBoX2Nvbl93b3JrZm5gLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgc2luY2UgYGNlcGhfY29uX3dvcmtmbmAgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGZ1enppbmcgb3Bwb3J0dW5pdGllcy4gU3BlY2lmaWNhbGx5LCBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIG1vcmUgaW4tZGVwdGggZnV6emluZy4KCkkmIzM5O20gYWxzbyByZS1ldmFsdWF0aW5nIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgLiBJdCYjMzk7cyBwYXJ0IG9mIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBwcm90b2NvbCwgYW5kIGhlcmUmIzM5O3MgdGhlIHJlbGV2YW50IGNvZGU6CgpgYGBjCnN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbikKewoJaW50IHBheWxvYWRfbGVuOwoJdm9pZCAqcDsKCglCVUdfT04oY29uLSZndDtpbl9iYXNlX3BvcyAhPSAwKTsKCglpZiAoY29uLSZndDtpbl9idmVjLmJ2X2xlbiAhPSBDRVBIX0JBTk5FUl9WMl9QUkVGSVhfTEVOKQoJCXJldHVybiAtRUlPOwoKCXAgPSBwYWdlX2FkZHJlc3MoY29uLSZndDtpbl9idmVjLmJ2X3BhZ2UpICYjNDM7IGNvbi0mZ3Q7aW5fYnZlYy5idl9vZmZzZXQ7CglpZiAobWVtY21wKHAsIENFUEhfQkFOTkVSX1YyLCBDRVBIX0JBTk5FUl9WMl9MRU4pKSB7CgkJcHJfZXJyKCYjMzQ7YmFkIGJhbm5lciBmcm9tICVzXG4mIzM0OywgY2VwaF9wcl9hZGRyKCZhbXA7Y29uLSZndDtwZWVyX2FkZHIpKTsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCglwICYjNDM7PSBDRVBIX0JBTk5FUl9WMl9MRU47CglwYXlsb2FkX2xlbiA9IGNlcGhfZGVjb2RlXzE2KCZhbXA7cCk7Cglkb3V0KCYjMzQ7JXMgY29uICVwIHBheWxvYWRfbGVuICVkXG4mIzM0OywgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pOwoKCWlmIChwYXlsb2FkX2xlbiAmbHQ7IHNpemVvZih1NjQpICYjNDM7IHNpemVvZih1NjQpKSB7CgkJY29uLSZndDtlcnJvcl9tc2cgPSAmIzM0O3Byb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuJiMzNDs7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9CgoJcmV0dXJuIHByZXBhcmVfcmVhZF9iYW5uZXJfcGF5bG9hZChjb24sIHBheWxvYWRfbGVuKTsKfQpgYGAKClRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcyBhIGNoZWNrIGZvciBgcGF5bG9hZF9sZW5gLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgc2VnbWVudCBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSBmb3IgZnV6emluZyB0byBlbnN1cmUgaXQgaGFuZGxlcyB2YXJpb3VzIGlucHV0IGxlbmd0aHMgcm9idXN0bHkuIEdpdmVuIHRoYXQgaXQmIzM5O3MgbGlua2VkIHRvIHRoZSBgQ0VQSF9MSUJgIGNvbmZpZywgSSBrbm93IHRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYXJlYSBJIHNob3VsZCBzcGVuZCB0aW1lIGludmVzdGlnYXRpbmcuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWdzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0VQSF9MSUImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jZXBoL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9jZXBoL0tjb25maWc6Mjpjb25maWcgQ0VQSF9MSUJcbm5ldC9jZXBoL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0NlcGggY29yZSBsaWJyYXJ5XCYjMzQ7XG4tLVxubmV0L2NlcGgvS2NvbmZpZy0yMi1cbm5ldC9jZXBoL0tjb25maWc6MjM6Y29uZmlnIENFUEhfTElCX1BSRVRUWURFQlVHXG5uZXQvY2VwaC9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtJbmNsdWRlIGZpbGU6bGluZSBpbiBjZXBoIGRlYnVnIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9jZXBoL0tjb25maWctMzQtXG5uZXQvY2VwaC9LY29uZmlnOjM1OmNvbmZpZyBDRVBIX0xJQl9VU0VfRE5TX1JFU09MVkVSXG5uZXQvY2VwaC9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtVc2UgaW4ta2VybmVsIHN1cHBvcnQgZm9yIEROUyBsb29rdXBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMgZm9yIENFUEhfTElCKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0JiMzOTtzIGRlcGVuZGVudCBvbiBgQ0VQSF9MSUJgLiBUaGlzIGlzbiYjMzk7dCBhYm91dCBpbnR1aXRpb24gb3IgZ3Vlc3N3b3JrOyBpdCYjMzk7cyBhYm91dCBzb2xpZGlmeWluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gdmVyaWZ5IHdoZXJlIHRoaXMgbGlicmFyeSBpcyB1dGlsaXplZCBhbmQgaG93IG90aGVyIGNvbXBvbmVudHMgcmVseSBvbiBpdHMgYXZhaWxhYmlsaXR5LiBJdCYjMzk7cyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIHRvLCBvciByZW1vdmFsIG9mLCBgQ0VQSF9MSUJgLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayB0aGUgYGRlcGVuZHMgb25gIHNlY3Rpb24gcmVsYXRlZCB0byBgQ0VQSF9MSUJgLiBUaGlzIGlzIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlZ3JhdGlvbiBhbmQgaW1wb3J0YW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY2VwaC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIENFUEhfTElCXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtDZXBoIGNvcmUgbGlicmFyeVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA1Olx0XHRzZWxlY3QgQ1JDMzJcbiAgIDY6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0NCQ1xuICAgODpcdFx0c2VsZWN0IENSWVBUT19HQ01cbiAgIDk6XHRcdHNlbGVjdCBDUllQVE9fS1JCNVxuICAxMDpcdFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2XG4gIDExOlx0XHRzZWxlY3QgQ1JZUFRPXG4gIDEyOlx0XHRzZWxlY3QgS0VZU1xuICAxMzpcdFx0ZGVmYXVsdCBuXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIENob29zZSBZIG9yIE0gaGVyZSB0byBpbmNsdWRlIGNlcGhsaWIsIHdoaWNoIHByb3ZpZGVzIHRoZVxuICAxNjpcdFx0ICBjb21tb24gZnVuY3Rpb25hbGl0eSB0byBib3RoIHRoZSBDZXBoIGZpbGVzeXN0ZW0gYW5kXG4gIDE3Olx0XHQgIHRvIHRoZSByYWRvcyBibG9jayBkZXZpY2UgKHJiZCkuXG4gIDE4Olx0XG4gIDE5Olx0XHQgIE1vcmUgaW5mb3JtYXRpb24gYXQgaHR0cHM6Ly9jZXBoLmlvLy5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZXBlbmRlbmN5IEFuYWx5c2lzIGFuZCBFbnRyeSBQb2ludCBJZGVudGlmaWNhdGlvbioqCgpSaWdodCwgc28gYENFUEhfTElCYCBoaW5nZXMgb24gYElORVRgLiAgVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gRXNzZW50aWFsbHksIGVuYWJsaW5nIGBDRVBIX0xJQmAgaXMgdGhlIHdheSB0byBnbywgY29uZmlnLXdpc2UsIHRvIHRhY2tsZSB0aGUgcHJvYmxlbS4gTm93LCBJIG5lZWQgdG8gem9vbSBpbiBhbmQgc2VlIHdoYXQgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIGRlcGVuZGVuY3kgYXJlIGtleS4KCkxvb2tzIGxpa2UgYGNlcGhfY29uX3YyX3RyeV9yZWFkYCBpcyBhIHNvbGlkIGZ1bmN0aW9uIHRvIHB1dCB1bmRlciB0aGUgbWljcm9zY29wZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGVudHJ5IHBvaW50cyB0aGF0IEkgc2hvdWxkIHByb2JhYmx5IGJlIGNvbnNpZGVyaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSBpcyBvbiBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2VwaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NlcGgvbWVzc2VuZ2VyLmM9MTU0Mj1zdGF0aWMgdm9pZCBjZXBoX2Nvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzQtXHRcdGlmIChjZXBoX21zZ3IyKGZyb21fbXNncihjb24tXHUwMDNlbXNncikpKVxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTU3NTpcdFx0XHRyZXQgPSBjZXBoX2Nvbl92Ml90cnlfcmVhZChjb24pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3Ni1cdFx0ZWxzZVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMwNzI9c3RhdGljIGludCBwb3B1bGF0ZV9pbl9pdGVyKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQwLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE0MTppbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIGNlcGhfY29uX3YyIGFuZCBpdHMgUmVhZCBGdW5jdGlvbioqCgpSaWdodCwgYGNlcGhfY29uX3YyX3RyeV9yZWFkYC4uLiB0aGF0JiMzOTtzIHRoZSBjb3JlIHJlYWQgZnVuY3Rpb24gd2l0aGluIHRoZSBNZXNzZW5nZXIgdjIgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsICYjMzQ7T2theSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcmVhZGluZyBkYXRhIGFjcm9zcyB0aGUgQ2VwaCBuZXR3b3JrIHVzaW5nIHRoZSB2MiBwcm90b2NvbC4mIzM0OyBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIEl0IGhhbmRsZXMgdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIHJlY2VpdmluZyBhbmQgcHJvY2Vzc2luZyBkYXRhLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgZWZmaWNpZW5jeSwgZXJyb3IgaGFuZGxpbmcsIGFuZCBzZWN1cml0eSB3aXRoaW4gdGhlIHJlYWRpbmcgY29udGV4dC4gSXMgaXQgcm9idXN0IGFnYWluc3QgbWFsaWNpb3VzIGFjdG9ycywgaXMgaXQgb3B0aW1pemVkPyBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyBpdCBpcyBoYW5kbGluZyBmcmFnbWVudGVkIG1lc3NhZ2VzLCBob3cgaXQgaXMgdmFsaWRhdGluZyBwYXlsb2Fkcywgd2hldGhlciBpdCBpcyB1c2luZyB0aGUgcmluZyBidWZmZXIgZWZmZWN0aXZlbHksIGV0Yy4KCkJ1dCBub3csIHdoYXQgYWJvdXQgdGhlIHdyaXRpbmcgc2lkZSBvZiB0aGluZ3M/IE15IGJyYWluIGltbWVkaWF0ZWx5IGp1bXBzIHRvLCAmIzM0O1dhaXQgYSBtaW51dGUsIHdoYXQmIzM5O3MgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gZm9yIHdyaXRpbmcgaW4gbWVzc2VuZ2VyIHYyPyYjMzQ7IEkgY2FuJiMzOTt0IGp1c3QgZm9jdXMgb24gcmVhZHMsIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgY29tcGxlbWVudGFyeSB3cml0ZSBwcm9jZXNzIHdvcmtzLiBJcyBpdCBuYW1lZCBzaW1pbGFybHk/IElzIHRoZSBhcmNoaXRlY3R1cmUgbWlycm9yaW5nIHRoZSByZWFkIHByb2Nlc3M/IElzIGl0IGBjZXBoX2Nvbl92Ml90cnlfd3JpdGVgPyBJIGNhbiYjMzk7dCBqdXN0IGJlIGZvY3VzaW5nIG9uIG9uZSBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLiBJIG5lZWQgdG8ga25vdyBhYm91dCBwb3NzaWJsZSBib3R0bGVuZWNrcywgbXV0ZXhlcywgcmVzb3VyY2UgY29udGVudGlvbiB0aGF0IG11c3QgaGFwcGVuIGF0IHRoZXNlIHBvaW50cy4gSSBuZWVkIHRvIHN0YXJ0IGFza2luZyBxdWVzdGlvbnMgYWJvdXQgbG9jayBvcmRlcmluZyBhbmQgcG9zc2libGUgZGVhZGxvY2tzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgYmFsYW5jZSBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgQ2VwaCBoYW5kbGVzIGl0cyBuZXR3b3JrIG9wZXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NlcGhfY29uX3YyX3RyeV93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNTQyPXN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU4Ny1cdFx0aWYgKGNlcGhfbXNncjIoZnJvbV9tc2dyKGNvbi1cdTAwM2Vtc2dyKSkpXG5uZXQvY2VwaC9tZXNzZW5nZXIuYzoxNTg4Olx0XHRcdHJldCA9IGNlcGhfY29uX3YyX3RyeV93cml0ZShjb24pO1xubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU4OS1cdFx0ZWxzZVxuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMyODE9c3RhdGljIGludCBwb3B1bGF0ZV9vdXRfaXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM1OC1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMzNTk6aW50IGNlcGhfY29uX3YyX3RyeV93cml0ZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzYwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA2NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkFuYWx5emluZyBCYW5uZXIgUHJlZml4IFJlYWRpbmcgaW4gQ2VwaCBDb25uZWN0aW9uIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmb2N1c2VkIG9uIGhvdyB0aGUgYmFubmVyIHByZWZpeCBpcyByZWFkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gYGNlcGhfY29uX3YyX3RyeV9yZWFkYC4gVGhhdCBmZWVscyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBmdW5jdGlvbiBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MuIEFuZCBvZiBjb3Vyc2UsIGBjZXBoX2Nvbl93b3JrZm5gIGlzIGtleSwgc2luY2UgdGhhdOKAmXMgdGhlIHdvcmsgZnVuY3Rpb24gdGhhdCBwcm9iYWJseSBjYWxscyBpdC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQmIzM5O3MgdGhlIG9ubHkgcG9pbnQgdGhhdCBkb2VzIGNhbGwgaXQuCgpCdXQgbGV0JiMzOTtzIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGZvciBiYW5uZXIgcmVhZGluZy4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgc2hvdWxkIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgb3IgY29kZSBwYXRocy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBvc3NpYmxlIGNvbm5lY3Rpb24gaW5pdGlhdGlvbiBvciBtZXNzYWdlIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0JiMzOTtzIGNhc3QgYSB3aWRlciBuZXQgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2Nlc3NfYmFubmVyX3ByZWZpeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jZXBoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI0LVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yMTI2LXtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4MC1cdGlmIChjb24tXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUFJFRklYKSB7XG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMDgxOlx0XHRyZXQgPSBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoY29uKTtcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwODItXHR9IGVsc2UgaWYgKGNvbi1cdTAwM2VzdGF0ZSA9PSBDRVBIX0NPTl9TX1YyX0JBTk5FUl9QQVlMT0FEKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MDIKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuIFRoaXMgZmVlbHMgbGlrZSB0aGUgY3JpdGljYWwgZnVuY3Rpb24sIHRoZSByaWdodCAqZm9jdXMgc3ltYm9sKiwgaW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLiBOb3cgdGhhdCBJIGhhdmUgdGhpcyBpZGVudGlmaWVkLCBJIGNhbiBzdGFydCB0byB0aGluayBhYm91dCB0aGUgbmV4dCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgb3IgZGVidWdnaW5nIHRoaXMgcHJvY2Vzcy4gSSYjMzk7bSBnb2luZyB0byBjYWxsIHNldC1yZXN1bHRzIGFuZCBzZWUgd2hlcmUgdGhhdCBsZWFkcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQgYW5kIHByb3ZpZGUgc29tZSBicmVhZGNydW1icyB0byBmb2xsb3cgZm9yIGZ1dHVyZSBpdGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0VQSF9MSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX2Nvbl92Ml90cnlfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCB3aGVuIHByb2Nlc3NpbmcgdGhlIGJhbm5lciBwcmVmaXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1hbGZvcm1lZCBwZWVyLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcmVhZCBwYXRoIG9mIHRoZSBtZXNzZW5nZXIgdjIgcHJvdG9jb2wuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NFUEhfTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF9jb25fdjJfdHJ5X3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTEuNjAwMTAyODIyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzOTgyMDY5NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0VQSF9MSUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgcGF5bG9hZCBsZW5ndGggaW4gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sIHdoZW4gcHJvY2Vzc2luZyB0aGUgYmFubmVyIHByZWZpeC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHByb3RvY29sIGhhbmRsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgYSBtYWxpY2lvdXMgb3IgbWFsZm9ybWVkIHBlZXIuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSByZWFkIHBhdGggb2YgdGhlIG1lc3NlbmdlciB2MiBwcm90b2NvbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTEuNjAwMTA5NDEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTE0MzU1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3Yjk0YzkyYWI5MDBhNWI4YzQ1NGE5NDFkNjJlNzliMWQ2M2YyOGJhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDEyOjI2OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jIGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcXG5pbmRleCAwNWY2ZWVhMjk5ZmMwLi5iMzIzYjYxZTcwMjM5IDEwMDY0NFxcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXFxuKysrIGIvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcXG5AQCAtMjE0Miw2ICsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4gXFx0cGF5bG9hZF9sZW4gPSBjZXBoX2RlY29kZV8xNihcXHUwMDI2cCk7XFxuIFxcdGRvdXQoXFxcIiVzIGNvbiAlcCBwYXlsb2FkX2xlbiAlZFxcXFxuXFxcIiwgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pO1xcbiBcXG4rXFx0aWYgKHBheWxvYWRfbGVuIFxcdTAwM2Mgc2l6ZW9mKHU2NCkgKyBzaXplb2YodTY0KSkge1xcbitcXHRcXHRjb24tXFx1MDAzZWVycm9yX21zZyA9IFxcXCJwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblxcXCI7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNjo1MS45MTIxODYwNzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjA4NjExNTczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRVBIX0xJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3Yjk0YzkyYWI5MDBhNWI4YzQ1NGE5NDFkNjJlNzliMWQ2M2YyOGJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTI6MjY6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG5pbmRleCAwNWY2ZWVhMjk5ZmMwLi5iMzIzYjYxZTcwMjM5IDEwMDY0NFxuLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmNcbisrKyBiL25ldC9jZXBoL21lc3Nlbmdlcl92Mi5jXG5AQCAtMjE0Miw2ICsyMTQyLDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19iYW5uZXJfcHJlZml4KHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcbiBcdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXHUwMDI2cCk7XG4gXHRkb3V0KFwiJXMgY29uICVwIHBheWxvYWRfbGVuICVkXFxuXCIsIF9fZnVuY19fLCBjb24sIHBheWxvYWRfbGVuKTtcbiBcbitcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2Mgc2l6ZW9mKHU2NCkgKyBzaXplb2YodTY0KSkge1xuK1x0XHRjb24tXHUwMDNlZXJyb3JfbXNnID0gXCJwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblwiO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHJldHVybiBwcmVwYXJlX3JlYWRfYmFubmVyX3BheWxvYWQoY29uLCBwYXlsb2FkX2xlbik7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTEuOTEyMTg3Mzg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5OTQ1NDAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDZXBoIE1lc3NlbmdlciB2MiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY2AuIEl0IGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gdG8gdGhlIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIG9uIGBwYXlsb2FkX2xlbmAsIHNwZWNpZmljYWxseTpcblxuYGBgY1xuXHRpZiAocGF5bG9hZF9sZW4gXHUwMDNjIHNpemVvZih1NjQpICsgc2l6ZW9mKHU2NCkpIHtcblx0XHRjb24tXHUwMDNlZXJyb3JfbXNnID0gXCJwcm90b2NvbCBlcnJvciwgYmFkIGJhbm5lciBwYXlsb2FkIGxlblwiO1xuXHRcdHJldHVybiAtRUlOVkFMO1xuXHR9XG5gYGBcblxuVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQuIFdlJ3JlIGVzc2VudGlhbGx5IHZhbGlkYXRpbmcgdGhlIHNpemUgb2YgdGhlIHBheWxvYWQgYmVpbmcgc2VudCBpbiB0aGUgYmFubmVyLiBUaGUgY2hlY2sgZW5zdXJlcyB0aGUgYHBheWxvYWRfbGVuYCBpcyBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0d28gYHU2NGAgdmFsdWVzLiBJZiBpdCdzIHNob3J0ZXIsIHdlIHJlamVjdCB0aGUgY29ubmVjdGlvbiB3aXRoIGFuIGAtRUlOVkFMYCBhbmQgc2V0IGBjb24tXHUwMDNlZXJyb3JfbXNnYCB0byBcInByb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuXCIuIFRoaXMgaXMgZ29vZDsgaXQgcHJldmVudHMgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3Mgb3Igb3RoZXIgcHJvdG9jb2wtcmVsYXRlZCBpc3N1ZXMgYnkgcmVqZWN0aW5nIG9idmlvdXNseSBtYWxmb3JtZWQgYmFubmVyIG1lc3NhZ2VzIGVhcmx5LlxuXG5HaXZlbiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRpbmcgdG8gdGhlIENlcGggbWVzc2VuZ2VyIHYyIHByb3RvY29sLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gQ2VwaCB0byBzZWUgaWYgYW55dGhpbmcgbmVlZHMgdG8gYmUgdXBkYXRlZCBvciBjb25zaWRlcmVkIGFsb25nc2lkZSB0aGlzIHBhdGNoLiBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gbWFrZSBzdXJlIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciBpbXBsaWNhdGlvbnMgYXJlIGNvbnNpZGVyZWQgYXQgdGhpcyBzdGFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI2OjU2LjUxMTY0NDE5OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTY2MzAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0VQSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jZXBoL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfTElCXFxubmV0L2NlcGgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDZXBoIGNvcmUgbGlicmFyeVxcXCJcXG4tLVxcbm5ldC9jZXBoL0tjb25maWctMjItXFxubmV0L2NlcGgvS2NvbmZpZzoyMzpjb25maWcgQ0VQSF9MSUJfUFJFVFRZREVCVUdcXG5uZXQvY2VwaC9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkluY2x1ZGUgZmlsZTpsaW5lIGluIGNlcGggZGVidWcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L2NlcGgvS2NvbmZpZy0zNC1cXG5uZXQvY2VwaC9LY29uZmlnOjM1OmNvbmZpZyBDRVBIX0xJQl9VU0VfRE5TX1JFU09MVkVSXFxubmV0L2NlcGgvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJVc2UgaW4ta2VybmVsIHN1cHBvcnQgZm9yIEROUyBsb29rdXBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI2OjU2LjU2MTMxMjgxN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjI3MzQ5NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIENlcGggTWVzc2VuZ2VyIHYyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgYENFUEhfTElCYCBjb25maWd1cmF0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24sIGFuZCBJIGtub3cgZXhhY3RseSB3aGVyZSB0byBzdGFydDogYG5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyB0aGUgb25seSBrbm9iIHdlIGhhdmUgdG8gcGxheSB3aXRoIG9yIGlmIHRoZXJlIGFyZSBvdGhlciwgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGluIHRoZXJlIHRoYXQgbWlnaHQgcHJvdmlkZSBmaW5lci1ncmFpbmVkIGNvbnRyb2wuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUg4oCTIHdoYXQgb3RoZXIgcGFyYW1ldGVycyBhcmUgYmVpbmcgY2hlY2tlZCwgd2hhdCBkZWZhdWx0cyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIHNldHRpbmcgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgbWVzc2VuZ2VyIGFyY2hpdGVjdHVyZS4gVGhlcmUncyBhIGhpZ2ggcHJvYmFiaWxpdHkgdGhhdCBvdGhlciB2YXJpYWJsZXMgaW4gdGhlIHNhbWUgZmlsZSB3aWxsIGJlIHVzZWZ1bC4gSG9wZWZ1bGx5LCB0aGVyZSBpcyBkb2N1bWVudGF0aW9uIGFyb3VuZCB0aGVzZSBzZXR0aW5ncywgb3RoZXJ3aXNlLCBJIGFtIHJlYWR5IHRvIGRlZXAgZGl2ZSBpbnRvIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6MjY6NTkuOTg0MDQ5MzY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODc0MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2Nlc3NfYmFubmVyX3ByZWZpeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTIxMjQtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjEyNi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDgwLVxcdGlmIChjb24tXFx1MDAzZXN0YXRlID09IENFUEhfQ09OX1NfVjJfQkFOTkVSX1BSRUZJWCkge1xcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMwODE6XFx0XFx0cmV0ID0gcHJvY2Vzc19iYW5uZXJfcHJlZml4KGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4Mi1cXHR9IGVsc2UgaWYgKGNvbi1cXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUEFZTE9BRCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzowMC4wMzA5MjkxNThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgyMTExNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIENvZGUgRmxvdzogYmFubmVyX3ByZWZpeCBhbmQgcG9wdWxhdGVfaW5faXRlcioqXG5cblJpZ2h0LCBsZXQncyBzZWUuIFRoZSBmdW5jdGlvbiBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YCDigJMgdGhhdCdzIGEgc3RhdGljIG1ldGhvZCwgSSBzZWUuIE9rYXksIHNvIHN0YXRpYy4gVGhlIHNpZ25pZmljYW50IHBvaW50IGlzIHRoYXQgaXQgaXMgY2FsbGVkIGJ5IGBwb3B1bGF0ZV9pbl9pdGVyYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGxhcmdlciBjb250ZXh0LCBzbywgdGhlIG5leHQgc3RlcCBpcyB0byB0cmFjZSBjYWxscyB0byBgcG9wdWxhdGVfaW5faXRlcmAuIFVuZGVyc3RhbmRpbmcgKndoYXQqIGlzIGNhbGxpbmcgKnRoYXQqIGZ1bmN0aW9uIHdpbGwgaGVscCBtZSBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cgYW5kIHRoZSByb2xlIG9mIGBwcm9jZXNzX2Jhbm5lcl9wcmVmaXhgLiBJdCdzIGFsbCBhYm91dCBmb2xsb3dpbmcgdGhlIGRhdGEgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHBhcnRzIGZpdCB0b2dldGhlciB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIGNoZWNrIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzowMy41MTMwNDM3OTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2NDY5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9wdWxhdGVfaW5faXRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDYyPXN0YXRpYyB2b2lkIGZpbmlzaF9za2lwKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzEtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzA3MjpzdGF0aWMgaW50IHBvcHVsYXRlX2luX2l0ZXIoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMwNzMte1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzE0MT1pbnQgY2VwaF9jb25fdjJfdHJ5X3JlYWQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1Mi1cXHQgKiBXZSBzaG91bGQgYWx3YXlzIGhhdmUgc29tZXRoaW5nIHBlbmRpbmcgaGVyZS4gIElmIG5vdCxcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTUzOlxcdCAqIGF2b2lkIGNhbGxpbmcgcG9wdWxhdGVfaW5faXRlcigpIGFzIGlmIHdlIHJlYWQgc29tZXRoaW5nXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE1NC1cXHQgKiAoY2VwaF90Y3BfcmVjdigpIHdvdWxkIGltbWVkaWF0ZWx5IHJldHVybiAxKS5cXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTMxNjMtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzE2NDpcXHRcXHRyZXQgPSBwb3B1bGF0ZV9pbl9pdGVyKGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE2NS1cXHRcXHRpZiAocmV0IFxcdTAwM2M9IDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MDMuNTU1Njk2MTY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5ODUwMDY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gd2VsbC12ZXJzZWQgaW4gQ2VwaCBpbnRlcm5hbHM6XG5cbioqSW52ZXN0aWdhdGluZyBhIE5vbi1TdGF0aWMgUmVhZCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGlzbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlZCBteSBpbnRlcmVzdC4gU2luY2UgaXQncyB2aXNpYmxlIG91dHNpZGUgaXRzIGltbWVkaWF0ZSBzY29wZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgYWNyb3NzIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLCBzZWUgd2hlcmUgaXQncyBjYWxsZWQsIGFuZCB3aGF0IGl0IGRvZXMuIFRoZSBsYWNrIG9mIGBzdGF0aWNgIGltcGxpZXMgd2lkZXIgcG90ZW50aWFsIHVzYWdlLCBhbmQgdGhhdCByZXF1aXJlcyBjYXJlZnVsIHNjcnV0aW55LiBHb3R0YSBjaGVjayBpdCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzowNi42NTQxOTk2NTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjAzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXIuYz0xNTQyPXN0YXRpYyB2b2lkIGNlcGhfY29uX3dvcmtmbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTc0LVxcdFxcdGlmIChjZXBoX21zZ3IyKGZyb21fbXNncihjb24tXFx1MDAzZW1zZ3IpKSlcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYzoxNTc1OlxcdFxcdFxcdHJldCA9IGNlcGhfY29uX3YyX3RyeV9yZWFkKGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3Ni1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQwLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMxNDE6aW50IGNlcGhfY29uX3YyX3RyeV9yZWFkKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMTQyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MDYuNjk2NDA4NDM1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MzQ5ODQ5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGNlcGhfY29uX3dvcmtmbmAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHNpbmNlIGBjZXBoX2Nvbl93b3JrZm5gIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB0aGF0IHN1Z2dlc3RzIGl0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGZ1enppbmcgb3Bwb3J0dW5pdGllcy4gU3BlY2lmaWNhbGx5LCBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIG1vcmUgaW4tZGVwdGggZnV6emluZy5cblxuSSdtIGFsc28gcmUtZXZhbHVhdGluZyBgcHJvY2Vzc19iYW5uZXJfcHJlZml4YC4gSXQncyBwYXJ0IG9mIHRoZSBDZXBoIE1lc3NlbmdlciB2MiBwcm90b2NvbCwgYW5kIGhlcmUncyB0aGUgcmVsZXZhbnQgY29kZTpcblxuYGBgY1xuc3RhdGljIGludCBwcm9jZXNzX2Jhbm5lcl9wcmVmaXgoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxue1xuXHRpbnQgcGF5bG9hZF9sZW47XG5cdHZvaWQgKnA7XG5cblx0QlVHX09OKGNvbi1cdTAwM2Vpbl9iYXNlX3BvcyAhPSAwKTtcblxuXHRpZiAoY29uLVx1MDAzZWluX2J2ZWMuYnZfbGVuICE9IENFUEhfQkFOTkVSX1YyX1BSRUZJWF9MRU4pXG5cdFx0cmV0dXJuIC1FSU87XG5cblx0cCA9IHBhZ2VfYWRkcmVzcyhjb24tXHUwMDNlaW5fYnZlYy5idl9wYWdlKSArIGNvbi1cdTAwM2Vpbl9idmVjLmJ2X29mZnNldDtcblx0aWYgKG1lbWNtcChwLCBDRVBIX0JBTk5FUl9WMiwgQ0VQSF9CQU5ORVJfVjJfTEVOKSkge1xuXHRcdHByX2VycihcImJhZCBiYW5uZXIgZnJvbSAlc1xcblwiLCBjZXBoX3ByX2FkZHIoXHUwMDI2Y29uLVx1MDAzZXBlZXJfYWRkcikpO1xuXHRcdHJldHVybiAtRUlOVkFMO1xuXHR9XG5cblx0cCArPSBDRVBIX0JBTk5FUl9WMl9MRU47XG5cdHBheWxvYWRfbGVuID0gY2VwaF9kZWNvZGVfMTYoXHUwMDI2cCk7XG5cdGRvdXQoXCIlcyBjb24gJXAgcGF5bG9hZF9sZW4gJWRcXG5cIiwgX19mdW5jX18sIGNvbiwgcGF5bG9hZF9sZW4pO1xuXG5cdGlmIChwYXlsb2FkX2xlbiBcdTAwM2Mgc2l6ZW9mKHU2NCkgKyBzaXplb2YodTY0KSkge1xuXHRcdGNvbi1cdTAwM2VlcnJvcl9tc2cgPSBcInByb3RvY29sIGVycm9yLCBiYWQgYmFubmVyIHBheWxvYWQgbGVuXCI7XG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5cdH1cblxuXHRyZXR1cm4gcHJlcGFyZV9yZWFkX2Jhbm5lcl9wYXlsb2FkKGNvbiwgcGF5bG9hZF9sZW4pO1xufVxuYGBgXG5cblRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcyBhIGNoZWNrIGZvciBgcGF5bG9hZF9sZW5gLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgc2VnbWVudCBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSBmb3IgZnV6emluZyB0byBlbnN1cmUgaXQgaGFuZGxlcyB2YXJpb3VzIGlucHV0IGxlbmd0aHMgcm9idXN0bHkuIEdpdmVuIHRoYXQgaXQncyBsaW5rZWQgdG8gdGhlIGBDRVBIX0xJQmAgY29uZmlnLCBJIGtub3cgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBhcmVhIEkgc2hvdWxkIHNwZW5kIHRpbWUgaW52ZXN0aWdhdGluZy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMDIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MTMuMjMxMzk1NDQ1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTcyNTk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0VQSF9MSUJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NlcGgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0xJQlxcbm5ldC9jZXBoL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ2VwaCBjb3JlIGxpYnJhcnlcXFwiXFxuLS1cXG5uZXQvY2VwaC9LY29uZmlnLTIyLVxcbm5ldC9jZXBoL0tjb25maWc6MjM6Y29uZmlnIENFUEhfTElCX1BSRVRUWURFQlVHXFxubmV0L2NlcGgvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJJbmNsdWRlIGZpbGU6bGluZSBpbiBjZXBoIGRlYnVnIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9jZXBoL0tjb25maWctMzQtXFxubmV0L2NlcGgvS2NvbmZpZzozNTpjb25maWcgQ0VQSF9MSUJfVVNFX0ROU19SRVNPTFZFUlxcbm5ldC9jZXBoL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiVXNlIGluLWtlcm5lbCBzdXBwb3J0IGZvciBETlMgbG9va3VwXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzoxMy4yNzMxMjkzOTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5NjA3NjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgQ0VQSF9MSUIqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgZGVwZW5kZW50IG9uIGBDRVBIX0xJQmAuIFRoaXMgaXNuJ3QgYWJvdXQgaW50dWl0aW9uIG9yIGd1ZXNzd29yazsgaXQncyBhYm91dCBzb2xpZGlmeWluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gdmVyaWZ5IHdoZXJlIHRoaXMgbGlicmFyeSBpcyB1dGlsaXplZCBhbmQgaG93IG90aGVyIGNvbXBvbmVudHMgcmVseSBvbiBpdHMgYXZhaWxhYmlsaXR5LiBJdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgdG8sIG9yIHJlbW92YWwgb2YsIGBDRVBIX0xJQmAuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgZGVwZW5kcyBvbmAgc2VjdGlvbiByZWxhdGVkIHRvIGBDRVBIX0xJQmAuIFRoaXMgaXMgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaXRzIGludGVncmF0aW9uIGFuZCBpbXBvcnRhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTAzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MTYuNTY5MjA4Njc4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jZXBoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBDRVBIX0xJQlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkNlcGggY29yZSBsaWJyYXJ5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NCQ1xcbiAgIDg6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gICA5OlxcdFxcdHNlbGVjdCBDUllQVE9fS1JCNVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2XFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAxMjpcXHRcXHRzZWxlY3QgS0VZU1xcbiAgMTM6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIENob29zZSBZIG9yIE0gaGVyZSB0byBpbmNsdWRlIGNlcGhsaWIsIHdoaWNoIHByb3ZpZGVzIHRoZVxcbiAgMTY6XFx0XFx0ICBjb21tb24gZnVuY3Rpb25hbGl0eSB0byBib3RoIHRoZSBDZXBoIGZpbGVzeXN0ZW0gYW5kXFxuICAxNzpcXHRcXHQgIHRvIHRoZSByYWRvcyBibG9jayBkZXZpY2UgKHJiZCkuXFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgTW9yZSBpbmZvcm1hdGlvbiBhdCBodHRwczovL2NlcGguaW8vLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjE2LjU2OTI2MjYwOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDY5NzgyMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGVwZW5kZW5jeSBBbmFseXNpcyBhbmQgRW50cnkgUG9pbnQgSWRlbnRpZmljYXRpb24qKlxuXG5SaWdodCwgc28gYENFUEhfTElCYCBoaW5nZXMgb24gYElORVRgLiAgVGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LiBFc3NlbnRpYWxseSwgZW5hYmxpbmcgYENFUEhfTElCYCBpcyB0aGUgd2F5IHRvIGdvLCBjb25maWctd2lzZSwgdG8gdGFja2xlIHRoZSBwcm9ibGVtLiBOb3csIEkgbmVlZCB0byB6b29tIGluIGFuZCBzZWUgd2hhdCBmdW5jdGlvbnMgd2l0aGluIHRoaXMgZGVwZW5kZW5jeSBhcmUga2V5LlxuXG5Mb29rcyBsaWtlIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAgaXMgYSBzb2xpZCBmdW5jdGlvbiB0byBwdXQgdW5kZXIgdGhlIG1pY3Jvc2NvcGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBuZWVkIHRvIGNoZWNrIGZvciBvdGhlciByZWxldmFudCBlbnRyeSBwb2ludHMgdGhhdCBJIHNob3VsZCBwcm9iYWJseSBiZSBjb25zaWRlcmluZy4gTGV0J3Mgc2VlIHdoYXQgZWxzZSBpcyBvbiBvZmZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjc6MjEuMDM5MDQ3MzgzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI1MDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZXBoX2Nvbl92Ml90cnlfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NlcGgvbWVzc2VuZ2VyLmM9MTU0Mj1zdGF0aWMgdm9pZCBjZXBoX2Nvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU3NC1cXHRcXHRpZiAoY2VwaF9tc2dyMihmcm9tX21zZ3IoY29uLVxcdTAwM2Vtc2dyKSkpXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTU3NTpcXHRcXHRcXHRyZXQgPSBjZXBoX2Nvbl92Ml90cnlfcmVhZChjb24pO1xcbm5ldC9jZXBoL21lc3Nlbmdlci5jLTE1NzYtXFx0XFx0ZWxzZVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MzA3Mj1zdGF0aWMgaW50IHBvcHVsYXRlX2luX2l0ZXIoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0MC1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYzozMTQxOmludCBjZXBoX2Nvbl92Ml90cnlfcmVhZChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzE0Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjIxLjA4MTMwMjI3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk1MDc5ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gY2VwaF9jb25fdjIgYW5kIGl0cyBSZWFkIEZ1bmN0aW9uKipcblxuUmlnaHQsIGBjZXBoX2Nvbl92Ml90cnlfcmVhZGAuLi4gdGhhdCdzIHRoZSBjb3JlIHJlYWQgZnVuY3Rpb24gd2l0aGluIHRoZSBNZXNzZW5nZXIgdjIgaW1wbGVtZW50YXRpb24uIEknbSBpbW1lZGlhdGVseSB0aGlua2luZywgXCJPa2F5LCB3ZSdyZSB0YWxraW5nIGFib3V0IHJlYWRpbmcgZGF0YSBhY3Jvc3MgdGhlIENlcGggbmV0d29yayB1c2luZyB0aGUgdjIgcHJvdG9jb2wuXCIgVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCBoYW5kbGVzIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiByZWNlaXZpbmcgYW5kIHByb2Nlc3NpbmcgZGF0YS4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IGVmZmljaWVuY3ksIGVycm9yIGhhbmRsaW5nLCBhbmQgc2VjdXJpdHkgd2l0aGluIHRoZSByZWFkaW5nIGNvbnRleHQuIElzIGl0IHJvYnVzdCBhZ2FpbnN0IG1hbGljaW91cyBhY3RvcnMsIGlzIGl0IG9wdGltaXplZD8gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgaXQgaXMgaGFuZGxpbmcgZnJhZ21lbnRlZCBtZXNzYWdlcywgaG93IGl0IGlzIHZhbGlkYXRpbmcgcGF5bG9hZHMsIHdoZXRoZXIgaXQgaXMgdXNpbmcgdGhlIHJpbmcgYnVmZmVyIGVmZmVjdGl2ZWx5LCBldGMuXG5cbkJ1dCBub3csIHdoYXQgYWJvdXQgdGhlIHdyaXRpbmcgc2lkZSBvZiB0aGluZ3M/IE15IGJyYWluIGltbWVkaWF0ZWx5IGp1bXBzIHRvLCBcIldhaXQgYSBtaW51dGUsIHdoYXQncyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBmb3Igd3JpdGluZyBpbiBtZXNzZW5nZXIgdjI/XCIgSSBjYW4ndCBqdXN0IGZvY3VzIG9uIHJlYWRzLCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGNvbXBsZW1lbnRhcnkgd3JpdGUgcHJvY2VzcyB3b3Jrcy4gSXMgaXQgbmFtZWQgc2ltaWxhcmx5PyBJcyB0aGUgYXJjaGl0ZWN0dXJlIG1pcnJvcmluZyB0aGUgcmVhZCBwcm9jZXNzPyBJcyBpdCBgY2VwaF9jb25fdjJfdHJ5X3dyaXRlYD8gSSBjYW4ndCBqdXN0IGJlIGZvY3VzaW5nIG9uIG9uZSBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLiBJIG5lZWQgdG8ga25vdyBhYm91dCBwb3NzaWJsZSBib3R0bGVuZWNrcywgbXV0ZXhlcywgcmVzb3VyY2UgY29udGVudGlvbiB0aGF0IG11c3QgaGFwcGVuIGF0IHRoZXNlIHBvaW50cy4gSSBuZWVkIHRvIHN0YXJ0IGFza2luZyBxdWVzdGlvbnMgYWJvdXQgbG9jayBvcmRlcmluZyBhbmQgcG9zc2libGUgZGVhZGxvY2tzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgYmFsYW5jZSBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgQ2VwaCBoYW5kbGVzIGl0cyBuZXR3b3JrIG9wZXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzoyNS4wNzYzODQwODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDM5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNlcGhfY29uX3YyX3RyeV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2VwaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NlcGgvbWVzc2VuZ2VyLmM9MTU0Mj1zdGF0aWMgdm9pZCBjZXBoX2Nvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmMtMTU4Ny1cXHRcXHRpZiAoY2VwaF9tc2dyMihmcm9tX21zZ3IoY29uLVxcdTAwM2Vtc2dyKSkpXFxubmV0L2NlcGgvbWVzc2VuZ2VyLmM6MTU4ODpcXHRcXHRcXHRyZXQgPSBjZXBoX2Nvbl92Ml90cnlfd3JpdGUoY29uKTtcXG5uZXQvY2VwaC9tZXNzZW5nZXIuYy0xNTg5LVxcdFxcdGVsc2VcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMyODE9c3RhdGljIGludCBwb3B1bGF0ZV9vdXRfaXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzU4LVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMzNTk6aW50IGNlcGhfY29uX3YyX3RyeV93cml0ZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM2MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjI1LjExODgyOTY5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk3OTk1Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkFuYWx5emluZyBCYW5uZXIgUHJlZml4IFJlYWRpbmcgaW4gQ2VwaCBDb25uZWN0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaG93IHRoZSBiYW5uZXIgcHJlZml4IGlzIHJlYWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGF0IGZlZWxzIGxpa2UgdGhlIG1vc3QgZGlyZWN0IGZ1bmN0aW9uIGludm9sdmVkIGluIHRoaXMgcHJvY2Vzcy4gQW5kIG9mIGNvdXJzZSwgYGNlcGhfY29uX3dvcmtmbmAgaXMga2V5LCBzaW5jZSB0aGF04oCZcyB0aGUgd29yayBmdW5jdGlvbiB0aGF0IHByb2JhYmx5IGNhbGxzIGl0LiBJIHNob3VsZCB2ZXJpZnkgdGhhdCdzIHRoZSBvbmx5IHBvaW50IHRoYXQgZG9lcyBjYWxsIGl0LlxuXG5CdXQgbGV0J3MgYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgYmFubmVyIHJlYWRpbmcuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCBJIHNob3VsZCBjaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIG9yIGNvZGUgcGF0aHMuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBvc3NpYmxlIGNvbm5lY3Rpb24gaW5pdGlhdGlvbiBvciBtZXNzYWdlIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0J3MgY2FzdCBhIHdpZGVyIG5ldCBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA2NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjI5LjMxNjgyNzcwM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMTUyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY2Vzc19iYW5uZXJfcHJlZml4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yMTA3PXN0YXRpYyB2b2lkIHByZXBhcmVfc2tpcF9tZXNzYWdlKHN0cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbilcXG4tLVxcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jLTIxMjQtXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjEyNTpzdGF0aWMgaW50IHByb2Nlc3NfYmFubmVyX3ByZWZpeChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjEyNi17XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMDcyPXN0YXRpYyBpbnQgcG9wdWxhdGVfaW5faXRlcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMDgwLVxcdGlmIChjb24tXFx1MDAzZXN0YXRlID09IENFUEhfQ09OX1NfVjJfQkFOTkVSX1BSRUZJWCkge1xcbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jOjMwODE6XFx0XFx0cmV0ID0gcHJvY2Vzc19iYW5uZXJfcHJlZml4KGNvbik7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzA4Mi1cXHR9IGVsc2UgaWYgKGNvbi1cXHUwMDNlc3RhdGUgPT0gQ0VQSF9DT05fU19WMl9CQU5ORVJfUEFZTE9BRCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyNzoyOS4zNTc5NTE3MTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2MzE5MTIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiBgY2VwaF9jb25fdjJfdHJ5X3JlYWRgLiBUaGlzIGZlZWxzIGxpa2UgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uLCB0aGUgcmlnaHQgKmZvY3VzIHN5bWJvbCosIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZS4gTm93IHRoYXQgSSBoYXZlIHRoaXMgaWRlbnRpZmllZCwgSSBjYW4gc3RhcnQgdG8gdGhpbmsgYWJvdXQgdGhlIG5leHQgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIG9yIGRlYnVnZ2luZyB0aGlzIHByb2Nlc3MuIEknbSBnb2luZyB0byBjYWxsIHNldC1yZXN1bHRzIGFuZCBzZWUgd2hlcmUgdGhhdCBsZWFkcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQgYW5kIHByb3ZpZGUgc29tZSBicmVhZGNydW1icyB0byBmb2xsb3cgZm9yIGZ1dHVyZSBpdGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjAyLCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI3OjMzLjkyMTE0NjI4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MTUzMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRVBIX0xJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNlcGhfY29uX3YyX3RyeV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBwYXlsb2FkIGxlbmd0aCBpbiB0aGUgQ2VwaCBtZXNzZW5nZXIgdjIgcHJvdG9jb2wgd2hlbiBwcm9jZXNzaW5nIHRoZSBiYW5uZXIgcHJlZml4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBhIG1hbGljaW91cyBvciBtYWxmb3JtZWQgcGVlci4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHJlYWQgcGF0aCBvZiB0aGUgbWVzc2VuZ2VyIHYyIHByb3RvY29sLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNFUEhfTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF9jb25fdjJfdHJ5X3JlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIHBheWxvYWQgbGVuZ3RoIGluIHRoZSBDZXBoIG1lc3NlbmdlciB2MiBwcm90b2NvbCB3aGVuIHByb2Nlc3NpbmcgdGhlIGJhbm5lciBwcmVmaXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGEgbWFsaWNpb3VzIG9yIG1hbGZvcm1lZCBwZWVyLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcmVhZCBwYXRoIG9mIHRoZSBtZXNzZW5nZXIgdjIgcHJvdG9jb2wuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowz4xgq[1] Phase: Succeeded StartedAt: 2026-07-31 12:27:45 +0000 UTC FinishedAt: 2026-07-31 12:27:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 12:27:45 +0000 UTC FinishedAt: 2026-07-31 12:27:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2] Phase: Succeeded StartedAt: 2026-07-31 12:27:45 +0000 UTC FinishedAt: 2026-07-31 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:27:45 +0000 UTC FinishedAt: 2026-07-31 16:14:22 +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_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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:27:45 +0000 UTC FinishedAt: 2026-07-31 12:27:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:27:45 +0000 UTC FinishedAt: 2026-07-31 12:27:50 +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_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-workflowz4xgq/series-workflowz4xgq-convert-artifact-1565442774/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:27:55 +0000 UTC FinishedAt: 2026-07-31 12:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:27:55 +0000 UTC FinishedAt: 2026-07-31 12:47:44 +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:*a89879b6-a8ca-4c4d-873a-3ea7be83c6e6,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-workflowz4xgq/series-workflowz4xgq-convert-artifact-1565442774/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": "0ab0dde0-e522-4f6c-beb1-90f7fb70791b", "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-workflowz4xgq/series-workflowz4xgq-build-action-2524159852/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:27:55 +0000 UTC FinishedAt: 2026-07-31 12:47:34 +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:*a89879b6-a8ca-4c4d-873a-3ea7be83c6e6,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-workflowz4xgq/series-workflowz4xgq-convert-artifact-1565442774/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": "0ab0dde0-e522-4f6c-beb1-90f7fb70791b", "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-workflowz4xgq/series-workflowz4xgq-build-action-2524159852/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:47:44 +0000 UTC FinishedAt: 2026-07-31 12:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:47:44 +0000 UTC FinishedAt: 2026-07-31 12:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:47:44 +0000 UTC FinishedAt: 2026-07-31 12:48:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:47:44 +0000 UTC FinishedAt: 2026-07-31 12:47:49 +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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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-workflowz4xgq/series-workflowz4xgq-convert-artifact-877635689/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:48:13 +0000 UTC FinishedAt: 2026-07-31 12:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:48:13 +0000 UTC FinishedAt: 2026-07-31 12:49:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0ab0dde0-e522-4f6c-beb1-90f7fb70791b,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-workflowz4xgq/series-workflowz4xgq-build-action-2524159852/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-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:50:05 +0000 UTC FinishedAt: 2026-07-31 12:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:50:05 +0000 UTC FinishedAt: 2026-07-31 12:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:50:05 +0000 UTC FinishedAt: 2026-07-31 13:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:50:05 +0000 UTC FinishedAt: 2026-07-31 13:08:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a89879b6-a8ca-4c4d-873a-3ea7be83c6e6,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-workflowz4xgq/series-workflowz4xgq-convert-artifact-877635689/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": "525b251b-af54-48db-bb15-d35bb4aa82b2", "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-workflowz4xgq/series-workflowz4xgq-build-action-1073997893/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 12:50:05 +0000 UTC FinishedAt: 2026-07-31 13:08: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:*a89879b6-a8ca-4c4d-873a-3ea7be83c6e6,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-workflowz4xgq/series-workflowz4xgq-convert-artifact-877635689/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": "525b251b-af54-48db-bb15-d35bb4aa82b2", "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-workflowz4xgq/series-workflowz4xgq-build-action-1073997893/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:08:56 +0000 UTC FinishedAt: 2026-07-31 13:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:08:56 +0000 UTC FinishedAt: 2026-07-31 13:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:08:56 +0000 UTC FinishedAt: 2026-07-31 13:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:08:56 +0000 UTC FinishedAt: 2026-07-31 13:10:34 +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:*525b251b-af54-48db-bb15-d35bb4aa82b2,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-workflowz4xgq/series-workflowz4xgq-build-action-1073997893/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-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 16:14:22 +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:*0ab0dde0-e522-4f6c-beb1-90f7fb70791b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*525b251b-af54-48db-bb15-d35bb4aa82b2,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-workflowz4xgq/series-workflowz4xgq-build-action-2524159852/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-workflowz4xgq/series-workflowz4xgq-build-action-1073997893/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 13:11:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 13:11:06 +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-workflowz4xgq/series-workflowz4xgq-convert-artifact-753562302/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 13:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 13:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:10:44 +0000 UTC FinishedAt: 2026-07-31 13:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:11:18 +0000 UTC FinishedAt: 2026-07-31 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xgq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_LIB"],"series_id":"2a9e12d6-7818-4f3a-8bf0-aec7dca21fb2","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 13:11:18 +0000 UTC FinishedAt: 2026-07-31 16:14:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0ab0dde0-e522-4f6c-beb1-90f7fb70791b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*525b251b-af54-48db-bb15-d35bb4aa82b2,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-workflowz4xgq/series-workflowz4xgq-build-action-2524159852/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-workflowz4xgq/series-workflowz4xgq-build-action-1073997893/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-workflowz4xgq/series-workflowz4xgq-convert-artifact-753562302/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,}