Name: series-workflow25d29 Phase: Succeeded StartedAt: 2026-08-14 03:19:37 +0000 UTC FinishedAt: 2026-08-14 05:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[0] Phase: Succeeded StartedAt: 2026-08-14 03:19:37 +0000 UTC FinishedAt: 2026-08-14 03:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 03:19:37 +0000 UTC FinishedAt: 2026-08-14 03:40:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "series_id": "26d3726c-1082-43d6-98ff-ccba7db4d044" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "io_uring" ], "focus_symbols": [ "io_unregister_bpf_ops", "bpf_io_unreg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb191bnJlZ2lzdGVyX2JwZl9vcHMmIzM0OywKICAgICYjMzQ7YnBmX2lvX3VucmVnJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGlvX2VqZWN0X2JwZmAgaW4gYGlvX3VyaW5nL2JwZi1vcHMuY2AgdG8gd2FrZSB1cCBhIHNsZWVwaW5nIHRhc2sgKGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgKSB3aGVuIGBjdHgtXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrYCBpcyBpbnZhbGlkKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGlvX3VyaW5nIEJQRiBvcGVyYXRpb25zIHdoZXJlIGEgdGFzayBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0YCB3b3VsZG4mIzM5O3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQyMWFhODM3MTE2NjZhZmJhMjllMTNkM2I0YjZlMWE2ZmVmNzBkMzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzozODo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pb191cmluZy9icGYtb3BzLmMgYi9pb191cmluZy9icGYtb3BzLmNcbmluZGV4IDVhNTBmMDY3NWZlNTguLjg3MTQ4ZGJkM2IzZTAgMTAwNjQ0XG4tLS0gYS9pb191cmluZy9icGYtb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2lvX3VyaW5nL2JwZi1vcHMuY1xuQEAgLTIxMCw2ICYjNDM7MjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbiBcdG9wcy1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGN0eC1cdTAwM2VicGZfb3BzID0gTlVMTDtcbiBcdGN0eC1cdTAwM2Vsb29wX3N0ZXAgPSBOVUxMO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQSBsb29wIG1heSBiZSBzbGVlcGluZyBpbiBpb19sb29wX3dhaXQoKSB3aXRoIC1cdTAwM2V1cmluZ19sb2NrXG4mIzQzO1x0ICogcmVsZWFzZWQuIEl0JiMzOTtsbCBzZWUgbG9vcF9zdGVwID09IE5VTEwgYWZ0ZXIgd2FraW5nIHVwLCBidXRcbiYjNDM7XHQgKiBub3RoaW5nIHdha2VzIGl0IG90aGVyd2lzZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrKVxuJiM0MztcdFx0d2FrZV91cF9zdGF0ZShjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fdW5yZWdpc3Rlcl9icGZfb3BzJiMzNDssCiAgICAmIzM0O2JwZl9pb191bnJlZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJiMzOTt0IGJlIHdva2VuIHVwIHdoZW4gQlBGIG9wcyBhcmUgZWplY3RlZC4gSXQgYWRkcyBhIGB3YWtlX3VwX3N0YXRlYCBjYWxsIGluIGBpb19lamVjdF9icGZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MjFhYTgzNzExNjY2YWZiYTI5ZTEzZDNiNGI2ZTFhNmZlZjcwZDM2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDM6Mzg6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pb191cmluZy9icGYtb3BzLmMgYi9pb191cmluZy9icGYtb3BzLmMKaW5kZXggNWE1MGYwNjc1ZmU1OC4uODcxNDhkYmQzYjNlMCAxMDA2NDQKLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2lvX3VyaW5nL2JwZi1vcHMuYwpAQCAtMjEwLDYgJiM0MzsyMTAsMTMgQEAgc3RhdGljIHZvaWQgaW9fZWplY3RfYnBmKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KQogCW9wcy0mZ3Q7cHJpdiA9IE5VTEw7CiAJY3R4LSZndDticGZfb3BzID0gTlVMTDsKIAljdHgtJmd0O2xvb3Bfc3RlcCA9IE5VTEw7CiYjNDM7CS8qCiYjNDM7CSAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtJmd0O3VyaW5nX2xvY2sKJiM0MzsJICogcmVsZWFzZWQuIEl0JiMzOTtsbCBzZWUgbG9vcF9zdGVwID09IE5VTEwgYWZ0ZXIgd2FraW5nIHVwLCBidXQKJiM0MzsJICogbm90aGluZyB3YWtlcyBpdCBvdGhlcndpc2UuCiYjNDM7CSAqLwomIzQzOwlpZiAoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaykKJiM0MzsJCXdha2VfdXBfc3RhdGUoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaywgVEFTS19JTlRFUlJVUFRJQkxFKTsKIH0KIAogc3RhdGljIHZvaWQgYnBmX2lvX3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGlvX3VyaW5nL2JwZi1vcHMuYyBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgYSBtb2RpZmljYXRpb24gdG8gYGlvX3VyaW5nL2JwZi1vcHMuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgYWRkZWQgYHdha2VfdXBfc3RhdGUoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaywgVEFTS19JTlRFUlJVUFRJQkxFKTtgIHdpdGhpbiB0aGUgYGlvX2VqZWN0X2JwZigpYCBmdW5jdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGhlcmUuIFdoYXQmIzM5O3MgdGhlIHB1cnBvc2Ugb2Ygd2FraW5nIHVwIGEgdGFzayBpbiBhbiBpbnRlcnJ1cHRpYmxlIHN0YXRlIHdpdGhpbiBgaW9fZWplY3RfYnBmKClgPyBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYm90aCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXRzZWxmLCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgaW9fdXJpbmcgZnJhbWV3b3JrLiBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyB0aGF0IHRyaWdnZXJzIHRoaXMgZWplY3Rpb24sIGFuZCB3aHkgaXMgdGhpcyB3YWtldXAgbmVjZXNzYXJ5IGF0IHRoaXMgcG9pbnQ/IElzIHRoaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgb3IgcGVyaGFwcyBhIHNpZ25hbGluZyBtZWNoYW5pc20/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludHJvZHVjZWQsIGFuZCB0aGUgaW50ZW5kZWQgYmVoYXZpb3IuIExldCYjMzk7cyBnZXQgdG8gd29yayBhbmQgZmluZCBzb21lIGFuc3dlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fZWplY3RfYnBmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL2JwZi1vcHMuYz0xODA9c3RhdGljIGludCBicGZfaW9fcmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jLTIwMC1cbmlvX3VyaW5nL2JwZi1vcHMuYzoyMDE6c3RhdGljIHZvaWQgaW9fZWplY3RfYnBmKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxuaW9fdXJpbmcvYnBmLW9wcy5jLTIwMi17XG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jPTIyMj1zdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbi0tXG5pb191cmluZy9icGYtb3BzLmMtMjMzLVxuaW9fdXJpbmcvYnBmLW9wcy5jOjIzNDpcdFx0aW9fZWplY3RfYnBmKGN0eCk7XG5pb191cmluZy9icGYtb3BzLmMtMjM1LVx0fVxuLS1cbmlvX3VyaW5nL2JwZi1vcHMuYz0yMzg9dm9pZCBpb191bnJlZ2lzdGVyX2JwZl9vcHMoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jLTI1Mi1cdGlmIChjdHgtXHUwMDNlYnBmX29wcylcbmlvX3VyaW5nL2JwZi1vcHMuYzoyNTM6XHRcdGlvX2VqZWN0X2JwZihjdHgpO1xuaW9fdXJpbmcvYnBmLW9wcy5jLTI1NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaW9fdXJpbmcgQlBGIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBpb19lamVjdF9icGZgIHdpdGhpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBpb191cmluZyBzdWJzeXN0ZW0sIHdoaWNoIGFsd2F5cyB3YXJyYW50cyBjbG9zZSBzY3J1dGlueS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBkZXRhaWxzIGFzc29jaWF0ZWQgd2l0aCBgaW9fdXJpbmcvYnBmLW9wcy5jYC4gVW5kZXJzdGFuZGluZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgd2lsbCBnaXZlIG1lIHRoZSBwcm9wZXIgY29udGV4dCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGYtb3BzLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX0lPX1VSSU5HX0JQRikgJiM0Mzs9IGJwZl9maWx0ZXIub1xuaW9fdXJpbmcvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0lPX1VSSU5HX0JQRl9PUFMpICYjNDM7PSBicGYtb3BzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTkzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIGBJT19VUklOR19CUEZfT1BTYCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB0aGUgY3VycmVudCBmb2N1cyBpcyBvbiBhIGNvbmZpZ3VyYXRpb24gaXRlbTogYElPX1VSSU5HX0JQRl9PUFNgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiYjMzk7cyBkZXBlbmRlbmNpZXMsIGl0cyBkZWZhdWx0IHNldHRpbmcsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB3aGF0IGl0ICplbmFibGVzKiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaW9fdXJpbmcuIEtub3dpbmcgdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZSB3aWxsIGJlIGNyaXRpY2FsIOKAkyBpcyBpdCBhYm91dCBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGZlYXR1cmVzLCBvciBzb21lIGNvbWJpbmF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIG9mIGNoYW5nZXMsIHRvIGtub3cgd2hlcmUgdGhpcyBwYXJhbWV0ZXIgaW1wYWN0cyBwZXJmb3JtYW5jZSBvciBzZWN1cml0eTsgSSBrbm93IHRoZSBkYW5nZXJzIG9mIGxlYXZpbmcgYSBuZXcgZmVhdHVyZSBhY3RpdmUgd2l0aG91dCBhIHByb3BlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9uIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHkgSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzIHNldCwgdW5zZXQsIG9yIGRlZmF1bHRlZCB0byBhIGNlcnRhaW4gdmFsdWUuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IEtjb25maWcgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9fVVJJTkdfQlBGX09QUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnPTEzPWNvbmZpZyBJT19VUklOR19CUEZcbi0tXG5pb191cmluZy9LY29uZmlnLTE3LVxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvS2NvbmZpZy0xOS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIGhpdHRpbmcgYSBwb2ludCB3aGVyZSBzb21ldGhpbmcgaGluZ2VzIG9uIGEgc3BlY2lmaWMgY29uZGl0aW9uLiBNeSBndXQgcmVhY3Rpb24gaXMgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZTogd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb24gZ292ZXJucyB0aGlzIGJlaGF2aW9yPyBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXI/IExldCYjMzk7cyBjaGVjayB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIHVuZGVybHlpbmcgcmVhc29ucyBiZWhpbmQgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgcmVsYXRlZCB0byBgaW9fdXJpbmdgLiYjMzQ7IFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2lvX3VyaW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBpb191cmluZyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBJT19VUklOR19aQ1JYXG4gICA3Olx0XHRkZWZfYm9vbCB5XG4gICA4Olx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4gICA5Olx0XHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxuICAxMDpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDExOlx0XHRkZXBlbmRzIG9uIE5FVF9SWF9CVVNZX1BPTExcbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgSU9fVVJJTkdfQlBGXG4gIDE0Olx0XHRkZWZfYm9vbCB5XG4gIDE1Olx0XHRkZXBlbmRzIG9uIEJQRlxuICAxNjpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuICAxOTpcdFx0ZGVmX2Jvb2wgeVxuICAyMDpcdFx0ZGVwZW5kcyBvbiBJT19VUklOR1xuICAyMTpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgREVCVUdfSU5GT19CVEZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGlvX3VyaW5nIEJQRiBPcGVyYXRpb25zKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCBzZWVtcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYElPX1VSSU5HX0JQRl9PUFNgIHJlbGllcyBwcmV0dHkgaGVhdmlseSBvbiBzZXZlcmFsIG90aGVyIGtlcm5lbCBmZWF0dXJlczogYElPX1VSSU5HYCBpdHNlbGYsIG5hdHVyYWxseSwgYnV0IGFsc28gYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYERFQlVHX0lORk9fQlRGYC4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZCBhcyBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIHdoZW4gSSYjMzk7bSByZXZpZXdpbmcgdGhpcy4gSSBzZWUgdGhhdCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXMgbWFya2VkIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEgZ29vZCBpbml0aWFsIGluZGljYXRvcjsgaXQgaW1wbGllcyBpdCYjMzk7cyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgd2l0aGluIHRoaXMgc3BlY2lmaWMgbW9kdWxlLiBUaGUgY29kZSBhbHNvIHJldmVhbHMgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AuIEdpdmVuIHRoaXMgYXJjaGl0ZWN0dXJlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXJseSB0byBkaXZlIGludG8gYGJwZl9pb191bnJlZ2AgYW5kIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIHRvIHVuZGVyc3RhbmQgaG93IGBpb19lamVjdF9icGZgIGlzIGJlaW5nIHV0aWxpemVkIGFuZCB3aGF0IGNvbnRleHQgaXQmIzM5O3Mgb3BlcmF0aW5nIGluLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGluc2lnaHRzIGFyZSBsaWtlbHkgaGlkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW9fdW5yZWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvYnBmLW9wcy5jPTIwMT1zdGF0aWMgdm9pZCBpb19lamVjdF9icGYoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jLTIyMS1cbmlvX3VyaW5nL2JwZi1vcHMuYzoyMjI6c3RhdGljIHZvaWQgYnBmX2lvX3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG5pb191cmluZy9icGYtb3BzLmMtMjIzLXtcbi0tXG5pb191cmluZy9icGYtb3BzLmM9MjU2PXN0YXRpYyBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX3Jpbmdfb3BzID0ge1xuLS1cbmlvX3VyaW5nL2JwZi1vcHMuYy0yNTgtXHQucmVnID0gYnBmX2lvX3JlZyxcbmlvX3VyaW5nL2JwZi1vcHMuYzoyNTk6XHQudW5yZWcgPSBicGZfaW9fdW5yZWcsXG5pb191cmluZy9icGYtb3BzLmMtMjYwLVx0LmNoZWNrX21lbWJlciA9IGJwZl9pb19jaGVja19tZW1iZXIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBCUEYgSU8gVW5yZWdpc3RyYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgYnBmX2lvX3VucmVnYC4uLiBhaCwgeWVzLCB0aGF0JiMzOTtzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBgYnBmX3N0cnVjdF9vcHNgIHN0cnVjdHVyZS4gU28sIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgbWFjaGluZXJ5IHRoYXQgaGFuZGxlcywgSSYjMzk7bSBhc3N1bWluZywgdGhlIHVucmVnaXN0cmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIEJQRiBhbmQgSU8uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYmVpbmcgY2FsbGVkPyBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFjdHVhbCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJdCBkaWN0YXRlcyB0aGUgY29udGV4dCwgdGhlIGNvbmRpdGlvbnMsIHRoZSByZWFzb25zICp3aHkqIHRoaXMgdW5yZWdpc3RyYXRpb24gd291bGQgYmUgaGFwcGVuaW5nLCBhbmQgZnJhbmtseSwgd2hhdCBpcyBldmVuIGJlaW5nIHVucmVnaXN0ZXJlZC4gV2l0aG91dCBrbm93aW5nIHdoZXJlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIGlzIGludm9rZWQsIEkmIzM5O20gc3R1Y2sgd2l0aCBhbiBpbmNvbXBsZXRlIHBpY3R1cmUuIEkgbmVlZCB0aGF0IGNhbGwgZ3JhcGggdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoaXMgSU8gdW5yZWdpc3RyYXRpb24gZmxvdyByZWxhdGVkIHRvIEJQRi4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiBmaW5kIHRoYXQgY2FsbCBjaGFpbuKApgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb191bnJlZ2lzdGVyX2JwZl9vcHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvYnBmLW9wcy5jPTIyMj1zdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbi0tXG5pb191cmluZy9icGYtb3BzLmMtMjM3LVxuaW9fdXJpbmcvYnBmLW9wcy5jOjIzODp2b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMzkte1xuLS1cbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5oLTIwLSNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvYnBmLW9wcy5oOjIxOnZvaWQgaW9fdW5yZWdpc3Rlcl9icGZfb3BzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KTtcbmlvX3VyaW5nL2JwZi1vcHMuaC0yMi0jZWxzZVxuaW9fdXJpbmcvYnBmLW9wcy5oOjIzOnN0YXRpYyBpbmxpbmUgdm9pZCBpb191bnJlZ2lzdGVyX2JwZl9vcHMoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG5pb191cmluZy9icGYtb3BzLmgtMjQte1xuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmM9MjE2Mz1zdGF0aWMgX19jb2xkIHZvaWQgaW9fcmluZ19jdHhfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2NC17XG5pb191cmluZy9pb191cmluZy5jOjIxNjU6XHRpb191bnJlZ2lzdGVyX2JwZl9vcHMoY3R4KTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2Ni1cdGlvX3NxX3RocmVhZF9maW5pc2goY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1MgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIE9wZXJhdGlvbnMgaW4gaW9fdXJpbmcgQ29udGV4dCoqCgpPa2F5LCBzbyBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCBnZXRzIGNhbGxlZCBmcm9tIGBpb19yaW5nX2N0eF9mcmVlYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgJiMzNDtBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYXMgdGhlIGtleSBwbGF5ZXJzIGhlcmUuJiMzNDsgQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgYGJwZl9pb191bnJlZ2AgaXMgZGVjbGFyZWQgc3RhdGljLiBIbW0sIGlzIGl0IHBvdGVudGlhbGx5IGlubGluZWQ/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBpdCYjMzk7cyBhY3R1YWxseSBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHNvbWV3aGVyZS4gQWgsIHllcyEgVGhlcmUgaXQgaXMsIGAudW5yZWcgPSBicGZfaW9fdW5yZWdgIHdpdGhpbiBgYnBmX3N0cnVjdF9vcHNgLiBTbyBubywgaXQmIzM5O3Mgbm90IGJlaW5nIGlubGluZWQuIEFuZCBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCBpc24mIzM5O3Qgc3RhdGljLCBzbyB0aGF0IHNlZW1zIG1vcmUgbGlrZWx5LiBOb3csIGxldCBtZSBjaGVjayB0aGUgYGlvX2xvb3Bfd2FpdGAgZnVuY3Rpb24gbWVudGlvbmVkIGluIHRoYXQgY29tbWVudDsgaXQgY291bGQgcHJvdmlkZSBzb21lIHZhbHVhYmxlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX2xvb3Bfd2FpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9icGYtb3BzLmM9MjAxPXN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbi0tXG5pb191cmluZy9icGYtb3BzLmMtMjEzLVx0LypcbmlvX3VyaW5nL2JwZi1vcHMuYzoyMTQ6XHQgKiBBIGxvb3AgbWF5IGJlIHNsZWVwaW5nIGluIGlvX2xvb3Bfd2FpdCgpIHdpdGggLVx1MDAzZXVyaW5nX2xvY2tcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMTUtXHQgKiByZWxlYXNlZC4gSXQmIzM5O2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxuLS1cbmlvX3VyaW5nL2xvb3AuYz02PXN0YXRpYyBpbmxpbmUgaW50IGlvX2xvb3BfbnJfY3Flcyhjb25zdCBzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy9sb29wLmMtMTEtXG5pb191cmluZy9sb29wLmM6MTI6c3RhdGljIGlubGluZSB2b2lkIGlvX2xvb3Bfd2FpdF9zdGFydChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgbnJfd2FpdClcbmlvX3VyaW5nL2xvb3AuYy0xMy17XG4tLVxuaW9fdXJpbmcvbG9vcC5jLTE3LVxuaW9fdXJpbmcvbG9vcC5jOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpb19sb29wX3dhaXRfZmluaXNoKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxuaW9fdXJpbmcvbG9vcC5jLTE5LXtcbi0tXG5pb191cmluZy9sb29wLmMtMjMtXG5pb191cmluZy9sb29wLmM6MjQ6c3RhdGljIHZvaWQgaW9fbG9vcF93YWl0KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW91X2xvb3BfcGFyYW1zICpscCxcbmlvX3VyaW5nL2xvb3AuYy0yNS1cdFx0XHQgdW5zaWduZWQgbnJfd2FpdClcbmlvX3VyaW5nL2xvb3AuYy0yNi17XG5pb191cmluZy9sb29wLmM6Mjc6XHRpb19sb29wX3dhaXRfc3RhcnQoY3R4LCBucl93YWl0KTtcbmlvX3VyaW5nL2xvb3AuYy0yOC1cbi0tXG5pb191cmluZy9sb29wLmMtMzEtXHRcdCAgICAgUkVBRF9PTkNFKGN0eC1cdTAwM2VjaGVja19jcSkpIHtcbmlvX3VyaW5nL2xvb3AuYzozMjpcdFx0aW9fbG9vcF93YWl0X2ZpbmlzaChjdHgpO1xuaW9fdXJpbmcvbG9vcC5jLTMzLVx0XHRyZXR1cm47XG4tLVxuaW9fdXJpbmcvbG9vcC5jLTM3LVx0c2NoZWR1bGUoKTtcbmlvX3VyaW5nL2xvb3AuYzozODpcdGlvX2xvb3Bfd2FpdF9maW5pc2goY3R4KTtcbmlvX3VyaW5nL2xvb3AuYy0zOS1cdG11dGV4X2xvY2soXHUwMDI2Y3R4LVx1MDAzZXVyaW5nX2xvY2spO1xuLS1cbmlvX3VyaW5nL2xvb3AuYz00Mj1zdGF0aWMgaW50IF9faW9fcnVuX2xvb3Aoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG4tLVxuaW9fdXJpbmcvbG9vcC5jLTU5LVx0XHRpZiAobnJfd2FpdCBcdTAwM2UgMClcbmlvX3VyaW5nL2xvb3AuYzo2MDpcdFx0XHRpb19sb29wX3dhaXQoY3R4LCBcdTAwMjZscCwgbnJfd2FpdCk7XG5pb191cmluZy9sb29wLmMtNjEtXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA3NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgaW9fdXJpbmcgYW5kIEJQRiBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IHNwZWNpZmljIGJ1ZyDigJMgYSB0YXNrIGdldHMgc3R1Y2sgaW4gYGlvX2xvb3Bfd2FpdGAgaWYgQlBGIG9wZXJhdGlvbnMgYXJlIGVqZWN0ZWQuIFRoYXQgbWVhbnMgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIHdha2UtdXAgbWVjaGFuaXNtIG1pc3Npbmcgd2hlbiBCUEYgb3BlcmF0aW9ucyBhcmUgcmVtb3ZlZCwgYW5kIHRoZSBmaXggaXMgYSBzdHJhaWdodGZvcndhcmQgYHdha2VfdXBfc3RhdGVgIGNhbGwuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byBpb191cmluZyYjMzk7cyBiZWhhdmlvciwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gV2UgY2FuJiMzOTt0IGxldCB0aGlzIHNsaXAuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZSBCUEYgb3BlcmF0aW9ucyBhcmUgdW5yZWdpc3RlcmVkLiBJdCBsb29rcyBsaWtlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgLCBgYnBmX2lvX3VucmVnYCwgYW5kIGBpb19lamVjdF9icGZgIGFyZSB0aGUga2V5IHBsYXllcnMgaGVyZS4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgaW9fZWplY3RfYnBmYCBidXQgc2luY2UgaXQmIzM5O3Mgc3RhdGljLCBpdCBjb3VsZCBiZSBpbmxpbmVkLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYWxscyB0byBpdCwgZnJvbSBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AsIHRvIHZlcmlmeSB0aGlzLiBCYXNlZCBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBpdCYjMzk7cyBlYXNpZXIgdG8ganVzdCB1c2UgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYW5kIGBicGZfaW9fdW5yZWdgIGFzIG15IHByaW1hcnkgZnV6emluZyB0YXJnZXRzLgoKTmV4dCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgYXJlIGVuYWJsZWQgZm9yIGVmZmVjdGl2ZSB0ZXN0aW5nLiBJJiMzOTt2ZSBnb3QgYElPX1VSSU5HX0JQRl9PUFNgIGFzIHRoZSB0b3AgcHJpb3JpdHksIGJ1dCBob2xkIG9uIOKAkyBpdCYjMzk7cyBhIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gcXVpdGUgYSBmZXcgb3RoZXIgc2V0dGluZ3M6IGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgbmVlZCB0byBtYWtlIHN1cmUgKmFsbCogdGhvc2UgYXJlIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwcmVyZXF1aXNpdGU7IGdvdHRhIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIHNpbmNlIHRob3NlIHNldHRpbmdzIGFyZSBhIGJpdCBpbnRlcnR3aW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxODpcdGNvbmZpZyBJT19VUklOR19CUEZfT1BTXG4gIDE5Olx0XHRkZWZfYm9vbCB5XG4gIDIwOlx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4gIDIxOlx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBERUJVR19JTkZPX0JURlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTAyCgkJCQkJCQlvdXRwdXQ6IDE1OQoJCQkJCQkJdGhvdWdodHM6IDM0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgaW9fdXJpbmcgQlBGIE9wZXJhdGlvbnMgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZml4IGZvciBhIGZhaXJseSBjcml0aWNhbCBpb191cmluZyBCUEYgaW50ZXJhY3Rpb24uIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGVyZSYjMzk7cyBhIHByb2JsZW0gd2l0aCB0YXNrcyBpbiBgaW9fbG9vcF93YWl0YCBub3QgYmVpbmcgcHJvcGVybHkgYXdha2VuZWQgd2hlbiBCUEYgb3BlcmF0aW9ucyBhcmUgZWplY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIGxvZ2ljLCBhbmQgYW55IHRpbWUgd2UmIzM5O3JlIHRvdWNoaW5nIGNvcmUgbG9naWMsIGZ1enppbmcgaXMgaW1tZWRpYXRlbHkgb24gdGhlIHJhZGFyLgoKRmlyc3QsIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJIHNlZSB3ZSBuZWVkIGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgYElPX1VSSU5HX0JQRl9PUFNgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBgZGVmX2Jvb2wgeWAsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpc3RlZC4gWWVzLCB3ZSBoYXZlIGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAgbGlzdGVkLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbnRvIHRoZSBzeW1ib2xzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBpbnRlcmFjdGlvbiBwb2ludHMgYW5kIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSBgaW9fZWplY3RfYnBmYCBpcyBzdGF0aWMuIEFscmlnaHQsIGBicGZfaW9fdW5yZWdgIGlzIHN0YXRpYywgYnV0IGl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBicGZfc3RydWN0X29wc2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIG5vdGUuIEFuZCB0aGVuIHdlIGhhdmUgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AsIHdoaWNoIGlzICpub3QqIHN0YXRpYy4gSSYjMzk7bSBnb2luZyB0byBmbGFnIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIGFuZCBgYnBmX2lvX3VucmVnYCBhcyB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fdW5yZWdpc3Rlcl9icGZfb3BzJiMzNDssCiAgICAmIzM0O2JwZl9pb191bnJlZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJiMzOTt0IGJlIHdva2VuIHVwIHdoZW4gQlBGIG9wcyBhcmUgZWplY3RlZC4gSXQgYWRkcyBhIGB3YWtlX3VwX3N0YXRlYCBjYWxsIGluIGBpb19lamVjdF9icGZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb191bnJlZ2lzdGVyX2JwZl9vcHMmIzM0OywKICAgICYjMzQ7YnBmX2lvX3VucmVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGlvX3VyaW5nIEJQRiBvcGVyYXRpb25zIHdoZXJlIGEgdGFzayBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0YCB3b3VsZG4mIzM5O3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaW9fZWplY3RfYnBmYCBpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYCB0byB3YWtlIHVwIGEgc2xlZXBpbmcgdGFzayAoYGN0eC1cdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cdTAwM2Vsb29wX3N0ZXBgIGlzIHNldCB0byBOVUxMLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGhhbmcgd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kIHdvdWxkIG5vdCBiZSB3b2tlbiB1cCBvdGhlcndpc2UuIFRoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGFzayBzY2hlZHVsaW5nLCBzeW5jaHJvbml6YXRpb24sIGFuZCB3YWtpbmcgdXAgc2xlZXBpbmcgdGhyZWFkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlIGlmIGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgIGlzIGludmFsaWQpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDIxYWE4MzcxMTY2NmFmYmEyOWUxM2QzYjRiNmUxYTZmZWY3MGQzNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW9fdXJpbmcvYnBmLW9wcy5jIGIvaW9fdXJpbmcvYnBmLW9wcy5jCmluZGV4IDVhNTBmMDY3NWZlNTguLjg3MTQ4ZGJkM2IzZTAgMTAwNjQ0Ci0tLSBhL2lvX3VyaW5nL2JwZi1vcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy9icGYtb3BzLmMKQEAgLTIxMCw2ICYjNDM7MjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCkKIAlvcHMtJmd0O3ByaXYgPSBOVUxMOwogCWN0eC0mZ3Q7YnBmX29wcyA9IE5VTEw7CiAJY3R4LSZndDtsb29wX3N0ZXAgPSBOVUxMOwomIzQzOwkvKgomIzQzOwkgKiBBIGxvb3AgbWF5IGJlIHNsZWVwaW5nIGluIGlvX2xvb3Bfd2FpdCgpIHdpdGggLSZndDt1cmluZ19sb2NrCiYjNDM7CSAqIHJlbGVhc2VkLiBJdCYjMzk7bGwgc2VlIGxvb3Bfc3RlcCA9PSBOVUxMIGFmdGVyIHdha2luZyB1cCwgYnV0CiYjNDM7CSAqIG5vdGhpbmcgd2FrZXMgaXQgb3RoZXJ3aXNlLgomIzQzOwkgKi8KJiM0MzsJaWYgKGN0eC0mZ3Q7c3VibWl0dGVyX3Rhc2spCiYjNDM7CQl3YWtlX3VwX3N0YXRlKGN0eC0mZ3Q7c3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NgoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiA0OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaW9fdXJpbmcgQlBGIFBhdGNoKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYHdha2VfdXBfc3RhdGUoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaywgVEFTS19JTlRFUlJVUFRJQkxFKTtgIHdpdGhpbiBgaW9fZWplY3RfYnBmKClgLiBUaGlzIHNlZW1zIHRvIGFkZHJlc3MgYSBzcGVjaWZpYyBzY2VuYXJpbyBpbiBgaW9fdXJpbmdgIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCwgY3J1Y2lhbGx5LCBub3QgYmUgd29rZW4gdXAgd2hlbiBgY3R4LSZndDtsb29wX3N0ZXBgIGJlY29tZXMgTlVMTC4gVGhlIGNvbW1lbnQgaW4gdGhlIGNvZGUgc25pcHBldCBpcyBwcmV0dHkgY2xlYXIgYWJvdXQgdGhlIHNjZW5hcmlvLCBhIHNsZWVwaW5nIHRhc2sgd2l0aCB0aGUgdXJpbmcgbG9jayByZWxlYXNlZC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgdGFzayB3YWtldXAgaXNzdWUuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHRhc2sgc3RhdGVzLCB0aGUgc2xlZXBpbmcgcHJvY2VzcywgYW5kIHRoZSBtZWNoYW5pc20gZm9yIHdha2luZyBpdCB1cC4gVGhlcmUmIzM5O3Mgbm8gZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9uLCBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24gaW4gdGhlIGRhdGEgcGF0aCBoZXJlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHB1cmVseSBhYm91dCBlbnN1cmluZyB0aGUgc2NoZWR1bGVyIGRvZXMgaXRzIGpvYiBjb3JyZWN0bHkgaW4gYSBzcGVjaWZpYyBlZGdlIGNhc2Ugb2YgdGhlIGlvX3VyaW5nIGxvb3AuCgpUaGVyZWZvcmUsIHRoZSBsaWtlbGlob29kIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbCBpbmZvcm1hdGlvbiBsZWFrcyBpcyBlc3NlbnRpYWxseSB6ZXJvLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBub3QgZGVhbGluZyB3aXRoIGFueXRoaW5nIEtNU0FOIHdvdWxkIGNhdGNoIGRpcmVjdGx5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcm91bmQgbWVtb3J5IGNvcnJ1cHRpb24gaW4gdGhlIGNvbnRleHQgb2YgYGN0eC0mZ3Q7c3VibWl0dGVyX3Rhc2tgIHdvdWxkIGJlIGJldHRlciBoYW5kbGVkIGJ5IEtBU0FOLgoKU28sIHllYWgsIGdpdmVuIHRoYXQsIEkmIzM5O20gY29tZm9ydGFibGUgc3RhdGluZyB0aGF0IE5lZWRzS01TQU4gaXMgZmFsc2UgaGVyZS4gSXQmIzM5O3MgYSBzeW5jaHJvbml6YXRpb24gYW5kIHNjaGVkdWxpbmcgZml4LCBub3QgYSBtZW1vcnkgc2FmZXR5IG9uZSwgYXQgbGVhc3QgaW4gYW55IGRpcmVjdCBzZW5zZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQsIGZvY3VzZWQgYnVnIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGlvX2VqZWN0X2JwZmAgaW4gYGlvX3VyaW5nL2JwZi1vcHMuY2AgdG8gd2FrZSB1cCBhIHNsZWVwaW5nIHRhc2sgKGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgKSB3aGVuIGBjdHgtXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrYCBpcyBpbnZhbGlkKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaW9fZWplY3RfYnBmYCBpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYCB0byB3YWtlIHVwIGEgc2xlZXBpbmcgdGFzayAoYGN0eC1cdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cdTAwM2Vsb29wX3N0ZXBgIGlzIHNldCB0byBOVUxMLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGhhbmcgd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kIHdvdWxkIG5vdCBiZSB3b2tlbiB1cCBvdGhlcndpc2UuIFRoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGFzayBzY2hlZHVsaW5nLCBzeW5jaHJvbml6YXRpb24sIGFuZCB3YWtpbmcgdXAgc2xlZXBpbmcgdGhyZWFkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlIGlmIGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgIGlzIGludmFsaWQpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzg6NTIuNTgzNTMxMzM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5MjAwODQ2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX3VucmVnaXN0ZXJfYnBmX29wc1wiLFxuICAgIFwiYnBmX2lvX3VucmVnXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaW9fZWplY3RfYnBmYCBpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYCB0byB3YWtlIHVwIGEgc2xlZXBpbmcgdGFzayAoYGN0eC1cXHUwMDNlc3VibWl0dGVyX3Rhc2tgKSB3aGVuIGBjdHgtXFx1MDAzZWxvb3Bfc3RlcGAgaXMgc2V0IHRvIE5VTEwuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaGFuZyB3aGVyZSBhIHRhc2sgbWlnaHQgYmUgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdCgpYCBhbmQgd291bGQgbm90IGJlIHdva2VuIHVwIG90aGVyd2lzZS4gVGhpcyBjaGFuZ2UgaXMgcmVsYXRlZCB0byB0YXNrIHNjaGVkdWxpbmcsIHN5bmNocm9uaXphdGlvbiwgYW5kIHdha2luZyB1cCBzbGVlcGluZyB0aHJlYWRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgaWYgYGN0eC1cXHUwMDNlc3VibWl0dGVyX3Rhc2tgIGlzIGludmFsaWQpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzg6NTIuNTgzNTM2NDk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDAyMDU2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MjFhYTgzNzExNjY2YWZiYTI5ZTEzZDNiNGI2ZTFhNmZlZjcwZDM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL2JwZi1vcHMuYyBiL2lvX3VyaW5nL2JwZi1vcHMuY1xcbmluZGV4IDVhNTBmMDY3NWZlNTguLjg3MTQ4ZGJkM2IzZTAgMTAwNjQ0XFxuLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jXFxuKysrIGIvaW9fdXJpbmcvYnBmLW9wcy5jXFxuQEAgLTIxMCw2ICsyMTAsMTMgQEAgc3RhdGljIHZvaWQgaW9fZWplY3RfYnBmKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxcbiBcXHRvcHMtXFx1MDAzZXByaXYgPSBOVUxMO1xcbiBcXHRjdHgtXFx1MDAzZWJwZl9vcHMgPSBOVUxMO1xcbiBcXHRjdHgtXFx1MDAzZWxvb3Bfc3RlcCA9IE5VTEw7XFxuK1xcdC8qXFxuK1xcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXFx1MDAzZXVyaW5nX2xvY2tcXG4rXFx0ICogcmVsZWFzZWQuIEl0J2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxcbitcXHQgKiBub3RoaW5nIHdha2VzIGl0IG90aGVyd2lzZS5cXG4rXFx0ICovXFxuK1xcdGlmIChjdHgtXFx1MDAzZXN1Ym1pdHRlcl90YXNrKVxcbitcXHRcXHR3YWtlX3VwX3N0YXRlKGN0eC1cXHUwMDNlc3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozODo1Mi45ODQ0MDk4ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0OTc5ODI5NjY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fdW5yZWdpc3Rlcl9icGZfb3BzXCIsXG4gICAgXCJicGZfaW9fdW5yZWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDIxYWE4MzcxMTY2NmFmYmEyOWUxM2QzYjRiNmUxYTZmZWY3MGQzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvYnBmLW9wcy5jIGIvaW9fdXJpbmcvYnBmLW9wcy5jXG5pbmRleCA1YTUwZjA2NzVmZTU4Li44NzE0OGRiZDNiM2UwIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jXG4rKysgYi9pb191cmluZy9icGYtb3BzLmNcbkBAIC0yMTAsNiArMjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbiBcdG9wcy1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGN0eC1cdTAwM2VicGZfb3BzID0gTlVMTDtcbiBcdGN0eC1cdTAwM2Vsb29wX3N0ZXAgPSBOVUxMO1xuK1x0LypcbitcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXHUwMDNldXJpbmdfbG9ja1xuK1x0ICogcmVsZWFzZWQuIEl0J2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxuK1x0ICogbm90aGluZyB3YWtlcyBpdCBvdGhlcndpc2UuXG4rXHQgKi9cbitcdGlmIChjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2spXG4rXHRcdHdha2VfdXBfc3RhdGUoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrLCBUQVNLX0lOVEVSUlVQVElCTEUpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM4OjUyLjk4NDQxMzc2MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjI0OTIwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpb191cmluZy9icGYtb3BzLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBtYWtpbmcgYSBtb2RpZmljYXRpb24gdG8gYGlvX3VyaW5nL2JwZi1vcHMuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBhZGRlZCBgd2FrZV91cF9zdGF0ZShjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7YCB3aXRoaW4gdGhlIGBpb19lamVjdF9icGYoKWAgZnVuY3Rpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBoZXJlLiBXaGF0J3MgdGhlIHB1cnBvc2Ugb2Ygd2FraW5nIHVwIGEgdGFzayBpbiBhbiBpbnRlcnJ1cHRpYmxlIHN0YXRlIHdpdGhpbiBgaW9fZWplY3RfYnBmKClgPyBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYm90aCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXRzZWxmLCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgaW9fdXJpbmcgZnJhbWV3b3JrLiBXaGF0J3MgdGhlIHNwZWNpZmljIHNjZW5hcmlvIHRoYXQgdHJpZ2dlcnMgdGhpcyBlamVjdGlvbiwgYW5kIHdoeSBpcyB0aGlzIHdha2V1cCBuZWNlc3NhcnkgYXQgdGhpcyBwb2ludD8gSXMgdGhpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBvciBwZXJoYXBzIGEgc2lnbmFsaW5nIG1lY2hhbmlzbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW50cm9kdWNlZCwgYW5kIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gTGV0J3MgZ2V0IHRvIHdvcmsgYW5kIGZpbmQgc29tZSBhbnN3ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozODo1Ny4zNDY5MDgzMjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1NTA3OTE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19lamVjdF9icGZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvYnBmLW9wcy5jPTE4MD1zdGF0aWMgaW50IGJwZl9pb19yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMDAtXFxuaW9fdXJpbmcvYnBmLW9wcy5jOjIwMTpzdGF0aWMgdm9pZCBpb19lamVjdF9icGYoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTIwMi17XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmM9MjIyPXN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxcbi0tXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTIzMy1cXG5pb191cmluZy9icGYtb3BzLmM6MjM0OlxcdFxcdGlvX2VqZWN0X2JwZihjdHgpO1xcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMzUtXFx0fVxcbi0tXFxuaW9fdXJpbmcvYnBmLW9wcy5jPTIzOD12b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yNTItXFx0aWYgKGN0eC1cXHUwMDNlYnBmX29wcylcXG5pb191cmluZy9icGYtb3BzLmM6MjUzOlxcdFxcdGlvX2VqZWN0X2JwZihjdHgpO1xcbmlvX3VyaW5nL2JwZi1vcHMuYy0yNTQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozODo1OS4zMDE5OTI3NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc3MDM1Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaW9fdXJpbmcgQlBGIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGlvX2VqZWN0X2JwZmAgd2l0aGluIGBpb191cmluZy9icGYtb3BzLmNgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIGlvX3VyaW5nIHN1YnN5c3RlbSwgd2hpY2ggYWx3YXlzIHdhcnJhbnRzIGNsb3NlIHNjcnV0aW55LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgbG9jYXRlIHRoZSBjb25maWd1cmF0aW9uIGRldGFpbHMgYXNzb2NpYXRlZCB3aXRoIGBpb191cmluZy9icGYtb3BzLmNgLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgdGhlIHByb3BlciBjb250ZXh0IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MDIuMzc5MDMxMDc0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODMwMTE1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmLW9wcy5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL01ha2VmaWxlPTI3PW9iai0kKENPTkZJR19JT19VUklOR19CUEYpICs9IGJwZl9maWx0ZXIub1xcbmlvX3VyaW5nL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19JT19VUklOR19CUEZfT1BTKSArPSBicGYtb3BzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MDQuODYyMDQ3MzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MzA5Mzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBJT19VUklOR19CUEZfT1BTYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIHNlZSwgdGhlIGN1cnJlbnQgZm9jdXMgaXMgb24gYSBjb25maWd1cmF0aW9uIGl0ZW06IGBJT19VUklOR19CUEZfT1BTYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24ncyBkZXBlbmRlbmNpZXMsIGl0cyBkZWZhdWx0IHNldHRpbmcsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB3aGF0IGl0ICplbmFibGVzKiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaW9fdXJpbmcuIEtub3dpbmcgdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZSB3aWxsIGJlIGNyaXRpY2FsIOKAkyBpcyBpdCBhYm91dCBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGZlYXR1cmVzLCBvciBzb21lIGNvbWJpbmF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIG9mIGNoYW5nZXMsIHRvIGtub3cgd2hlcmUgdGhpcyBwYXJhbWV0ZXIgaW1wYWN0cyBwZXJmb3JtYW5jZSBvciBzZWN1cml0eTsgSSBrbm93IHRoZSBkYW5nZXJzIG9mIGxlYXZpbmcgYSBuZXcgZmVhdHVyZSBhY3RpdmUgd2l0aG91dCBhIHByb3BlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9uIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHkgSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzIHNldCwgdW5zZXQsIG9yIGRlZmF1bHRlZCB0byBhIGNlcnRhaW4gdmFsdWUuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IEtjb25maWcgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjA4LjMzNTE0MzI3OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM0MDY5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT19VUklOR19CUEZfT1BTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL0tjb25maWc9MTM9Y29uZmlnIElPX1VSSU5HX0JQRlxcbi0tXFxuaW9fdXJpbmcvS2NvbmZpZy0xNy1cXG5pb191cmluZy9LY29uZmlnOjE4OmNvbmZpZyBJT19VUklOR19CUEZfT1BTXFxuaW9fdXJpbmcvS2NvbmZpZy0xOS1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjEwLjI2OTIxNzU1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3OTkwNTM4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHBvaW50IHdoZXJlIHNvbWV0aGluZyBoaW5nZXMgb24gYSBzcGVjaWZpYyBjb25kaXRpb24uIE15IGd1dCByZWFjdGlvbiBpcyB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbi4gTGV0J3MgdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSBzb3VyY2U6IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGdvdmVybnMgdGhpcyBiZWhhdmlvcj8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUncyB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXI/IExldCdzIGNoZWNrIHRoZSBgaW9fdXJpbmcvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYywgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSB1bmRlcmx5aW5nIHJlYXNvbnMgYmVoaW5kIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHJlbGF0ZWQgdG8gYGlvX3VyaW5nYC5cIiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzM3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MTMuMDY4MjczNzcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImlvX3VyaW5nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgaW9fdXJpbmcgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSU9fVVJJTkdfWkNSWFxcbiAgIDc6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBORVRfUlhfQlVTWV9QT0xMXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBJT19VUklOR19CUEZcXG4gIDE0OlxcdFxcdGRlZl9ib29sIHlcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gQlBGXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbiAgMTk6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IERFQlVHX0lORk9fQlRGXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjEzLjA2ODM1OTUyMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk4Nzg1MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgaW9fdXJpbmcgQlBGIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgaXQgc2VlbXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBJT19VUklOR19CUEZfT1BTYCByZWxpZXMgcHJldHR5IGhlYXZpbHkgb24gc2V2ZXJhbCBvdGhlciBrZXJuZWwgZmVhdHVyZXM6IGBJT19VUklOR2AgaXRzZWxmLCBuYXR1cmFsbHksIGJ1dCBhbHNvIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgYXMgcG90ZW50aWFsIGRlcGVuZGVuY2llcyB3aGVuIEknbSByZXZpZXdpbmcgdGhpcy4gSSBzZWUgdGhhdCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXMgbWFya2VkIGBzdGF0aWNgLiBUaGF0J3MgYSBnb29kIGluaXRpYWwgaW5kaWNhdG9yOyBpdCBpbXBsaWVzIGl0J3MgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiB0aGlzIHNwZWNpZmljIG1vZHVsZS4gVGhlIGNvZGUgYWxzbyByZXZlYWxzIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AuIEdpdmVuIHRoaXMgYXJjaGl0ZWN0dXJlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXJseSB0byBkaXZlIGludG8gYGJwZl9pb191bnJlZ2AgYW5kIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIHRvIHVuZGVyc3RhbmQgaG93IGBpb19lamVjdF9icGZgIGlzIGJlaW5nIHV0aWxpemVkIGFuZCB3aGF0IGNvbnRleHQgaXQncyBvcGVyYXRpbmcgaW4uIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBpbnNpZ2h0cyBhcmUgbGlrZWx5IGhpZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjE2Ljk2NzE0NjY0MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4ODQxMTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW9fdW5yZWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvYnBmLW9wcy5jPTIwMT1zdGF0aWMgdm9pZCBpb19lamVjdF9icGYoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXFxuLS1cXG5pb191cmluZy9icGYtb3BzLmMtMjIxLVxcbmlvX3VyaW5nL2JwZi1vcHMuYzoyMjI6c3RhdGljIHZvaWQgYnBmX2lvX3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTIyMy17XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmM9MjU2PXN0YXRpYyBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX3Jpbmdfb3BzID0ge1xcbi0tXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTI1OC1cXHQucmVnID0gYnBmX2lvX3JlZyxcXG5pb191cmluZy9icGYtb3BzLmM6MjU5OlxcdC51bnJlZyA9IGJwZl9pb191bnJlZyxcXG5pb191cmluZy9icGYtb3BzLmMtMjYwLVxcdC5jaGVja19tZW1iZXIgPSBicGZfaW9fY2hlY2tfbWVtYmVyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozOToxOS4wNTU1NjM2NjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NzkwMDU5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgQlBGIElPIFVucmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBicGZfaW9fdW5yZWdgLi4uIGFoLCB5ZXMsIHRoYXQncyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYGJwZl9zdHJ1Y3Rfb3BzYCBzdHJ1Y3R1cmUuIFNvLCB0aGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIG1hY2hpbmVyeSB0aGF0IGhhbmRsZXMsIEknbSBhc3N1bWluZywgdGhlIHVucmVnaXN0cmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIEJQRiBhbmQgSU8uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYmVpbmcgY2FsbGVkPyBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFjdHVhbCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJdCBkaWN0YXRlcyB0aGUgY29udGV4dCwgdGhlIGNvbmRpdGlvbnMsIHRoZSByZWFzb25zICp3aHkqIHRoaXMgdW5yZWdpc3RyYXRpb24gd291bGQgYmUgaGFwcGVuaW5nLCBhbmQgZnJhbmtseSwgd2hhdCBpcyBldmVuIGJlaW5nIHVucmVnaXN0ZXJlZC4gV2l0aG91dCBrbm93aW5nIHdoZXJlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIGlzIGludm9rZWQsIEknbSBzdHVjayB3aXRoIGFuIGluY29tcGxldGUgcGljdHVyZS4gSSBuZWVkIHRoYXQgY2FsbCBncmFwaCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhpcyBJTyB1bnJlZ2lzdHJhdGlvbiBmbG93IHJlbGF0ZWQgdG8gQlBGLiBMZXQncyBzZWUgaWYgSSBjYW4gZmluZCB0aGF0IGNhbGwgY2hhaW7igKZcblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjIyLjUzMzQ2Njg1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMjc2MTc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb191bnJlZ2lzdGVyX2JwZl9vcHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvYnBmLW9wcy5jPTIyMj1zdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMzctXFxuaW9fdXJpbmcvYnBmLW9wcy5jOjIzODp2b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9icGYtb3BzLmMtMjM5LXtcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmgtMjAtI2lmZGVmIENPTkZJR19JT19VUklOR19CUEZfT1BTXFxuaW9fdXJpbmcvYnBmLW9wcy5oOjIxOnZvaWQgaW9fdW5yZWdpc3Rlcl9icGZfb3BzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KTtcXG5pb191cmluZy9icGYtb3BzLmgtMjItI2Vsc2VcXG5pb191cmluZy9icGYtb3BzLmg6MjM6c3RhdGljIGlubGluZSB2b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9icGYtb3BzLmgtMjQte1xcbi0tXFxuaW9fdXJpbmcvaW9fdXJpbmcuYz0yMTYzPXN0YXRpYyBfX2NvbGQgdm9pZCBpb19yaW5nX2N0eF9mcmVlKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2NC17XFxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMTY1OlxcdGlvX3VucmVnaXN0ZXJfYnBmX29wcyhjdHgpO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2Ni1cXHRpb19zcV90aHJlYWRfZmluaXNoKGN0eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjI0LjQ1NjIzNDY5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ2Njk1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgT3BlcmF0aW9ucyBpbiBpb191cmluZyBDb250ZXh0KipcblxuT2theSwgc28gYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgZ2V0cyBjYWxsZWQgZnJvbSBgaW9fcmluZ19jdHhfZnJlZWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIFwiQWxyaWdodCwgbGV0J3MgbG9vayBhdCBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYXMgdGhlIGtleSBwbGF5ZXJzIGhlcmUuXCIgQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgYGJwZl9pb191bnJlZ2AgaXMgZGVjbGFyZWQgc3RhdGljLiBIbW0sIGlzIGl0IHBvdGVudGlhbGx5IGlubGluZWQ/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBpdCdzIGFjdHVhbGx5IHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgc29tZXdoZXJlLiBBaCwgeWVzISBUaGVyZSBpdCBpcywgYC51bnJlZyA9IGJwZl9pb191bnJlZ2Agd2l0aGluIGBicGZfc3RydWN0X29wc2AuIFNvIG5vLCBpdCdzIG5vdCBiZWluZyBpbmxpbmVkLiBBbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgaXNuJ3Qgc3RhdGljLCBzbyB0aGF0IHNlZW1zIG1vcmUgbGlrZWx5LiBOb3csIGxldCBtZSBjaGVjayB0aGUgYGlvX2xvb3Bfd2FpdGAgZnVuY3Rpb24gbWVudGlvbmVkIGluIHRoYXQgY29tbWVudDsgaXQgY291bGQgcHJvdmlkZSBzb21lIHZhbHVhYmxlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNTIsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MjguNjAyOTMyNjY5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg5MTQxODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX2xvb3Bfd2FpdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9icGYtb3BzLmM9MjAxPXN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMTMtXFx0LypcXG5pb191cmluZy9icGYtb3BzLmM6MjE0OlxcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXFx1MDAzZXVyaW5nX2xvY2tcXG5pb191cmluZy9icGYtb3BzLmMtMjE1LVxcdCAqIHJlbGVhc2VkLiBJdCdsbCBzZWUgbG9vcF9zdGVwID09IE5VTEwgYWZ0ZXIgd2FraW5nIHVwLCBidXRcXG4tLVxcbmlvX3VyaW5nL2xvb3AuYz02PXN0YXRpYyBpbmxpbmUgaW50IGlvX2xvb3BfbnJfY3Flcyhjb25zdCBzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL2xvb3AuYy0xMS1cXG5pb191cmluZy9sb29wLmM6MTI6c3RhdGljIGlubGluZSB2b2lkIGlvX2xvb3Bfd2FpdF9zdGFydChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgbnJfd2FpdClcXG5pb191cmluZy9sb29wLmMtMTMte1xcbi0tXFxuaW9fdXJpbmcvbG9vcC5jLTE3LVxcbmlvX3VyaW5nL2xvb3AuYzoxODpzdGF0aWMgaW5saW5lIHZvaWQgaW9fbG9vcF93YWl0X2ZpbmlzaChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9sb29wLmMtMTkte1xcbi0tXFxuaW9fdXJpbmcvbG9vcC5jLTIzLVxcbmlvX3VyaW5nL2xvb3AuYzoyNDpzdGF0aWMgdm9pZCBpb19sb29wX3dhaXQoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb3VfbG9vcF9wYXJhbXMgKmxwLFxcbmlvX3VyaW5nL2xvb3AuYy0yNS1cXHRcXHRcXHQgdW5zaWduZWQgbnJfd2FpdClcXG5pb191cmluZy9sb29wLmMtMjYte1xcbmlvX3VyaW5nL2xvb3AuYzoyNzpcXHRpb19sb29wX3dhaXRfc3RhcnQoY3R4LCBucl93YWl0KTtcXG5pb191cmluZy9sb29wLmMtMjgtXFxuLS1cXG5pb191cmluZy9sb29wLmMtMzEtXFx0XFx0ICAgICBSRUFEX09OQ0UoY3R4LVxcdTAwM2VjaGVja19jcSkpIHtcXG5pb191cmluZy9sb29wLmM6MzI6XFx0XFx0aW9fbG9vcF93YWl0X2ZpbmlzaChjdHgpO1xcbmlvX3VyaW5nL2xvb3AuYy0zMy1cXHRcXHRyZXR1cm47XFxuLS1cXG5pb191cmluZy9sb29wLmMtMzctXFx0c2NoZWR1bGUoKTtcXG5pb191cmluZy9sb29wLmM6Mzg6XFx0aW9fbG9vcF93YWl0X2ZpbmlzaChjdHgpO1xcbmlvX3VyaW5nL2xvb3AuYy0zOS1cXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZXVyaW5nX2xvY2spO1xcbi0tXFxuaW9fdXJpbmcvbG9vcC5jPTQyPXN0YXRpYyBpbnQgX19pb19ydW5fbG9vcChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2xvb3AuYy01OS1cXHRcXHRpZiAobnJfd2FpdCBcXHUwMDNlIDApXFxuaW9fdXJpbmcvbG9vcC5jOjYwOlxcdFxcdFxcdGlvX2xvb3Bfd2FpdChjdHgsIFxcdTAwMjZscCwgbnJfd2FpdCk7XFxuaW9fdXJpbmcvbG9vcC5jLTYxLVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MzAuNDkyMDgwMDNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3OTcwMTcyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgaW9fdXJpbmcgYW5kIEJQRiBJbnRlcmFjdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgc3BlY2lmaWMgYnVnIOKAkyBhIHRhc2sgZ2V0cyBzdHVjayBpbiBgaW9fbG9vcF93YWl0YCBpZiBCUEYgb3BlcmF0aW9ucyBhcmUgZWplY3RlZC4gVGhhdCBtZWFucyB0aGVyZSdzIHNvbWUga2luZCBvZiB3YWtlLXVwIG1lY2hhbmlzbSBtaXNzaW5nIHdoZW4gQlBGIG9wZXJhdGlvbnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUgZml4IGlzIGEgc3RyYWlnaHRmb3J3YXJkIGB3YWtlX3VwX3N0YXRlYCBjYWxsLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gaW9fdXJpbmcncyBiZWhhdmlvciwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gV2UgY2FuJ3QgbGV0IHRoaXMgc2xpcC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZSBCUEYgb3BlcmF0aW9ucyBhcmUgdW5yZWdpc3RlcmVkLiBJdCBsb29rcyBsaWtlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgLCBgYnBmX2lvX3VucmVnYCwgYW5kIGBpb19lamVjdF9icGZgIGFyZSB0aGUga2V5IHBsYXllcnMgaGVyZS4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgaW9fZWplY3RfYnBmYCBidXQgc2luY2UgaXQncyBzdGF0aWMsIGl0IGNvdWxkIGJlIGlubGluZWQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbHMgdG8gaXQsIGZyb20gYGJwZl9pb191bnJlZ2AgYW5kIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgLCB0byB2ZXJpZnkgdGhpcy4gQmFzZWQgb24gdGhvc2UgdHdvIGZ1bmN0aW9ucywgaXQncyBlYXNpZXIgdG8ganVzdCB1c2UgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYW5kIGBicGZfaW9fdW5yZWdgIGFzIG15IHByaW1hcnkgZnV6emluZyB0YXJnZXRzLlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcuIEkndmUgZ290IGBJT19VUklOR19CUEZfT1BTYCBhcyB0aGUgdG9wIHByaW9yaXR5LCBidXQgaG9sZCBvbiDigJMgaXQncyBhIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gcXVpdGUgYSBmZXcgb3RoZXIgc2V0dGluZ3M6IGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgbmVlZCB0byBtYWtlIHN1cmUgKmFsbCogdGhvc2UgYXJlIGVuYWJsZWQuIFRoYXQncyBhIGNyaXRpY2FsIHByZXJlcXVpc2l0ZTsgZ290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgc2luY2UgdGhvc2Ugc2V0dGluZ3MgYXJlIGEgYml0IGludGVydHdpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDc0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjM2Ljc3MTc4NTc4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImlvX3VyaW5nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTg6XFx0Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcXG4gIDE5OlxcdFxcdGRlZl9ib29sIHlcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gSU9fVVJJTkdcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBERUJVR19JTkZPX0JURlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozOTozNi43NzE4NDg1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTMwODk3NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBpb191cmluZyBCUEYgT3BlcmF0aW9ucyBQYXRjaCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgZml4IGZvciBhIGZhaXJseSBjcml0aWNhbCBpb191cmluZyBCUEYgaW50ZXJhY3Rpb24uIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHRhc2tzIGluIGBpb19sb29wX3dhaXRgIG5vdCBiZWluZyBwcm9wZXJseSBhd2FrZW5lZCB3aGVuIEJQRiBvcGVyYXRpb25zIGFyZSBlamVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgbG9naWMsIGFuZCBhbnkgdGltZSB3ZSdyZSB0b3VjaGluZyBjb3JlIGxvZ2ljLCBmdXp6aW5nIGlzIGltbWVkaWF0ZWx5IG9uIHRoZSByYWRhci5cblxuRmlyc3QsIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEkgc2VlIHdlIG5lZWQgYElPX1VSSU5HYCwgYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYERFQlVHX0lORk9fQlRGYC4gSSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgSU9fVVJJTkdfQlBGX09QU2AgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXRzIGBkZWZfYm9vbCB5YCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIE5vdywgbGV0J3MgbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBsaXN0ZWQuIFllcywgd2UgaGF2ZSBgSU9fVVJJTkdgLCBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgREVCVUdfSU5GT19CVEZgIGxpc3RlZC5cblxuTm93LCBsZXQncyBtb3ZlIG9udG8gdGhlIHN5bWJvbHMuIEknbSBmb2N1c2luZyBvbiB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGFuZCBjcml0aWNhbCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgYGlvX2VqZWN0X2JwZmAgaXMgc3RhdGljLiBBbHJpZ2h0LCBgYnBmX2lvX3VucmVnYCBpcyBzdGF0aWMsIGJ1dCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBicGZfc3RydWN0X29wc2AuIFRoYXQncyBpbXBvcnRhbnQgdG8gbm90ZS4gQW5kIHRoZW4gd2UgaGF2ZSBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCwgd2hpY2ggaXMgKm5vdCogc3RhdGljLiBJJ20gZ29pbmcgdG8gZmxhZyBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCBhbmQgYGJwZl9pb191bnJlZ2AgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFuZCB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTAyLCJPdXRwdXRUb2tlbnMiOjE1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjQyLjcwMjc1NDYwN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5OTQ3OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fdW5yZWdpc3Rlcl9icGZfb3BzXCIsXG4gICAgXCJicGZfaW9fdW5yZWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fdW5yZWdpc3Rlcl9icGZfb3BzXCIsXG4gICAgXCJicGZfaW9fdW5yZWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6NDIuNzgyNzExMzg5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcyMDg5NDY0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjQyLjc4MzM1OTI5OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODcyMDI0MzI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGlvX2VqZWN0X2JwZmAgaW4gYGlvX3VyaW5nL2JwZi1vcHMuY2AgdG8gd2FrZSB1cCBhIHNsZWVwaW5nIHRhc2sgKGBjdHgtXFx1MDAzZXN1Ym1pdHRlcl90YXNrYCkgd2hlbiBgY3R4LVxcdTAwM2Vsb29wX3N0ZXBgIGlzIHNldCB0byBOVUxMLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGhhbmcgd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kIHdvdWxkIG5vdCBiZSB3b2tlbiB1cCBvdGhlcndpc2UuIFRoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGFzayBzY2hlZHVsaW5nLCBzeW5jaHJvbml6YXRpb24sIGFuZCB3YWtpbmcgdXAgc2xlZXBpbmcgdGhyZWFkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlIGlmIGBjdHgtXFx1MDAzZXN1Ym1pdHRlcl90YXNrYCBpcyBpbnZhbGlkKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDIxYWE4MzcxMTY2NmFmYmEyOWUxM2QzYjRiNmUxYTZmZWY3MGQzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvYnBmLW9wcy5jIGIvaW9fdXJpbmcvYnBmLW9wcy5jXG5pbmRleCA1YTUwZjA2NzVmZTU4Li44NzE0OGRiZDNiM2UwIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jXG4rKysgYi9pb191cmluZy9icGYtb3BzLmNcbkBAIC0yMTAsNiArMjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbiBcdG9wcy1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGN0eC1cdTAwM2VicGZfb3BzID0gTlVMTDtcbiBcdGN0eC1cdTAwM2Vsb29wX3N0ZXAgPSBOVUxMO1xuK1x0LypcbitcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXHUwMDNldXJpbmdfbG9ja1xuK1x0ICogcmVsZWFzZWQuIEl0J2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxuK1x0ICogbm90aGluZyB3YWtlcyBpdCBvdGhlcndpc2UuXG4rXHQgKi9cbitcdGlmIChjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2spXG4rXHRcdHdha2VfdXBfc3RhdGUoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrLCBUQVNLX0lOVEVSUlVQVElCTEUpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjQyLjc4MzM2MDExOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODcyMDIyMzAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpb191cmluZyBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYHdha2VfdXBfc3RhdGUoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrLCBUQVNLX0lOVEVSUlVQVElCTEUpO2Agd2l0aGluIGBpb19lamVjdF9icGYoKWAuIFRoaXMgc2VlbXMgdG8gYWRkcmVzcyBhIHNwZWNpZmljIHNjZW5hcmlvIGluIGBpb191cmluZ2Agd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kLCBjcnVjaWFsbHksIG5vdCBiZSB3b2tlbiB1cCB3aGVuIGBjdHgtXHUwMDNlbG9vcF9zdGVwYCBiZWNvbWVzIE5VTEwuIFRoZSBjb21tZW50IGluIHRoZSBjb2RlIHNuaXBwZXQgaXMgcHJldHR5IGNsZWFyIGFib3V0IHRoZSBzY2VuYXJpbywgYSBzbGVlcGluZyB0YXNrIHdpdGggdGhlIHVyaW5nIGxvY2sgcmVsZWFzZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgdGFzayB3YWtldXAgaXNzdWUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgdGFzayBzdGF0ZXMsIHRoZSBzbGVlcGluZyBwcm9jZXNzLCBhbmQgdGhlIG1lY2hhbmlzbSBmb3Igd2FraW5nIGl0IHVwLiBUaGVyZSdzIG5vIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbiwgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGluIHRoZSBkYXRhIHBhdGggaGVyZS4gSXQgbG9va3MgbGlrZSBpdCdzIHB1cmVseSBhYm91dCBlbnN1cmluZyB0aGUgc2NoZWR1bGVyIGRvZXMgaXRzIGpvYiBjb3JyZWN0bHkgaW4gYSBzcGVjaWZpYyBlZGdlIGNhc2Ugb2YgdGhlIGlvX3VyaW5nIGxvb3AuXG5cblRoZXJlZm9yZSwgdGhlIGxpa2VsaWhvb2Qgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsIGluZm9ybWF0aW9uIGxlYWtzIGlzIGVzc2VudGlhbGx5IHplcm8uIFRoaXMgbWVhbnMgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBhbnl0aGluZyBLTVNBTiB3b3VsZCBjYXRjaCBkaXJlY3RseS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIG1lbW9yeSBjb3JydXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgIHdvdWxkIGJlIGJldHRlciBoYW5kbGVkIGJ5IEtBU0FOLlxuXG5TbywgeWVhaCwgZ2l2ZW4gdGhhdCwgSSdtIGNvbWZvcnRhYmxlIHN0YXRpbmcgdGhhdCBOZWVkc0tNU0FOIGlzIGZhbHNlIGhlcmUuIEl0J3MgYSBzeW5jaHJvbml6YXRpb24gYW5kIHNjaGVkdWxpbmcgZml4LCBub3QgYSBtZW1vcnkgc2FmZXR5IG9uZSwgYXQgbGVhc3QgaW4gYW55IGRpcmVjdCBzZW5zZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQsIGZvY3VzZWQgYnVnIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NiwiT3V0cHV0VG9rZW5zIjoyMDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzo0MDowMS41MDM1ODYzMDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpb19lamVjdF9icGZgIGluIGBpb191cmluZy9icGYtb3BzLmNgIHRvIHdha2UgdXAgYSBzbGVlcGluZyB0YXNrIChgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2AgaXMgaW52YWxpZCkgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpb19lamVjdF9icGZgIGluIGBpb191cmluZy9icGYtb3BzLmNgIHRvIHdha2UgdXAgYSBzbGVlcGluZyB0YXNrIChgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2AgaXMgaW52YWxpZCkgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow25d29[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 03:19:37 +0000 UTC FinishedAt: 2026-08-14 03:40:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "series_id": "26d3726c-1082-43d6-98ff-ccba7db4d044" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "io_uring" ], "focus_symbols": [ "io_unregister_bpf_ops", "bpf_io_unreg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb191bnJlZ2lzdGVyX2JwZl9vcHMmIzM0OywKICAgICYjMzQ7YnBmX2lvX3VucmVnJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGlvX2VqZWN0X2JwZmAgaW4gYGlvX3VyaW5nL2JwZi1vcHMuY2AgdG8gd2FrZSB1cCBhIHNsZWVwaW5nIHRhc2sgKGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgKSB3aGVuIGBjdHgtXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrYCBpcyBpbnZhbGlkKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGlvX3VyaW5nIEJQRiBvcGVyYXRpb25zIHdoZXJlIGEgdGFzayBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0YCB3b3VsZG4mIzM5O3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQyMWFhODM3MTE2NjZhZmJhMjllMTNkM2I0YjZlMWE2ZmVmNzBkMzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzozODo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pb191cmluZy9icGYtb3BzLmMgYi9pb191cmluZy9icGYtb3BzLmNcbmluZGV4IDVhNTBmMDY3NWZlNTguLjg3MTQ4ZGJkM2IzZTAgMTAwNjQ0XG4tLS0gYS9pb191cmluZy9icGYtb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2lvX3VyaW5nL2JwZi1vcHMuY1xuQEAgLTIxMCw2ICYjNDM7MjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbiBcdG9wcy1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGN0eC1cdTAwM2VicGZfb3BzID0gTlVMTDtcbiBcdGN0eC1cdTAwM2Vsb29wX3N0ZXAgPSBOVUxMO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQSBsb29wIG1heSBiZSBzbGVlcGluZyBpbiBpb19sb29wX3dhaXQoKSB3aXRoIC1cdTAwM2V1cmluZ19sb2NrXG4mIzQzO1x0ICogcmVsZWFzZWQuIEl0JiMzOTtsbCBzZWUgbG9vcF9zdGVwID09IE5VTEwgYWZ0ZXIgd2FraW5nIHVwLCBidXRcbiYjNDM7XHQgKiBub3RoaW5nIHdha2VzIGl0IG90aGVyd2lzZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrKVxuJiM0MztcdFx0d2FrZV91cF9zdGF0ZShjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fdW5yZWdpc3Rlcl9icGZfb3BzJiMzNDssCiAgICAmIzM0O2JwZl9pb191bnJlZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJiMzOTt0IGJlIHdva2VuIHVwIHdoZW4gQlBGIG9wcyBhcmUgZWplY3RlZC4gSXQgYWRkcyBhIGB3YWtlX3VwX3N0YXRlYCBjYWxsIGluIGBpb19lamVjdF9icGZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MjFhYTgzNzExNjY2YWZiYTI5ZTEzZDNiNGI2ZTFhNmZlZjcwZDM2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDM6Mzg6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pb191cmluZy9icGYtb3BzLmMgYi9pb191cmluZy9icGYtb3BzLmMKaW5kZXggNWE1MGYwNjc1ZmU1OC4uODcxNDhkYmQzYjNlMCAxMDA2NDQKLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2lvX3VyaW5nL2JwZi1vcHMuYwpAQCAtMjEwLDYgJiM0MzsyMTAsMTMgQEAgc3RhdGljIHZvaWQgaW9fZWplY3RfYnBmKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KQogCW9wcy0mZ3Q7cHJpdiA9IE5VTEw7CiAJY3R4LSZndDticGZfb3BzID0gTlVMTDsKIAljdHgtJmd0O2xvb3Bfc3RlcCA9IE5VTEw7CiYjNDM7CS8qCiYjNDM7CSAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtJmd0O3VyaW5nX2xvY2sKJiM0MzsJICogcmVsZWFzZWQuIEl0JiMzOTtsbCBzZWUgbG9vcF9zdGVwID09IE5VTEwgYWZ0ZXIgd2FraW5nIHVwLCBidXQKJiM0MzsJICogbm90aGluZyB3YWtlcyBpdCBvdGhlcndpc2UuCiYjNDM7CSAqLwomIzQzOwlpZiAoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaykKJiM0MzsJCXdha2VfdXBfc3RhdGUoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaywgVEFTS19JTlRFUlJVUFRJQkxFKTsKIH0KIAogc3RhdGljIHZvaWQgYnBmX2lvX3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGlvX3VyaW5nL2JwZi1vcHMuYyBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgYSBtb2RpZmljYXRpb24gdG8gYGlvX3VyaW5nL2JwZi1vcHMuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgYWRkZWQgYHdha2VfdXBfc3RhdGUoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaywgVEFTS19JTlRFUlJVUFRJQkxFKTtgIHdpdGhpbiB0aGUgYGlvX2VqZWN0X2JwZigpYCBmdW5jdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGhlcmUuIFdoYXQmIzM5O3MgdGhlIHB1cnBvc2Ugb2Ygd2FraW5nIHVwIGEgdGFzayBpbiBhbiBpbnRlcnJ1cHRpYmxlIHN0YXRlIHdpdGhpbiBgaW9fZWplY3RfYnBmKClgPyBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYm90aCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXRzZWxmLCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgaW9fdXJpbmcgZnJhbWV3b3JrLiBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyB0aGF0IHRyaWdnZXJzIHRoaXMgZWplY3Rpb24sIGFuZCB3aHkgaXMgdGhpcyB3YWtldXAgbmVjZXNzYXJ5IGF0IHRoaXMgcG9pbnQ/IElzIHRoaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgb3IgcGVyaGFwcyBhIHNpZ25hbGluZyBtZWNoYW5pc20/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludHJvZHVjZWQsIGFuZCB0aGUgaW50ZW5kZWQgYmVoYXZpb3IuIExldCYjMzk7cyBnZXQgdG8gd29yayBhbmQgZmluZCBzb21lIGFuc3dlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fZWplY3RfYnBmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL2JwZi1vcHMuYz0xODA9c3RhdGljIGludCBicGZfaW9fcmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jLTIwMC1cbmlvX3VyaW5nL2JwZi1vcHMuYzoyMDE6c3RhdGljIHZvaWQgaW9fZWplY3RfYnBmKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxuaW9fdXJpbmcvYnBmLW9wcy5jLTIwMi17XG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jPTIyMj1zdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbi0tXG5pb191cmluZy9icGYtb3BzLmMtMjMzLVxuaW9fdXJpbmcvYnBmLW9wcy5jOjIzNDpcdFx0aW9fZWplY3RfYnBmKGN0eCk7XG5pb191cmluZy9icGYtb3BzLmMtMjM1LVx0fVxuLS1cbmlvX3VyaW5nL2JwZi1vcHMuYz0yMzg9dm9pZCBpb191bnJlZ2lzdGVyX2JwZl9vcHMoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jLTI1Mi1cdGlmIChjdHgtXHUwMDNlYnBmX29wcylcbmlvX3VyaW5nL2JwZi1vcHMuYzoyNTM6XHRcdGlvX2VqZWN0X2JwZihjdHgpO1xuaW9fdXJpbmcvYnBmLW9wcy5jLTI1NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaW9fdXJpbmcgQlBGIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBpb19lamVjdF9icGZgIHdpdGhpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBpb191cmluZyBzdWJzeXN0ZW0sIHdoaWNoIGFsd2F5cyB3YXJyYW50cyBjbG9zZSBzY3J1dGlueS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBkZXRhaWxzIGFzc29jaWF0ZWQgd2l0aCBgaW9fdXJpbmcvYnBmLW9wcy5jYC4gVW5kZXJzdGFuZGluZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgd2lsbCBnaXZlIG1lIHRoZSBwcm9wZXIgY29udGV4dCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGYtb3BzLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX0lPX1VSSU5HX0JQRikgJiM0Mzs9IGJwZl9maWx0ZXIub1xuaW9fdXJpbmcvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0lPX1VSSU5HX0JQRl9PUFMpICYjNDM7PSBicGYtb3BzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTkzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIGBJT19VUklOR19CUEZfT1BTYCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB0aGUgY3VycmVudCBmb2N1cyBpcyBvbiBhIGNvbmZpZ3VyYXRpb24gaXRlbTogYElPX1VSSU5HX0JQRl9PUFNgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiYjMzk7cyBkZXBlbmRlbmNpZXMsIGl0cyBkZWZhdWx0IHNldHRpbmcsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB3aGF0IGl0ICplbmFibGVzKiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaW9fdXJpbmcuIEtub3dpbmcgdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZSB3aWxsIGJlIGNyaXRpY2FsIOKAkyBpcyBpdCBhYm91dCBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGZlYXR1cmVzLCBvciBzb21lIGNvbWJpbmF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIG9mIGNoYW5nZXMsIHRvIGtub3cgd2hlcmUgdGhpcyBwYXJhbWV0ZXIgaW1wYWN0cyBwZXJmb3JtYW5jZSBvciBzZWN1cml0eTsgSSBrbm93IHRoZSBkYW5nZXJzIG9mIGxlYXZpbmcgYSBuZXcgZmVhdHVyZSBhY3RpdmUgd2l0aG91dCBhIHByb3BlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9uIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHkgSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzIHNldCwgdW5zZXQsIG9yIGRlZmF1bHRlZCB0byBhIGNlcnRhaW4gdmFsdWUuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IEtjb25maWcgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9fVVJJTkdfQlBGX09QUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnPTEzPWNvbmZpZyBJT19VUklOR19CUEZcbi0tXG5pb191cmluZy9LY29uZmlnLTE3LVxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvS2NvbmZpZy0xOS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIGhpdHRpbmcgYSBwb2ludCB3aGVyZSBzb21ldGhpbmcgaGluZ2VzIG9uIGEgc3BlY2lmaWMgY29uZGl0aW9uLiBNeSBndXQgcmVhY3Rpb24gaXMgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZTogd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb24gZ292ZXJucyB0aGlzIGJlaGF2aW9yPyBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXI/IExldCYjMzk7cyBjaGVjayB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIHVuZGVybHlpbmcgcmVhc29ucyBiZWhpbmQgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgcmVsYXRlZCB0byBgaW9fdXJpbmdgLiYjMzQ7IFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2lvX3VyaW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBpb191cmluZyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBJT19VUklOR19aQ1JYXG4gICA3Olx0XHRkZWZfYm9vbCB5XG4gICA4Olx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4gICA5Olx0XHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxuICAxMDpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDExOlx0XHRkZXBlbmRzIG9uIE5FVF9SWF9CVVNZX1BPTExcbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgSU9fVVJJTkdfQlBGXG4gIDE0Olx0XHRkZWZfYm9vbCB5XG4gIDE1Olx0XHRkZXBlbmRzIG9uIEJQRlxuICAxNjpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuICAxOTpcdFx0ZGVmX2Jvb2wgeVxuICAyMDpcdFx0ZGVwZW5kcyBvbiBJT19VUklOR1xuICAyMTpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgREVCVUdfSU5GT19CVEZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGlvX3VyaW5nIEJQRiBPcGVyYXRpb25zKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCBzZWVtcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYElPX1VSSU5HX0JQRl9PUFNgIHJlbGllcyBwcmV0dHkgaGVhdmlseSBvbiBzZXZlcmFsIG90aGVyIGtlcm5lbCBmZWF0dXJlczogYElPX1VSSU5HYCBpdHNlbGYsIG5hdHVyYWxseSwgYnV0IGFsc28gYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYERFQlVHX0lORk9fQlRGYC4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZCBhcyBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIHdoZW4gSSYjMzk7bSByZXZpZXdpbmcgdGhpcy4gSSBzZWUgdGhhdCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXMgbWFya2VkIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEgZ29vZCBpbml0aWFsIGluZGljYXRvcjsgaXQgaW1wbGllcyBpdCYjMzk7cyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgd2l0aGluIHRoaXMgc3BlY2lmaWMgbW9kdWxlLiBUaGUgY29kZSBhbHNvIHJldmVhbHMgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AuIEdpdmVuIHRoaXMgYXJjaGl0ZWN0dXJlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXJseSB0byBkaXZlIGludG8gYGJwZl9pb191bnJlZ2AgYW5kIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIHRvIHVuZGVyc3RhbmQgaG93IGBpb19lamVjdF9icGZgIGlzIGJlaW5nIHV0aWxpemVkIGFuZCB3aGF0IGNvbnRleHQgaXQmIzM5O3Mgb3BlcmF0aW5nIGluLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGluc2lnaHRzIGFyZSBsaWtlbHkgaGlkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW9fdW5yZWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvYnBmLW9wcy5jPTIwMT1zdGF0aWMgdm9pZCBpb19lamVjdF9icGYoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5jLTIyMS1cbmlvX3VyaW5nL2JwZi1vcHMuYzoyMjI6c3RhdGljIHZvaWQgYnBmX2lvX3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG5pb191cmluZy9icGYtb3BzLmMtMjIzLXtcbi0tXG5pb191cmluZy9icGYtb3BzLmM9MjU2PXN0YXRpYyBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX3Jpbmdfb3BzID0ge1xuLS1cbmlvX3VyaW5nL2JwZi1vcHMuYy0yNTgtXHQucmVnID0gYnBmX2lvX3JlZyxcbmlvX3VyaW5nL2JwZi1vcHMuYzoyNTk6XHQudW5yZWcgPSBicGZfaW9fdW5yZWcsXG5pb191cmluZy9icGYtb3BzLmMtMjYwLVx0LmNoZWNrX21lbWJlciA9IGJwZl9pb19jaGVja19tZW1iZXIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBCUEYgSU8gVW5yZWdpc3RyYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgYnBmX2lvX3VucmVnYC4uLiBhaCwgeWVzLCB0aGF0JiMzOTtzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBgYnBmX3N0cnVjdF9vcHNgIHN0cnVjdHVyZS4gU28sIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgbWFjaGluZXJ5IHRoYXQgaGFuZGxlcywgSSYjMzk7bSBhc3N1bWluZywgdGhlIHVucmVnaXN0cmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIEJQRiBhbmQgSU8uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYmVpbmcgY2FsbGVkPyBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFjdHVhbCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJdCBkaWN0YXRlcyB0aGUgY29udGV4dCwgdGhlIGNvbmRpdGlvbnMsIHRoZSByZWFzb25zICp3aHkqIHRoaXMgdW5yZWdpc3RyYXRpb24gd291bGQgYmUgaGFwcGVuaW5nLCBhbmQgZnJhbmtseSwgd2hhdCBpcyBldmVuIGJlaW5nIHVucmVnaXN0ZXJlZC4gV2l0aG91dCBrbm93aW5nIHdoZXJlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIGlzIGludm9rZWQsIEkmIzM5O20gc3R1Y2sgd2l0aCBhbiBpbmNvbXBsZXRlIHBpY3R1cmUuIEkgbmVlZCB0aGF0IGNhbGwgZ3JhcGggdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoaXMgSU8gdW5yZWdpc3RyYXRpb24gZmxvdyByZWxhdGVkIHRvIEJQRi4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiBmaW5kIHRoYXQgY2FsbCBjaGFpbuKApgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb191bnJlZ2lzdGVyX2JwZl9vcHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvYnBmLW9wcy5jPTIyMj1zdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbi0tXG5pb191cmluZy9icGYtb3BzLmMtMjM3LVxuaW9fdXJpbmcvYnBmLW9wcy5jOjIzODp2b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMzkte1xuLS1cbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5oLTIwLSNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvYnBmLW9wcy5oOjIxOnZvaWQgaW9fdW5yZWdpc3Rlcl9icGZfb3BzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KTtcbmlvX3VyaW5nL2JwZi1vcHMuaC0yMi0jZWxzZVxuaW9fdXJpbmcvYnBmLW9wcy5oOjIzOnN0YXRpYyBpbmxpbmUgdm9pZCBpb191bnJlZ2lzdGVyX2JwZl9vcHMoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG5pb191cmluZy9icGYtb3BzLmgtMjQte1xuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmM9MjE2Mz1zdGF0aWMgX19jb2xkIHZvaWQgaW9fcmluZ19jdHhfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2NC17XG5pb191cmluZy9pb191cmluZy5jOjIxNjU6XHRpb191bnJlZ2lzdGVyX2JwZl9vcHMoY3R4KTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2Ni1cdGlvX3NxX3RocmVhZF9maW5pc2goY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1MgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIE9wZXJhdGlvbnMgaW4gaW9fdXJpbmcgQ29udGV4dCoqCgpPa2F5LCBzbyBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCBnZXRzIGNhbGxlZCBmcm9tIGBpb19yaW5nX2N0eF9mcmVlYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgJiMzNDtBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYXMgdGhlIGtleSBwbGF5ZXJzIGhlcmUuJiMzNDsgQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgYGJwZl9pb191bnJlZ2AgaXMgZGVjbGFyZWQgc3RhdGljLiBIbW0sIGlzIGl0IHBvdGVudGlhbGx5IGlubGluZWQ/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBpdCYjMzk7cyBhY3R1YWxseSBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHNvbWV3aGVyZS4gQWgsIHllcyEgVGhlcmUgaXQgaXMsIGAudW5yZWcgPSBicGZfaW9fdW5yZWdgIHdpdGhpbiBgYnBmX3N0cnVjdF9vcHNgLiBTbyBubywgaXQmIzM5O3Mgbm90IGJlaW5nIGlubGluZWQuIEFuZCBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCBpc24mIzM5O3Qgc3RhdGljLCBzbyB0aGF0IHNlZW1zIG1vcmUgbGlrZWx5LiBOb3csIGxldCBtZSBjaGVjayB0aGUgYGlvX2xvb3Bfd2FpdGAgZnVuY3Rpb24gbWVudGlvbmVkIGluIHRoYXQgY29tbWVudDsgaXQgY291bGQgcHJvdmlkZSBzb21lIHZhbHVhYmxlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX2xvb3Bfd2FpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9icGYtb3BzLmM9MjAxPXN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbi0tXG5pb191cmluZy9icGYtb3BzLmMtMjEzLVx0LypcbmlvX3VyaW5nL2JwZi1vcHMuYzoyMTQ6XHQgKiBBIGxvb3AgbWF5IGJlIHNsZWVwaW5nIGluIGlvX2xvb3Bfd2FpdCgpIHdpdGggLVx1MDAzZXVyaW5nX2xvY2tcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMTUtXHQgKiByZWxlYXNlZC4gSXQmIzM5O2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxuLS1cbmlvX3VyaW5nL2xvb3AuYz02PXN0YXRpYyBpbmxpbmUgaW50IGlvX2xvb3BfbnJfY3Flcyhjb25zdCBzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy9sb29wLmMtMTEtXG5pb191cmluZy9sb29wLmM6MTI6c3RhdGljIGlubGluZSB2b2lkIGlvX2xvb3Bfd2FpdF9zdGFydChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgbnJfd2FpdClcbmlvX3VyaW5nL2xvb3AuYy0xMy17XG4tLVxuaW9fdXJpbmcvbG9vcC5jLTE3LVxuaW9fdXJpbmcvbG9vcC5jOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpb19sb29wX3dhaXRfZmluaXNoKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxuaW9fdXJpbmcvbG9vcC5jLTE5LXtcbi0tXG5pb191cmluZy9sb29wLmMtMjMtXG5pb191cmluZy9sb29wLmM6MjQ6c3RhdGljIHZvaWQgaW9fbG9vcF93YWl0KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW91X2xvb3BfcGFyYW1zICpscCxcbmlvX3VyaW5nL2xvb3AuYy0yNS1cdFx0XHQgdW5zaWduZWQgbnJfd2FpdClcbmlvX3VyaW5nL2xvb3AuYy0yNi17XG5pb191cmluZy9sb29wLmM6Mjc6XHRpb19sb29wX3dhaXRfc3RhcnQoY3R4LCBucl93YWl0KTtcbmlvX3VyaW5nL2xvb3AuYy0yOC1cbi0tXG5pb191cmluZy9sb29wLmMtMzEtXHRcdCAgICAgUkVBRF9PTkNFKGN0eC1cdTAwM2VjaGVja19jcSkpIHtcbmlvX3VyaW5nL2xvb3AuYzozMjpcdFx0aW9fbG9vcF93YWl0X2ZpbmlzaChjdHgpO1xuaW9fdXJpbmcvbG9vcC5jLTMzLVx0XHRyZXR1cm47XG4tLVxuaW9fdXJpbmcvbG9vcC5jLTM3LVx0c2NoZWR1bGUoKTtcbmlvX3VyaW5nL2xvb3AuYzozODpcdGlvX2xvb3Bfd2FpdF9maW5pc2goY3R4KTtcbmlvX3VyaW5nL2xvb3AuYy0zOS1cdG11dGV4X2xvY2soXHUwMDI2Y3R4LVx1MDAzZXVyaW5nX2xvY2spO1xuLS1cbmlvX3VyaW5nL2xvb3AuYz00Mj1zdGF0aWMgaW50IF9faW9fcnVuX2xvb3Aoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG4tLVxuaW9fdXJpbmcvbG9vcC5jLTU5LVx0XHRpZiAobnJfd2FpdCBcdTAwM2UgMClcbmlvX3VyaW5nL2xvb3AuYzo2MDpcdFx0XHRpb19sb29wX3dhaXQoY3R4LCBcdTAwMjZscCwgbnJfd2FpdCk7XG5pb191cmluZy9sb29wLmMtNjEtXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA3NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgaW9fdXJpbmcgYW5kIEJQRiBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IHNwZWNpZmljIGJ1ZyDigJMgYSB0YXNrIGdldHMgc3R1Y2sgaW4gYGlvX2xvb3Bfd2FpdGAgaWYgQlBGIG9wZXJhdGlvbnMgYXJlIGVqZWN0ZWQuIFRoYXQgbWVhbnMgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIHdha2UtdXAgbWVjaGFuaXNtIG1pc3Npbmcgd2hlbiBCUEYgb3BlcmF0aW9ucyBhcmUgcmVtb3ZlZCwgYW5kIHRoZSBmaXggaXMgYSBzdHJhaWdodGZvcndhcmQgYHdha2VfdXBfc3RhdGVgIGNhbGwuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byBpb191cmluZyYjMzk7cyBiZWhhdmlvciwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gV2UgY2FuJiMzOTt0IGxldCB0aGlzIHNsaXAuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZSBCUEYgb3BlcmF0aW9ucyBhcmUgdW5yZWdpc3RlcmVkLiBJdCBsb29rcyBsaWtlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgLCBgYnBmX2lvX3VucmVnYCwgYW5kIGBpb19lamVjdF9icGZgIGFyZSB0aGUga2V5IHBsYXllcnMgaGVyZS4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgaW9fZWplY3RfYnBmYCBidXQgc2luY2UgaXQmIzM5O3Mgc3RhdGljLCBpdCBjb3VsZCBiZSBpbmxpbmVkLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYWxscyB0byBpdCwgZnJvbSBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AsIHRvIHZlcmlmeSB0aGlzLiBCYXNlZCBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBpdCYjMzk7cyBlYXNpZXIgdG8ganVzdCB1c2UgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYW5kIGBicGZfaW9fdW5yZWdgIGFzIG15IHByaW1hcnkgZnV6emluZyB0YXJnZXRzLgoKTmV4dCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgYXJlIGVuYWJsZWQgZm9yIGVmZmVjdGl2ZSB0ZXN0aW5nLiBJJiMzOTt2ZSBnb3QgYElPX1VSSU5HX0JQRl9PUFNgIGFzIHRoZSB0b3AgcHJpb3JpdHksIGJ1dCBob2xkIG9uIOKAkyBpdCYjMzk7cyBhIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gcXVpdGUgYSBmZXcgb3RoZXIgc2V0dGluZ3M6IGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgbmVlZCB0byBtYWtlIHN1cmUgKmFsbCogdGhvc2UgYXJlIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwcmVyZXF1aXNpdGU7IGdvdHRhIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIHNpbmNlIHRob3NlIHNldHRpbmdzIGFyZSBhIGJpdCBpbnRlcnR3aW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxODpcdGNvbmZpZyBJT19VUklOR19CUEZfT1BTXG4gIDE5Olx0XHRkZWZfYm9vbCB5XG4gIDIwOlx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4gIDIxOlx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBERUJVR19JTkZPX0JURlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTAyCgkJCQkJCQlvdXRwdXQ6IDE1OQoJCQkJCQkJdGhvdWdodHM6IDM0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgaW9fdXJpbmcgQlBGIE9wZXJhdGlvbnMgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZml4IGZvciBhIGZhaXJseSBjcml0aWNhbCBpb191cmluZyBCUEYgaW50ZXJhY3Rpb24uIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGVyZSYjMzk7cyBhIHByb2JsZW0gd2l0aCB0YXNrcyBpbiBgaW9fbG9vcF93YWl0YCBub3QgYmVpbmcgcHJvcGVybHkgYXdha2VuZWQgd2hlbiBCUEYgb3BlcmF0aW9ucyBhcmUgZWplY3RlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGlvX3VyaW5nIGxvZ2ljLCBhbmQgYW55IHRpbWUgd2UmIzM5O3JlIHRvdWNoaW5nIGNvcmUgbG9naWMsIGZ1enppbmcgaXMgaW1tZWRpYXRlbHkgb24gdGhlIHJhZGFyLgoKRmlyc3QsIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJIHNlZSB3ZSBuZWVkIGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgYElPX1VSSU5HX0JQRl9PUFNgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBgZGVmX2Jvb2wgeWAsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpc3RlZC4gWWVzLCB3ZSBoYXZlIGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAgbGlzdGVkLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbnRvIHRoZSBzeW1ib2xzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBpbnRlcmFjdGlvbiBwb2ludHMgYW5kIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSBgaW9fZWplY3RfYnBmYCBpcyBzdGF0aWMuIEFscmlnaHQsIGBicGZfaW9fdW5yZWdgIGlzIHN0YXRpYywgYnV0IGl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBicGZfc3RydWN0X29wc2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIG5vdGUuIEFuZCB0aGVuIHdlIGhhdmUgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AsIHdoaWNoIGlzICpub3QqIHN0YXRpYy4gSSYjMzk7bSBnb2luZyB0byBmbGFnIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIGFuZCBgYnBmX2lvX3VucmVnYCBhcyB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fdW5yZWdpc3Rlcl9icGZfb3BzJiMzNDssCiAgICAmIzM0O2JwZl9pb191bnJlZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJiMzOTt0IGJlIHdva2VuIHVwIHdoZW4gQlBGIG9wcyBhcmUgZWplY3RlZC4gSXQgYWRkcyBhIGB3YWtlX3VwX3N0YXRlYCBjYWxsIGluIGBpb19lamVjdF9icGZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb191bnJlZ2lzdGVyX2JwZl9vcHMmIzM0OywKICAgICYjMzQ7YnBmX2lvX3VucmVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGlvX3VyaW5nIEJQRiBvcGVyYXRpb25zIHdoZXJlIGEgdGFzayBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0YCB3b3VsZG4mIzM5O3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaW9fZWplY3RfYnBmYCBpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYCB0byB3YWtlIHVwIGEgc2xlZXBpbmcgdGFzayAoYGN0eC1cdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cdTAwM2Vsb29wX3N0ZXBgIGlzIHNldCB0byBOVUxMLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGhhbmcgd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kIHdvdWxkIG5vdCBiZSB3b2tlbiB1cCBvdGhlcndpc2UuIFRoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGFzayBzY2hlZHVsaW5nLCBzeW5jaHJvbml6YXRpb24sIGFuZCB3YWtpbmcgdXAgc2xlZXBpbmcgdGhyZWFkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlIGlmIGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgIGlzIGludmFsaWQpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDIxYWE4MzcxMTY2NmFmYmEyOWUxM2QzYjRiNmUxYTZmZWY3MGQzNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW9fdXJpbmcvYnBmLW9wcy5jIGIvaW9fdXJpbmcvYnBmLW9wcy5jCmluZGV4IDVhNTBmMDY3NWZlNTguLjg3MTQ4ZGJkM2IzZTAgMTAwNjQ0Ci0tLSBhL2lvX3VyaW5nL2JwZi1vcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy9icGYtb3BzLmMKQEAgLTIxMCw2ICYjNDM7MjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCkKIAlvcHMtJmd0O3ByaXYgPSBOVUxMOwogCWN0eC0mZ3Q7YnBmX29wcyA9IE5VTEw7CiAJY3R4LSZndDtsb29wX3N0ZXAgPSBOVUxMOwomIzQzOwkvKgomIzQzOwkgKiBBIGxvb3AgbWF5IGJlIHNsZWVwaW5nIGluIGlvX2xvb3Bfd2FpdCgpIHdpdGggLSZndDt1cmluZ19sb2NrCiYjNDM7CSAqIHJlbGVhc2VkLiBJdCYjMzk7bGwgc2VlIGxvb3Bfc3RlcCA9PSBOVUxMIGFmdGVyIHdha2luZyB1cCwgYnV0CiYjNDM7CSAqIG5vdGhpbmcgd2FrZXMgaXQgb3RoZXJ3aXNlLgomIzQzOwkgKi8KJiM0MzsJaWYgKGN0eC0mZ3Q7c3VibWl0dGVyX3Rhc2spCiYjNDM7CQl3YWtlX3VwX3N0YXRlKGN0eC0mZ3Q7c3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NgoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiA0OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaW9fdXJpbmcgQlBGIFBhdGNoKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYHdha2VfdXBfc3RhdGUoY3R4LSZndDtzdWJtaXR0ZXJfdGFzaywgVEFTS19JTlRFUlJVUFRJQkxFKTtgIHdpdGhpbiBgaW9fZWplY3RfYnBmKClgLiBUaGlzIHNlZW1zIHRvIGFkZHJlc3MgYSBzcGVjaWZpYyBzY2VuYXJpbyBpbiBgaW9fdXJpbmdgIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCwgY3J1Y2lhbGx5LCBub3QgYmUgd29rZW4gdXAgd2hlbiBgY3R4LSZndDtsb29wX3N0ZXBgIGJlY29tZXMgTlVMTC4gVGhlIGNvbW1lbnQgaW4gdGhlIGNvZGUgc25pcHBldCBpcyBwcmV0dHkgY2xlYXIgYWJvdXQgdGhlIHNjZW5hcmlvLCBhIHNsZWVwaW5nIHRhc2sgd2l0aCB0aGUgdXJpbmcgbG9jayByZWxlYXNlZC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgdGFzayB3YWtldXAgaXNzdWUuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHRhc2sgc3RhdGVzLCB0aGUgc2xlZXBpbmcgcHJvY2VzcywgYW5kIHRoZSBtZWNoYW5pc20gZm9yIHdha2luZyBpdCB1cC4gVGhlcmUmIzM5O3Mgbm8gZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9uLCBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24gaW4gdGhlIGRhdGEgcGF0aCBoZXJlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHB1cmVseSBhYm91dCBlbnN1cmluZyB0aGUgc2NoZWR1bGVyIGRvZXMgaXRzIGpvYiBjb3JyZWN0bHkgaW4gYSBzcGVjaWZpYyBlZGdlIGNhc2Ugb2YgdGhlIGlvX3VyaW5nIGxvb3AuCgpUaGVyZWZvcmUsIHRoZSBsaWtlbGlob29kIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbCBpbmZvcm1hdGlvbiBsZWFrcyBpcyBlc3NlbnRpYWxseSB6ZXJvLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBub3QgZGVhbGluZyB3aXRoIGFueXRoaW5nIEtNU0FOIHdvdWxkIGNhdGNoIGRpcmVjdGx5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcm91bmQgbWVtb3J5IGNvcnJ1cHRpb24gaW4gdGhlIGNvbnRleHQgb2YgYGN0eC0mZ3Q7c3VibWl0dGVyX3Rhc2tgIHdvdWxkIGJlIGJldHRlciBoYW5kbGVkIGJ5IEtBU0FOLgoKU28sIHllYWgsIGdpdmVuIHRoYXQsIEkmIzM5O20gY29tZm9ydGFibGUgc3RhdGluZyB0aGF0IE5lZWRzS01TQU4gaXMgZmFsc2UgaGVyZS4gSXQmIzM5O3MgYSBzeW5jaHJvbml6YXRpb24gYW5kIHNjaGVkdWxpbmcgZml4LCBub3QgYSBtZW1vcnkgc2FmZXR5IG9uZSwgYXQgbGVhc3QgaW4gYW55IGRpcmVjdCBzZW5zZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQsIGZvY3VzZWQgYnVnIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGlvX2VqZWN0X2JwZmAgaW4gYGlvX3VyaW5nL2JwZi1vcHMuY2AgdG8gd2FrZSB1cCBhIHNsZWVwaW5nIHRhc2sgKGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgKSB3aGVuIGBjdHgtXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrYCBpcyBpbnZhbGlkKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaW9fZWplY3RfYnBmYCBpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYCB0byB3YWtlIHVwIGEgc2xlZXBpbmcgdGFzayAoYGN0eC1cdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cdTAwM2Vsb29wX3N0ZXBgIGlzIHNldCB0byBOVUxMLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGhhbmcgd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kIHdvdWxkIG5vdCBiZSB3b2tlbiB1cCBvdGhlcndpc2UuIFRoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGFzayBzY2hlZHVsaW5nLCBzeW5jaHJvbml6YXRpb24sIGFuZCB3YWtpbmcgdXAgc2xlZXBpbmcgdGhyZWFkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlIGlmIGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgIGlzIGludmFsaWQpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzg6NTIuNTgzNTMxMzM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5MjAwODQ2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX3VucmVnaXN0ZXJfYnBmX29wc1wiLFxuICAgIFwiYnBmX2lvX3VucmVnXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaW9fZWplY3RfYnBmYCBpbiBgaW9fdXJpbmcvYnBmLW9wcy5jYCB0byB3YWtlIHVwIGEgc2xlZXBpbmcgdGFzayAoYGN0eC1cXHUwMDNlc3VibWl0dGVyX3Rhc2tgKSB3aGVuIGBjdHgtXFx1MDAzZWxvb3Bfc3RlcGAgaXMgc2V0IHRvIE5VTEwuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaGFuZyB3aGVyZSBhIHRhc2sgbWlnaHQgYmUgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdCgpYCBhbmQgd291bGQgbm90IGJlIHdva2VuIHVwIG90aGVyd2lzZS4gVGhpcyBjaGFuZ2UgaXMgcmVsYXRlZCB0byB0YXNrIHNjaGVkdWxpbmcsIHN5bmNocm9uaXphdGlvbiwgYW5kIHdha2luZyB1cCBzbGVlcGluZyB0aHJlYWRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgaWYgYGN0eC1cXHUwMDNlc3VibWl0dGVyX3Rhc2tgIGlzIGludmFsaWQpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzg6NTIuNTgzNTM2NDk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDAyMDU2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MjFhYTgzNzExNjY2YWZiYTI5ZTEzZDNiNGI2ZTFhNmZlZjcwZDM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL2JwZi1vcHMuYyBiL2lvX3VyaW5nL2JwZi1vcHMuY1xcbmluZGV4IDVhNTBmMDY3NWZlNTguLjg3MTQ4ZGJkM2IzZTAgMTAwNjQ0XFxuLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jXFxuKysrIGIvaW9fdXJpbmcvYnBmLW9wcy5jXFxuQEAgLTIxMCw2ICsyMTAsMTMgQEAgc3RhdGljIHZvaWQgaW9fZWplY3RfYnBmKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxcbiBcXHRvcHMtXFx1MDAzZXByaXYgPSBOVUxMO1xcbiBcXHRjdHgtXFx1MDAzZWJwZl9vcHMgPSBOVUxMO1xcbiBcXHRjdHgtXFx1MDAzZWxvb3Bfc3RlcCA9IE5VTEw7XFxuK1xcdC8qXFxuK1xcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXFx1MDAzZXVyaW5nX2xvY2tcXG4rXFx0ICogcmVsZWFzZWQuIEl0J2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxcbitcXHQgKiBub3RoaW5nIHdha2VzIGl0IG90aGVyd2lzZS5cXG4rXFx0ICovXFxuK1xcdGlmIChjdHgtXFx1MDAzZXN1Ym1pdHRlcl90YXNrKVxcbitcXHRcXHR3YWtlX3VwX3N0YXRlKGN0eC1cXHUwMDNlc3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozODo1Mi45ODQ0MDk4ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0OTc5ODI5NjY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fdW5yZWdpc3Rlcl9icGZfb3BzXCIsXG4gICAgXCJicGZfaW9fdW5yZWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDIxYWE4MzcxMTY2NmFmYmEyOWUxM2QzYjRiNmUxYTZmZWY3MGQzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvYnBmLW9wcy5jIGIvaW9fdXJpbmcvYnBmLW9wcy5jXG5pbmRleCA1YTUwZjA2NzVmZTU4Li44NzE0OGRiZDNiM2UwIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jXG4rKysgYi9pb191cmluZy9icGYtb3BzLmNcbkBAIC0yMTAsNiArMjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbiBcdG9wcy1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGN0eC1cdTAwM2VicGZfb3BzID0gTlVMTDtcbiBcdGN0eC1cdTAwM2Vsb29wX3N0ZXAgPSBOVUxMO1xuK1x0LypcbitcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXHUwMDNldXJpbmdfbG9ja1xuK1x0ICogcmVsZWFzZWQuIEl0J2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxuK1x0ICogbm90aGluZyB3YWtlcyBpdCBvdGhlcndpc2UuXG4rXHQgKi9cbitcdGlmIChjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2spXG4rXHRcdHdha2VfdXBfc3RhdGUoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrLCBUQVNLX0lOVEVSUlVQVElCTEUpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM4OjUyLjk4NDQxMzc2MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjI0OTIwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpb191cmluZy9icGYtb3BzLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBtYWtpbmcgYSBtb2RpZmljYXRpb24gdG8gYGlvX3VyaW5nL2JwZi1vcHMuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBhZGRlZCBgd2FrZV91cF9zdGF0ZShjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2ssIFRBU0tfSU5URVJSVVBUSUJMRSk7YCB3aXRoaW4gdGhlIGBpb19lamVjdF9icGYoKWAgZnVuY3Rpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBoZXJlLiBXaGF0J3MgdGhlIHB1cnBvc2Ugb2Ygd2FraW5nIHVwIGEgdGFzayBpbiBhbiBpbnRlcnJ1cHRpYmxlIHN0YXRlIHdpdGhpbiBgaW9fZWplY3RfYnBmKClgPyBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYm90aCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXRzZWxmLCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgaW9fdXJpbmcgZnJhbWV3b3JrLiBXaGF0J3MgdGhlIHNwZWNpZmljIHNjZW5hcmlvIHRoYXQgdHJpZ2dlcnMgdGhpcyBlamVjdGlvbiwgYW5kIHdoeSBpcyB0aGlzIHdha2V1cCBuZWNlc3NhcnkgYXQgdGhpcyBwb2ludD8gSXMgdGhpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBvciBwZXJoYXBzIGEgc2lnbmFsaW5nIG1lY2hhbmlzbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW50cm9kdWNlZCwgYW5kIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gTGV0J3MgZ2V0IHRvIHdvcmsgYW5kIGZpbmQgc29tZSBhbnN3ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozODo1Ny4zNDY5MDgzMjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1NTA3OTE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19lamVjdF9icGZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvYnBmLW9wcy5jPTE4MD1zdGF0aWMgaW50IGJwZl9pb19yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMDAtXFxuaW9fdXJpbmcvYnBmLW9wcy5jOjIwMTpzdGF0aWMgdm9pZCBpb19lamVjdF9icGYoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTIwMi17XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmM9MjIyPXN0YXRpYyB2b2lkIGJwZl9pb191bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxcbi0tXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTIzMy1cXG5pb191cmluZy9icGYtb3BzLmM6MjM0OlxcdFxcdGlvX2VqZWN0X2JwZihjdHgpO1xcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMzUtXFx0fVxcbi0tXFxuaW9fdXJpbmcvYnBmLW9wcy5jPTIzOD12b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yNTItXFx0aWYgKGN0eC1cXHUwMDNlYnBmX29wcylcXG5pb191cmluZy9icGYtb3BzLmM6MjUzOlxcdFxcdGlvX2VqZWN0X2JwZihjdHgpO1xcbmlvX3VyaW5nL2JwZi1vcHMuYy0yNTQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozODo1OS4zMDE5OTI3NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc3MDM1Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaW9fdXJpbmcgQlBGIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGlvX2VqZWN0X2JwZmAgd2l0aGluIGBpb191cmluZy9icGYtb3BzLmNgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIGlvX3VyaW5nIHN1YnN5c3RlbSwgd2hpY2ggYWx3YXlzIHdhcnJhbnRzIGNsb3NlIHNjcnV0aW55LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgbG9jYXRlIHRoZSBjb25maWd1cmF0aW9uIGRldGFpbHMgYXNzb2NpYXRlZCB3aXRoIGBpb191cmluZy9icGYtb3BzLmNgLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgdGhlIHByb3BlciBjb250ZXh0IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MDIuMzc5MDMxMDc0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODMwMTE1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmLW9wcy5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL01ha2VmaWxlPTI3PW9iai0kKENPTkZJR19JT19VUklOR19CUEYpICs9IGJwZl9maWx0ZXIub1xcbmlvX3VyaW5nL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19JT19VUklOR19CUEZfT1BTKSArPSBicGYtb3BzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MDQuODYyMDQ3MzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MzA5Mzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBJT19VUklOR19CUEZfT1BTYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIHNlZSwgdGhlIGN1cnJlbnQgZm9jdXMgaXMgb24gYSBjb25maWd1cmF0aW9uIGl0ZW06IGBJT19VUklOR19CUEZfT1BTYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24ncyBkZXBlbmRlbmNpZXMsIGl0cyBkZWZhdWx0IHNldHRpbmcsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB3aGF0IGl0ICplbmFibGVzKiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaW9fdXJpbmcuIEtub3dpbmcgdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZSB3aWxsIGJlIGNyaXRpY2FsIOKAkyBpcyBpdCBhYm91dCBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGZlYXR1cmVzLCBvciBzb21lIGNvbWJpbmF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIG9mIGNoYW5nZXMsIHRvIGtub3cgd2hlcmUgdGhpcyBwYXJhbWV0ZXIgaW1wYWN0cyBwZXJmb3JtYW5jZSBvciBzZWN1cml0eTsgSSBrbm93IHRoZSBkYW5nZXJzIG9mIGxlYXZpbmcgYSBuZXcgZmVhdHVyZSBhY3RpdmUgd2l0aG91dCBhIHByb3BlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9uIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHkgSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzIHNldCwgdW5zZXQsIG9yIGRlZmF1bHRlZCB0byBhIGNlcnRhaW4gdmFsdWUuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IEtjb25maWcgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjA4LjMzNTE0MzI3OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM0MDY5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT19VUklOR19CUEZfT1BTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL0tjb25maWc9MTM9Y29uZmlnIElPX1VSSU5HX0JQRlxcbi0tXFxuaW9fdXJpbmcvS2NvbmZpZy0xNy1cXG5pb191cmluZy9LY29uZmlnOjE4OmNvbmZpZyBJT19VUklOR19CUEZfT1BTXFxuaW9fdXJpbmcvS2NvbmZpZy0xOS1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjEwLjI2OTIxNzU1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3OTkwNTM4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHBvaW50IHdoZXJlIHNvbWV0aGluZyBoaW5nZXMgb24gYSBzcGVjaWZpYyBjb25kaXRpb24uIE15IGd1dCByZWFjdGlvbiBpcyB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbi4gTGV0J3MgdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSBzb3VyY2U6IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGdvdmVybnMgdGhpcyBiZWhhdmlvcj8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUncyB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXI/IExldCdzIGNoZWNrIHRoZSBgaW9fdXJpbmcvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYywgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSB1bmRlcmx5aW5nIHJlYXNvbnMgYmVoaW5kIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHJlbGF0ZWQgdG8gYGlvX3VyaW5nYC5cIiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzM3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MTMuMDY4MjczNzcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImlvX3VyaW5nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgaW9fdXJpbmcgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSU9fVVJJTkdfWkNSWFxcbiAgIDc6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBORVRfUlhfQlVTWV9QT0xMXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBJT19VUklOR19CUEZcXG4gIDE0OlxcdFxcdGRlZl9ib29sIHlcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gQlBGXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbiAgMTk6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IERFQlVHX0lORk9fQlRGXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjEzLjA2ODM1OTUyMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk4Nzg1MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgaW9fdXJpbmcgQlBGIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgaXQgc2VlbXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBJT19VUklOR19CUEZfT1BTYCByZWxpZXMgcHJldHR5IGhlYXZpbHkgb24gc2V2ZXJhbCBvdGhlciBrZXJuZWwgZmVhdHVyZXM6IGBJT19VUklOR2AgaXRzZWxmLCBuYXR1cmFsbHksIGJ1dCBhbHNvIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgYXMgcG90ZW50aWFsIGRlcGVuZGVuY2llcyB3aGVuIEknbSByZXZpZXdpbmcgdGhpcy4gSSBzZWUgdGhhdCB0aGUgYGlvX2VqZWN0X2JwZmAgZnVuY3Rpb24gaXMgbWFya2VkIGBzdGF0aWNgLiBUaGF0J3MgYSBnb29kIGluaXRpYWwgaW5kaWNhdG9yOyBpdCBpbXBsaWVzIGl0J3MgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiB0aGlzIHNwZWNpZmljIG1vZHVsZS4gVGhlIGNvZGUgYWxzbyByZXZlYWxzIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AuIEdpdmVuIHRoaXMgYXJjaGl0ZWN0dXJlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXJseSB0byBkaXZlIGludG8gYGJwZl9pb191bnJlZ2AgYW5kIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIHRvIHVuZGVyc3RhbmQgaG93IGBpb19lamVjdF9icGZgIGlzIGJlaW5nIHV0aWxpemVkIGFuZCB3aGF0IGNvbnRleHQgaXQncyBvcGVyYXRpbmcgaW4uIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBpbnNpZ2h0cyBhcmUgbGlrZWx5IGhpZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjE2Ljk2NzE0NjY0MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4ODQxMTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW9fdW5yZWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvYnBmLW9wcy5jPTIwMT1zdGF0aWMgdm9pZCBpb19lamVjdF9icGYoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXFxuLS1cXG5pb191cmluZy9icGYtb3BzLmMtMjIxLVxcbmlvX3VyaW5nL2JwZi1vcHMuYzoyMjI6c3RhdGljIHZvaWQgYnBmX2lvX3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTIyMy17XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmM9MjU2PXN0YXRpYyBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX3Jpbmdfb3BzID0ge1xcbi0tXFxuaW9fdXJpbmcvYnBmLW9wcy5jLTI1OC1cXHQucmVnID0gYnBmX2lvX3JlZyxcXG5pb191cmluZy9icGYtb3BzLmM6MjU5OlxcdC51bnJlZyA9IGJwZl9pb191bnJlZyxcXG5pb191cmluZy9icGYtb3BzLmMtMjYwLVxcdC5jaGVja19tZW1iZXIgPSBicGZfaW9fY2hlY2tfbWVtYmVyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozOToxOS4wNTU1NjM2NjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NzkwMDU5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgQlBGIElPIFVucmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBicGZfaW9fdW5yZWdgLi4uIGFoLCB5ZXMsIHRoYXQncyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYGJwZl9zdHJ1Y3Rfb3BzYCBzdHJ1Y3R1cmUuIFNvLCB0aGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIG1hY2hpbmVyeSB0aGF0IGhhbmRsZXMsIEknbSBhc3N1bWluZywgdGhlIHVucmVnaXN0cmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIEJQRiBhbmQgSU8uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYmVpbmcgY2FsbGVkPyBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFjdHVhbCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJdCBkaWN0YXRlcyB0aGUgY29udGV4dCwgdGhlIGNvbmRpdGlvbnMsIHRoZSByZWFzb25zICp3aHkqIHRoaXMgdW5yZWdpc3RyYXRpb24gd291bGQgYmUgaGFwcGVuaW5nLCBhbmQgZnJhbmtseSwgd2hhdCBpcyBldmVuIGJlaW5nIHVucmVnaXN0ZXJlZC4gV2l0aG91dCBrbm93aW5nIHdoZXJlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgIGlzIGludm9rZWQsIEknbSBzdHVjayB3aXRoIGFuIGluY29tcGxldGUgcGljdHVyZS4gSSBuZWVkIHRoYXQgY2FsbCBncmFwaCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhpcyBJTyB1bnJlZ2lzdHJhdGlvbiBmbG93IHJlbGF0ZWQgdG8gQlBGLiBMZXQncyBzZWUgaWYgSSBjYW4gZmluZCB0aGF0IGNhbGwgY2hhaW7igKZcblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjIyLjUzMzQ2Njg1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMjc2MTc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb191bnJlZ2lzdGVyX2JwZl9vcHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvYnBmLW9wcy5jPTIyMj1zdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMzctXFxuaW9fdXJpbmcvYnBmLW9wcy5jOjIzODp2b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9icGYtb3BzLmMtMjM5LXtcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmgtMjAtI2lmZGVmIENPTkZJR19JT19VUklOR19CUEZfT1BTXFxuaW9fdXJpbmcvYnBmLW9wcy5oOjIxOnZvaWQgaW9fdW5yZWdpc3Rlcl9icGZfb3BzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KTtcXG5pb191cmluZy9icGYtb3BzLmgtMjItI2Vsc2VcXG5pb191cmluZy9icGYtb3BzLmg6MjM6c3RhdGljIGlubGluZSB2b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9icGYtb3BzLmgtMjQte1xcbi0tXFxuaW9fdXJpbmcvaW9fdXJpbmcuYz0yMTYzPXN0YXRpYyBfX2NvbGQgdm9pZCBpb19yaW5nX2N0eF9mcmVlKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2NC17XFxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMTY1OlxcdGlvX3VucmVnaXN0ZXJfYnBmX29wcyhjdHgpO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE2Ni1cXHRpb19zcV90aHJlYWRfZmluaXNoKGN0eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjI0LjQ1NjIzNDY5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ2Njk1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgT3BlcmF0aW9ucyBpbiBpb191cmluZyBDb250ZXh0KipcblxuT2theSwgc28gYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgZ2V0cyBjYWxsZWQgZnJvbSBgaW9fcmluZ19jdHhfZnJlZWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIFwiQWxyaWdodCwgbGV0J3MgbG9vayBhdCBgYnBmX2lvX3VucmVnYCBhbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYXMgdGhlIGtleSBwbGF5ZXJzIGhlcmUuXCIgQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgYGJwZl9pb191bnJlZ2AgaXMgZGVjbGFyZWQgc3RhdGljLiBIbW0sIGlzIGl0IHBvdGVudGlhbGx5IGlubGluZWQ/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBpdCdzIGFjdHVhbGx5IHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgc29tZXdoZXJlLiBBaCwgeWVzISBUaGVyZSBpdCBpcywgYC51bnJlZyA9IGJwZl9pb191bnJlZ2Agd2l0aGluIGBicGZfc3RydWN0X29wc2AuIFNvIG5vLCBpdCdzIG5vdCBiZWluZyBpbmxpbmVkLiBBbmQgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgaXNuJ3Qgc3RhdGljLCBzbyB0aGF0IHNlZW1zIG1vcmUgbGlrZWx5LiBOb3csIGxldCBtZSBjaGVjayB0aGUgYGlvX2xvb3Bfd2FpdGAgZnVuY3Rpb24gbWVudGlvbmVkIGluIHRoYXQgY29tbWVudDsgaXQgY291bGQgcHJvdmlkZSBzb21lIHZhbHVhYmxlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNTIsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MjguNjAyOTMyNjY5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg5MTQxODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX2xvb3Bfd2FpdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9icGYtb3BzLmM9MjAxPXN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuYy0yMTMtXFx0LypcXG5pb191cmluZy9icGYtb3BzLmM6MjE0OlxcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXFx1MDAzZXVyaW5nX2xvY2tcXG5pb191cmluZy9icGYtb3BzLmMtMjE1LVxcdCAqIHJlbGVhc2VkLiBJdCdsbCBzZWUgbG9vcF9zdGVwID09IE5VTEwgYWZ0ZXIgd2FraW5nIHVwLCBidXRcXG4tLVxcbmlvX3VyaW5nL2xvb3AuYz02PXN0YXRpYyBpbmxpbmUgaW50IGlvX2xvb3BfbnJfY3Flcyhjb25zdCBzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL2xvb3AuYy0xMS1cXG5pb191cmluZy9sb29wLmM6MTI6c3RhdGljIGlubGluZSB2b2lkIGlvX2xvb3Bfd2FpdF9zdGFydChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgbnJfd2FpdClcXG5pb191cmluZy9sb29wLmMtMTMte1xcbi0tXFxuaW9fdXJpbmcvbG9vcC5jLTE3LVxcbmlvX3VyaW5nL2xvb3AuYzoxODpzdGF0aWMgaW5saW5lIHZvaWQgaW9fbG9vcF93YWl0X2ZpbmlzaChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9sb29wLmMtMTkte1xcbi0tXFxuaW9fdXJpbmcvbG9vcC5jLTIzLVxcbmlvX3VyaW5nL2xvb3AuYzoyNDpzdGF0aWMgdm9pZCBpb19sb29wX3dhaXQoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb3VfbG9vcF9wYXJhbXMgKmxwLFxcbmlvX3VyaW5nL2xvb3AuYy0yNS1cXHRcXHRcXHQgdW5zaWduZWQgbnJfd2FpdClcXG5pb191cmluZy9sb29wLmMtMjYte1xcbmlvX3VyaW5nL2xvb3AuYzoyNzpcXHRpb19sb29wX3dhaXRfc3RhcnQoY3R4LCBucl93YWl0KTtcXG5pb191cmluZy9sb29wLmMtMjgtXFxuLS1cXG5pb191cmluZy9sb29wLmMtMzEtXFx0XFx0ICAgICBSRUFEX09OQ0UoY3R4LVxcdTAwM2VjaGVja19jcSkpIHtcXG5pb191cmluZy9sb29wLmM6MzI6XFx0XFx0aW9fbG9vcF93YWl0X2ZpbmlzaChjdHgpO1xcbmlvX3VyaW5nL2xvb3AuYy0zMy1cXHRcXHRyZXR1cm47XFxuLS1cXG5pb191cmluZy9sb29wLmMtMzctXFx0c2NoZWR1bGUoKTtcXG5pb191cmluZy9sb29wLmM6Mzg6XFx0aW9fbG9vcF93YWl0X2ZpbmlzaChjdHgpO1xcbmlvX3VyaW5nL2xvb3AuYy0zOS1cXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZXVyaW5nX2xvY2spO1xcbi0tXFxuaW9fdXJpbmcvbG9vcC5jPTQyPXN0YXRpYyBpbnQgX19pb19ydW5fbG9vcChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2xvb3AuYy01OS1cXHRcXHRpZiAobnJfd2FpdCBcXHUwMDNlIDApXFxuaW9fdXJpbmcvbG9vcC5jOjYwOlxcdFxcdFxcdGlvX2xvb3Bfd2FpdChjdHgsIFxcdTAwMjZscCwgbnJfd2FpdCk7XFxuaW9fdXJpbmcvbG9vcC5jLTYxLVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6MzAuNDkyMDgwMDNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3OTcwMTcyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgaW9fdXJpbmcgYW5kIEJQRiBJbnRlcmFjdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgc3BlY2lmaWMgYnVnIOKAkyBhIHRhc2sgZ2V0cyBzdHVjayBpbiBgaW9fbG9vcF93YWl0YCBpZiBCUEYgb3BlcmF0aW9ucyBhcmUgZWplY3RlZC4gVGhhdCBtZWFucyB0aGVyZSdzIHNvbWUga2luZCBvZiB3YWtlLXVwIG1lY2hhbmlzbSBtaXNzaW5nIHdoZW4gQlBGIG9wZXJhdGlvbnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUgZml4IGlzIGEgc3RyYWlnaHRmb3J3YXJkIGB3YWtlX3VwX3N0YXRlYCBjYWxsLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gaW9fdXJpbmcncyBiZWhhdmlvciwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gV2UgY2FuJ3QgbGV0IHRoaXMgc2xpcC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZSBCUEYgb3BlcmF0aW9ucyBhcmUgdW5yZWdpc3RlcmVkLiBJdCBsb29rcyBsaWtlIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgLCBgYnBmX2lvX3VucmVnYCwgYW5kIGBpb19lamVjdF9icGZgIGFyZSB0aGUga2V5IHBsYXllcnMgaGVyZS4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBgaW9fZWplY3RfYnBmYCBidXQgc2luY2UgaXQncyBzdGF0aWMsIGl0IGNvdWxkIGJlIGlubGluZWQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbHMgdG8gaXQsIGZyb20gYGJwZl9pb191bnJlZ2AgYW5kIGBpb191bnJlZ2lzdGVyX2JwZl9vcHNgLCB0byB2ZXJpZnkgdGhpcy4gQmFzZWQgb24gdGhvc2UgdHdvIGZ1bmN0aW9ucywgaXQncyBlYXNpZXIgdG8ganVzdCB1c2UgYGlvX3VucmVnaXN0ZXJfYnBmX29wc2AgYW5kIGBicGZfaW9fdW5yZWdgIGFzIG15IHByaW1hcnkgZnV6emluZyB0YXJnZXRzLlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcuIEkndmUgZ290IGBJT19VUklOR19CUEZfT1BTYCBhcyB0aGUgdG9wIHByaW9yaXR5LCBidXQgaG9sZCBvbiDigJMgaXQncyBhIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gcXVpdGUgYSBmZXcgb3RoZXIgc2V0dGluZ3M6IGBJT19VUklOR2AsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBERUJVR19JTkZPX0JURmAuIEkgbmVlZCB0byBtYWtlIHN1cmUgKmFsbCogdGhvc2UgYXJlIGVuYWJsZWQuIFRoYXQncyBhIGNyaXRpY2FsIHByZXJlcXVpc2l0ZTsgZ290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgc2luY2UgdGhvc2Ugc2V0dGluZ3MgYXJlIGEgYml0IGludGVydHdpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDc0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjM2Ljc3MTc4NTc4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImlvX3VyaW5nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTg6XFx0Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcXG4gIDE5OlxcdFxcdGRlZl9ib29sIHlcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gSU9fVVJJTkdcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBERUJVR19JTkZPX0JURlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzozOTozNi43NzE4NDg1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTMwODk3NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBpb191cmluZyBCUEYgT3BlcmF0aW9ucyBQYXRjaCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgZml4IGZvciBhIGZhaXJseSBjcml0aWNhbCBpb191cmluZyBCUEYgaW50ZXJhY3Rpb24uIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHRhc2tzIGluIGBpb19sb29wX3dhaXRgIG5vdCBiZWluZyBwcm9wZXJseSBhd2FrZW5lZCB3aGVuIEJQRiBvcGVyYXRpb25zIGFyZSBlamVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgaW9fdXJpbmcgbG9naWMsIGFuZCBhbnkgdGltZSB3ZSdyZSB0b3VjaGluZyBjb3JlIGxvZ2ljLCBmdXp6aW5nIGlzIGltbWVkaWF0ZWx5IG9uIHRoZSByYWRhci5cblxuRmlyc3QsIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEkgc2VlIHdlIG5lZWQgYElPX1VSSU5HYCwgYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYERFQlVHX0lORk9fQlRGYC4gSSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgSU9fVVJJTkdfQlBGX09QU2AgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXRzIGBkZWZfYm9vbCB5YCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIE5vdywgbGV0J3MgbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBsaXN0ZWQuIFllcywgd2UgaGF2ZSBgSU9fVVJJTkdgLCBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgREVCVUdfSU5GT19CVEZgIGxpc3RlZC5cblxuTm93LCBsZXQncyBtb3ZlIG9udG8gdGhlIHN5bWJvbHMuIEknbSBmb2N1c2luZyBvbiB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGFuZCBjcml0aWNhbCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgYGlvX2VqZWN0X2JwZmAgaXMgc3RhdGljLiBBbHJpZ2h0LCBgYnBmX2lvX3VucmVnYCBpcyBzdGF0aWMsIGJ1dCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBicGZfc3RydWN0X29wc2AuIFRoYXQncyBpbXBvcnRhbnQgdG8gbm90ZS4gQW5kIHRoZW4gd2UgaGF2ZSBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCwgd2hpY2ggaXMgKm5vdCogc3RhdGljLiBJJ20gZ29pbmcgdG8gZmxhZyBgaW9fdW5yZWdpc3Rlcl9icGZfb3BzYCBhbmQgYGJwZl9pb191bnJlZ2AgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFuZCB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTAyLCJPdXRwdXRUb2tlbnMiOjE1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjQyLjcwMjc1NDYwN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5OTQ3OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fdW5yZWdpc3Rlcl9icGZfb3BzXCIsXG4gICAgXCJicGZfaW9fdW5yZWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9fdW5yZWdpc3Rlcl9icGZfb3BzXCIsXG4gICAgXCJicGZfaW9fdW5yZWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBpb191cmluZyBCUEYgb3BlcmF0aW9ucyB3aGVyZSBhIHRhc2sgc2xlZXBpbmcgaW4gYGlvX2xvb3Bfd2FpdGAgd291bGRuJ3QgYmUgd29rZW4gdXAgd2hlbiBCUEYgb3BzIGFyZSBlamVjdGVkLiBJdCBhZGRzIGEgYHdha2VfdXBfc3RhdGVgIGNhbGwgaW4gYGlvX2VqZWN0X2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBpb191cmluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6Mzk6NDIuNzgyNzExMzg5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcyMDg5NDY0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjQyLjc4MzM1OTI5OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODcyMDI0MzI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGlvX2VqZWN0X2JwZmAgaW4gYGlvX3VyaW5nL2JwZi1vcHMuY2AgdG8gd2FrZSB1cCBhIHNsZWVwaW5nIHRhc2sgKGBjdHgtXFx1MDAzZXN1Ym1pdHRlcl90YXNrYCkgd2hlbiBgY3R4LVxcdTAwM2Vsb29wX3N0ZXBgIGlzIHNldCB0byBOVUxMLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGhhbmcgd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kIHdvdWxkIG5vdCBiZSB3b2tlbiB1cCBvdGhlcndpc2UuIFRoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGFzayBzY2hlZHVsaW5nLCBzeW5jaHJvbml6YXRpb24sIGFuZCB3YWtpbmcgdXAgc2xlZXBpbmcgdGhyZWFkcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgKGUuZy4sIHVzZS1hZnRlci1mcmVlIGlmIGBjdHgtXFx1MDAzZXN1Ym1pdHRlcl90YXNrYCBpcyBpbnZhbGlkKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDIxYWE4MzcxMTY2NmFmYmEyOWUxM2QzYjRiNmUxYTZmZWY3MGQzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjM4OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvYnBmLW9wcy5jIGIvaW9fdXJpbmcvYnBmLW9wcy5jXG5pbmRleCA1YTUwZjA2NzVmZTU4Li44NzE0OGRiZDNiM2UwIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvYnBmLW9wcy5jXG4rKysgYi9pb191cmluZy9icGYtb3BzLmNcbkBAIC0yMTAsNiArMjEwLDEzIEBAIHN0YXRpYyB2b2lkIGlvX2VqZWN0X2JwZihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbiBcdG9wcy1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGN0eC1cdTAwM2VicGZfb3BzID0gTlVMTDtcbiBcdGN0eC1cdTAwM2Vsb29wX3N0ZXAgPSBOVUxMO1xuK1x0LypcbitcdCAqIEEgbG9vcCBtYXkgYmUgc2xlZXBpbmcgaW4gaW9fbG9vcF93YWl0KCkgd2l0aCAtXHUwMDNldXJpbmdfbG9ja1xuK1x0ICogcmVsZWFzZWQuIEl0J2xsIHNlZSBsb29wX3N0ZXAgPT0gTlVMTCBhZnRlciB3YWtpbmcgdXAsIGJ1dFxuK1x0ICogbm90aGluZyB3YWtlcyBpdCBvdGhlcndpc2UuXG4rXHQgKi9cbitcdGlmIChjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2spXG4rXHRcdHdha2VfdXBfc3RhdGUoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrLCBUQVNLX0lOVEVSUlVQVElCTEUpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfaW9fdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjM5OjQyLjc4MzM2MDExOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODcyMDIyMzAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpb191cmluZyBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYHdha2VfdXBfc3RhdGUoY3R4LVx1MDAzZXN1Ym1pdHRlcl90YXNrLCBUQVNLX0lOVEVSUlVQVElCTEUpO2Agd2l0aGluIGBpb19lamVjdF9icGYoKWAuIFRoaXMgc2VlbXMgdG8gYWRkcmVzcyBhIHNwZWNpZmljIHNjZW5hcmlvIGluIGBpb191cmluZ2Agd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHNsZWVwaW5nIGluIGBpb19sb29wX3dhaXQoKWAgYW5kLCBjcnVjaWFsbHksIG5vdCBiZSB3b2tlbiB1cCB3aGVuIGBjdHgtXHUwMDNlbG9vcF9zdGVwYCBiZWNvbWVzIE5VTEwuIFRoZSBjb21tZW50IGluIHRoZSBjb2RlIHNuaXBwZXQgaXMgcHJldHR5IGNsZWFyIGFib3V0IHRoZSBzY2VuYXJpbywgYSBzbGVlcGluZyB0YXNrIHdpdGggdGhlIHVyaW5nIGxvY2sgcmVsZWFzZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgdGFzayB3YWtldXAgaXNzdWUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgdGFzayBzdGF0ZXMsIHRoZSBzbGVlcGluZyBwcm9jZXNzLCBhbmQgdGhlIG1lY2hhbmlzbSBmb3Igd2FraW5nIGl0IHVwLiBUaGVyZSdzIG5vIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbiwgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGluIHRoZSBkYXRhIHBhdGggaGVyZS4gSXQgbG9va3MgbGlrZSBpdCdzIHB1cmVseSBhYm91dCBlbnN1cmluZyB0aGUgc2NoZWR1bGVyIGRvZXMgaXRzIGpvYiBjb3JyZWN0bHkgaW4gYSBzcGVjaWZpYyBlZGdlIGNhc2Ugb2YgdGhlIGlvX3VyaW5nIGxvb3AuXG5cblRoZXJlZm9yZSwgdGhlIGxpa2VsaWhvb2Qgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3Iga2VybmVsIGluZm9ybWF0aW9uIGxlYWtzIGlzIGVzc2VudGlhbGx5IHplcm8uIFRoaXMgbWVhbnMgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBhbnl0aGluZyBLTVNBTiB3b3VsZCBjYXRjaCBkaXJlY3RseS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIG1lbW9yeSBjb3JydXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIGBjdHgtXHUwMDNlc3VibWl0dGVyX3Rhc2tgIHdvdWxkIGJlIGJldHRlciBoYW5kbGVkIGJ5IEtBU0FOLlxuXG5TbywgeWVhaCwgZ2l2ZW4gdGhhdCwgSSdtIGNvbWZvcnRhYmxlIHN0YXRpbmcgdGhhdCBOZWVkc0tNU0FOIGlzIGZhbHNlIGhlcmUuIEl0J3MgYSBzeW5jaHJvbml6YXRpb24gYW5kIHNjaGVkdWxpbmcgZml4LCBub3QgYSBtZW1vcnkgc2FmZXR5IG9uZSwgYXQgbGVhc3QgaW4gYW55IGRpcmVjdCBzZW5zZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQsIGZvY3VzZWQgYnVnIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NiwiT3V0cHV0VG9rZW5zIjoyMDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzo0MDowMS41MDM1ODYzMDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpb19lamVjdF9icGZgIGluIGBpb191cmluZy9icGYtb3BzLmNgIHRvIHdha2UgdXAgYSBzbGVlcGluZyB0YXNrIChgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2AgaXMgaW52YWxpZCkgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpb19lamVjdF9icGZgIGluIGBpb191cmluZy9icGYtb3BzLmNgIHRvIHdha2UgdXAgYSBzbGVlcGluZyB0YXNrIChgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2ApIHdoZW4gYGN0eC1cXHUwMDNlbG9vcF9zdGVwYCBpcyBzZXQgdG8gTlVMTC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBoYW5nIHdoZXJlIGEgdGFzayBtaWdodCBiZSBzbGVlcGluZyBpbiBgaW9fbG9vcF93YWl0KClgIGFuZCB3b3VsZCBub3QgYmUgd29rZW4gdXAgb3RoZXJ3aXNlLiBUaGlzIGNoYW5nZSBpcyByZWxhdGVkIHRvIHRhc2sgc2NoZWR1bGluZywgc3luY2hyb25pemF0aW9uLCBhbmQgd2FraW5nIHVwIHNsZWVwaW5nIHRocmVhZHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBpZiBgY3R4LVxcdTAwM2VzdWJtaXR0ZXJfdGFza2AgaXMgaW52YWxpZCkgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow25d29[1] Phase: Succeeded StartedAt: 2026-08-14 03:40:12 +0000 UTC FinishedAt: 2026-08-14 03:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 03:40:12 +0000 UTC FinishedAt: 2026-08-14 03:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2] Phase: Succeeded StartedAt: 2026-08-14 03:40:12 +0000 UTC FinishedAt: 2026-08-14 05:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 03:40:12 +0000 UTC FinishedAt: 2026-08-14 05:10:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 03:40:12 +0000 UTC FinishedAt: 2026-08-14 03:40:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 03:40:12 +0000 UTC FinishedAt: 2026-08-14 03:40:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow25d29/series-workflow25d29-convert-artifact-3832203069/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 03:40:22 +0000 UTC FinishedAt: 2026-08-14 03:57:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 03:40:22 +0000 UTC FinishedAt: 2026-08-14 03:57:24 +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:*3a475ccc-201c-4bc2-acd7-89f5f950e706,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-workflow25d29/series-workflow25d29-convert-artifact-3832203069/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": "faf73de0-ed1e-4064-b17c-651939e634a6", "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-workflow25d29/series-workflow25d29-build-action-113504371/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 03:40:22 +0000 UTC FinishedAt: 2026-08-14 03:57:14 +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:*3a475ccc-201c-4bc2-acd7-89f5f950e706,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-workflow25d29/series-workflow25d29-convert-artifact-3832203069/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": "faf73de0-ed1e-4064-b17c-651939e634a6", "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-workflow25d29/series-workflow25d29-build-action-113504371/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 03:57:24 +0000 UTC FinishedAt: 2026-08-14 03:57:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 03:57:24 +0000 UTC FinishedAt: 2026-08-14 03:57:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 03:57:24 +0000 UTC FinishedAt: 2026-08-14 03:57:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 03:57:24 +0000 UTC FinishedAt: 2026-08-14 03:57:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow25d29/series-workflow25d29-convert-artifact-1505491096/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 03:57:34 +0000 UTC FinishedAt: 2026-08-14 03:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 03:57:34 +0000 UTC FinishedAt: 2026-08-14 03:59:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*faf73de0-ed1e-4064-b17c-651939e634a6,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-workflow25d29/series-workflow25d29-build-action-113504371/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-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 03:59:34 +0000 UTC FinishedAt: 2026-08-14 03:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 03:59:34 +0000 UTC FinishedAt: 2026-08-14 03:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 03:59:34 +0000 UTC FinishedAt: 2026-08-14 04:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 03:59:34 +0000 UTC FinishedAt: 2026-08-14 04:19:46 +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:*3a475ccc-201c-4bc2-acd7-89f5f950e706,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-workflow25d29/series-workflow25d29-convert-artifact-1505491096/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": "150a9357-0348-4dcf-8ccf-f62183cad24a", "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-workflow25d29/series-workflow25d29-build-action-4063187204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 03:59:34 +0000 UTC FinishedAt: 2026-08-14 04:19:36 +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:*3a475ccc-201c-4bc2-acd7-89f5f950e706,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-workflow25d29/series-workflow25d29-convert-artifact-1505491096/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": "150a9357-0348-4dcf-8ccf-f62183cad24a", "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-workflow25d29/series-workflow25d29-build-action-4063187204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 04:19:46 +0000 UTC FinishedAt: 2026-08-14 04:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 04:19:46 +0000 UTC FinishedAt: 2026-08-14 04:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 04:19:46 +0000 UTC FinishedAt: 2026-08-14 04:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 04:19:46 +0000 UTC FinishedAt: 2026-08-14 04:21:41 +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:*150a9357-0348-4dcf-8ccf-f62183cad24a,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-workflow25d29/series-workflow25d29-build-action-4063187204/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-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 05:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 05:10:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"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:*faf73de0-ed1e-4064-b17c-651939e634a6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*150a9357-0348-4dcf-8ccf-f62183cad24a,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-workflow25d29/series-workflow25d29-build-action-113504371/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-workflow25d29/series-workflow25d29-build-action-4063187204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 04:22:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 04:21:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"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-workflow25d29/series-workflow25d29-convert-artifact-270946673/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 04:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 04:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 04:21:51 +0000 UTC FinishedAt: 2026-08-14 04:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 04:22:01 +0000 UTC FinishedAt: 2026-08-14 05:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["bpf","io_uring"],"focus_symbols":["io_unregister_bpf_ops","bpf_io_unreg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"26d3726c-1082-43d6-98ff-ccba7db4d044","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 04:22:01 +0000 UTC FinishedAt: 2026-08-14 05:09:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*faf73de0-ed1e-4064-b17c-651939e634a6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*150a9357-0348-4dcf-8ccf-f62183cad24a,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-workflow25d29/series-workflow25d29-build-action-113504371/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-workflow25d29/series-workflow25d29-build-action-4063187204/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-workflow25d29/series-workflow25d29-convert-artifact-270946673/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,}