Name: series-workflown52jl Phase: Succeeded StartedAt: 2026-06-21 14:08:34 +0000 UTC FinishedAt: 2026-06-21 16:08:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[0] Phase: Succeeded StartedAt: 2026-06-21 14:08:34 +0000 UTC FinishedAt: 2026-06-21 14:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[0].run-triage Phase: Succeeded StartedAt: 2026-06-21 14:08:34 +0000 UTC FinishedAt: 2026-06-21 14:25:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP_IOLATENCY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP_IOLATENCY" ], "series_id": "c3ea9c1a-d020-4278-8c46-5b03e62048a2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blkcg_iolatency_exit", "iolatency_pd_offline", "iolatency_set_limit", "blk_iolatency_init" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrY2dfaW9sYXRlbmN5X2V4aXQmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3BkX29mZmxpbmUmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3NldF9saW1pdCYjMzQ7LAogICAgJiMzNDtibGtfaW9sYXRlbmN5X2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYmUyMjc5MGM1YzA5ZjU4NzM2MjU0OGRhNWJlYzVmMjMxYzhhNmZkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVuIDIxIDE0OjIzOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2xhdGVuY3kuYyBiL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xuaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWlvbGF0ZW5jeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstaW9sYXRlbmN5LmNcbkBAIC02MzksNiAmIzQzOzYzOSwxMSBAQCBzdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZXhpdChzdHJ1Y3QgcnFfcW9zICpycW9zKVxuIFx0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZibGtpb2xhdC1cdTAwM2V0aW1lcik7XG4gXHRmbHVzaF93b3JrKFx1MDAyNmJsa2lvbGF0LVx1MDAzZWVuYWJsZV93b3JrKTtcbiBcdGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KHJxb3MtXHUwMDNlZGlzaywgXHUwMDI2YmxrY2dfcG9saWN5X2lvbGF0ZW5jeSk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpIGludm9rZXMgaW9sYXRlbmN5X3BkX29mZmxpbmUoKSwgd2hpY2ggbWF5XG4mIzQzO1x0ICogcXVldWUgZW5hYmxlX3dvcmsgYWdhaW4gd2hlbiBpdCBjbGVhcnMgdGhlIGxhc3QgbGF0ZW5jeSB0YXJnZXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0Zmx1c2hfd29yayhcdTAwMjZibGtpb2xhdC1cdTAwM2VlbmFibGVfd29yayk7XG4gXHRrZnJlZShibGtpb2xhdCk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrY2dfaW9sYXRlbmN5X2V4aXQmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3BkX29mZmxpbmUmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3NldF9saW1pdCYjMzQ7LAogICAgJiMzNDtibGtfaW9sYXRlbmN5X2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZTIyNzkwYzVjMDlmNTg3MzYyNTQ4ZGE1YmVjNWYyMzFjOGE2ZmRmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdW4gMjEgMTQ6MjM6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstaW9sYXRlbmN5LmMgYi9ibG9jay9ibGstaW9sYXRlbmN5LmMKaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NAotLS0gYS9ibG9jay9ibGstaW9sYXRlbmN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWlvbGF0ZW5jeS5jCkBAIC02MzksNiAmIzQzOzYzOSwxMSBAQCBzdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZXhpdChzdHJ1Y3QgcnFfcW9zICpycW9zKQogCXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtibGtpb2xhdC0mZ3Q7dGltZXIpOwogCWZsdXNoX3dvcmsoJmFtcDtibGtpb2xhdC0mZ3Q7ZW5hYmxlX3dvcmspOwogCWJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KHJxb3MtJmd0O2Rpc2ssICZhbXA7YmxrY2dfcG9saWN5X2lvbGF0ZW5jeSk7CiYjNDM7CS8qCiYjNDM7CSAqIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkgaW52b2tlcyBpb2xhdGVuY3lfcGRfb2ZmbGluZSgpLCB3aGljaCBtYXkKJiM0MzsJICogcXVldWUgZW5hYmxlX3dvcmsgYWdhaW4gd2hlbiBpdCBjbGVhcnMgdGhlIGxhc3QgbGF0ZW5jeSB0YXJnZXQuCiYjNDM7CSAqLwomIzQzOwlmbHVzaF93b3JrKCZhbXA7YmxraW9sYXQtJmd0O2VuYWJsZV93b3JrKTsKIAlrZnJlZShibGtpb2xhdCk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEFkZHJlc3NpbmcgYSBQb3RlbnRpYWwgVXNlLUFmdGVyLUZyZWUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBibG9jay9ibGstaW9sYXRlbmN5LmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGBmbHVzaF93b3JrKCZhbXA7YmxraW9sYXQtJmd0O2VuYWJsZV93b3JrKTtgIGNhbGwgd2l0aGluIGBibGtjZ19pb2xhdGVuY3lfZXhpdCgpYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGxpa2VseSB0byBzcXVhc2ggYSByYWNlIGNvbmRpdGlvbi4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBhaW1lZCBhdCBwcmV2ZW50aW5nIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gb3IgYSByZWxhdGVkIGlzc3VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZW5hYmxlX3dvcmtgIGlzIGdldHRpbmcgcXVldWVkIGluIGBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpYCBhZnRlciBzb21ldGhpbmcgaGFzIGFscmVhZHkgc3RhcnRlZCBkZS1pbml0aWFsaXppbmcgdGhlIHN0cnVjdHVyZS4KClRvIGNvbmZpcm0gbXkgaHVuY2gsIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gYGJsa2NnX2lvbGF0ZW5jeV9leGl0YCBhbmQgYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5YC4gSSYjMzk7bGwgcnVuIGEgcXVpY2sgYGdyZXBgIGZvciBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGFuZCBgZW5hYmxlX3dvcmtgIHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdyBhbmQgd2hlcmUgdGhpcyBgZW5hYmxlX3dvcmtgIGlzIHRvdWNoZWQgaW4gdGhhdCBmdW5jdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUgb2YgdGhlIHZ1bG5lcmFiaWxpdHkgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGFuZCBob3cgd2VsbCBpdCBzb2x2ZXMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrY2dfaW9sYXRlbmN5X2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTU4Mz1zdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZG9uZV9iaW8oc3RydWN0IHJxX3FvcyAqcnFvcywgc3RydWN0IGJpbyAqYmlvKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02MzQtXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjM1OnN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9leGl0KHN0cnVjdCBycV9xb3MgKnJxb3MpXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjM2LXtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnFfcW9zX29wcyBibGtjZ19pb2xhdGVuY3lfb3BzID0ge1xuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NTItXHQuZG9uZV9iaW8gPSBibGtjZ19pb2xhdGVuY3lfZG9uZV9iaW8sXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjUzOlx0LmV4aXQgPSBibGtjZ19pb2xhdGVuY3lfZXhpdCxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NTQtfTtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9NzMzPXN0YXRpYyB2b2lkIGJsa2lvbGF0ZW5jeV9lbmFibGVfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc0NS1cdCAqIEFsc28sIHdlIGtub3cgQGJsa2lvbGF0IGlzIHNhZmUgdG8gYWNjZXNzIGFzIC1cdTAwM2VlbmFibGVfd29yayBpcyBmbHVzaGVkXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NzQ2Olx0ICogaW4gYmxrY2dfaW9sYXRlbmN5X2V4aXQoKS5cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy03NDctXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gYSBoeXBvdGhldGljYWwgZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIEZ1bmN0aW9uIENhbGwqKgoKQWxyaWdodCwgc28gYGJsa2NnX2lvbGF0ZW5jeV9leGl0YCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBycV9xb3Nfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBjdXJpb3NpdHkuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mICp3aGVuKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYXkgdGhhdCB0cmlnZ2VyIHRoaXMgY2FsbD8gV2hhdCBzcGVjaWZpYyBzZXR0aW5ncyBvciBmbGFncyB3aXRoaW4gdGhlIHN5c3RlbSBlbmFibGUgdGhpcyBJL08gbGF0ZW5jeSBhY2NvdW50aW5nPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgc2VlIHdoYXQmIzM5O3MgdGllZCB0byBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLiBLbm93aW5nIHRoYXQgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIGFuZCBpdHMgaW1wYWN0LiBUaGlzIGlzIHdoZXJlIHRoZSBpbnZlc3RpZ2F0aW9uIHN0YXJ0czsgdG8gdHJhY2UgYmFjayB0byB0aGUgaW5pdGlhdGluZyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTgxPUNPTkZJR19CTEtfV0JUPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6ODI6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctODMtQ09ORklHX0JMS19DR1JPVVBfRkNfQVBQSUQ9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9OTY9Q09ORklHX0JMS19XQlQ9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo5NzpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05OC1DT05GSUdfQkxLX0NHUk9VUF9GQ19BUFBJRD15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTg2PUNPTkZJR19CTEtfV0JUPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo4NzpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTg4LUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTgwPUNPTkZJR19CTEtfV0JUPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4MTpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTgyLUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZz01Nj1DT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRD15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjU3OkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTU4LUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTU3PUNPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXlcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzo1ODpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTU5LUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYmxvY2svTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVx0JiM0Mzs9IGJsay1pb3ByaW8ub1xuYmxvY2svTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTEwPUNPTkZJR19CTEtfQ0dST1VQPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjExOkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC0xMi1DT05GSUdfQkxLX0RFVl9CU0dMSUI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTU9Q09ORklHX0JJTkZNVF9NSVNDPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjY6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTctQ09ORklHX0JMS19DR1JPVVA9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBCTEtcX0NHUk9VUFxfSU9MQVRFTkNZIE1vZHVsZSoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIG9wdGlvbiB3ZSYjMzk7cmUgdGFyZ2V0aW5nIGlzIGBCTEtfQ0dST1VQX0lPTEFURU5DWWAuIFRpbWUgdG8gbWFwIG91dCB0aGUgbGlrZWx5IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSByZWNlbnQgYWRkaXRpb24sIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjbGVhcmx5IGBibGtjZ19pb2xhdGVuY3lfZXhpdGAuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIHRhcmdldGVkIGZ1enouCgpBbHNvLCBJJiMzOTttIHRoaW5raW5nLCBgYmxrY2dfaW9sYXRlbmN5X2RvbmVfYmlvYCBoYXMgdG8gYmUgYSBob3QgcGF0aCBpbiB0aGUgZGF0YSBmbG93LCBzbyBpdOKAmXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCB0byB0aHJvdyBzb21lIGZ1enppbmcgcmVzb3VyY2VzIHRoZXJlLiBJ4oCZZCBleHBlY3QgdGhhdCB0byBiZSB0aGUgbW9zdCBhY3RpdmUgcGFydCBvZiB0aGUgc3Vic3lzdGVtLgoKSSYjMzk7bSBhbHNvIHNlZWluZyBgaW9sYXRlbmN5X3BkX29mZmxpbmVgIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudHMuIFRoYXQmIzM5O3MgaW50cmlndWluZy4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IGludGVyYWN0aW9uLCBwYXJ0aWN1bGFybHkgdGhlIHRyYW5zaXRpb24gYmV0d2VlbiBvbmxpbmUvb2ZmbGluZSBzdGF0ZXMsIG1pZ2h0IGhhdmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHJhY2UgY29uZGl0aW9ucy4gTGV0JiMzOTtzIGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgaW9sYXRlbmN5X3BkX29mZmxpbmVgIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB3aGVyZSB0aGF0JiMzOTtzIHVzZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdmFsdWFibGUgaW5mb3JtYXRpb24gZm9yIGZ1enppbmcgc3RyYXRlZ3kgcGxhbm5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9sYXRlbmN5X3BkX29mZmxpbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTYzNT1zdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZXhpdChzdHJ1Y3QgcnFfcW9zICpycW9zKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NDItXHQvKlxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjY0MzpcdCAqIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkgaW52b2tlcyBpb2xhdGVuY3lfcGRfb2ZmbGluZSgpLCB3aGljaCBtYXlcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NDQtXHQgKiBxdWV1ZSBlbmFibGVfd29yayBhZ2FpbiB3aGVuIGl0IGNsZWFycyB0aGUgbGFzdCBsYXRlbmN5IHRhcmdldC5cbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9OTkwPXN0YXRpYyB2b2lkIGlvbGF0ZW5jeV9wZF9pbml0KHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZClcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTAyOS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzoxMDMwOnN0YXRpYyB2b2lkIGlvbGF0ZW5jeV9wZF9vZmZsaW5lKHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZClcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDMxLXtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9MTA1Nj1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9sYXRlbmN5ID0ge1xuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDU5LVx0LnBkX2luaXRfZm5cdD0gaW9sYXRlbmN5X3BkX2luaXQsXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA2MDpcdC5wZF9vZmZsaW5lX2ZuXHQ9IGlvbGF0ZW5jeV9wZF9vZmZsaW5lLFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTEwNjEtXHQucGRfZnJlZV9mblx0PSBpb2xhdGVuY3lfcGRfZnJlZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTU2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipGb2N1c2luZyBvbiBCbG9jayBJL08gTGF0ZW5jeSBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGJsb2NrIEkvTyBsYXRlbmN5LCBhbmQgaW1tZWRpYXRlbHksIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgYW5kIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAganVtcCBvdXQgYXQgbWUgYXMgcG90ZW50aWFsIGtleSBhcmVhcy4gVGhleSBmZWVsIGxpa2Ugc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIHN5bWJvbGljIGZvY3VzLiBJJiMzOTttIGd1ZXNzaW5nIHRoZXNlIGFyZSByZWxhdGVkIHRvIGNsZWFudXAgYW5kIGhhbmRsaW5nIG9mIGRldmljZXMgZ29pbmcgb2ZmbGluZSwgcmVzcGVjdGl2ZWx5LCB3aXRoaW4gdGhlIEkvTyBsYXRlbmN5IHRyYWNraW5nIGZyYW1ld29yay4gVGhlIGxvZ2ljIHdpdGhpbiB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGNyaXRpY2FsLiBUaGVuLCBJIGFsc28gcmVhbGl6ZSB0aGF0IGBibGtpb2xhdGVuY3lfZW5hYmxlX3dvcmtfZm5gIG1pZ2h0IGJlIGluIHRoZSBtaXgsIHBvc3NpYmx5IHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGxhdGVuY3kgdHJhY2tpbmcgZnVuY3Rpb25hbGl0eSBhdCBydW50aW1lLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29udHJvbCBmZWF0dXJlcyB3b3JrLgoKVG8gZXN0YWJsaXNoIHRoZSBjb250ZXh0IG9mIHRoZXNlIHN5bWJvbHMsIGl0IG1ha2VzIHNlbnNlIHRvIGdvIGJhY2sgdG8gdGhlIGluaXRpYWxpemF0aW9uIHBvaW50LiBJIHNob3VsZCBzdGFydCB3aXRoIGNoZWNraW5nIG91dCBgYmxrX2lvbGF0ZW5jeV9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYmFzZSBzZXR1cCBhbmQgaG93IGFsbCB0aGVzZSBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZml0IHRvZ2V0aGVyLCBhbmQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMuIEl0JiMzOTtzIGEgc2Vuc2libGUgc3RhcnRpbmcgcG9pbnQgdG8gdHJhY2UgdGhlIG92ZXJhbGwgZmxvdyBhbmQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgYW5kIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gdGhpcyBhc3BlY3Qgb2YgdGhlIGJsb2NrIGxheWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtfaW9sYXRlbmN5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTczMz1zdGF0aWMgdm9pZCBibGtpb2xhdGVuY3lfZW5hYmxlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy03NjItXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NzYzOnN0YXRpYyBpbnQgYmxrX2lvbGF0ZW5jeV9pbml0KHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc2NC17XG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTgzMj1zdGF0aWMgc3NpemVfdCBpb2xhdGVuY3lfc2V0X2xpbWl0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTAtXHQvKlxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjg1MTpcdCAqIGJsa19pb2xhdGVuY3lfaW5pdCgpIG1heSBmYWlsIGFmdGVyIHJxX3Fvc19hZGQoKSBzdWNjZWVkcyB3aGljaCBjYW5cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTItXHQgKiBjb25mdXNlIGlvbGF0X3JxX3FvcygpIHRlc3QuIE1ha2UgdGhlIHRlc3QgYW5kIGluaXQgYXRvbWljLlxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTUtXHRpZiAoIWlvbGF0X3JxX3FvcyhjdHguYmRldi1cdTAwM2ViZF9xdWV1ZSkpXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODU2Olx0XHRyZXQgPSBibGtfaW9sYXRlbmN5X2luaXQoY3R4LmJkZXYtXHUwMDNlYmRfZGlzayk7XG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODU3LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nOgoKKipFeGFtaW5pbmcgdGhlIEkvTyBMYXRlbmN5IEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyBgYmxrX2lvbGF0ZW5jeV9pbml0YCBpcyBpbnZva2VkIGJ5IGBpb2xhdGVuY3lfc2V0X2xpbWl0YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBgaW9sYXRlbmN5X3NldF9saW1pdGAgaXMgYW5vdGhlciBjcml0aWNhbCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHdpdGhpbiB0aGlzIEkvTyBsYXRlbmN5IGNvbnRleHQuIEl0JiMzOTtzIHRoZSBkcml2ZXIsIHNvIHRvIHNwZWFrLCBmb3IgdGhlIGluaXRpYWxpemF0aW9uLiBUbyBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbGltaXQgaXMgKnNldCogYmVmb3JlIEkgY2FuIHRydWx5IGFwcHJlY2lhdGUgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBkaWcgaW50byBgaW9sYXRlbmN5X3NldF9saW1pdGAgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgbG9naWMgbGlrZWx5IHJlc2lkZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbGF0ZW5jeV9zZXRfbGltaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTgxND1zdGF0aWMgdm9pZCBpb2xhdGVuY3lfY2xlYXJfc2NhbGluZyhzdHJ1Y3QgYmxrY2dfZ3EgKmJsa2cpXG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTgzMS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzo4MzI6c3RhdGljIHNzaXplX3QgaW9sYXRlbmN5X3NldF9saW1pdChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1ZixcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04MzMtXHRcdFx0ICAgICBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz0xMDQ2PXN0YXRpYyBzdHJ1Y3QgY2Z0eXBlIGlvbGF0ZW5jeV9maWxlc1tdID0ge1xuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUwLVx0XHQuc2VxX3Nob3cgPSBpb2xhdGVuY3lfcHJpbnRfbGltaXQsXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA1MTpcdFx0LndyaXRlID0gaW9sYXRlbmN5X3NldF9saW1pdCxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUyLVx0fSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEkvTyBMYXRlbmN5IENncm91cCBGaXgqKgoKT2theSwgc28gYGlvbGF0ZW5jeV9zZXRfbGltaXRgIGlzIGEgY2dyb3VwIHdyaXRlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGltbWVkaWF0ZWx5IHRlc3RhYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgaXMgYSBnb29kIHNpZ24uIEl0JiMzOTtzIGxvb2tpbmcgbGlrZSB0aGUgcHJvYmxlbSBpcyBsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciBhIHVzZS1hZnRlci1mcmVlIGlzc3VlIHRoYXQmIzM5O3MgY3JvcHBpbmcgdXAgZHVyaW5nIGV4aXQsIHdoaWNoIGlzIGEgY2xhc3NpYyBhbmQgdHJpY2t5IHByb2JsZW0gc3BhY2UuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgYGZsdXNoX3dvcmsoJmFtcDtibGtpb2xhdC0mZ3Q7ZW5hYmxlX3dvcmspO2AgdG8gYGJsa2NnX2lvbGF0ZW5jeV9leGl0YC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCBmb3IgZGVhbGluZyB3aXRoIHRoaXMgdHlwZSBvZiBjb25jdXJyZW5jeSBwcm9ibGVtLCBhbmQgaXQgc2VlbXMgZnVuY3Rpb25hbCBvbiB0aGUgc3VyZmFjZS4gV29ydGggZnV6emluZyBpdCB0byBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCkkmIzM5O2xsIG5lZWQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJMS19DR1JPVVBfSU9MQVRFTkNZYC4gSXQmIzM5O3MgZGVmaW5pdGVseSB0aGUga2V5IHRvIHVubG9ja2luZyB0aGlzIGFyZWEgb2YgdGhlIGNvZGUuCgpUbyBzdGFydCwgSSYjMzk7bGwgZm9jdXMgb24gdGhlc2Ugc3ltYm9scyB0byB1bmRlcnN0YW5kIHRoZSBmbG93OiBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLCBgaW9sYXRlbmN5X3BkX29mZmxpbmVgLCBgaW9sYXRlbmN5X3NldF9saW1pdGAsIGFuZCBgYmxrX2lvbGF0ZW5jeV9pbml0YC4gR2V0dGluZyB0aGVzZSBkb3duIHdpbGwgZ2l2ZSBtZSBhIGhlYWQgc3RhcnQgb24gZGVidWdnaW5nLgoKSnVzdCB0byBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYEJMS19DR1JPVVBgIGlzIHJlcXVpcmVkLiBZZXAsIGFuZCBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgIGRlcGVuZHMgb24gaXQsIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGdvIGNoZWNrIHRoZSBgYmxvY2svS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTEyNz1jb25maWcgQkxLX1dCVF9NUVxuLS1cbmJsb2NrL0tjb25maWctMTMzLVxuYmxvY2svS2NvbmZpZzoxMzQ6Y29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXG5ibG9jay9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpbmNvbXBsZXRlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hhdCBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzPyBXaGF0IHJlbGllcyBvbiB3aGF0PyYjMzQ7IFdpdGhvdXQgZnVsbHkgZ3Jhc3BpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBlbGVtZW50cywgSSBjYW4mIzM5O3QgYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGxhcmdlciBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZz0xMjc9Y29uZmlnIEJMS19XQlRfTVFcbi0tXG5ibG9jay9LY29uZmlnLTEzMy1cbmJsb2NrL0tjb25maWc6MTM0OmNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxuYmxvY2svS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBsYXRlbmN5IGJhc2VkIGNncm91cCBJTyBwcm90ZWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyBLY29uZmlnIGZvciBDb25maWd1cmF0aW9uIEluc2lnaHRzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGBibG9jay9LY29uZmlnYCBmaWxlIGFnYWluLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IHRvIGl0IC0gSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMTM0LiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byBibG9jayBkZXZpY2UgaGFuZGxpbmcuIE15IGd1ZXNzIGlzIHRoYXQgaXQgbWlnaHQgYmUgYSBuZXcgZmVhdHVyZSwgYSBzdWJ0bGUgZGVwZW5kZW5jeSwgb3IgcGVyaGFwcyBhIHR3ZWFrIHRvIGFuIGV4aXN0aW5nIHNldHRpbmcgdGhhdCBJJiMzOTt2ZSBiZWVuIG1lYW5pbmcgdG8gcmV2aWV3LiBHaXZlbiB0aGUgY29udGV4dCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZWl0aGVyIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBhbiBleGlzdGluZyBzZXR0aW5nLCBsb29rIGZvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgb3IgcGVyaGFwcyByZXZpZXcgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCBsaW5lIDEzNCBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzA6XHRcdGRlcGVuZHMgb24gQkxLX1dCVFxuIDEzMTpcdFx0aGVscFxuIDEzMjpcdFx0RW5hYmxlIHdyaXRlYmFjayB0aHJvdHRsaW5nIGJ5IGRlZmF1bHQgZm9yIHJlcXVlc3QtYmFzZWQgYmxvY2sgZGV2aWNlcy5cbiAxMzM6XHRcbiAxMzQ6XHRjb25maWcgQkxLX0NHUk9VUF9JT0xBVEVOQ1lcbiAxMzU6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cJiMzNDtcbiAxMzY6XHRcdGRlcGVuZHMgb24gQkxLX0NHUk9VUFxuIDEzNzpcdFx0aGVscFxuIDEzODpcdFx0RW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgLmxhdGVuY3kgaW50ZXJmYWNlIGZvciBJTyB0aHJvdHRsaW5nLlxuIDEzOTpcdFx0VGhlIElPIGNvbnRyb2xsZXIgd2lsbCBhdHRlbXB0IHRvIG1haW50YWluIGF2ZXJhZ2UgSU8gbGF0ZW5jaWVzIGJlbG93XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMzUKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmxvY2sgQ2dyb3VwIElPIExhdGVuY3kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGhpdHRpbmcgdGhlIGJsb2NrIGNncm91cCBJTyBsYXRlbmN5IGZ1bmN0aW9uYWxpdHkuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHk6IGEgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgZW5zdXJpbmcgdGhhdCB0aGUgYGVuYWJsZV93b3JrYCBpcyBmbHVzaGVkICphZnRlciogYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KClgLiBUaGlzIGlzIGdvb2QsIGl0IHNob3dzIGEgY2FyZWZ1bCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvcmRlcmluZyBuZWVkZWQgdG8gcHJldmVudCBpc3N1ZXMgZHVyaW5nIHRoZSBzaHV0ZG93biBvZiB0aGlzIHBhcnRpY3VsYXIgSU8gbGF0ZW5jeSBwb2xpY3kuCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIG9mIHRoZSBjcml0aWNhbCBzeW1ib2xzIGludm9sdmVkIGhlcmU6IEkgbmVlZCB0byBrZWVwIGEgY2xvc2UgZXllIG9uIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAsIG5hdHVyYWxseSwgYnV0IGFsc28gYGlvbGF0ZW5jeV9wZF9vZmZsaW5lYCwgYGlvbGF0ZW5jeV9zZXRfbGltaXRgLCBhbmQgYGJsa19pb2xhdGVuY3lfaW5pdGAg4oCTIHRoZXkmIzM5O3JlIGxpa2VseSB0b3VjaGVkIGJ5IHRoaXMgYW5kIHByb2JhYmx5IGludm9sdmVkIGluIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbXMuCgpUaGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgZW5hYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYEJMS19DR1JPVVBfSU9MQVRFTkNZYC4gVGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZSB0byBrZWVwIGluIG1pbmQsIGFuZCBpdCYjMzk7cyBlc3NlbnRpYWwgZm9yIGFueW9uZSB0byBrbm93IHdobyBpcyBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb25hbGl0eS4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBwYXRjaCYjMzk7cyBpbnRlbnQgYW5kIGltcGFjdC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa2NnX2lvbGF0ZW5jeV9leGl0JiMzNDssCiAgICAmIzM0O2lvbGF0ZW5jeV9wZF9vZmZsaW5lJiMzNDssCiAgICAmIzM0O2lvbGF0ZW5jeV9zZXRfbGltaXQmIzM0OywKICAgICYjMzQ7YmxrX2lvbGF0ZW5jeV9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uIGluIHRoZSBleGl0IHBhdGggb2YgdGhlIGJsb2NrIGNncm91cCBJTyBsYXRlbmN5IHBvbGljeSAoYmxrY2dfaW9sYXRlbmN5X2V4aXQpIGJ5IGZsdXNoaW5nIGVuYWJsZV93b3JrIGFmdGVyIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkuIFRoaXMgbW9kaWZpZXMgZnVuY3Rpb25hbCBjb3JlIGJsb2NrIGNncm91cCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSBjZ3JvdXAgY29uZmlndXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0xBVEVOQ1kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtjZ19pb2xhdGVuY3lfZXhpdCYjMzQ7LAogICAgJiMzNDtpb2xhdGVuY3lfcGRfb2ZmbGluZSYjMzQ7LAogICAgJiMzNDtpb2xhdGVuY3lfc2V0X2xpbWl0JiMzNDssCiAgICAmIzM0O2Jsa19pb2xhdGVuY3lfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBibG9jayBjZ3JvdXAgSU8gbGF0ZW5jeSBwb2xpY3kgKGJsa2NnX2lvbGF0ZW5jeV9leGl0KSBieSBmbHVzaGluZyBlbmFibGVfd29yayBhZnRlciBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpLiBUaGlzIG1vZGlmaWVzIGZ1bmN0aW9uYWwgY29yZSBibG9jayBjZ3JvdXAgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgY2dyb3VwIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzoxOC41MzIwMTQyNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjUyMDkyODU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQX0lPTEFURU5DWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gICAgXCJpb2xhdGVuY3lfcGRfb2ZmbGluZVwiLFxuICAgIFwiaW9sYXRlbmN5X3NldF9saW1pdFwiLFxuICAgIFwiYmxrX2lvbGF0ZW5jeV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzoxOC41MzIwMjAwMTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTI3NTE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJlMjI3OTBjNWMwOWY1ODczNjI1NDhkYTViZWM1ZjIzMWM4YTZmZGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdW4gMjEgMTQ6MjM6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWlvbGF0ZW5jeS5jIGIvYmxvY2svYmxrLWlvbGF0ZW5jeS5jXFxuaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xcbisrKyBiL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xcbkBAIC02MzksNiArNjM5LDExIEBAIHN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9leGl0KHN0cnVjdCBycV9xb3MgKnJxb3MpXFxuIFxcdHRpbWVyX3NodXRkb3duX3N5bmMoXFx1MDAyNmJsa2lvbGF0LVxcdTAwM2V0aW1lcik7XFxuIFxcdGZsdXNoX3dvcmsoXFx1MDAyNmJsa2lvbGF0LVxcdTAwM2VlbmFibGVfd29yayk7XFxuIFxcdGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KHJxb3MtXFx1MDAzZWRpc2ssIFxcdTAwMjZibGtjZ19wb2xpY3lfaW9sYXRlbmN5KTtcXG4rXFx0LypcXG4rXFx0ICogYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKSBpbnZva2VzIGlvbGF0ZW5jeV9wZF9vZmZsaW5lKCksIHdoaWNoIG1heVxcbitcXHQgKiBxdWV1ZSBlbmFibGVfd29yayBhZ2FpbiB3aGVuIGl0IGNsZWFycyB0aGUgbGFzdCBsYXRlbmN5IHRhcmdldC5cXG4rXFx0ICovXFxuK1xcdGZsdXNoX3dvcmsoXFx1MDAyNmJsa2lvbGF0LVxcdTAwM2VlbmFibGVfd29yayk7XFxuIFxcdGtmcmVlKGJsa2lvbGF0KTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MTkuMTk4NDM0MDI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg1NDQ5NzQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQX0lPTEFURU5DWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gICAgXCJpb2xhdGVuY3lfcGRfb2ZmbGluZVwiLFxuICAgIFwiaW9sYXRlbmN5X3NldF9saW1pdFwiLFxuICAgIFwiYmxrX2lvbGF0ZW5jeV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJlMjI3OTBjNWMwOWY1ODczNjI1NDhkYTViZWM1ZjIzMWM4YTZmZGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1biAyMSAxNDoyMzoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2xhdGVuY3kuYyBiL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xuaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWlvbGF0ZW5jeS5jXG4rKysgYi9ibG9jay9ibGstaW9sYXRlbmN5LmNcbkBAIC02MzksNiArNjM5LDExIEBAIHN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9leGl0KHN0cnVjdCBycV9xb3MgKnJxb3MpXG4gXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmJsa2lvbGF0LVx1MDAzZXRpbWVyKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2YmxraW9sYXQtXHUwMDNlZW5hYmxlX3dvcmspO1xuIFx0YmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3kocnFvcy1cdTAwM2VkaXNrLCBcdTAwMjZibGtjZ19wb2xpY3lfaW9sYXRlbmN5KTtcbitcdC8qXG4rXHQgKiBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpIGludm9rZXMgaW9sYXRlbmN5X3BkX29mZmxpbmUoKSwgd2hpY2ggbWF5XG4rXHQgKiBxdWV1ZSBlbmFibGVfd29yayBhZ2FpbiB3aGVuIGl0IGNsZWFycyB0aGUgbGFzdCBsYXRlbmN5IHRhcmdldC5cbitcdCAqL1xuK1x0Zmx1c2hfd29yayhcdTAwMjZibGtpb2xhdC1cdTAwM2VlbmFibGVfd29yayk7XG4gXHRrZnJlZShibGtpb2xhdCk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MTkuMTk4NDM2Nzc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk2MDY1MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEFkZHJlc3NpbmcgYSBQb3RlbnRpYWwgVXNlLUFmdGVyLUZyZWUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgYmxvY2svYmxrLWlvbGF0ZW5jeS5jYC4gSXQgc2VlbXMgdGhleSd2ZSBhZGRlZCBhIGBmbHVzaF93b3JrKFx1MDAyNmJsa2lvbGF0LVx1MDAzZWVuYWJsZV93b3JrKTtgIGNhbGwgd2l0aGluIGBibGtjZ19pb2xhdGVuY3lfZXhpdCgpYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGxpa2VseSB0byBzcXVhc2ggYSByYWNlIGNvbmRpdGlvbi4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGFpbWVkIGF0IHByZXZlbnRpbmcgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyBvciBhIHJlbGF0ZWQgaXNzdWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBlbmFibGVfd29ya2AgaXMgZ2V0dGluZyBxdWV1ZWQgaW4gYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KClgIGFmdGVyIHNvbWV0aGluZyBoYXMgYWxyZWFkeSBzdGFydGVkIGRlLWluaXRpYWxpemluZyB0aGUgc3RydWN0dXJlLlxuXG5UbyBjb25maXJtIG15IGh1bmNoLCBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCdzIGhhcHBlbmluZyBpbiBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGFuZCBgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3lgLiBJJ2xsIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgYGJsa2NnX2lvbGF0ZW5jeV9leGl0YCBhbmQgYGVuYWJsZV93b3JrYCB0byB1bmRlcnN0YW5kIHRoZSBjb2RlIGZsb3cgYW5kIHdoZXJlIHRoaXMgYGVuYWJsZV93b3JrYCBpcyB0b3VjaGVkIGluIHRoYXQgZnVuY3Rpb24uIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIHRoZSB2dWxuZXJhYmlsaXR5IHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbmQgaG93IHdlbGwgaXQgc29sdmVzIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MjQuMTU5MDkwNTk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NzI4OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstaW9sYXRlbmN5LmM9NTgzPXN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9kb25lX2JpbyhzdHJ1Y3QgcnFfcW9zICpycW9zLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjM0LVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzo2MzU6c3RhdGljIHZvaWQgYmxrY2dfaW9sYXRlbmN5X2V4aXQoc3RydWN0IHJxX3FvcyAqcnFvcylcXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjM2LXtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz02NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBycV9xb3Nfb3BzIGJsa2NnX2lvbGF0ZW5jeV9vcHMgPSB7XFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjUyLVxcdC5kb25lX2JpbyA9IGJsa2NnX2lvbGF0ZW5jeV9kb25lX2JpbyxcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjUzOlxcdC5leGl0ID0gYmxrY2dfaW9sYXRlbmN5X2V4aXQsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTY1NC19O1xcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTczMz1zdGF0aWMgdm9pZCBibGtpb2xhdGVuY3lfZW5hYmxlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc0NS1cXHQgKiBBbHNvLCB3ZSBrbm93IEBibGtpb2xhdCBpcyBzYWZlIHRvIGFjY2VzcyBhcyAtXFx1MDAzZWVuYWJsZV93b3JrIGlzIGZsdXNoZWRcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NzQ2OlxcdCAqIGluIGJsa2NnX2lvbGF0ZW5jeV9leGl0KCkuXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc0Ny1cXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MjQuMjU3ODI1ODgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNjkzOTM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGEgaHlwb3RoZXRpY2FsIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgcnFfcW9zX29wc2AuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBjdXJpb3NpdHkuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mICp3aGVuKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYXkgdGhhdCB0cmlnZ2VyIHRoaXMgY2FsbD8gV2hhdCBzcGVjaWZpYyBzZXR0aW5ncyBvciBmbGFncyB3aXRoaW4gdGhlIHN5c3RlbSBlbmFibGUgdGhpcyBJL08gbGF0ZW5jeSBhY2NvdW50aW5nPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgc2VlIHdoYXQncyB0aWVkIHRvIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAuIEtub3dpbmcgdGhhdCB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgaG93IGl0J3MgYmVpbmcgdXNlZCBhbmQgaXRzIGltcGFjdC4gVGhpcyBpcyB3aGVyZSB0aGUgaW52ZXN0aWdhdGlvbiBzdGFydHM7IHRvIHRyYWNlIGJhY2sgdG8gdGhlIGluaXRpYXRpbmcgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjI3LjU5NDc2NzY0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDU5NTcyNjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz04MT1DT05GSUdfQkxLX1dCVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo4MjpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctODMtQ09ORklHX0JMS19DR1JPVVBfRkNfQVBQSUQ9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz05Nj1DT05GSUdfQkxLX1dCVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo5NzpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctOTgtQ09ORklHX0JMS19DR1JPVVBfRkNfQVBQSUQ9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTg2PUNPTkZJR19CTEtfV0JUPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODc6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctODgtQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz04MD1DT05GSUdfQkxLX1dCVD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjgxOkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTgyLUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XFxuLS1cXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTU2PUNPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjU3OkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy01OC1DT05GSUdfQkxLX0NHUk9VUF9JT0NPU1Q9eVxcbi0tXFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTU3PUNPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6NTg6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctNTktQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUPXlcXG4tLVxcbmJsb2NrL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPUFJJTylcXHQrPSBibGstaW9wcmlvLm9cXG5ibG9jay9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1kpXFx0Kz0gYmxrLWlvbGF0ZW5jeS5vXFxuYmxvY2svTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVxcdCs9IGJsay1pb2Nvc3Qub1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9MTA9Q09ORklHX0JMS19DR1JPVVA9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjExOkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTItQ09ORklHX0JMS19ERVZfQlNHTElCPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTU9Q09ORklHX0JJTkZNVF9NSVNDPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo2OkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tNy1DT05GSUdfQkxLX0NHUk9VUD15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjMxLjY1NDM0NjQwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDYzMTIzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogQkxLXFxfQ0dST1VQXFxfSU9MQVRFTkNZIE1vZHVsZSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgb3B0aW9uIHdlJ3JlIHRhcmdldGluZyBpcyBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLiBUaW1lIHRvIG1hcCBvdXQgdGhlIGxpa2VseSBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVjZW50IGFkZGl0aW9uLCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2xlYXJseSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIHRhcmdldGVkIGZ1enouXG5cbkFsc28sIEknbSB0aGlua2luZywgYGJsa2NnX2lvbGF0ZW5jeV9kb25lX2Jpb2AgaGFzIHRvIGJlIGEgaG90IHBhdGggaW4gdGhlIGRhdGEgZmxvdywgc28gaXTigJlzIGdvaW5nIHRvIGJlIGNydWNpYWwgdG8gdGhyb3cgc29tZSBmdXp6aW5nIHJlc291cmNlcyB0aGVyZS4gSeKAmWQgZXhwZWN0IHRoYXQgdG8gYmUgdGhlIG1vc3QgYWN0aXZlIHBhcnQgb2YgdGhlIHN1YnN5c3RlbS5cblxuSSdtIGFsc28gc2VlaW5nIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAgbWVudGlvbmVkIGluIHRoZSBjb21tZW50cy4gVGhhdCdzIGludHJpZ3VpbmcuIEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBpbnRlcmFjdGlvbiwgcGFydGljdWxhcmx5IHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gb25saW5lL29mZmxpbmUgc3RhdGVzLCBtaWdodCBoYXZlIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBvciByYWNlIGNvbmRpdGlvbnMuIExldCdzIGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgaW9sYXRlbmN5X3BkX29mZmxpbmVgIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB3aGVyZSB0aGF0J3MgdXNlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiBmb3IgZnV6emluZyBzdHJhdGVneSBwbGFubmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjM1Ljc2MDY2MDQ0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk2Mjk5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9sYXRlbmN5X3BkX29mZmxpbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvbGF0ZW5jeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuYz02MzU9c3RhdGljIHZvaWQgYmxrY2dfaW9sYXRlbmN5X2V4aXQoc3RydWN0IHJxX3FvcyAqcnFvcylcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NDItXFx0LypcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjQzOlxcdCAqIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkgaW52b2tlcyBpb2xhdGVuY3lfcGRfb2ZmbGluZSgpLCB3aGljaCBtYXlcXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjQ0LVxcdCAqIHF1ZXVlIGVuYWJsZV93b3JrIGFnYWluIHdoZW4gaXQgY2xlYXJzIHRoZSBsYXN0IGxhdGVuY3kgdGFyZ2V0Llxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTk5MD1zdGF0aWMgdm9pZCBpb2xhdGVuY3lfcGRfaW5pdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTAyOS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTAzMDpzdGF0aWMgdm9pZCBpb2xhdGVuY3lfcGRfb2ZmbGluZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTEwMzEte1xcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTEwNTY9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvbGF0ZW5jeSA9IHtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDU5LVxcdC5wZF9pbml0X2ZuXFx0PSBpb2xhdGVuY3lfcGRfaW5pdCxcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA2MDpcXHQucGRfb2ZmbGluZV9mblxcdD0gaW9sYXRlbmN5X3BkX29mZmxpbmUsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTEwNjEtXFx0LnBkX2ZyZWVfZm5cXHQ9IGlvbGF0ZW5jeV9wZF9mcmVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzozNS45MzAyOTY0NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk0NDY5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIEJsb2NrIEkvTyBMYXRlbmN5IGluIHRoZSBLZXJuZWwqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGJsb2NrIEkvTyBsYXRlbmN5LCBhbmQgaW1tZWRpYXRlbHksIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgYW5kIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAganVtcCBvdXQgYXQgbWUgYXMgcG90ZW50aWFsIGtleSBhcmVhcy4gVGhleSBmZWVsIGxpa2Ugc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIHN5bWJvbGljIGZvY3VzLiBJJ20gZ3Vlc3NpbmcgdGhlc2UgYXJlIHJlbGF0ZWQgdG8gY2xlYW51cCBhbmQgaGFuZGxpbmcgb2YgZGV2aWNlcyBnb2luZyBvZmZsaW5lLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgSS9PIGxhdGVuY3kgdHJhY2tpbmcgZnJhbWV3b3JrLiBUaGUgbG9naWMgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgY3JpdGljYWwuIFRoZW4sIEkgYWxzbyByZWFsaXplIHRoYXQgYGJsa2lvbGF0ZW5jeV9lbmFibGVfd29ya19mbmAgbWlnaHQgYmUgaW4gdGhlIG1peCwgcG9zc2libHkgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgbGF0ZW5jeSB0cmFja2luZyBmdW5jdGlvbmFsaXR5IGF0IHJ1bnRpbWUuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvbnRyb2wgZmVhdHVyZXMgd29yay5cblxuVG8gZXN0YWJsaXNoIHRoZSBjb250ZXh0IG9mIHRoZXNlIHN5bWJvbHMsIGl0IG1ha2VzIHNlbnNlIHRvIGdvIGJhY2sgdG8gdGhlIGluaXRpYWxpemF0aW9uIHBvaW50LiBJIHNob3VsZCBzdGFydCB3aXRoIGNoZWNraW5nIG91dCBgYmxrX2lvbGF0ZW5jeV9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYmFzZSBzZXR1cCBhbmQgaG93IGFsbCB0aGVzZSBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZml0IHRvZ2V0aGVyLCBhbmQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMuIEl0J3MgYSBzZW5zaWJsZSBzdGFydGluZyBwb2ludCB0byB0cmFjZSB0aGUgb3ZlcmFsbCBmbG93IGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGZ1bmN0aW9ucyBhbmQgc3RydWN0dXJlcyBpbnZvbHZlZCBpbiB0aGlzIGFzcGVjdCBvZiB0aGUgYmxvY2sgbGF5ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo0MC4yMjQ3NjgzMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjQyNTk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGtfaW9sYXRlbmN5X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvbGF0ZW5jeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuYz03MzM9c3RhdGljIHZvaWQgYmxraW9sYXRlbmN5X2VuYWJsZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy03NjItXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjc2MzpzdGF0aWMgaW50IGJsa19pb2xhdGVuY3lfaW5pdChzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNzY0LXtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz04MzI9c3RhdGljIHNzaXplX3QgaW9sYXRlbmN5X3NldF9saW1pdChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1ZixcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTAtXFx0LypcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODUxOlxcdCAqIGJsa19pb2xhdGVuY3lfaW5pdCgpIG1heSBmYWlsIGFmdGVyIHJxX3Fvc19hZGQoKSBzdWNjZWVkcyB3aGljaCBjYW5cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODUyLVxcdCAqIGNvbmZ1c2UgaW9sYXRfcnFfcW9zKCkgdGVzdC4gTWFrZSB0aGUgdGVzdCBhbmQgaW5pdCBhdG9taWMuXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODU1LVxcdGlmICghaW9sYXRfcnFfcW9zKGN0eC5iZGV2LVxcdTAwM2ViZF9xdWV1ZSkpXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjg1NjpcXHRcXHRyZXQgPSBibGtfaW9sYXRlbmN5X2luaXQoY3R4LmJkZXYtXFx1MDAzZWJkX2Rpc2spO1xcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTctXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6NDAuMzU3MjAwNjYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODk5NjkxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmc6XG5cbioqRXhhbWluaW5nIHRoZSBJL08gTGF0ZW5jeSBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBgYmxrX2lvbGF0ZW5jeV9pbml0YCBpcyBpbnZva2VkIGJ5IGBpb2xhdGVuY3lfc2V0X2xpbWl0YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBgaW9sYXRlbmN5X3NldF9saW1pdGAgaXMgYW5vdGhlciBjcml0aWNhbCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHdpdGhpbiB0aGlzIEkvTyBsYXRlbmN5IGNvbnRleHQuIEl0J3MgdGhlIGRyaXZlciwgc28gdG8gc3BlYWssIGZvciB0aGUgaW5pdGlhbGl6YXRpb24uIFRvIGdyYXNwIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBsaW1pdCBpcyAqc2V0KiBiZWZvcmUgSSBjYW4gdHJ1bHkgYXBwcmVjaWF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0J3MgZGlnIGludG8gYGlvbGF0ZW5jeV9zZXRfbGltaXRgIGFuZCBzZWUgd2hhdCBpdCByZXZlYWxzLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbG9naWMgbGlrZWx5IHJlc2lkZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo0My41NDcxNzIxODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MTM2NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbGF0ZW5jeV9zZXRfbGltaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvbGF0ZW5jeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuYz04MTQ9c3RhdGljIHZvaWQgaW9sYXRlbmN5X2NsZWFyX3NjYWxpbmcoc3RydWN0IGJsa2NnX2dxICpibGtnKVxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTgzMS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODMyOnN0YXRpYyBzc2l6ZV90IGlvbGF0ZW5jeV9zZXRfbGltaXQoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTgzMy1cXHRcXHRcXHQgICAgIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9MTA0Nj1zdGF0aWMgc3RydWN0IGNmdHlwZSBpb2xhdGVuY3lfZmlsZXNbXSA9IHtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUwLVxcdFxcdC5zZXFfc2hvdyA9IGlvbGF0ZW5jeV9wcmludF9saW1pdCxcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA1MTpcXHRcXHQud3JpdGUgPSBpb2xhdGVuY3lfc2V0X2xpbWl0LFxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUyLVxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjQzLjY0MjMxNDkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzgyNzU5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJL08gTGF0ZW5jeSBDZ3JvdXAgRml4KipcblxuT2theSwgc28gYGlvbGF0ZW5jeV9zZXRfbGltaXRgIGlzIGEgY2dyb3VwIHdyaXRlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGltbWVkaWF0ZWx5IHRlc3RhYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCdzIHJlYWNoYWJsZSBpcyBhIGdvb2Qgc2lnbi4gSXQncyBsb29raW5nIGxpa2UgdGhlIHByb2JsZW0gaXMgbGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgYSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSB0aGF0J3MgY3JvcHBpbmcgdXAgZHVyaW5nIGV4aXQsIHdoaWNoIGlzIGEgY2xhc3NpYyBhbmQgdHJpY2t5IHByb2JsZW0gc3BhY2UuXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBhIGBmbHVzaF93b3JrKFx1MDAyNmJsa2lvbGF0LVx1MDAzZWVuYWJsZV93b3JrKTtgIHRvIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIGRlYWxpbmcgd2l0aCB0aGlzIHR5cGUgb2YgY29uY3VycmVuY3kgcHJvYmxlbSwgYW5kIGl0IHNlZW1zIGZ1bmN0aW9uYWwgb24gdGhlIHN1cmZhY2UuIFdvcnRoIGZ1enppbmcgaXQgdG8gc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cbkknbGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLiBJdCdzIGRlZmluaXRlbHkgdGhlIGtleSB0byB1bmxvY2tpbmcgdGhpcyBhcmVhIG9mIHRoZSBjb2RlLlxuXG5UbyBzdGFydCwgSSdsbCBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3c6IGBibGtjZ19pb2xhdGVuY3lfZXhpdGAsIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAsIGBpb2xhdGVuY3lfc2V0X2xpbWl0YCwgYW5kIGBibGtfaW9sYXRlbmN5X2luaXRgLiBHZXR0aW5nIHRoZXNlIGRvd24gd2lsbCBnaXZlIG1lIGEgaGVhZCBzdGFydCBvbiBkZWJ1Z2dpbmcuXG5cbkp1c3QgdG8gYmUgc2FmZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYEJMS19DR1JPVVBgIGlzIHJlcXVpcmVkLiBZZXAsIGFuZCBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgIGRlcGVuZHMgb24gaXQsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuIEJldHRlciB0byBiZSB0aG9yb3VnaCwgSSdsbCBnbyBjaGVjayB0aGUgYGJsb2NrL0tjb25maWdgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6NDguNDIwNTk5MDkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjkyNDA3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svS2NvbmZpZz0xMjc9Y29uZmlnIEJMS19XQlRfTVFcXG4tLVxcbmJsb2NrL0tjb25maWctMTMzLVxcbmJsb2NrL0tjb25maWc6MTM0OmNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxcbmJsb2NrL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBsYXRlbmN5IGJhc2VkIGNncm91cCBJTyBwcm90ZWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo0OC41NDk4NDUxNDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MTU3NTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgaW5jb21wbGV0ZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc3RydWN0dXJlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEknbSB0aGlua2luZywgXCJXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/XCIgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbid0IGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNzEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjUxLjkzMTQyMzc2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYzMzYwMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svS2NvbmZpZz0xMjc9Y29uZmlnIEJMS19XQlRfTVFcXG4tLVxcbmJsb2NrL0tjb25maWctMTMzLVxcbmJsb2NrL0tjb25maWc6MTM0OmNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxcbmJsb2NrL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBsYXRlbmN5IGJhc2VkIGNncm91cCBJTyBwcm90ZWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo1Mi4wMjc3NzE4MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MTk5Nzg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgS2NvbmZpZyBmb3IgQ29uZmlndXJhdGlvbiBJbnNpZ2h0cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgYGJsb2NrL0tjb25maWdgIGZpbGUgYWdhaW4uIExldCdzIGdldCByaWdodCB0byBpdCAtIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMTM0LiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIGJsb2NrIGRldmljZSBoYW5kbGluZy4gTXkgZ3Vlc3MgaXMgdGhhdCBpdCBtaWdodCBiZSBhIG5ldyBmZWF0dXJlLCBhIHN1YnRsZSBkZXBlbmRlbmN5LCBvciBwZXJoYXBzIGEgdHdlYWsgdG8gYW4gZXhpc3Rpbmcgc2V0dGluZyB0aGF0IEkndmUgYmVlbiBtZWFuaW5nIHRvIHJldmlldy4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBleHBlY3RpbmcgdG8gZWl0aGVyIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBhbiBleGlzdGluZyBzZXR0aW5nLCBsb29rIGZvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgb3IgcGVyaGFwcyByZXZpZXcgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIExldCdzIHNlZSB3aGF0IGxpbmUgMTM0IGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjU2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6NTUuMDk5NzczMDg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJibG9jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHRcXHRkZXBlbmRzIG9uIEJMS19XQlRcXG4gMTMxOlxcdFxcdGhlbHBcXG4gMTMyOlxcdFxcdEVuYWJsZSB3cml0ZWJhY2sgdGhyb3R0bGluZyBieSBkZWZhdWx0IGZvciByZXF1ZXN0LWJhc2VkIGJsb2NrIGRldmljZXMuXFxuIDEzMzpcXHRcXG4gMTM0OlxcdGNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxcbiAxMzU6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cXFwiXFxuIDEzNjpcXHRcXHRkZXBlbmRzIG9uIEJMS19DR1JPVVBcXG4gMTM3OlxcdFxcdGhlbHBcXG4gMTM4OlxcdFxcdEVuYWJsaW5nIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIC5sYXRlbmN5IGludGVyZmFjZSBmb3IgSU8gdGhyb3R0bGluZy5cXG4gMTM5OlxcdFxcdFRoZSBJTyBjb250cm9sbGVyIHdpbGwgYXR0ZW1wdCB0byBtYWludGFpbiBhdmVyYWdlIElPIGxhdGVuY2llcyBiZWxvd1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo1NS4wOTk4ODAzMzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwNTI4NzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIENncm91cCBJTyBMYXRlbmN5IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBoaXR0aW5nIHRoZSBibG9jayBjZ3JvdXAgSU8gbGF0ZW5jeSBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIGl0J3MgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHk6IGEgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgZW5zdXJpbmcgdGhhdCB0aGUgYGVuYWJsZV93b3JrYCBpcyBmbHVzaGVkICphZnRlciogYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KClgLiBUaGlzIGlzIGdvb2QsIGl0IHNob3dzIGEgY2FyZWZ1bCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvcmRlcmluZyBuZWVkZWQgdG8gcHJldmVudCBpc3N1ZXMgZHVyaW5nIHRoZSBzaHV0ZG93biBvZiB0aGlzIHBhcnRpY3VsYXIgSU8gbGF0ZW5jeSBwb2xpY3kuXG5cbkknbSBtYWtpbmcgYSBtZW50YWwgbm90ZSBvZiB0aGUgY3JpdGljYWwgc3ltYm9scyBpbnZvbHZlZCBoZXJlOiBJIG5lZWQgdG8ga2VlcCBhIGNsb3NlIGV5ZSBvbiBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLCBuYXR1cmFsbHksIGJ1dCBhbHNvIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAsIGBpb2xhdGVuY3lfc2V0X2xpbWl0YCwgYW5kIGBibGtfaW9sYXRlbmN5X2luaXRgIOKAkyB0aGV5J3JlIGxpa2VseSB0b3VjaGVkIGJ5IHRoaXMgYW5kIHByb2JhYmx5IGludm9sdmVkIGluIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbXMuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBlbmFibGVzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLiBUaGF0J3MgYW4gaW1wb3J0YW50IHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8ga2VlcCBpbiBtaW5kLCBhbmQgaXQncyBlc3NlbnRpYWwgZm9yIGFueW9uZSB0byBrbm93IHdobyBpcyBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgcGF0Y2gncyBpbnRlbnQgYW5kIGltcGFjdC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMzUsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjQ6MDAuOTA1MTcxMjI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NzUyNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQX0lPTEFURU5DWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gICAgXCJpb2xhdGVuY3lfcGRfb2ZmbGluZVwiLFxuICAgIFwiaW9sYXRlbmN5X3NldF9saW1pdFwiLFxuICAgIFwiYmxrX2lvbGF0ZW5jeV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrY2dfaW9sYXRlbmN5X2V4aXRcIixcbiAgICBcImlvbGF0ZW5jeV9wZF9vZmZsaW5lXCIsXG4gICAgXCJpb2xhdGVuY3lfc2V0X2xpbWl0XCIsXG4gICAgXCJibGtfaW9sYXRlbmN5X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBibG9jayBjZ3JvdXAgSU8gbGF0ZW5jeSBwb2xpY3kgKGJsa2NnX2lvbGF0ZW5jeV9leGl0KSBieSBmbHVzaGluZyBlbmFibGVfd29yayBhZnRlciBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpLiBUaGlzIG1vZGlmaWVzIGZ1bmN0aW9uYWwgY29yZSBibG9jayBjZ3JvdXAgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgY2dyb3VwIGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflown52jl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-21 14:08:34 +0000 UTC FinishedAt: 2026-06-21 14:24:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP_IOLATENCY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP_IOLATENCY" ], "series_id": "c3ea9c1a-d020-4278-8c46-5b03e62048a2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blkcg_iolatency_exit", "iolatency_pd_offline", "iolatency_set_limit", "blk_iolatency_init" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrY2dfaW9sYXRlbmN5X2V4aXQmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3BkX29mZmxpbmUmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3NldF9saW1pdCYjMzQ7LAogICAgJiMzNDtibGtfaW9sYXRlbmN5X2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYmUyMjc5MGM1YzA5ZjU4NzM2MjU0OGRhNWJlYzVmMjMxYzhhNmZkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVuIDIxIDE0OjIzOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2xhdGVuY3kuYyBiL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xuaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWlvbGF0ZW5jeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstaW9sYXRlbmN5LmNcbkBAIC02MzksNiAmIzQzOzYzOSwxMSBAQCBzdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZXhpdChzdHJ1Y3QgcnFfcW9zICpycW9zKVxuIFx0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZibGtpb2xhdC1cdTAwM2V0aW1lcik7XG4gXHRmbHVzaF93b3JrKFx1MDAyNmJsa2lvbGF0LVx1MDAzZWVuYWJsZV93b3JrKTtcbiBcdGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KHJxb3MtXHUwMDNlZGlzaywgXHUwMDI2YmxrY2dfcG9saWN5X2lvbGF0ZW5jeSk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpIGludm9rZXMgaW9sYXRlbmN5X3BkX29mZmxpbmUoKSwgd2hpY2ggbWF5XG4mIzQzO1x0ICogcXVldWUgZW5hYmxlX3dvcmsgYWdhaW4gd2hlbiBpdCBjbGVhcnMgdGhlIGxhc3QgbGF0ZW5jeSB0YXJnZXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0Zmx1c2hfd29yayhcdTAwMjZibGtpb2xhdC1cdTAwM2VlbmFibGVfd29yayk7XG4gXHRrZnJlZShibGtpb2xhdCk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrY2dfaW9sYXRlbmN5X2V4aXQmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3BkX29mZmxpbmUmIzM0OywKICAgICYjMzQ7aW9sYXRlbmN5X3NldF9saW1pdCYjMzQ7LAogICAgJiMzNDtibGtfaW9sYXRlbmN5X2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZTIyNzkwYzVjMDlmNTg3MzYyNTQ4ZGE1YmVjNWYyMzFjOGE2ZmRmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdW4gMjEgMTQ6MjM6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstaW9sYXRlbmN5LmMgYi9ibG9jay9ibGstaW9sYXRlbmN5LmMKaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NAotLS0gYS9ibG9jay9ibGstaW9sYXRlbmN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWlvbGF0ZW5jeS5jCkBAIC02MzksNiAmIzQzOzYzOSwxMSBAQCBzdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZXhpdChzdHJ1Y3QgcnFfcW9zICpycW9zKQogCXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtibGtpb2xhdC0mZ3Q7dGltZXIpOwogCWZsdXNoX3dvcmsoJmFtcDtibGtpb2xhdC0mZ3Q7ZW5hYmxlX3dvcmspOwogCWJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KHJxb3MtJmd0O2Rpc2ssICZhbXA7YmxrY2dfcG9saWN5X2lvbGF0ZW5jeSk7CiYjNDM7CS8qCiYjNDM7CSAqIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkgaW52b2tlcyBpb2xhdGVuY3lfcGRfb2ZmbGluZSgpLCB3aGljaCBtYXkKJiM0MzsJICogcXVldWUgZW5hYmxlX3dvcmsgYWdhaW4gd2hlbiBpdCBjbGVhcnMgdGhlIGxhc3QgbGF0ZW5jeSB0YXJnZXQuCiYjNDM7CSAqLwomIzQzOwlmbHVzaF93b3JrKCZhbXA7YmxraW9sYXQtJmd0O2VuYWJsZV93b3JrKTsKIAlrZnJlZShibGtpb2xhdCk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEFkZHJlc3NpbmcgYSBQb3RlbnRpYWwgVXNlLUFmdGVyLUZyZWUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBibG9jay9ibGstaW9sYXRlbmN5LmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGBmbHVzaF93b3JrKCZhbXA7YmxraW9sYXQtJmd0O2VuYWJsZV93b3JrKTtgIGNhbGwgd2l0aGluIGBibGtjZ19pb2xhdGVuY3lfZXhpdCgpYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGxpa2VseSB0byBzcXVhc2ggYSByYWNlIGNvbmRpdGlvbi4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBhaW1lZCBhdCBwcmV2ZW50aW5nIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gb3IgYSByZWxhdGVkIGlzc3VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZW5hYmxlX3dvcmtgIGlzIGdldHRpbmcgcXVldWVkIGluIGBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpYCBhZnRlciBzb21ldGhpbmcgaGFzIGFscmVhZHkgc3RhcnRlZCBkZS1pbml0aWFsaXppbmcgdGhlIHN0cnVjdHVyZS4KClRvIGNvbmZpcm0gbXkgaHVuY2gsIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gYGJsa2NnX2lvbGF0ZW5jeV9leGl0YCBhbmQgYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5YC4gSSYjMzk7bGwgcnVuIGEgcXVpY2sgYGdyZXBgIGZvciBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGFuZCBgZW5hYmxlX3dvcmtgIHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdyBhbmQgd2hlcmUgdGhpcyBgZW5hYmxlX3dvcmtgIGlzIHRvdWNoZWQgaW4gdGhhdCBmdW5jdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUgb2YgdGhlIHZ1bG5lcmFiaWxpdHkgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGFuZCBob3cgd2VsbCBpdCBzb2x2ZXMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrY2dfaW9sYXRlbmN5X2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTU4Mz1zdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZG9uZV9iaW8oc3RydWN0IHJxX3FvcyAqcnFvcywgc3RydWN0IGJpbyAqYmlvKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02MzQtXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjM1OnN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9leGl0KHN0cnVjdCBycV9xb3MgKnJxb3MpXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjM2LXtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnFfcW9zX29wcyBibGtjZ19pb2xhdGVuY3lfb3BzID0ge1xuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NTItXHQuZG9uZV9iaW8gPSBibGtjZ19pb2xhdGVuY3lfZG9uZV9iaW8sXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjUzOlx0LmV4aXQgPSBibGtjZ19pb2xhdGVuY3lfZXhpdCxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NTQtfTtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9NzMzPXN0YXRpYyB2b2lkIGJsa2lvbGF0ZW5jeV9lbmFibGVfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc0NS1cdCAqIEFsc28sIHdlIGtub3cgQGJsa2lvbGF0IGlzIHNhZmUgdG8gYWNjZXNzIGFzIC1cdTAwM2VlbmFibGVfd29yayBpcyBmbHVzaGVkXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NzQ2Olx0ICogaW4gYmxrY2dfaW9sYXRlbmN5X2V4aXQoKS5cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy03NDctXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gYSBoeXBvdGhldGljYWwgZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIEZ1bmN0aW9uIENhbGwqKgoKQWxyaWdodCwgc28gYGJsa2NnX2lvbGF0ZW5jeV9leGl0YCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBycV9xb3Nfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBjdXJpb3NpdHkuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mICp3aGVuKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYXkgdGhhdCB0cmlnZ2VyIHRoaXMgY2FsbD8gV2hhdCBzcGVjaWZpYyBzZXR0aW5ncyBvciBmbGFncyB3aXRoaW4gdGhlIHN5c3RlbSBlbmFibGUgdGhpcyBJL08gbGF0ZW5jeSBhY2NvdW50aW5nPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgc2VlIHdoYXQmIzM5O3MgdGllZCB0byBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLiBLbm93aW5nIHRoYXQgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIGFuZCBpdHMgaW1wYWN0LiBUaGlzIGlzIHdoZXJlIHRoZSBpbnZlc3RpZ2F0aW9uIHN0YXJ0czsgdG8gdHJhY2UgYmFjayB0byB0aGUgaW5pdGlhdGluZyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTgxPUNPTkZJR19CTEtfV0JUPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6ODI6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctODMtQ09ORklHX0JMS19DR1JPVVBfRkNfQVBQSUQ9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9OTY9Q09ORklHX0JMS19XQlQ9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo5NzpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05OC1DT05GSUdfQkxLX0NHUk9VUF9GQ19BUFBJRD15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTg2PUNPTkZJR19CTEtfV0JUPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo4NzpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTg4LUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTgwPUNPTkZJR19CTEtfV0JUPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4MTpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTgyLUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZz01Nj1DT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRD15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjU3OkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTU4LUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTU3PUNPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXlcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzo1ODpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTU5LUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XG4tLVxuYmxvY2svTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9QUklPKVx0JiM0Mzs9IGJsay1pb3ByaW8ub1xuYmxvY2svTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTEwPUNPTkZJR19CTEtfQ0dST1VQPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjExOkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC0xMi1DT05GSUdfQkxLX0RFVl9CU0dMSUI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTU9Q09ORklHX0JJTkZNVF9NSVNDPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjY6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTctQ09ORklHX0JMS19DR1JPVVA9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBCTEtcX0NHUk9VUFxfSU9MQVRFTkNZIE1vZHVsZSoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIG9wdGlvbiB3ZSYjMzk7cmUgdGFyZ2V0aW5nIGlzIGBCTEtfQ0dST1VQX0lPTEFURU5DWWAuIFRpbWUgdG8gbWFwIG91dCB0aGUgbGlrZWx5IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSByZWNlbnQgYWRkaXRpb24sIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjbGVhcmx5IGBibGtjZ19pb2xhdGVuY3lfZXhpdGAuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIHRhcmdldGVkIGZ1enouCgpBbHNvLCBJJiMzOTttIHRoaW5raW5nLCBgYmxrY2dfaW9sYXRlbmN5X2RvbmVfYmlvYCBoYXMgdG8gYmUgYSBob3QgcGF0aCBpbiB0aGUgZGF0YSBmbG93LCBzbyBpdOKAmXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCB0byB0aHJvdyBzb21lIGZ1enppbmcgcmVzb3VyY2VzIHRoZXJlLiBJ4oCZZCBleHBlY3QgdGhhdCB0byBiZSB0aGUgbW9zdCBhY3RpdmUgcGFydCBvZiB0aGUgc3Vic3lzdGVtLgoKSSYjMzk7bSBhbHNvIHNlZWluZyBgaW9sYXRlbmN5X3BkX29mZmxpbmVgIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudHMuIFRoYXQmIzM5O3MgaW50cmlndWluZy4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IGludGVyYWN0aW9uLCBwYXJ0aWN1bGFybHkgdGhlIHRyYW5zaXRpb24gYmV0d2VlbiBvbmxpbmUvb2ZmbGluZSBzdGF0ZXMsIG1pZ2h0IGhhdmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHJhY2UgY29uZGl0aW9ucy4gTGV0JiMzOTtzIGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgaW9sYXRlbmN5X3BkX29mZmxpbmVgIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB3aGVyZSB0aGF0JiMzOTtzIHVzZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdmFsdWFibGUgaW5mb3JtYXRpb24gZm9yIGZ1enppbmcgc3RyYXRlZ3kgcGxhbm5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9sYXRlbmN5X3BkX29mZmxpbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTYzNT1zdGF0aWMgdm9pZCBibGtjZ19pb2xhdGVuY3lfZXhpdChzdHJ1Y3QgcnFfcW9zICpycW9zKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NDItXHQvKlxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjY0MzpcdCAqIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkgaW52b2tlcyBpb2xhdGVuY3lfcGRfb2ZmbGluZSgpLCB3aGljaCBtYXlcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NDQtXHQgKiBxdWV1ZSBlbmFibGVfd29yayBhZ2FpbiB3aGVuIGl0IGNsZWFycyB0aGUgbGFzdCBsYXRlbmN5IHRhcmdldC5cbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9OTkwPXN0YXRpYyB2b2lkIGlvbGF0ZW5jeV9wZF9pbml0KHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZClcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTAyOS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzoxMDMwOnN0YXRpYyB2b2lkIGlvbGF0ZW5jeV9wZF9vZmZsaW5lKHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZClcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDMxLXtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9MTA1Nj1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9sYXRlbmN5ID0ge1xuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDU5LVx0LnBkX2luaXRfZm5cdD0gaW9sYXRlbmN5X3BkX2luaXQsXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA2MDpcdC5wZF9vZmZsaW5lX2ZuXHQ9IGlvbGF0ZW5jeV9wZF9vZmZsaW5lLFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTEwNjEtXHQucGRfZnJlZV9mblx0PSBpb2xhdGVuY3lfcGRfZnJlZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTU2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipGb2N1c2luZyBvbiBCbG9jayBJL08gTGF0ZW5jeSBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGJsb2NrIEkvTyBsYXRlbmN5LCBhbmQgaW1tZWRpYXRlbHksIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgYW5kIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAganVtcCBvdXQgYXQgbWUgYXMgcG90ZW50aWFsIGtleSBhcmVhcy4gVGhleSBmZWVsIGxpa2Ugc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIHN5bWJvbGljIGZvY3VzLiBJJiMzOTttIGd1ZXNzaW5nIHRoZXNlIGFyZSByZWxhdGVkIHRvIGNsZWFudXAgYW5kIGhhbmRsaW5nIG9mIGRldmljZXMgZ29pbmcgb2ZmbGluZSwgcmVzcGVjdGl2ZWx5LCB3aXRoaW4gdGhlIEkvTyBsYXRlbmN5IHRyYWNraW5nIGZyYW1ld29yay4gVGhlIGxvZ2ljIHdpdGhpbiB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGNyaXRpY2FsLiBUaGVuLCBJIGFsc28gcmVhbGl6ZSB0aGF0IGBibGtpb2xhdGVuY3lfZW5hYmxlX3dvcmtfZm5gIG1pZ2h0IGJlIGluIHRoZSBtaXgsIHBvc3NpYmx5IHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGxhdGVuY3kgdHJhY2tpbmcgZnVuY3Rpb25hbGl0eSBhdCBydW50aW1lLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29udHJvbCBmZWF0dXJlcyB3b3JrLgoKVG8gZXN0YWJsaXNoIHRoZSBjb250ZXh0IG9mIHRoZXNlIHN5bWJvbHMsIGl0IG1ha2VzIHNlbnNlIHRvIGdvIGJhY2sgdG8gdGhlIGluaXRpYWxpemF0aW9uIHBvaW50LiBJIHNob3VsZCBzdGFydCB3aXRoIGNoZWNraW5nIG91dCBgYmxrX2lvbGF0ZW5jeV9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYmFzZSBzZXR1cCBhbmQgaG93IGFsbCB0aGVzZSBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZml0IHRvZ2V0aGVyLCBhbmQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMuIEl0JiMzOTtzIGEgc2Vuc2libGUgc3RhcnRpbmcgcG9pbnQgdG8gdHJhY2UgdGhlIG92ZXJhbGwgZmxvdyBhbmQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgYW5kIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gdGhpcyBhc3BlY3Qgb2YgdGhlIGJsb2NrIGxheWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtfaW9sYXRlbmN5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTczMz1zdGF0aWMgdm9pZCBibGtpb2xhdGVuY3lfZW5hYmxlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy03NjItXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NzYzOnN0YXRpYyBpbnQgYmxrX2lvbGF0ZW5jeV9pbml0KHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc2NC17XG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTgzMj1zdGF0aWMgc3NpemVfdCBpb2xhdGVuY3lfc2V0X2xpbWl0KHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTAtXHQvKlxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjg1MTpcdCAqIGJsa19pb2xhdGVuY3lfaW5pdCgpIG1heSBmYWlsIGFmdGVyIHJxX3Fvc19hZGQoKSBzdWNjZWVkcyB3aGljaCBjYW5cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTItXHQgKiBjb25mdXNlIGlvbGF0X3JxX3FvcygpIHRlc3QuIE1ha2UgdGhlIHRlc3QgYW5kIGluaXQgYXRvbWljLlxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTUtXHRpZiAoIWlvbGF0X3JxX3FvcyhjdHguYmRldi1cdTAwM2ViZF9xdWV1ZSkpXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODU2Olx0XHRyZXQgPSBibGtfaW9sYXRlbmN5X2luaXQoY3R4LmJkZXYtXHUwMDNlYmRfZGlzayk7XG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODU3LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nOgoKKipFeGFtaW5pbmcgdGhlIEkvTyBMYXRlbmN5IEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyBgYmxrX2lvbGF0ZW5jeV9pbml0YCBpcyBpbnZva2VkIGJ5IGBpb2xhdGVuY3lfc2V0X2xpbWl0YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBgaW9sYXRlbmN5X3NldF9saW1pdGAgaXMgYW5vdGhlciBjcml0aWNhbCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHdpdGhpbiB0aGlzIEkvTyBsYXRlbmN5IGNvbnRleHQuIEl0JiMzOTtzIHRoZSBkcml2ZXIsIHNvIHRvIHNwZWFrLCBmb3IgdGhlIGluaXRpYWxpemF0aW9uLiBUbyBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbGltaXQgaXMgKnNldCogYmVmb3JlIEkgY2FuIHRydWx5IGFwcHJlY2lhdGUgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBkaWcgaW50byBgaW9sYXRlbmN5X3NldF9saW1pdGAgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgbG9naWMgbGlrZWx5IHJlc2lkZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbGF0ZW5jeV9zZXRfbGltaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9ibGstaW9sYXRlbmN5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvbGF0ZW5jeS5jPTgxND1zdGF0aWMgdm9pZCBpb2xhdGVuY3lfY2xlYXJfc2NhbGluZyhzdHJ1Y3QgYmxrY2dfZ3EgKmJsa2cpXG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTgzMS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzo4MzI6c3RhdGljIHNzaXplX3QgaW9sYXRlbmN5X3NldF9saW1pdChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1ZixcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04MzMtXHRcdFx0ICAgICBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz0xMDQ2PXN0YXRpYyBzdHJ1Y3QgY2Z0eXBlIGlvbGF0ZW5jeV9maWxlc1tdID0ge1xuLS1cbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUwLVx0XHQuc2VxX3Nob3cgPSBpb2xhdGVuY3lfcHJpbnRfbGltaXQsXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA1MTpcdFx0LndyaXRlID0gaW9sYXRlbmN5X3NldF9saW1pdCxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUyLVx0fSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEkvTyBMYXRlbmN5IENncm91cCBGaXgqKgoKT2theSwgc28gYGlvbGF0ZW5jeV9zZXRfbGltaXRgIGlzIGEgY2dyb3VwIHdyaXRlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGltbWVkaWF0ZWx5IHRlc3RhYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgaXMgYSBnb29kIHNpZ24uIEl0JiMzOTtzIGxvb2tpbmcgbGlrZSB0aGUgcHJvYmxlbSBpcyBsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciBhIHVzZS1hZnRlci1mcmVlIGlzc3VlIHRoYXQmIzM5O3MgY3JvcHBpbmcgdXAgZHVyaW5nIGV4aXQsIHdoaWNoIGlzIGEgY2xhc3NpYyBhbmQgdHJpY2t5IHByb2JsZW0gc3BhY2UuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgYGZsdXNoX3dvcmsoJmFtcDtibGtpb2xhdC0mZ3Q7ZW5hYmxlX3dvcmspO2AgdG8gYGJsa2NnX2lvbGF0ZW5jeV9leGl0YC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCBmb3IgZGVhbGluZyB3aXRoIHRoaXMgdHlwZSBvZiBjb25jdXJyZW5jeSBwcm9ibGVtLCBhbmQgaXQgc2VlbXMgZnVuY3Rpb25hbCBvbiB0aGUgc3VyZmFjZS4gV29ydGggZnV6emluZyBpdCB0byBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCkkmIzM5O2xsIG5lZWQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJMS19DR1JPVVBfSU9MQVRFTkNZYC4gSXQmIzM5O3MgZGVmaW5pdGVseSB0aGUga2V5IHRvIHVubG9ja2luZyB0aGlzIGFyZWEgb2YgdGhlIGNvZGUuCgpUbyBzdGFydCwgSSYjMzk7bGwgZm9jdXMgb24gdGhlc2Ugc3ltYm9scyB0byB1bmRlcnN0YW5kIHRoZSBmbG93OiBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLCBgaW9sYXRlbmN5X3BkX29mZmxpbmVgLCBgaW9sYXRlbmN5X3NldF9saW1pdGAsIGFuZCBgYmxrX2lvbGF0ZW5jeV9pbml0YC4gR2V0dGluZyB0aGVzZSBkb3duIHdpbGwgZ2l2ZSBtZSBhIGhlYWQgc3RhcnQgb24gZGVidWdnaW5nLgoKSnVzdCB0byBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYEJMS19DR1JPVVBgIGlzIHJlcXVpcmVkLiBZZXAsIGFuZCBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgIGRlcGVuZHMgb24gaXQsIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGdvIGNoZWNrIHRoZSBgYmxvY2svS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTEyNz1jb25maWcgQkxLX1dCVF9NUVxuLS1cbmJsb2NrL0tjb25maWctMTMzLVxuYmxvY2svS2NvbmZpZzoxMzQ6Y29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXG5ibG9jay9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpbmNvbXBsZXRlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hhdCBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzPyBXaGF0IHJlbGllcyBvbiB3aGF0PyYjMzQ7IFdpdGhvdXQgZnVsbHkgZ3Jhc3BpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBlbGVtZW50cywgSSBjYW4mIzM5O3QgYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGxhcmdlciBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZz0xMjc9Y29uZmlnIEJMS19XQlRfTVFcbi0tXG5ibG9jay9LY29uZmlnLTEzMy1cbmJsb2NrL0tjb25maWc6MTM0OmNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxuYmxvY2svS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBsYXRlbmN5IGJhc2VkIGNncm91cCBJTyBwcm90ZWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyBLY29uZmlnIGZvciBDb25maWd1cmF0aW9uIEluc2lnaHRzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGBibG9jay9LY29uZmlnYCBmaWxlIGFnYWluLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IHRvIGl0IC0gSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMTM0LiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byBibG9jayBkZXZpY2UgaGFuZGxpbmcuIE15IGd1ZXNzIGlzIHRoYXQgaXQgbWlnaHQgYmUgYSBuZXcgZmVhdHVyZSwgYSBzdWJ0bGUgZGVwZW5kZW5jeSwgb3IgcGVyaGFwcyBhIHR3ZWFrIHRvIGFuIGV4aXN0aW5nIHNldHRpbmcgdGhhdCBJJiMzOTt2ZSBiZWVuIG1lYW5pbmcgdG8gcmV2aWV3LiBHaXZlbiB0aGUgY29udGV4dCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZWl0aGVyIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBhbiBleGlzdGluZyBzZXR0aW5nLCBsb29rIGZvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgb3IgcGVyaGFwcyByZXZpZXcgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCBsaW5lIDEzNCBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzA6XHRcdGRlcGVuZHMgb24gQkxLX1dCVFxuIDEzMTpcdFx0aGVscFxuIDEzMjpcdFx0RW5hYmxlIHdyaXRlYmFjayB0aHJvdHRsaW5nIGJ5IGRlZmF1bHQgZm9yIHJlcXVlc3QtYmFzZWQgYmxvY2sgZGV2aWNlcy5cbiAxMzM6XHRcbiAxMzQ6XHRjb25maWcgQkxLX0NHUk9VUF9JT0xBVEVOQ1lcbiAxMzU6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cJiMzNDtcbiAxMzY6XHRcdGRlcGVuZHMgb24gQkxLX0NHUk9VUFxuIDEzNzpcdFx0aGVscFxuIDEzODpcdFx0RW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgLmxhdGVuY3kgaW50ZXJmYWNlIGZvciBJTyB0aHJvdHRsaW5nLlxuIDEzOTpcdFx0VGhlIElPIGNvbnRyb2xsZXIgd2lsbCBhdHRlbXB0IHRvIG1haW50YWluIGF2ZXJhZ2UgSU8gbGF0ZW5jaWVzIGJlbG93XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMzUKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmxvY2sgQ2dyb3VwIElPIExhdGVuY3kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGhpdHRpbmcgdGhlIGJsb2NrIGNncm91cCBJTyBsYXRlbmN5IGZ1bmN0aW9uYWxpdHkuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHk6IGEgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgZW5zdXJpbmcgdGhhdCB0aGUgYGVuYWJsZV93b3JrYCBpcyBmbHVzaGVkICphZnRlciogYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KClgLiBUaGlzIGlzIGdvb2QsIGl0IHNob3dzIGEgY2FyZWZ1bCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvcmRlcmluZyBuZWVkZWQgdG8gcHJldmVudCBpc3N1ZXMgZHVyaW5nIHRoZSBzaHV0ZG93biBvZiB0aGlzIHBhcnRpY3VsYXIgSU8gbGF0ZW5jeSBwb2xpY3kuCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIG9mIHRoZSBjcml0aWNhbCBzeW1ib2xzIGludm9sdmVkIGhlcmU6IEkgbmVlZCB0byBrZWVwIGEgY2xvc2UgZXllIG9uIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAsIG5hdHVyYWxseSwgYnV0IGFsc28gYGlvbGF0ZW5jeV9wZF9vZmZsaW5lYCwgYGlvbGF0ZW5jeV9zZXRfbGltaXRgLCBhbmQgYGJsa19pb2xhdGVuY3lfaW5pdGAg4oCTIHRoZXkmIzM5O3JlIGxpa2VseSB0b3VjaGVkIGJ5IHRoaXMgYW5kIHByb2JhYmx5IGludm9sdmVkIGluIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbXMuCgpUaGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgZW5hYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYEJMS19DR1JPVVBfSU9MQVRFTkNZYC4gVGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZSB0byBrZWVwIGluIG1pbmQsIGFuZCBpdCYjMzk7cyBlc3NlbnRpYWwgZm9yIGFueW9uZSB0byBrbm93IHdobyBpcyBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb25hbGl0eS4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBwYXRjaCYjMzk7cyBpbnRlbnQgYW5kIGltcGFjdC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQX0lPTEFURU5DWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa2NnX2lvbGF0ZW5jeV9leGl0JiMzNDssCiAgICAmIzM0O2lvbGF0ZW5jeV9wZF9vZmZsaW5lJiMzNDssCiAgICAmIzM0O2lvbGF0ZW5jeV9zZXRfbGltaXQmIzM0OywKICAgICYjMzQ7YmxrX2lvbGF0ZW5jeV9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uIGluIHRoZSBleGl0IHBhdGggb2YgdGhlIGJsb2NrIGNncm91cCBJTyBsYXRlbmN5IHBvbGljeSAoYmxrY2dfaW9sYXRlbmN5X2V4aXQpIGJ5IGZsdXNoaW5nIGVuYWJsZV93b3JrIGFmdGVyIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkuIFRoaXMgbW9kaWZpZXMgZnVuY3Rpb25hbCBjb3JlIGJsb2NrIGNncm91cCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSBjZ3JvdXAgY29uZmlndXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0xBVEVOQ1kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtjZ19pb2xhdGVuY3lfZXhpdCYjMzQ7LAogICAgJiMzNDtpb2xhdGVuY3lfcGRfb2ZmbGluZSYjMzQ7LAogICAgJiMzNDtpb2xhdGVuY3lfc2V0X2xpbWl0JiMzNDssCiAgICAmIzM0O2Jsa19pb2xhdGVuY3lfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBibG9jayBjZ3JvdXAgSU8gbGF0ZW5jeSBwb2xpY3kgKGJsa2NnX2lvbGF0ZW5jeV9leGl0KSBieSBmbHVzaGluZyBlbmFibGVfd29yayBhZnRlciBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpLiBUaGlzIG1vZGlmaWVzIGZ1bmN0aW9uYWwgY29yZSBibG9jayBjZ3JvdXAgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgY2dyb3VwIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzoxOC41MzIwMTQyNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjUyMDkyODU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQX0lPTEFURU5DWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gICAgXCJpb2xhdGVuY3lfcGRfb2ZmbGluZVwiLFxuICAgIFwiaW9sYXRlbmN5X3NldF9saW1pdFwiLFxuICAgIFwiYmxrX2lvbGF0ZW5jeV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzoxOC41MzIwMjAwMTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTI3NTE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJlMjI3OTBjNWMwOWY1ODczNjI1NDhkYTViZWM1ZjIzMWM4YTZmZGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdW4gMjEgMTQ6MjM6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWlvbGF0ZW5jeS5jIGIvYmxvY2svYmxrLWlvbGF0ZW5jeS5jXFxuaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xcbisrKyBiL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xcbkBAIC02MzksNiArNjM5LDExIEBAIHN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9leGl0KHN0cnVjdCBycV9xb3MgKnJxb3MpXFxuIFxcdHRpbWVyX3NodXRkb3duX3N5bmMoXFx1MDAyNmJsa2lvbGF0LVxcdTAwM2V0aW1lcik7XFxuIFxcdGZsdXNoX3dvcmsoXFx1MDAyNmJsa2lvbGF0LVxcdTAwM2VlbmFibGVfd29yayk7XFxuIFxcdGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KHJxb3MtXFx1MDAzZWRpc2ssIFxcdTAwMjZibGtjZ19wb2xpY3lfaW9sYXRlbmN5KTtcXG4rXFx0LypcXG4rXFx0ICogYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKSBpbnZva2VzIGlvbGF0ZW5jeV9wZF9vZmZsaW5lKCksIHdoaWNoIG1heVxcbitcXHQgKiBxdWV1ZSBlbmFibGVfd29yayBhZ2FpbiB3aGVuIGl0IGNsZWFycyB0aGUgbGFzdCBsYXRlbmN5IHRhcmdldC5cXG4rXFx0ICovXFxuK1xcdGZsdXNoX3dvcmsoXFx1MDAyNmJsa2lvbGF0LVxcdTAwM2VlbmFibGVfd29yayk7XFxuIFxcdGtmcmVlKGJsa2lvbGF0KTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MTkuMTk4NDM0MDI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg1NDQ5NzQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQX0lPTEFURU5DWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gICAgXCJpb2xhdGVuY3lfcGRfb2ZmbGluZVwiLFxuICAgIFwiaW9sYXRlbmN5X3NldF9saW1pdFwiLFxuICAgIFwiYmxrX2lvbGF0ZW5jeV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJlMjI3OTBjNWMwOWY1ODczNjI1NDhkYTViZWM1ZjIzMWM4YTZmZGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1biAyMSAxNDoyMzoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2xhdGVuY3kuYyBiL2Jsb2NrL2Jsay1pb2xhdGVuY3kuY1xuaW5kZXggMWFhZWU2ZmIwZjU5ZmYuLmEwYmRkOGE1Yzk0YzlkIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWlvbGF0ZW5jeS5jXG4rKysgYi9ibG9jay9ibGstaW9sYXRlbmN5LmNcbkBAIC02MzksNiArNjM5LDExIEBAIHN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9leGl0KHN0cnVjdCBycV9xb3MgKnJxb3MpXG4gXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmJsa2lvbGF0LVx1MDAzZXRpbWVyKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2YmxraW9sYXQtXHUwMDNlZW5hYmxlX3dvcmspO1xuIFx0YmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3kocnFvcy1cdTAwM2VkaXNrLCBcdTAwMjZibGtjZ19wb2xpY3lfaW9sYXRlbmN5KTtcbitcdC8qXG4rXHQgKiBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpIGludm9rZXMgaW9sYXRlbmN5X3BkX29mZmxpbmUoKSwgd2hpY2ggbWF5XG4rXHQgKiBxdWV1ZSBlbmFibGVfd29yayBhZ2FpbiB3aGVuIGl0IGNsZWFycyB0aGUgbGFzdCBsYXRlbmN5IHRhcmdldC5cbitcdCAqL1xuK1x0Zmx1c2hfd29yayhcdTAwMjZibGtpb2xhdC1cdTAwM2VlbmFibGVfd29yayk7XG4gXHRrZnJlZShibGtpb2xhdCk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MTkuMTk4NDM2Nzc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk2MDY1MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEFkZHJlc3NpbmcgYSBQb3RlbnRpYWwgVXNlLUFmdGVyLUZyZWUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgYmxvY2svYmxrLWlvbGF0ZW5jeS5jYC4gSXQgc2VlbXMgdGhleSd2ZSBhZGRlZCBhIGBmbHVzaF93b3JrKFx1MDAyNmJsa2lvbGF0LVx1MDAzZWVuYWJsZV93b3JrKTtgIGNhbGwgd2l0aGluIGBibGtjZ19pb2xhdGVuY3lfZXhpdCgpYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGxpa2VseSB0byBzcXVhc2ggYSByYWNlIGNvbmRpdGlvbi4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGFpbWVkIGF0IHByZXZlbnRpbmcgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyBvciBhIHJlbGF0ZWQgaXNzdWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBlbmFibGVfd29ya2AgaXMgZ2V0dGluZyBxdWV1ZWQgaW4gYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KClgIGFmdGVyIHNvbWV0aGluZyBoYXMgYWxyZWFkeSBzdGFydGVkIGRlLWluaXRpYWxpemluZyB0aGUgc3RydWN0dXJlLlxuXG5UbyBjb25maXJtIG15IGh1bmNoLCBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCdzIGhhcHBlbmluZyBpbiBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGFuZCBgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3lgLiBJJ2xsIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgYGJsa2NnX2lvbGF0ZW5jeV9leGl0YCBhbmQgYGVuYWJsZV93b3JrYCB0byB1bmRlcnN0YW5kIHRoZSBjb2RlIGZsb3cgYW5kIHdoZXJlIHRoaXMgYGVuYWJsZV93b3JrYCBpcyB0b3VjaGVkIGluIHRoYXQgZnVuY3Rpb24uIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIHRoZSB2dWxuZXJhYmlsaXR5IHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbmQgaG93IHdlbGwgaXQgc29sdmVzIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MjQuMTU5MDkwNTk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NzI4OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstaW9sYXRlbmN5LmM9NTgzPXN0YXRpYyB2b2lkIGJsa2NnX2lvbGF0ZW5jeV9kb25lX2JpbyhzdHJ1Y3QgcnFfcW9zICpycW9zLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjM0LVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYzo2MzU6c3RhdGljIHZvaWQgYmxrY2dfaW9sYXRlbmN5X2V4aXQoc3RydWN0IHJxX3FvcyAqcnFvcylcXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjM2LXtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz02NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBycV9xb3Nfb3BzIGJsa2NnX2lvbGF0ZW5jeV9vcHMgPSB7XFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjUyLVxcdC5kb25lX2JpbyA9IGJsa2NnX2lvbGF0ZW5jeV9kb25lX2JpbyxcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjUzOlxcdC5leGl0ID0gYmxrY2dfaW9sYXRlbmN5X2V4aXQsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTY1NC19O1xcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTczMz1zdGF0aWMgdm9pZCBibGtpb2xhdGVuY3lfZW5hYmxlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc0NS1cXHQgKiBBbHNvLCB3ZSBrbm93IEBibGtpb2xhdCBpcyBzYWZlIHRvIGFjY2VzcyBhcyAtXFx1MDAzZWVuYWJsZV93b3JrIGlzIGZsdXNoZWRcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NzQ2OlxcdCAqIGluIGJsa2NnX2lvbGF0ZW5jeV9leGl0KCkuXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTc0Ny1cXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6MjQuMjU3ODI1ODgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNjkzOTM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGEgaHlwb3RoZXRpY2FsIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgcnFfcW9zX29wc2AuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBjdXJpb3NpdHkuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mICp3aGVuKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYXkgdGhhdCB0cmlnZ2VyIHRoaXMgY2FsbD8gV2hhdCBzcGVjaWZpYyBzZXR0aW5ncyBvciBmbGFncyB3aXRoaW4gdGhlIHN5c3RlbSBlbmFibGUgdGhpcyBJL08gbGF0ZW5jeSBhY2NvdW50aW5nPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgc2VlIHdoYXQncyB0aWVkIHRvIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAuIEtub3dpbmcgdGhhdCB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgaG93IGl0J3MgYmVpbmcgdXNlZCBhbmQgaXRzIGltcGFjdC4gVGhpcyBpcyB3aGVyZSB0aGUgaW52ZXN0aWdhdGlvbiBzdGFydHM7IHRvIHRyYWNlIGJhY2sgdG8gdGhlIGluaXRpYXRpbmcgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjI3LjU5NDc2NzY0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDU5NTcyNjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz04MT1DT05GSUdfQkxLX1dCVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo4MjpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctODMtQ09ORklHX0JMS19DR1JPVVBfRkNfQVBQSUQ9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz05Nj1DT05GSUdfQkxLX1dCVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo5NzpDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctOTgtQ09ORklHX0JMS19DR1JPVVBfRkNfQVBQSUQ9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTg2PUNPTkZJR19CTEtfV0JUPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODc6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctODgtQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz04MD1DT05GSUdfQkxLX1dCVD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjgxOkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTgyLUNPTkZJR19CTEtfQ0dST1VQX0lPQ09TVD15XFxuLS1cXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTU2PUNPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjU3OkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy01OC1DT05GSUdfQkxLX0NHUk9VUF9JT0NPU1Q9eVxcbi0tXFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTU3PUNPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6NTg6Q09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctNTktQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUPXlcXG4tLVxcbmJsb2NrL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPUFJJTylcXHQrPSBibGstaW9wcmlvLm9cXG5ibG9jay9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1kpXFx0Kz0gYmxrLWlvbGF0ZW5jeS5vXFxuYmxvY2svTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVxcdCs9IGJsay1pb2Nvc3Qub1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9MTA9Q09ORklHX0JMS19DR1JPVVA9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjExOkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTItQ09ORklHX0JMS19ERVZfQlNHTElCPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTU9Q09ORklHX0JJTkZNVF9NSVNDPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo2OkNPTkZJR19CTEtfQ0dST1VQX0lPTEFURU5DWT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tNy1DT05GSUdfQkxLX0NHUk9VUD15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjMxLjY1NDM0NjQwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDYzMTIzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogQkxLXFxfQ0dST1VQXFxfSU9MQVRFTkNZIE1vZHVsZSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgb3B0aW9uIHdlJ3JlIHRhcmdldGluZyBpcyBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLiBUaW1lIHRvIG1hcCBvdXQgdGhlIGxpa2VseSBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVjZW50IGFkZGl0aW9uLCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2xlYXJseSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIHRhcmdldGVkIGZ1enouXG5cbkFsc28sIEknbSB0aGlua2luZywgYGJsa2NnX2lvbGF0ZW5jeV9kb25lX2Jpb2AgaGFzIHRvIGJlIGEgaG90IHBhdGggaW4gdGhlIGRhdGEgZmxvdywgc28gaXTigJlzIGdvaW5nIHRvIGJlIGNydWNpYWwgdG8gdGhyb3cgc29tZSBmdXp6aW5nIHJlc291cmNlcyB0aGVyZS4gSeKAmWQgZXhwZWN0IHRoYXQgdG8gYmUgdGhlIG1vc3QgYWN0aXZlIHBhcnQgb2YgdGhlIHN1YnN5c3RlbS5cblxuSSdtIGFsc28gc2VlaW5nIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAgbWVudGlvbmVkIGluIHRoZSBjb21tZW50cy4gVGhhdCdzIGludHJpZ3VpbmcuIEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBpbnRlcmFjdGlvbiwgcGFydGljdWxhcmx5IHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gb25saW5lL29mZmxpbmUgc3RhdGVzLCBtaWdodCBoYXZlIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBvciByYWNlIGNvbmRpdGlvbnMuIExldCdzIGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgaW9sYXRlbmN5X3BkX29mZmxpbmVgIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB3aGVyZSB0aGF0J3MgdXNlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiBmb3IgZnV6emluZyBzdHJhdGVneSBwbGFubmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjM1Ljc2MDY2MDQ0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk2Mjk5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9sYXRlbmN5X3BkX29mZmxpbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvbGF0ZW5jeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuYz02MzU9c3RhdGljIHZvaWQgYmxrY2dfaW9sYXRlbmN5X2V4aXQoc3RydWN0IHJxX3FvcyAqcnFvcylcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy02NDItXFx0LypcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6NjQzOlxcdCAqIGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KCkgaW52b2tlcyBpb2xhdGVuY3lfcGRfb2ZmbGluZSgpLCB3aGljaCBtYXlcXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNjQ0LVxcdCAqIHF1ZXVlIGVuYWJsZV93b3JrIGFnYWluIHdoZW4gaXQgY2xlYXJzIHRoZSBsYXN0IGxhdGVuY3kgdGFyZ2V0Llxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTk5MD1zdGF0aWMgdm9pZCBpb2xhdGVuY3lfcGRfaW5pdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTAyOS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTAzMDpzdGF0aWMgdm9pZCBpb2xhdGVuY3lfcGRfb2ZmbGluZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTEwMzEte1xcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTEwNTY9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvbGF0ZW5jeSA9IHtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDU5LVxcdC5wZF9pbml0X2ZuXFx0PSBpb2xhdGVuY3lfcGRfaW5pdCxcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA2MDpcXHQucGRfb2ZmbGluZV9mblxcdD0gaW9sYXRlbmN5X3BkX29mZmxpbmUsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTEwNjEtXFx0LnBkX2ZyZWVfZm5cXHQ9IGlvbGF0ZW5jeV9wZF9mcmVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzozNS45MzAyOTY0NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk0NDY5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIEJsb2NrIEkvTyBMYXRlbmN5IGluIHRoZSBLZXJuZWwqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGJsb2NrIEkvTyBsYXRlbmN5LCBhbmQgaW1tZWRpYXRlbHksIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAgYW5kIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAganVtcCBvdXQgYXQgbWUgYXMgcG90ZW50aWFsIGtleSBhcmVhcy4gVGhleSBmZWVsIGxpa2Ugc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIHN5bWJvbGljIGZvY3VzLiBJJ20gZ3Vlc3NpbmcgdGhlc2UgYXJlIHJlbGF0ZWQgdG8gY2xlYW51cCBhbmQgaGFuZGxpbmcgb2YgZGV2aWNlcyBnb2luZyBvZmZsaW5lLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgSS9PIGxhdGVuY3kgdHJhY2tpbmcgZnJhbWV3b3JrLiBUaGUgbG9naWMgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgY3JpdGljYWwuIFRoZW4sIEkgYWxzbyByZWFsaXplIHRoYXQgYGJsa2lvbGF0ZW5jeV9lbmFibGVfd29ya19mbmAgbWlnaHQgYmUgaW4gdGhlIG1peCwgcG9zc2libHkgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgbGF0ZW5jeSB0cmFja2luZyBmdW5jdGlvbmFsaXR5IGF0IHJ1bnRpbWUuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvbnRyb2wgZmVhdHVyZXMgd29yay5cblxuVG8gZXN0YWJsaXNoIHRoZSBjb250ZXh0IG9mIHRoZXNlIHN5bWJvbHMsIGl0IG1ha2VzIHNlbnNlIHRvIGdvIGJhY2sgdG8gdGhlIGluaXRpYWxpemF0aW9uIHBvaW50LiBJIHNob3VsZCBzdGFydCB3aXRoIGNoZWNraW5nIG91dCBgYmxrX2lvbGF0ZW5jeV9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYmFzZSBzZXR1cCBhbmQgaG93IGFsbCB0aGVzZSBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZml0IHRvZ2V0aGVyLCBhbmQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMuIEl0J3MgYSBzZW5zaWJsZSBzdGFydGluZyBwb2ludCB0byB0cmFjZSB0aGUgb3ZlcmFsbCBmbG93IGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGZ1bmN0aW9ucyBhbmQgc3RydWN0dXJlcyBpbnZvbHZlZCBpbiB0aGlzIGFzcGVjdCBvZiB0aGUgYmxvY2sgbGF5ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo0MC4yMjQ3NjgzMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjQyNTk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGtfaW9sYXRlbmN5X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvbGF0ZW5jeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuYz03MzM9c3RhdGljIHZvaWQgYmxraW9sYXRlbmN5X2VuYWJsZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy03NjItXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjc2MzpzdGF0aWMgaW50IGJsa19pb2xhdGVuY3lfaW5pdChzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtNzY0LXtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz04MzI9c3RhdGljIHNzaXplX3QgaW9sYXRlbmN5X3NldF9saW1pdChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1ZixcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTAtXFx0LypcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODUxOlxcdCAqIGJsa19pb2xhdGVuY3lfaW5pdCgpIG1heSBmYWlsIGFmdGVyIHJxX3Fvc19hZGQoKSBzdWNjZWVkcyB3aGljaCBjYW5cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODUyLVxcdCAqIGNvbmZ1c2UgaW9sYXRfcnFfcW9zKCkgdGVzdC4gTWFrZSB0aGUgdGVzdCBhbmQgaW5pdCBhdG9taWMuXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtODU1LVxcdGlmICghaW9sYXRfcnFfcW9zKGN0eC5iZGV2LVxcdTAwM2ViZF9xdWV1ZSkpXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjg1NjpcXHRcXHRyZXQgPSBibGtfaW9sYXRlbmN5X2luaXQoY3R4LmJkZXYtXFx1MDAzZWJkX2Rpc2spO1xcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy04NTctXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6NDAuMzU3MjAwNjYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODk5NjkxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmc6XG5cbioqRXhhbWluaW5nIHRoZSBJL08gTGF0ZW5jeSBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBgYmxrX2lvbGF0ZW5jeV9pbml0YCBpcyBpbnZva2VkIGJ5IGBpb2xhdGVuY3lfc2V0X2xpbWl0YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBgaW9sYXRlbmN5X3NldF9saW1pdGAgaXMgYW5vdGhlciBjcml0aWNhbCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHdpdGhpbiB0aGlzIEkvTyBsYXRlbmN5IGNvbnRleHQuIEl0J3MgdGhlIGRyaXZlciwgc28gdG8gc3BlYWssIGZvciB0aGUgaW5pdGlhbGl6YXRpb24uIFRvIGdyYXNwIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBsaW1pdCBpcyAqc2V0KiBiZWZvcmUgSSBjYW4gdHJ1bHkgYXBwcmVjaWF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0J3MgZGlnIGludG8gYGlvbGF0ZW5jeV9zZXRfbGltaXRgIGFuZCBzZWUgd2hhdCBpdCByZXZlYWxzLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbG9naWMgbGlrZWx5IHJlc2lkZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo0My41NDcxNzIxODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MTM2NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbGF0ZW5jeV9zZXRfbGltaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvbGF0ZW5jeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2xhdGVuY3kuYz04MTQ9c3RhdGljIHZvaWQgaW9sYXRlbmN5X2NsZWFyX3NjYWxpbmcoc3RydWN0IGJsa2NnX2dxICpibGtnKVxcbi0tXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTgzMS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6ODMyOnN0YXRpYyBzc2l6ZV90IGlvbGF0ZW5jeV9zZXRfbGltaXQoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jLTgzMy1cXHRcXHRcXHQgICAgIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpXFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmM9MTA0Nj1zdGF0aWMgc3RydWN0IGNmdHlwZSBpb2xhdGVuY3lfZmlsZXNbXSA9IHtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUwLVxcdFxcdC5zZXFfc2hvdyA9IGlvbGF0ZW5jeV9wcmludF9saW1pdCxcXG5ibG9jay9ibGstaW9sYXRlbmN5LmM6MTA1MTpcXHRcXHQud3JpdGUgPSBpb2xhdGVuY3lfc2V0X2xpbWl0LFxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDUyLVxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjQzLjY0MjMxNDkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzgyNzU5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJL08gTGF0ZW5jeSBDZ3JvdXAgRml4KipcblxuT2theSwgc28gYGlvbGF0ZW5jeV9zZXRfbGltaXRgIGlzIGEgY2dyb3VwIHdyaXRlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGltbWVkaWF0ZWx5IHRlc3RhYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCdzIHJlYWNoYWJsZSBpcyBhIGdvb2Qgc2lnbi4gSXQncyBsb29raW5nIGxpa2UgdGhlIHByb2JsZW0gaXMgbGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgYSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSB0aGF0J3MgY3JvcHBpbmcgdXAgZHVyaW5nIGV4aXQsIHdoaWNoIGlzIGEgY2xhc3NpYyBhbmQgdHJpY2t5IHByb2JsZW0gc3BhY2UuXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBhIGBmbHVzaF93b3JrKFx1MDAyNmJsa2lvbGF0LVx1MDAzZWVuYWJsZV93b3JrKTtgIHRvIGBibGtjZ19pb2xhdGVuY3lfZXhpdGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIGRlYWxpbmcgd2l0aCB0aGlzIHR5cGUgb2YgY29uY3VycmVuY3kgcHJvYmxlbSwgYW5kIGl0IHNlZW1zIGZ1bmN0aW9uYWwgb24gdGhlIHN1cmZhY2UuIFdvcnRoIGZ1enppbmcgaXQgdG8gc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cbkknbGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLiBJdCdzIGRlZmluaXRlbHkgdGhlIGtleSB0byB1bmxvY2tpbmcgdGhpcyBhcmVhIG9mIHRoZSBjb2RlLlxuXG5UbyBzdGFydCwgSSdsbCBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3c6IGBibGtjZ19pb2xhdGVuY3lfZXhpdGAsIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAsIGBpb2xhdGVuY3lfc2V0X2xpbWl0YCwgYW5kIGBibGtfaW9sYXRlbmN5X2luaXRgLiBHZXR0aW5nIHRoZXNlIGRvd24gd2lsbCBnaXZlIG1lIGEgaGVhZCBzdGFydCBvbiBkZWJ1Z2dpbmcuXG5cbkp1c3QgdG8gYmUgc2FmZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYEJMS19DR1JPVVBgIGlzIHJlcXVpcmVkLiBZZXAsIGFuZCBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgIGRlcGVuZHMgb24gaXQsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuIEJldHRlciB0byBiZSB0aG9yb3VnaCwgSSdsbCBnbyBjaGVjayB0aGUgYGJsb2NrL0tjb25maWdgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6NDguNDIwNTk5MDkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjkyNDA3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svS2NvbmZpZz0xMjc9Y29uZmlnIEJMS19XQlRfTVFcXG4tLVxcbmJsb2NrL0tjb25maWctMTMzLVxcbmJsb2NrL0tjb25maWc6MTM0OmNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxcbmJsb2NrL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBsYXRlbmN5IGJhc2VkIGNncm91cCBJTyBwcm90ZWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo0OC41NDk4NDUxNDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MTU3NTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgaW5jb21wbGV0ZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc3RydWN0dXJlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEknbSB0aGlua2luZywgXCJXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/XCIgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbid0IGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNzEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDE0OjIzOjUxLjkzMTQyMzc2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYzMzYwMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svS2NvbmZpZz0xMjc9Y29uZmlnIEJMS19XQlRfTVFcXG4tLVxcbmJsb2NrL0tjb25maWctMTMzLVxcbmJsb2NrL0tjb25maWc6MTM0OmNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxcbmJsb2NrL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBsYXRlbmN5IGJhc2VkIGNncm91cCBJTyBwcm90ZWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo1Mi4wMjc3NzE4MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MTk5Nzg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgS2NvbmZpZyBmb3IgQ29uZmlndXJhdGlvbiBJbnNpZ2h0cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgYGJsb2NrL0tjb25maWdgIGZpbGUgYWdhaW4uIExldCdzIGdldCByaWdodCB0byBpdCAtIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMTM0LiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIGJsb2NrIGRldmljZSBoYW5kbGluZy4gTXkgZ3Vlc3MgaXMgdGhhdCBpdCBtaWdodCBiZSBhIG5ldyBmZWF0dXJlLCBhIHN1YnRsZSBkZXBlbmRlbmN5LCBvciBwZXJoYXBzIGEgdHdlYWsgdG8gYW4gZXhpc3Rpbmcgc2V0dGluZyB0aGF0IEkndmUgYmVlbiBtZWFuaW5nIHRvIHJldmlldy4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBleHBlY3RpbmcgdG8gZWl0aGVyIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBhbiBleGlzdGluZyBzZXR0aW5nLCBsb29rIGZvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgb3IgcGVyaGFwcyByZXZpZXcgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIExldCdzIHNlZSB3aGF0IGxpbmUgMTM0IGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjU2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjM6NTUuMDk5NzczMDg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJibG9jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHRcXHRkZXBlbmRzIG9uIEJMS19XQlRcXG4gMTMxOlxcdFxcdGhlbHBcXG4gMTMyOlxcdFxcdEVuYWJsZSB3cml0ZWJhY2sgdGhyb3R0bGluZyBieSBkZWZhdWx0IGZvciByZXF1ZXN0LWJhc2VkIGJsb2NrIGRldmljZXMuXFxuIDEzMzpcXHRcXG4gMTM0OlxcdGNvbmZpZyBCTEtfQ0dST1VQX0lPTEFURU5DWVxcbiAxMzU6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cXFwiXFxuIDEzNjpcXHRcXHRkZXBlbmRzIG9uIEJMS19DR1JPVVBcXG4gMTM3OlxcdFxcdGhlbHBcXG4gMTM4OlxcdFxcdEVuYWJsaW5nIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIC5sYXRlbmN5IGludGVyZmFjZSBmb3IgSU8gdGhyb3R0bGluZy5cXG4gMTM5OlxcdFxcdFRoZSBJTyBjb250cm9sbGVyIHdpbGwgYXR0ZW1wdCB0byBtYWludGFpbiBhdmVyYWdlIElPIGxhdGVuY2llcyBiZWxvd1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxNDoyMzo1NS4wOTk4ODAzMzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwNTI4NzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIENncm91cCBJTyBMYXRlbmN5IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBoaXR0aW5nIHRoZSBibG9jayBjZ3JvdXAgSU8gbGF0ZW5jeSBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIGl0J3MgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHk6IGEgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgZW5zdXJpbmcgdGhhdCB0aGUgYGVuYWJsZV93b3JrYCBpcyBmbHVzaGVkICphZnRlciogYGJsa2NnX2RlYWN0aXZhdGVfcG9saWN5KClgLiBUaGlzIGlzIGdvb2QsIGl0IHNob3dzIGEgY2FyZWZ1bCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvcmRlcmluZyBuZWVkZWQgdG8gcHJldmVudCBpc3N1ZXMgZHVyaW5nIHRoZSBzaHV0ZG93biBvZiB0aGlzIHBhcnRpY3VsYXIgSU8gbGF0ZW5jeSBwb2xpY3kuXG5cbkknbSBtYWtpbmcgYSBtZW50YWwgbm90ZSBvZiB0aGUgY3JpdGljYWwgc3ltYm9scyBpbnZvbHZlZCBoZXJlOiBJIG5lZWQgdG8ga2VlcCBhIGNsb3NlIGV5ZSBvbiBgYmxrY2dfaW9sYXRlbmN5X2V4aXRgLCBuYXR1cmFsbHksIGJ1dCBhbHNvIGBpb2xhdGVuY3lfcGRfb2ZmbGluZWAsIGBpb2xhdGVuY3lfc2V0X2xpbWl0YCwgYW5kIGBibGtfaW9sYXRlbmN5X2luaXRgIOKAkyB0aGV5J3JlIGxpa2VseSB0b3VjaGVkIGJ5IHRoaXMgYW5kIHByb2JhYmx5IGludm9sdmVkIGluIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbXMuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBlbmFibGVzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBgQkxLX0NHUk9VUF9JT0xBVEVOQ1lgLiBUaGF0J3MgYW4gaW1wb3J0YW50IHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8ga2VlcCBpbiBtaW5kLCBhbmQgaXQncyBlc3NlbnRpYWwgZm9yIGFueW9uZSB0byBrbm93IHdobyBpcyBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgcGF0Y2gncyBpbnRlbnQgYW5kIGltcGFjdC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMzUsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTQ6MjQ6MDAuOTA1MTcxMjI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NzUyNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQX0lPTEFURU5DWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2NnX2lvbGF0ZW5jeV9leGl0XCIsXG4gICAgXCJpb2xhdGVuY3lfcGRfb2ZmbGluZVwiLFxuICAgIFwiaW9sYXRlbmN5X3NldF9saW1pdFwiLFxuICAgIFwiYmxrX2lvbGF0ZW5jeV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4aXQgcGF0aCBvZiB0aGUgYmxvY2sgY2dyb3VwIElPIGxhdGVuY3kgcG9saWN5IChibGtjZ19pb2xhdGVuY3lfZXhpdCkgYnkgZmx1c2hpbmcgZW5hYmxlX3dvcmsgYWZ0ZXIgYmxrY2dfZGVhY3RpdmF0ZV9wb2xpY3koKS4gVGhpcyBtb2RpZmllcyBmdW5jdGlvbmFsIGNvcmUgYmxvY2sgY2dyb3VwIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIGNncm91cCBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19DR1JPVVBfSU9MQVRFTkNZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrY2dfaW9sYXRlbmN5X2V4aXRcIixcbiAgICBcImlvbGF0ZW5jeV9wZF9vZmZsaW5lXCIsXG4gICAgXCJpb2xhdGVuY3lfc2V0X2xpbWl0XCIsXG4gICAgXCJibGtfaW9sYXRlbmN5X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXhpdCBwYXRoIG9mIHRoZSBibG9jayBjZ3JvdXAgSU8gbGF0ZW5jeSBwb2xpY3kgKGJsa2NnX2lvbGF0ZW5jeV9leGl0KSBieSBmbHVzaGluZyBlbmFibGVfd29yayBhZnRlciBibGtjZ19kZWFjdGl2YXRlX3BvbGljeSgpLiBUaGlzIG1vZGlmaWVzIGZ1bmN0aW9uYWwgY29yZSBibG9jayBjZ3JvdXAgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgY2dyb3VwIGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflown52jl[1] Phase: Succeeded StartedAt: 2026-06-21 14:25:08 +0000 UTC FinishedAt: 2026-06-21 14:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-21 14:25:08 +0000 UTC FinishedAt: 2026-06-21 14:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2] Phase: Succeeded StartedAt: 2026-06-21 14:25:08 +0000 UTC FinishedAt: 2026-06-21 16:08:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-21 14:25:08 +0000 UTC FinishedAt: 2026-06-21 16:08:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-21 14:25:08 +0000 UTC FinishedAt: 2026-06-21 14:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-21 14:25:08 +0000 UTC FinishedAt: 2026-06-21 14:25:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflown52jl/series-workflown52jl-convert-artifact-1180370573/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-21 14:25:19 +0000 UTC FinishedAt: 2026-06-21 14:52:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-21 14:25:19 +0000 UTC FinishedAt: 2026-06-21 14:52:04 +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:*6d8762b4-8f79-45fd-b593-796321807568,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-workflown52jl/series-workflown52jl-convert-artifact-1180370573/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": "c077c1d5-84d9-4612-a282-c0cc18d0cd57", "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-workflown52jl/series-workflown52jl-build-action-923951619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-21 14:25:19 +0000 UTC FinishedAt: 2026-06-21 14:51:29 +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:*6d8762b4-8f79-45fd-b593-796321807568,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-workflown52jl/series-workflown52jl-convert-artifact-1180370573/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": "c077c1d5-84d9-4612-a282-c0cc18d0cd57", "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-workflown52jl/series-workflown52jl-build-action-923951619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-21 14:52:04 +0000 UTC FinishedAt: 2026-06-21 14:52:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-21 14:52:04 +0000 UTC FinishedAt: 2026-06-21 14:52:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-21 14:52:04 +0000 UTC FinishedAt: 2026-06-21 14:52:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-21 14:52:04 +0000 UTC FinishedAt: 2026-06-21 14:52:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflown52jl/series-workflown52jl-convert-artifact-2680677352/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-21 14:52:14 +0000 UTC FinishedAt: 2026-06-21 14:53:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-21 14:52:14 +0000 UTC FinishedAt: 2026-06-21 14:53:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c077c1d5-84d9-4612-a282-c0cc18d0cd57,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-workflown52jl/series-workflown52jl-build-action-923951619/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-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-21 14:53:51 +0000 UTC FinishedAt: 2026-06-21 14:53:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-21 14:53:51 +0000 UTC FinishedAt: 2026-06-21 14:53:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-21 14:53:51 +0000 UTC FinishedAt: 2026-06-21 15:15:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-21 14:53:51 +0000 UTC FinishedAt: 2026-06-21 15:15:34 +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:*6d8762b4-8f79-45fd-b593-796321807568,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-workflown52jl/series-workflown52jl-convert-artifact-2680677352/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": "c545c816-3530-440b-b775-c9debd4f521f", "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-workflown52jl/series-workflown52jl-build-action-3350502292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-21 14:53:51 +0000 UTC FinishedAt: 2026-06-21 15:15:24 +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:*6d8762b4-8f79-45fd-b593-796321807568,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-workflown52jl/series-workflown52jl-convert-artifact-2680677352/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": "c545c816-3530-440b-b775-c9debd4f521f", "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-workflown52jl/series-workflown52jl-build-action-3350502292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-21 15:15:34 +0000 UTC FinishedAt: 2026-06-21 15:15:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-21 15:15:34 +0000 UTC FinishedAt: 2026-06-21 15:15:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-21 15:15:34 +0000 UTC FinishedAt: 2026-06-21 15:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-21 15:15:34 +0000 UTC FinishedAt: 2026-06-21 15:17:19 +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:*c545c816-3530-440b-b775-c9debd4f521f,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-workflown52jl/series-workflown52jl-build-action-3350502292/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-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 16:08:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 16:08:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"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:*c077c1d5-84d9-4612-a282-c0cc18d0cd57,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c545c816-3530-440b-b775-c9debd4f521f,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-workflown52jl/series-workflown52jl-build-action-923951619/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-workflown52jl/series-workflown52jl-build-action-3350502292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 15:17:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 15:17:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"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-workflown52jl/series-workflown52jl-convert-artifact-1313560609/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 15:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 15:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-21 15:17:29 +0000 UTC FinishedAt: 2026-06-21 15:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-21 15:17:39 +0000 UTC FinishedAt: 2026-06-21 16:08:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflown52jl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkcg_iolatency_exit","iolatency_pd_offline","iolatency_set_limit","blk_iolatency_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP_IOLATENCY"],"series_id":"c3ea9c1a-d020-4278-8c46-5b03e62048a2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-21 15:17:39 +0000 UTC FinishedAt: 2026-06-21 16:08:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c077c1d5-84d9-4612-a282-c0cc18d0cd57,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c545c816-3530-440b-b775-c9debd4f521f,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-workflown52jl/series-workflown52jl-build-action-923951619/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-workflown52jl/series-workflown52jl-build-action-3350502292/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-workflown52jl/series-workflown52jl-convert-artifact-1313560609/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,}