Name: series-workflow9qn8t Phase: Succeeded StartedAt: 2026-06-30 10:28:55 +0000 UTC FinishedAt: 2026-06-30 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[0] Phase: Succeeded StartedAt: 2026-06-30 10:28:55 +0000 UTC FinishedAt: 2026-06-30 10:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 10:28:55 +0000 UTC FinishedAt: 2026-06-30 10:44:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES" ], "series_id": "b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "inet_dump_fib" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjljNDEzNmM1ODk1NmU0MzI4YmE3M2NiYzNiNTY5YjJiNDlkMzg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTA6NDM6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuaW5kZXggNDIyMTI5NzBkNzM1NDAuLjI0ODg5NWU3ZWEwNjcwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG5AQCAtMTAxOSwxMCAmIzQzOzEwMTksMTEgQEAgc3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdFx0LmR1bXBfcm91dGVzID0gdHJ1ZSxcbiBcdFx0LmR1bXBfZXhjZXB0aW9ucyA9IHRydWUsXG4gXHR9O1xuLVx0dW5zaWduZWQgaW50IGUgPSAwLCBzX2UsIGgsIHNfaDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0aW50IGR1bXBlZCA9IDAsIGVyciA9IDA7XG4gXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaCwgc19oO1xuJiM0MztcdHUzMiBzX2lkO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWYgKGNiLVx1MDAzZXN0cmljdF9jaGVjaykge1xuQEAgLTEwNTQsMjkgJiM0MzsxMDU1LDI4IEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXHR9XG4gXG4gXHRzX2ggPSBjYi1cdTAwM2VhcmdzWzBdO1xuLVx0c19lID0gY2ItXHUwMDNlYXJnc1sxXTtcbiYjNDM7XHRzX2lkID0gY2ItXHUwMDNlYXJnc1sxXTtcbiBcbiBcdGVyciA9IDA7XG4tXHRmb3IgKGggPSBzX2g7IGggXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2UgPSAwKSB7XG4tXHRcdGUgPSAwO1xuJiM0MztcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7XG4gXHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCkge1xuLVx0XHRcdGlmIChlIFx1MDAzYyBzX2UpXG4tXHRcdFx0XHRnb3RvIG5leHQ7XG4mIzQzO1x0XHRcdGlmIChzX2lkIFx1MDAyNlx1MDAyNiB0Yi1cdTAwM2V0Yl9pZCAhPSBzX2lkKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdFx0c19pZCA9IDA7XG4gXHRcdFx0aWYgKGR1bXBlZClcbiBcdFx0XHRcdG1lbXNldChcdTAwMjZjYi1cdTAwM2VhcmdzWzJdLCAwLCBzaXplb2YoY2ItXHUwMDNlYXJncykgLVxuIFx0XHRcdFx0XHRcdCAyICogc2l6ZW9mKGNiLVx1MDAzZWFyZ3NbMF0pKTtcbiYjNDM7XHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IHRiLVx1MDAzZXRiX2lkO1xuIFx0XHRcdGVyciA9IGZpYl90YWJsZV9kdW1wKHRiLCBza2IsIGNiLCBcdTAwMjZmaWx0ZXIpO1xuIFx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdFx0XHRnb3RvIG91dDtcbiBcdFx0XHRkdW1wZWQgPSAxO1xuLW5leHQ6XG4tXHRcdFx0ZSYjNDM7JiM0Mzs7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4gXG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0X2R1bXBfZmliJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGhvdyB0aGUgbmV0bGluayBkdW1wIG9mIElQdjQgcm91dGluZyB0YWJsZXMgcmVzdW1lcyBhZnRlciBiZWluZyBpbnRlcnJ1cHRlZCAoZS5nLiwgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwpLiBJdCByZXBsYWNlcyB0aGUgdXNlIG9mIGEgYnVja2V0IGluZGV4IHdpdGggdGhlIGFjdHVhbCB0YWJsZSBJRCB0byBhdm9pZCBza2lwcGluZyB0YWJsZXMgaWYgdGhlIGhhc2ggY2hhaW4gaXMgbW9kaWZpZWQgYmV0d2VlbiBkdW1wIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIG5ldGxpbmsgaW50ZXJmYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZjljNDEzNmM1ODk1NmU0MzI4YmE3M2NiYzNiNTY5YjJiNDlkMzg2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMTA6NDM6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jCmluZGV4IDQyMjEyOTcwZDczNTQwLi4yNDg4OTVlN2VhMDY3MCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKQEAgLTEwMTksMTAgJiM0MzsxMDE5LDExIEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJCS5kdW1wX3JvdXRlcyA9IHRydWUsCiAJCS5kdW1wX2V4Y2VwdGlvbnMgPSB0cnVlLAogCX07Ci0JdW5zaWduZWQgaW50IGUgPSAwLCBzX2UsIGgsIHNfaDsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDsKIAlpbnQgZHVtcGVkID0gMCwgZXJyID0gMDsKIAlzdHJ1Y3QgZmliX3RhYmxlICp0YjsKJiM0MzsJdW5zaWduZWQgaW50IGgsIHNfaDsKJiM0MzsJdTMyIHNfaWQ7CiAKIAlyY3VfcmVhZF9sb2NrKCk7CiAJaWYgKGNiLSZndDtzdHJpY3RfY2hlY2spIHsKQEAgLTEwNTQsMjkgJiM0MzsxMDU1LDI4IEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJfQogCiAJc19oID0gY2ItJmd0O2FyZ3NbMF07Ci0Jc19lID0gY2ItJmd0O2FyZ3NbMV07CiYjNDM7CXNfaWQgPSBjYi0mZ3Q7YXJnc1sxXTsKIAogCWVyciA9IDA7Ci0JZm9yIChoID0gc19oOyBoICZsdDsgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfZSA9IDApIHsKLQkJZSA9IDA7CiYjNDM7CWZvciAoaCA9IHNfaDsgaCAmbHQ7IEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2lkID0gMCkgewogCQloZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07CiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHsKLQkJCWlmIChlICZsdDsgc19lKQotCQkJCWdvdG8gbmV4dDsKJiM0MzsJCQlpZiAoc19pZCAmYW1wOyZhbXA7IHRiLSZndDt0Yl9pZCAhPSBzX2lkKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCQlzX2lkID0gMDsKIAkJCWlmIChkdW1wZWQpCiAJCQkJbWVtc2V0KCZhbXA7Y2ItJmd0O2FyZ3NbMl0sIDAsIHNpemVvZihjYi0mZ3Q7YXJncykgLQogCQkJCQkJIDIgKiBzaXplb2YoY2ItJmd0O2FyZ3NbMF0pKTsKJiM0MzsJCQljYi0mZ3Q7YXJnc1sxXSA9IHRiLSZndDt0Yl9pZDsKIAkJCWVyciA9IGZpYl90YWJsZV9kdW1wKHRiLCBza2IsIGNiLCAmYW1wO2ZpbHRlcik7CiAJCQlpZiAoZXJyICZsdDsgMCkKIAkJCQlnb3RvIG91dDsKIAkJCWR1bXBlZCA9IDE7Ci1uZXh0OgotCQkJZSYjNDM7JiM0Mzs7CiAJCX0KIAl9CiBvdXQ6CiAKLQljYi0mZ3Q7YXJnc1sxXSA9IGU7CiAJY2ItJmd0O2FyZ3NbMF0gPSBoOwogCiB1bmxvY2s6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBSb3V0aW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AuIFNwZWNpZmljYWxseSwgdGhlIGZ1bmN0aW9uIGBpbmV0X2R1bXBfZmliYC4gSXQgc2VlbXMgdGhlIGNoYW5nZSBpcyBzdWJ0bGUsIGFmZmVjdGluZyBob3cgd2UgcmVzdW1lIHRoZSBpdGVyYXRpb24gdGhyb3VnaCB0aGUgYGZpYl90YWJsZV9oYXNoYC4gQXBwYXJlbnRseSwgaW5zdGVhZCBvZiB1c2luZyBgc19lYCwgYW4gaW5kZXggaW50byB0aGUgYnVja2V0LCBpdCYjMzk7cyB1c2luZyBgc19pZGAsIHRoZSB0YWJsZSBJRCwgdG8gcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIGluIHRoZSBuZXRsaW5rIGR1bXAgZm9yIElQdjQgRklCIChyb3V0aW5nIHRhYmxlcykuIE5vdGhpbmcganVtcHMgb3V0IGFzIGltbWVkaWF0ZWx5IHByb2JsZW1hdGljLCBidXQgdGhpcyBraW5kIG9mIG5ldGxpbmsgaW50ZXJhY3Rpb24gaXMgYSBjbGFzc2ljIGFyZWEgZm9yIHN1YnRsZSBidWdzLCBzbyBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzIGNoYW5nZS4KCkxldCYjMzk7cyBkaXZlIGludG8gYGluZXRfZHVtcF9maWJgIGl0c2VsZi4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgZHVtcGluZyBJUHY0IHJvdXRlcyB2aWEgbmV0bGluayDigJMgaW1wb3J0YW50IHRvIG5ldHdvcmsgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSBuZWVkcyBjYXJlZnVsIHJldmlldy4gSSYjMzk7bSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdW5kZXIgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGJ1dCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpdCBpcyBwcm9iYWJseSBpbmNsdWRlZCBhcyBwYXJ0IG9mIGJhc2ljIElQdjQgcm91dGluZywgc28gaXQgbWlnaHQgYWx3YXlzIGJlIHByZXNlbnQuIEkgc2hvdWxkIGNvbmZpcm0gdGhhdCBgaW5ldF9kdW1wX2ZpYmAgaXMsIGluIGZhY3QsIGFsd2F5cyBjb21waWxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmV0X2R1bXBfZmliJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTAxMj1FWFBPUlRfU1lNQk9MX0dQTChpcF92YWxpZF9maWJfZHVtcF9yZXEpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTAxMy1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwMTQ6c3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwMTUte1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2ODg9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIGZpYl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2OTItXHQgLmRvaXQgPSBpbmV0X3J0bV9kZWxyb3V0ZSwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2OTM6XHR7LnByb3RvY29sID0gUEZfSU5FVCwgLm1zZ3R5cGUgPSBSVE1fR0VUUk9VVEUsIC5kdW1waXQgPSBpbmV0X2R1bXBfZmliLFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5NC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRFVNUF9VTkxPQ0tFRCB8IFJUTkxfRkxBR19EVU1QX1NQTElUX05MTV9ET05FfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDkxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKlJvdXRlIFJldHJpZXZhbCBEZWJ1Z2dpbmc6IERpdmluZyBpbnRvIHRoZSBLZXJuZWwqKgoKUmlnaHQsIHNvIHRoaXMgYFJUTV9HRVRST1VURWAgZHVtcGl0IGhhbmRsZXIgZm9yIGBQRl9JTkVUYCBoYXMgYmVlbiBmbGFnZ2VkLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbWVhbnMgdGhlIHN5c3RlbSAqY2FuKiByZWFjaCBpdC4gTm93LCB0aGUgcmVhbCBpbnZlc3RpZ2F0aW9uIGJlZ2lucy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwcmVyZXF1aXNpdGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhpcyBiZWhhdmlvci4gUGVyaGFwcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGZsYWcgSSYjMzk7dmUgb3Zlcmxvb2tlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudGVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoYXQgbW9kdWxlJiMzOTtzIGluY2x1c2lvbiBpcyBjb25kaXRpb25hbC4gQWhhLCBpdCYjMzk7cyBub3QgY29udGluZ2VudCBvbiBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AuIEV4Y2VsbGVudC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gU28gYGZpYl9mcm9udGVuZC5jYCBpcyBhbHdheXMgcHJlc2VudCBmb3IgSVB2NC4KCk5vdywgbGV0IG1lIHBlZWsgaW50byBgbmV0L2lwdjQvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmRpdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIGBSVE1fR0VUUk9VVEVgIGhhbmRsaW5nLiBJdCYjMzk7cyB0aW1lIHRvIGNvbmZpcm0gdGhlcmUgYXJlIG5vIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgZmFjdG9ycyBJJiMzOTttIG92ZXJsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYl9mcm9udGVuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXG4tLVxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNTpcdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSVB2NCBSb3V0aW5nIFRhYmxlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCBldmVyeXRoaW5nIGlzLCBhcyB1c3VhbCwgY29tcGlsZWQgd2l0aCBJUHY0IGluIG1pbmQuIFRoaXMgaXMgc3RhbmRhcmQsIGJ1dCBnb29kIHRvIGNvbmZpcm0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBnaXZlbiB0aGlzIGNvbnRleHQsIHdoZXRoZXIgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGNvbWVzIGludG8gcGxheSBoZXJlLiBJdCBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIHJlbGV2YW50IHdoZW4gY29uc2lkZXJpbmcgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMsIGJ1dCB0aGVuIGFnYWluLCBgaW5ldF9kdW1wX2ZpYmAgZnVuY3Rpb25zIGNvcnJlY3RseSwgZXZlbiB3aXRob3V0IGV4cGxpY2l0bHkgZW5hYmxpbmcgbXVsdGlwbGUgdGFibGVzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4KCkhvbGQgb24sIEkgc2VlIGBGSUJfVEFCTEVfSEFTSFNaYCBiZWluZyB1c2VkLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBwYXJhbWV0ZXIgcmVsYXRlZCB0byB0aGUgRmlib25hY2NpIGhlYXAgaGFzaCBzaXplLCBhbmQgaXMgYWxtb3N0IGNlcnRhaW5seSBjb25uZWN0ZWQgdG8gcGVyZm9ybWFuY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYEZJQl9UQUJMRV9IQVNIU1pgICphY3R1YWxseSogbWVhbnMuIExldCBtZSBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IHZhcmlhYmxlIHRvIHNlZSBob3cgdGhlIHN5c3RlbSBpcyBiZWhhdmluZy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUga2V5IHRvIHRoZSBpbnRlcm5hbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RklCX1RBQkxFX0hBU0hTWiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9maWJfZnJvbnRlbmQuYz03Nz1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNi1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwNzpcdGggPSBpZCBcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwOC1cdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZ0Yi1cdTAwM2V0Yl9obGlzdCwgXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF0pO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTExND1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEyMS1cdFx0aWQgPSBSVF9UQUJMRV9NQUlOO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTIyOlx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTIzLVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE4Nj12b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTkwLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTkxOlx0Zm9yIChoID0gMDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE5Mi1cdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xMDE0PXN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTA2MC1cdGVyciA9IDA7XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxMDYxOlx0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoJiM0MzsmIzQzOywgc19pZCA9IDApIHtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNjItXHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTU0PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NTYtXHRpbnQgZXJyO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU1NzpcdHNpemVfdCBzaXplID0gc2l6ZW9mKHN0cnVjdCBobGlzdF9oZWFkKSAqIEZJQl9UQUJMRV9IQVNIU1o7XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU4LVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE1OTA9c3RhdGljIHZvaWQgaXBfZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjAzLVx0ICovXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjA0Olx0Zm9yIChpID0gRklCX1RBQkxFX0hBU0hTWiAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MDUtXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaV07XG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYz0yMTMyPXZvaWQgZmliX2luZm9fbm90aWZ5X3VwZGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubF9pbmZvICppbmZvKVxuLS1cbm5ldC9pcHY0L2ZpYl90cmllLmMtMjEzNS1cbm5ldC9pcHY0L2ZpYl90cmllLmM6MjEzNjpcdGZvciAoaCA9IDA7IGggXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC9maWJfdHJpZS5jLTIxMzctXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYz0yMjA0PWludCBmaWJfbm90aWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTIyMDktXG5uZXQvaXB2NC9maWJfdHJpZS5jOjIyMTA6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoJiM0MzsmIzQzOykge1xubmV0L2lwdjQvZmliX3RyaWUuYy0yMjExLVx0XHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xuLS1cbm5ldC9pcHY0L2ZpYl90cmllLmM9MjYwOD1zdGF0aWMgaW50IGZpYl90cmllc3RhdF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI2MTgtXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2MTk6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoJiM0MzsmIzQzOykge1xubmV0L2lwdjQvZmliX3RyaWUuYy0yNjIwLVx0XHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xuLS1cbm5ldC9pcHY0L2ZpYl90cmllLmM9MjY0NT1zdGF0aWMgc3RydWN0IGtleV92ZWN0b3IgKmZpYl90cmllX2dldF9pZHgoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCBwb3MpXG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjUxLVxubmV0L2lwdjQvZmliX3RyaWUuYzoyNjUyOlx0Zm9yIChoID0gMDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L2ZpYl90cmllLmMtMjY1My1cdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jPTI2Nzk9c3RhdGljIHZvaWQgKmZpYl90cmllX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI2OTQtXHQvKiB3YWxrIHJlc3Qgb2YgdGhpcyBoYXNoIGNoYWluICovXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2OTU6XHRoID0gdGItXHUwMDNldGJfaWQgXHUwMDI2IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7XG5uZXQvaXB2NC9maWJfdHJpZS5jLTI2OTYtXHR3aGlsZSAoKHRiX25vZGUgPSByY3VfZGVyZWZlcmVuY2UoaGxpc3RfbmV4dF9yY3UoXHUwMDI2dGItXHUwMDNldGJfaGxpc3QpKSkpIHtcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDMtXHQvKiBuZXcgaGFzaCBjaGFpbiAqL1xubmV0L2lwdjQvZmliX3RyaWUuYzoyNzA0Olx0d2hpbGUgKCYjNDM7JiM0MztoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaKSB7XG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDUtXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU1MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZJQiBUYWJsZSBEdW1wIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBpbmV0X2R1bXBfZmliYCBmdW5jdGlvbiBhZ2FpbiwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBGSUJfVEFCTEVfSEFTSFNaYCBpcyBhIGZ1bmRhbWVudGFsIGNvbnN0YW50IGhlcmUsIHVzZWQgdGhyb3VnaG91dC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLCBhcyBpdCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBGSUIgdGFibGVzIGFuZCBkdW1wcyB0aGVtLiBUaGUgY3J1eCBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgaG93IGl0IGhhbmRsZXMgcmVzdW1pbmcgYSBkdW1wLiBQcmV2aW91c2x5LCBpdCB1c2VkIGBzX2VgIHRvIHNraXAgdGFibGVzLCBhbmQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoaXMgaW5kZXgtYmFzZWQgYXBwcm9hY2ggbGlrZWx5IGJlY2FtZSBwcm9ibGVtYXRpYyB3aGVuIHRhYmxlcyB3ZXJlIGFkZGVkIG9yIHJlbW92ZWQgZHluYW1pY2FsbHkuIFRoZSBpbmRleCBgc19lYCBjb3VsZCBlYXNpbHkgYmVjb21lIG1pc2FsaWduZWQsIG9yIHRoZSBza2lwcGluZyBtaWdodCBoYXZlIGJlZW4gc2ltcGx5IGluY29ycmVjdC4gVGhlIHBhdGNoIHVzZXMgYHNfaWRgLCB3aGljaCByZXByZXNlbnRzIHRoZSB0YWJsZSBJRCBhbmQgcmVzdW1lcyB0aGUgZHVtcCBmcm9tIHRoZSBwcmVjaXNlIHRhYmxlIElEIGxhc3QgcHJvY2Vzc2VkLgoKTm93LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgY29kZSBjaGFuZ2VzIGEgYml0IG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBgc19oYCByZXByZXNlbnRzIHRoZSBzdGFydGluZyBoYXNoIGJ1Y2tldCwgdGhhdCBtdWNoIGlzIHVuY2hhbmdlZC4gVGhlIGNydWNpYWwgY2hhbmdlIGlzIHJlcGxhY2luZyBgc19lYCAoYW4gaW5kZXgpIHdpdGggYHNfaWRgIChhIHRhYmxlIElEKS4gSW5zdGVhZCBvZiBpbmNyZW1lbnRpbmcgYHNfZWAsIGl0IG5vdyBzZXRzIGBzX2lkYCB0byAwLiBJdCBtZWFucyB0aGF0IGBzX2lkYCBpcyBvbmx5IHNldCB3aGVuIHdlIG5lZWQgdG8gcmVzdW1lIGZyb20gdGhhdCBwYXJ0aWN1bGFyIHRhYmxlIElELCBhbmQgd2UgY2FuIHN0YXJ0IGR1bXBpbmcgZnJvbSB0aGF0IHRhYmxlLCB3aGljaCBpcyBtb3JlIHJlbGlhYmxlLiBXZSYjMzk7cmUgbm93IGRpcmVjdGx5IGNvbXBhcmluZyB0YWJsZSBJRHMgKGB0Yi0mZ3Q7dGJfaWRgKSB3aXRoaW4gdGhlIGxvb3AuIFRoZSBgY2ItJmd0O2FyZ3NbMV1gIGlzIHVwZGF0ZWQgd2l0aCB0aGUgY3VycmVudCB0YWJsZSYjMzk7cyBJRC4KClRoaXMgY2hhbmdlIGZ1bmN0aW9uYWxseSBhbHRlcnMgYGluZXRfZHVtcF9maWJgLiBJIHNob3VsZCBub3RlIHRoYXQgYElQX01VTFRJUExFX1RBQkxFU2AgbWF5IGJlIHVzZWZ1bCwgZXNwZWNpYWxseSB3aGVuIHRlc3RpbmcgdGhlIGR1bXAsIHRvIGdldCBhIGR1bXAgdGhhdCBzcGFucyBtdWx0aXBsZSBuZXRsaW5rIG1lc3NhZ2VzLCBhbmQgcmVxdWlyZXMgcmVzdW1pbmcuIEl0JiMzOTtzIG5vdCBzdHJpY3RseSByZXF1aXJlZCB0byAqY29tcGlsZSogdGhpcyBjb2RlLCBidXQgaXQmIzM5O3MgZXNzZW50aWFsIGZvciBwcm9wZXJseSB0ZXN0aW5nIGl0cyBmdW5jdGlvbmFsaXR5IGFuZCBkZW1vbnN0cmF0aW5nIHRoZSByZXN1bWUgY2FwYWJpbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AgaXMgZXZlbiBhIHJlYWwgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5zdXJlIEkgY2FuIHByb3Blcmx5IHRlc3QgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX01VTFRJUExFX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz01Nj1jb25maWcgSVBfRklCX1RSSUVfU1RBVFNcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTYyLVxubmV0L2lwdjQvS2NvbmZpZzo2Mzpjb25maWcgSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtJUDogcG9saWN5IHJvdXRpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQb2xpY3kgUm91dGluZyBDb25maWd1cmF0aW9uIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHBvbGljeSByb3V0aW5nIGFuZCBjb25maXJtaW5nIHRoYXQgYElQX01VTFRJUExFX1RBQkxFU2AgaXMgaW5kZWVkIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVubG9ja2luZyB0aGUgcG93ZXIgb2YgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMuIFdpdGhvdXQgaXQsIHdlJiMzOTtyZSBzdHVjayB3aXRoIGp1c3QgdGhlIGRlZmF1bHQgbWFpbiBhbmQgbG9jYWwgdGFibGVzLCB3aGljaCBzZXZlcmVseSBsaW1pdHMgdGhlIGZsZXhpYmlsaXR5IHdlIG5lZWQgZm9yIHNvcGhpc3RpY2F0ZWQgdHJhZmZpYyBtYW5hZ2VtZW50LiBCdXQgd2l0aCB0aGlzIGVuYWJsZWQsIHdlIGNhbiBsZXZlcmFnZSB1cCB0byAyNTUgb3IgZXZlbiBtb3JlIHRhYmxlcywgd2hpY2ggb3BlbnMgdXAgYSB3b3JsZCBvZiBwb3NzaWJpbGl0aWVzLiBUaGVyZWZvcmUsIGVuYWJsaW5nIGBJUF9NVUxUSVBMRV9UQUJMRVNgIHNlZW1zIGxpa2UgYSBuby1icmFpbmVyIGZvciBhbnkgcG9saWN5IHJvdXRpbmcgaW1wbGVtZW50YXRpb24uCgpOb3csIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhbHNvIGltcG9ydGFudC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvZGUuIExldCYjMzk7cyBkZWx2ZSBpbnRvIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQga25vYnMgd2Ugc2hvdWxkIGNvbnNpZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtNTAtXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzo1MTojaWZuZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTExND1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzMS19XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxMzI6I2VuZGlmIC8qIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVMgKi9cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzMy1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTEzND1zdGF0aWMgdm9pZCBmaWJfcmVwbGFjZV90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWJfdGFibGUgKm9sZCxcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzYte1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTM3OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzgtXHRzd2l0Y2ggKG5ldy1cdTAwM2V0Yl9pZCkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTMxMT1ib29sIGZpYl9pbmZvX25oX3VzZXNfZGV2KHN0cnVjdCBmaWJfaW5mbyAqZmksIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMzEzLVx0Ym9vbCBkZXZfbWF0Y2ggPSBmYWxzZTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjMxNDojaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMzE1LVx0aWYgKHVubGlrZWx5KGZpLVx1MDAzZW5oKSkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTY5MT1pbnQgZmliX2d3X2Zyb21fdmlhKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsIHN0cnVjdCBubGF0dHIgKm5sYSxcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy03MTQtXHRjYXNlIEFGX0lORVQ2OlxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6NzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtNzE2LVx0XHRpZiAoYWxlbiAhPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE0NTY9c3RhdGljIGludCBmaWJfaW5ldGFkZHJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTQ2NC1cdFx0ZmliX2FkZF9pZmFkZHIoaWZhKTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE0NjU6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE0NjYtXHRcdGZpYl9zeW5jX3VwKGRldiwgUlROSF9GX0RFQUQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE0ODc9c3RhdGljIGludCBmaWJfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MTEtXHRcdH1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTI6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MTMtXHRcdGZpYl9zeW5jX3VwKGRldiwgUlROSF9GX0RFQUQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE1NTQ9c3RhdGljIGludCBfX25ldF9pbml0IGlwX2ZpYl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU2Mi1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1NjM6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NjQtXHQvKiBEZWZhdWx0IHRvIDMtdHVwbGUgKi9cbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTkwPXN0YXRpYyB2b2lkIGlwX2ZpYl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU5NC1cdEFTU0VSVF9SVE5MX05FVChuZXQpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU5NTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU5Ni1cdFJDVV9JTklUX1BPSU5URVIobmV0LVx1MDAzZWlwdjQuZmliX21haW4sIE5VTEwpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTc9c3RhdGljIGludCBfX25ldF9pbml0IGZpYl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTYyMC1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2MjE6I2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjIyLVx0YXRvbWljX3NldChcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfbnVtX3RjbGFzc2lkX3VzZXJzLCAwKTtcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjUwLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY1MTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY1Mi1cdGZpYjRfcnVsZXNfZXhpdChuZXQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2NzE9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWJfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY3Mi17XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjczOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjc0LVx0ZmliNF9ydWxlc19leGl0KG5ldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMzkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYElQX01VTFRJUExFX1RBQkxFU2AgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBJdCYjMzk7cyB0aGUgbW9zdCByZWxldmFudCBmbGFnIHRvIGNvbnNpZGVyIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZWxzZSB0aGlzIHBhdGNoIHRvdWNoZXMsIHRob3VnaC4KClJpZ2h0LCB0aGUgY2hhbmdlcyBzZWVtIGlzb2xhdGVkIHRvIGBpbmV0X2R1bXBfZmliYC4gTGV0IG1lIGpvdCBkb3duIHRoYXQgZm9jdXMgc3ltYm9sOiBgaW5ldF9kdW1wX2ZpYmAuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgcHJldHR5IGNsZWFyIGZyb20gdGhlIHJlYXNvbmluZy4gVGhpcyBwYXRjaCBpcyBmaXhpbmcgdGhlIHdheSB0aGUgSVB2NCByb3V0aW5nIHRhYmxlIG5ldGxpbmsgZHVtcCBoYW5kbGVzIGludGVycnVwdGlvbnMgYW5kIHJlc3VtZXMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGJ1ZyB3aGVyZSB0YWJsZSBJRHMgbWlnaHQgYmUgc2tpcHBlZCBpZiB0aGUgdW5kZXJseWluZyBoYXNoIGNoYWluIGlzIG1vZGlmaWVkIGJldHdlZW4gbmV0bGluayBjYWxscy4gU3dpdGNoaW5nIGZyb20gYSBidWNrZXQgaW5kZXggdG8gdGhlIGFjdHVhbCB0YWJsZSBJRCBmb3IgcmVzdW1pbmcgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgSVB2NCByb3V0aW5nIG5ldGxpbmsgaW50ZXJmYWNlLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIHRlc3RpbmcgaXRzIHJvYnVzdG5lc3MgdW5kZXIgcHJlc3N1cmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBpbmV0X2R1bXBfZmliYCBmdW5jdGlvbiBpdHNlbGYsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jYC4gR290dGEgY29uZmlybSB0aGUgZGV0YWlscyBhcmUgd2hhdCBJIHRoaW5rIHRoZXkgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAxNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAxNDpcdHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4xMDE1Olx0e1xuMTAxNjpcdFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGggPSBjYi1cdTAwM2VubGg7XG4xMDE3Olx0XHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXHUwMDNlc2spO1xuMTAxODpcdFx0c3RydWN0IGZpYl9kdW1wX2ZpbHRlciBmaWx0ZXIgPSB7XG4xMDE5Olx0XHRcdC5kdW1wX3JvdXRlcyA9IHRydWUsXG4xMDIwOlx0XHRcdC5kdW1wX2V4Y2VwdGlvbnMgPSB0cnVlLFxuMTAyMTpcdFx0fTtcbjEwMjI6XHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuMTAyMzpcdFx0aW50IGR1bXBlZCA9IDAsIGVyciA9IDA7XG4xMDI0Olx0XHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbjEwMjU6XHRcdHVuc2lnbmVkIGludCBoLCBzX2g7XG4xMDI2Olx0XHR1MzIgc19pZDtcbjEwMjc6XHRcbjEwMjg6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjEwMjk6XHRcdGlmIChjYi1cdTAwM2VzdHJpY3RfY2hlY2spIHtcbjEwMzA6XHRcdFx0ZXJyID0gaXBfdmFsaWRfZmliX2R1bXBfcmVxKG5ldCwgbmxoLCBcdTAwMjZmaWx0ZXIsIGNiKTtcbjEwMzE6XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbjEwMzI6XHRcdFx0XHRnb3RvIHVubG9jaztcbjEwMzM6XHRcdH0gZWxzZSBpZiAobmxtc2dfbGVuKG5saCkgXHUwMDNlPSBzaXplb2Yoc3RydWN0IHJ0bXNnKSkge1xuMTAzNDpcdFx0XHRzdHJ1Y3QgcnRtc2cgKnJ0bSA9IG5sbXNnX2RhdGEobmxoKTtcbjEwMzU6XHRcbjEwMzY6XHRcdFx0ZmlsdGVyLmZsYWdzID0gcnRtLVx1MDAzZXJ0bV9mbGFncyBcdTAwMjYgKFJUTV9GX1BSRUZJWCB8IFJUTV9GX0NMT05FRCk7XG4xMDM3Olx0XHR9XG4xMDM4Olx0XG4xMDM5Olx0XHQvKiBpcHY0IGRvZXMgbm90IHVzZSBwcmVmaXggZmxhZyAqL1xuMTA0MDpcdFx0aWYgKGZpbHRlci5mbGFncyBcdTAwMjYgUlRNX0ZfUFJFRklYKVxuMTA0MTpcdFx0XHRnb3RvIHVubG9jaztcbjEwNDI6XHRcbjEwNDM6XHRcdGlmIChmaWx0ZXIudGFibGVfaWQpIHtcbjEwNDQ6XHRcdFx0dGIgPSBmaWJfZ2V0X3RhYmxlKG5ldCwgZmlsdGVyLnRhYmxlX2lkKTtcbjEwNDU6XHRcdFx0aWYgKCF0Yikge1xuMTA0NjpcdFx0XHRcdGlmIChydG5sX21zZ19mYW1pbHkoY2ItXHUwMDNlbmxoKSAhPSBQRl9JTkVUKVxuMTA0NzpcdFx0XHRcdFx0Z290byB1bmxvY2s7XG4xMDQ4Olx0XG4xMDQ5Olx0XHRcdFx0TkxfU0VUX0VSUl9NU0coY2ItXHUwMDNlZXh0YWNrLCBcJiMzNDtpcHY0OiBGSUIgdGFibGUgZG9lcyBub3QgZXhpc3RcJiMzNDspO1xuMTA1MDpcdFx0XHRcdGVyciA9IC1FTk9FTlQ7XG4xMDUxOlx0XHRcdFx0Z290byB1bmxvY2s7XG4xMDUyOlx0XHRcdH1cbjEwNTM6XHRcdFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFx1MDAyNmZpbHRlcik7XG4xMDU0Olx0XHRcdGdvdG8gdW5sb2NrO1xuMTA1NTpcdFx0fVxuMTA1NjpcdFxuMTA1NzpcdFx0c19oID0gY2ItXHUwMDNlYXJnc1swXTtcbjEwNTg6XHRcdHNfaWQgPSBjYi1cdTAwM2VhcmdzWzFdO1xuMTA1OTpcdFxuMTA2MDpcdFx0ZXJyID0gMDtcbjEwNjE6XHRcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7XG4xMDYyOlx0XHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbjEwNjM6XHRcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCkge1xuMTA2NDpcdFx0XHRcdGlmIChzX2lkIFx1MDAyNlx1MDAyNiB0Yi1cdTAwM2V0Yl9pZCAhPSBzX2lkKVxuMTA2NTpcdFx0XHRcdFx0Y29udGludWU7XG4xMDY2Olx0XG4xMDY3Olx0XHRcdFx0c19pZCA9IDA7XG4xMDY4Olx0XHRcdFx0aWYgKGR1bXBlZClcbjEwNjk6XHRcdFx0XHRcdG1lbXNldChcdTAwMjZjYi1cdTAwM2VhcmdzWzJdLCAwLCBzaXplb2YoY2ItXHUwMDNlYXJncykgLVxuMTA3MDpcdFx0XHRcdFx0XHRcdCAyICogc2l6ZW9mKGNiLVx1MDAzZWFyZ3NbMF0pKTtcbjEwNzE6XHRcdFx0XHRjYi1cdTAwM2VhcmdzWzFdID0gdGItXHUwMDNldGJfaWQ7XG4xMDcyOlx0XHRcdFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFx1MDAyNmZpbHRlcik7XG4xMDczOlx0XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbjEwNzQ6XHRcdFx0XHRcdGdvdG8gb3V0O1xuMTA3NTpcdFx0XHRcdGR1bXBlZCA9IDE7XG4xMDc2Olx0XHRcdH1cbjEwNzc6XHRcdH1cbjEwNzg6XHRvdXQ6XG4xMDc5Olx0XG4xMDgwOlx0XHRjYi1cdTAwM2VhcmdzWzBdID0gaDtcbjEwODE6XHRcbjEwODI6XHR1bmxvY2s6XG4xMDgzOlx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjEwODQ6XHRcdHJldHVybiBlcnI7XG4xMDg1Olx0fVxuMTA4NjpcdFxuMTA4NzpcdC8qIFByZXBhcmUgYW5kIGZlZWQgaW50cmEta2VybmVsIHJvdXRpbmcgcmVxdWVzdC5cbjEwODg6XHQgKiBSZWFsbHksIGl0IHNob3VsZCBiZSBuZXRsaW5rIG1lc3NhZ2UsIGJ1dCA6LSggbmV0bGlua1xuMTA4OTpcdCAqIGNhbiBiZSBub3QgY29uZmlndXJlZCwgc28gdGhhdCB3ZSBmZWVkIGl0IGRpcmVjdGx5XG4xMDkwOlx0ICogdG8gZmliIGVuZ2luZS4gSXQgaXMgbGVnYWwsIGJlY2F1c2UgYWxsIGV2ZW50cyBvY2N1clxuMTA5MTpcdCAqIG9ubHkgd2hlbiBuZXRsaW5rIGlzIGFscmVhZHkgbG9ja2VkLlxuMTA5MjpcdCAqL1xuMTA5MzpcdHN0YXRpYyB2b2lkIGZpYl9tYWdpYyhpbnQgY21kLCBpbnQgdHlwZSwgX19iZTMyIGRzdCwgaW50IGRzdF9sZW4sXG4xMDk0Olx0XHRcdCAgICAgIHN0cnVjdCBpbl9pZmFkZHIgKmlmYSwgdTMyIHJ0X3ByaW9yaXR5KVxuMTA5NTpcdHtcbjEwOTY6XHRcdHN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoaWZhLVx1MDAzZWlmYV9kZXYtXHUwMDNlZGV2KTtcbjEwOTc6XHRcdHUzMiB0Yl9pZCA9IGwzbWRldl9maWJfdGFibGUoaWZhLVx1MDAzZWlmYV9kZXYtXHUwMDNlZGV2KTtcbjEwOTg6XHRcdHN0cnVjdCBmaWJfdGFibGUgKnRiO1xuMTA5OTpcdFx0c3RydWN0IGZpYl9jb25maWcgY2ZnID0ge1xuMTEwMDpcdFx0XHQuZmNfcHJvdG9jb2wgPSBSVFBST1RfS0VSTkVMLFxuMTEwMTpcdFx0XHQuZmNfdHlwZSA9IHR5cGUsXG4xMTAyOlx0XHRcdC5mY19kc3QgPSBkc3QsXG4xMTAzOlx0XHRcdC5mY19kc3RfbGVuID0gZHN0X2xlbixcbjExMDQ6XHRcdFx0LmZjX3ByaW9yaXR5ID0gcnRfcHJpb3JpdHksXG4xMTA1Olx0XHRcdC5mY19wcmVmc3JjID0gaWZhLVx1MDAzZWlmYV9sb2NhbCxcbjExMDY6XHRcdFx0LmZjX29pZiA9IGlmYS1cdTAwM2VpZmFfZGV2LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4LFxuMTEwNzpcdFx0XHQuZmNfbmxmbGFncyA9IE5MTV9GX0NSRUFURSB8IE5MTV9GX0FQUEVORCxcbjExMDg6XHRcdFx0LmZjX25saW5mbyA9IHtcbjExMDk6XHRcdFx0XHQubmxfbmV0ID0gbmV0LFxuMTExMDpcdFx0XHR9LFxuMTExMTpcdFx0fTtcbjExMTI6XHRcbjExMTM6XHRcdGlmICghdGJfaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzgzCgkJCQkJCQlvdXRwdXQ6IDEyMwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIGNvZGUgaXMgcHJlY2lzZWx5IHdoYXQgSSBhbnRpY2lwYXRlZC4gVGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IGl0cyBtb2RpZmljYXRpb24gb2YgYGluZXRfZHVtcF9maWJgLCBzZWVtcyBzb3VuZCwgYW5kIGl0JiMzOTtzIHJlYWR5IGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgY2hhbmdlcyB0byBgaW5ldF9kdW1wX2ZpYmAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUga2V5IHN5bWJvbCB0byB0YXJnZXQgZHVyaW5nIHRlc3RpbmcuIEZ1cnRoZXJtb3JlLCB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZSBgSVBfTVVMVElQTEVfVEFCTEVTYCBjb25maWd1cmF0aW9uLiBSaWdodCwgdGltZSB0byBtb3ZlIGFoZWFkIHdpdGggYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0MzoxNi45OTgyMDU0MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ1MDMzNTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbmV0X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjE2Ljk5ODIxMTMxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1NDA0NjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWY5YzQxMzZjNTg5NTZlNDMyOGJhNzNjYmMzYjU2OWIyYjQ5ZDM4NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxMDo0MzoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXFxuaW5kZXggNDIyMTI5NzBkNzM1NDAuLjI0ODg5NWU3ZWEwNjcwIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXFxuKysrIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcXG5AQCAtMTAxOSwxMCArMTAxOSwxMSBAQCBzdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbiBcXHRcXHQuZHVtcF9yb3V0ZXMgPSB0cnVlLFxcbiBcXHRcXHQuZHVtcF9leGNlcHRpb25zID0gdHJ1ZSxcXG4gXFx0fTtcXG4tXFx0dW5zaWduZWQgaW50IGUgPSAwLCBzX2UsIGgsIHNfaDtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7XFxuIFxcdGludCBkdW1wZWQgPSAwLCBlcnIgPSAwO1xcbiBcXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcXG4rXFx0dW5zaWduZWQgaW50IGgsIHNfaDtcXG4rXFx0dTMyIHNfaWQ7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdGlmIChjYi1cXHUwMDNlc3RyaWN0X2NoZWNrKSB7XFxuQEAgLTEwNTQsMjkgKzEwNTUsMjggQEAgc3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4gXFx0fVxcbiBcXG4gXFx0c19oID0gY2ItXFx1MDAzZWFyZ3NbMF07XFxuLVxcdHNfZSA9IGNiLVxcdTAwM2VhcmdzWzFdO1xcbitcXHRzX2lkID0gY2ItXFx1MDAzZWFyZ3NbMV07XFxuIFxcbiBcXHRlcnIgPSAwO1xcbi1cXHRmb3IgKGggPSBzX2g7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyssIHNfZSA9IDApIHtcXG4tXFx0XFx0ZSA9IDA7XFxuK1xcdGZvciAoaCA9IHNfaDsgaCBcXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgrKywgc19pZCA9IDApIHtcXG4gXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XFxuIFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHtcXG4tXFx0XFx0XFx0aWYgKGUgXFx1MDAzYyBzX2UpXFxuLVxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4rXFx0XFx0XFx0aWYgKHNfaWQgXFx1MDAyNlxcdTAwMjYgdGItXFx1MDAzZXRiX2lkICE9IHNfaWQpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0XFx0c19pZCA9IDA7XFxuIFxcdFxcdFxcdGlmIChkdW1wZWQpXFxuIFxcdFxcdFxcdFxcdG1lbXNldChcXHUwMDI2Y2ItXFx1MDAzZWFyZ3NbMl0sIDAsIHNpemVvZihjYi1cXHUwMDNlYXJncykgLVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgMiAqIHNpemVvZihjYi1cXHUwMDNlYXJnc1swXSkpO1xcbitcXHRcXHRcXHRjYi1cXHUwMDNlYXJnc1sxXSA9IHRiLVxcdTAwM2V0Yl9pZDtcXG4gXFx0XFx0XFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFxcdTAwMjZmaWx0ZXIpO1xcbiBcXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdFxcdFxcdGR1bXBlZCA9IDE7XFxuLW5leHQ6XFxuLVxcdFxcdFxcdGUrKztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIG91dDpcXG4gXFxuLVxcdGNiLVxcdTAwM2VhcmdzWzFdID0gZTtcXG4gXFx0Y2ItXFx1MDAzZWFyZ3NbMF0gPSBoO1xcbiBcXG4gdW5sb2NrOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0MzoxNy41OTQ1ODk2MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODUzOTM3MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXRfZHVtcF9maWJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBob3cgdGhlIG5ldGxpbmsgZHVtcCBvZiBJUHY0IHJvdXRpbmcgdGFibGVzIHJlc3VtZXMgYWZ0ZXIgYmVpbmcgaW50ZXJydXB0ZWQgKGUuZy4sIHdoZW4gdGhlIGJ1ZmZlciBpcyBmdWxsKS4gSXQgcmVwbGFjZXMgdGhlIHVzZSBvZiBhIGJ1Y2tldCBpbmRleCB3aXRoIHRoZSBhY3R1YWwgdGFibGUgSUQgdG8gYXZvaWQgc2tpcHBpbmcgdGFibGVzIGlmIHRoZSBoYXNoIGNoYWluIGlzIG1vZGlmaWVkIGJldHdlZW4gZHVtcCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBuZXRsaW5rIGludGVyZmFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZjljNDEzNmM1ODk1NmU0MzI4YmE3M2NiYzNiNTY5YjJiNDlkMzg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTA6NDM6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG5pbmRleCA0MjIxMjk3MGQ3MzU0MC4uMjQ4ODk1ZTdlYTA2NzAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuKysrIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbkBAIC0xMDE5LDEwICsxMDE5LDExIEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXHRcdC5kdW1wX3JvdXRlcyA9IHRydWUsXG4gXHRcdC5kdW1wX2V4Y2VwdGlvbnMgPSB0cnVlLFxuIFx0fTtcbi1cdHVuc2lnbmVkIGludCBlID0gMCwgc19lLCBoLCBzX2g7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDtcbiBcdGludCBkdW1wZWQgPSAwLCBlcnIgPSAwO1xuIFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4rXHR1bnNpZ25lZCBpbnQgaCwgc19oO1xuK1x0dTMyIHNfaWQ7XG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRpZiAoY2ItXHUwMDNlc3RyaWN0X2NoZWNrKSB7XG5AQCAtMTA1NCwyOSArMTA1NSwyOCBAQCBzdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxuIFx0fVxuIFxuIFx0c19oID0gY2ItXHUwMDNlYXJnc1swXTtcbi1cdHNfZSA9IGNiLVx1MDAzZWFyZ3NbMV07XG4rXHRzX2lkID0gY2ItXHUwMDNlYXJnc1sxXTtcbiBcbiBcdGVyciA9IDA7XG4tXHRmb3IgKGggPSBzX2g7IGggXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgrKywgc19lID0gMCkge1xuLVx0XHRlID0gMDtcbitcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xuIFx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHtcbi1cdFx0XHRpZiAoZSBcdTAwM2Mgc19lKVxuLVx0XHRcdFx0Z290byBuZXh0O1xuK1x0XHRcdGlmIChzX2lkIFx1MDAyNlx1MDAyNiB0Yi1cdTAwM2V0Yl9pZCAhPSBzX2lkKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4rXHRcdFx0c19pZCA9IDA7XG4gXHRcdFx0aWYgKGR1bXBlZClcbiBcdFx0XHRcdG1lbXNldChcdTAwMjZjYi1cdTAwM2VhcmdzWzJdLCAwLCBzaXplb2YoY2ItXHUwMDNlYXJncykgLVxuIFx0XHRcdFx0XHRcdCAyICogc2l6ZW9mKGNiLVx1MDAzZWFyZ3NbMF0pKTtcbitcdFx0XHRjYi1cdTAwM2VhcmdzWzFdID0gdGItXHUwMDNldGJfaWQ7XG4gXHRcdFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFx1MDAyNmZpbHRlcik7XG4gXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdGR1bXBlZCA9IDE7XG4tbmV4dDpcbi1cdFx0XHRlKys7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4gXG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjE3LjU5NDU5MzE0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTkzMDIwNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBSb3V0aW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBgaW5ldF9kdW1wX2ZpYmAuIEl0IHNlZW1zIHRoZSBjaGFuZ2UgaXMgc3VidGxlLCBhZmZlY3RpbmcgaG93IHdlIHJlc3VtZSB0aGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGBmaWJfdGFibGVfaGFzaGAuIEFwcGFyZW50bHksIGluc3RlYWQgb2YgdXNpbmcgYHNfZWAsIGFuIGluZGV4IGludG8gdGhlIGJ1Y2tldCwgaXQncyB1c2luZyBgc19pZGAsIHRoZSB0YWJsZSBJRCwgdG8gcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIGluIHRoZSBuZXRsaW5rIGR1bXAgZm9yIElQdjQgRklCIChyb3V0aW5nIHRhYmxlcykuIE5vdGhpbmcganVtcHMgb3V0IGFzIGltbWVkaWF0ZWx5IHByb2JsZW1hdGljLCBidXQgdGhpcyBraW5kIG9mIG5ldGxpbmsgaW50ZXJhY3Rpb24gaXMgYSBjbGFzc2ljIGFyZWEgZm9yIHN1YnRsZSBidWdzLCBzbyBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHRoaXMgY2hhbmdlLlxuXG5MZXQncyBkaXZlIGludG8gYGluZXRfZHVtcF9maWJgIGl0c2VsZi4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgZHVtcGluZyBJUHY0IHJvdXRlcyB2aWEgbmV0bGluayDigJMgaW1wb3J0YW50IHRvIG5ldHdvcmsgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSBuZWVkcyBjYXJlZnVsIHJldmlldy4gSSdtIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB1bmRlciBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AgYnV0LCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGl0IGlzIHByb2JhYmx5IGluY2x1ZGVkIGFzIHBhcnQgb2YgYmFzaWMgSVB2NCByb3V0aW5nLCBzbyBpdCBtaWdodCBhbHdheXMgYmUgcHJlc2VudC4gSSBzaG91bGQgY29uZmlybSB0aGF0IGBpbmV0X2R1bXBfZmliYCBpcywgaW4gZmFjdCwgYWx3YXlzIGNvbXBpbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6MjIuODEzODk4MTEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjk5MDQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbmV0X2R1bXBfZmliXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTEwMTI9RVhQT1JUX1NZTUJPTF9HUEwoaXBfdmFsaWRfZmliX2R1bXBfcmVxKTtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMDEzLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwMTQ6c3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMDE1LXtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2ODg9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIGZpYl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5Mi1cXHQgLmRvaXQgPSBpbmV0X3J0bV9kZWxyb3V0ZSwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjkzOlxcdHsucHJvdG9jb2wgPSBQRl9JTkVULCAubXNndHlwZSA9IFJUTV9HRVRST1VURSwgLmR1bXBpdCA9IGluZXRfZHVtcF9maWIsXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5NC1cXHQgLmZsYWdzID0gUlROTF9GTEFHX0RVTVBfVU5MT0NLRUQgfCBSVE5MX0ZMQUdfRFVNUF9TUExJVF9OTE1fRE9ORX0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjIyLjk1Njg5OTEzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTEwNDIzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipSb3V0ZSBSZXRyaWV2YWwgRGVidWdnaW5nOiBEaXZpbmcgaW50byB0aGUgS2VybmVsKipcblxuUmlnaHQsIHNvIHRoaXMgYFJUTV9HRVRST1VURWAgZHVtcGl0IGhhbmRsZXIgZm9yIGBQRl9JTkVUYCBoYXMgYmVlbiBmbGFnZ2VkLiBUaGF0J3MgZ29vZCwgdGhhdCBtZWFucyB0aGUgc3lzdGVtICpjYW4qIHJlYWNoIGl0LiBOb3csIHRoZSByZWFsIGludmVzdGlnYXRpb24gYmVnaW5zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgYmVoYXZpb3IuIFBlcmhhcHMgdGhlcmUncyBhIHNwZWNpZmljIGZsYWcgSSd2ZSBvdmVybG9va2VkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy5cblxuSSdsbCBzdGFydCB3aXRoIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50ZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhhdCBtb2R1bGUncyBpbmNsdXNpb24gaXMgY29uZGl0aW9uYWwuIEFoYSwgaXQncyBub3QgY29udGluZ2VudCBvbiBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AuIEV4Y2VsbGVudC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gU28gYGZpYl9mcm9udGVuZC5jYCBpcyBhbHdheXMgcHJlc2VudCBmb3IgSVB2NC5cblxuTm93LCBsZXQgbWUgcGVlayBpbnRvIGBuZXQvaXB2NC9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZGl0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgYFJUTV9HRVRST1VURWAgaGFuZGxpbmcuIEl0J3MgdGltZSB0byBjb25maXJtIHRoZXJlIGFyZSBubyBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIG9yIG90aGVyIGZhY3RvcnMgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDkxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6MjYuODA3OTQzODgyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDI2MzY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWJfZnJvbnRlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXFx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTU6XFx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjI3LjA4MjIxMjgwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjAzNzgwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIElQdjQgUm91dGluZyBUYWJsZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgZXZlcnl0aGluZyBpcywgYXMgdXN1YWwsIGNvbXBpbGVkIHdpdGggSVB2NCBpbiBtaW5kLiBUaGlzIGlzIHN0YW5kYXJkLCBidXQgZ29vZCB0byBjb25maXJtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZ2l2ZW4gdGhpcyBjb250ZXh0LCB3aGV0aGVyIGBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTYCBjb21lcyBpbnRvIHBsYXkgaGVyZS4gSXQgc2VlbXMgbGlrZSBpdCBtaWdodCBiZSByZWxldmFudCB3aGVuIGNvbnNpZGVyaW5nIG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLCBidXQgdGhlbiBhZ2FpbiwgYGluZXRfZHVtcF9maWJgIGZ1bmN0aW9ucyBjb3JyZWN0bHksIGV2ZW4gd2l0aG91dCBleHBsaWNpdGx5IGVuYWJsaW5nIG11bHRpcGxlIHRhYmxlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cbkhvbGQgb24sIEkgc2VlIGBGSUJfVEFCTEVfSEFTSFNaYCBiZWluZyB1c2VkLiBUaGF0J3MgYSBjcnVjaWFsIHBhcmFtZXRlciByZWxhdGVkIHRvIHRoZSBGaWJvbmFjY2kgaGVhcCBoYXNoIHNpemUsIGFuZCBpcyBhbG1vc3QgY2VydGFpbmx5IGNvbm5lY3RlZCB0byBwZXJmb3JtYW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgRklCX1RBQkxFX0hBU0hTWmAgKmFjdHVhbGx5KiBtZWFucy4gTGV0IG1lIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgdmFyaWFibGUgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlzIGJlaGF2aW5nLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBrZXkgdG8gdGhlIGludGVybmFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjMwLjk0MjU5Mjg5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODE1NTY3NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRklCX1RBQkxFX0hBU0hTWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9Nzc9c3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNi1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxMDc6XFx0aCA9IGlkIFxcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMDgtXFx0aGxpc3RfYWRkX2hlYWRfcmN1KFxcdTAwMjZ0Yi1cXHUwMDNldGJfaGxpc3QsIFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF0pO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTE0PXN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMjEtXFx0XFx0aWQgPSBSVF9UQUJMRV9NQUlOO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEyMjpcXHRoID0gaWQgXFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEyMy1cXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE4Nj12b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xOTAtXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTkxOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyspIHtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xOTItXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTAxND1zdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTA2MC1cXHRlcnIgPSAwO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwNjE6XFx0Zm9yIChoID0gc19oOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNjItXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTU0PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU1Ni1cXHRpbnQgZXJyO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1NTc6XFx0c2l6ZV90IHNpemUgPSBzaXplb2Yoc3RydWN0IGhsaXN0X2hlYWQpICogRklCX1RBQkxFX0hBU0hTWjtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU4LVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTU5MD1zdGF0aWMgdm9pZCBpcF9maWJfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTYwMy1cXHQgKi9cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjA0OlxcdGZvciAoaSA9IEZJQl9UQUJMRV9IQVNIU1ogLSAxOyBpIFxcdTAwM2U9IDA7IGktLSkge1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MDUtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2ldO1xcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYz0yMTMyPXZvaWQgZmliX2luZm9fbm90aWZ5X3VwZGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yMTM1LVxcbm5ldC9pcHY0L2ZpYl90cmllLmM6MjEzNjpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjQvZmliX3RyaWUuYy0yMTM3LVxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl90cmllLmM9MjIwND1pbnQgZmliX25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jLTIyMDktXFxubmV0L2lwdjQvZmliX3RyaWUuYzoyMjEwOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyspIHtcXG5uZXQvaXB2NC9maWJfdHJpZS5jLTIyMTEtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYz0yNjA4PXN0YXRpYyBpbnQgZmliX3RyaWVzdGF0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjE4LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2MTk6XFx0Zm9yIChoID0gMDsgaCBcXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgrKykge1xcbm5ldC9pcHY0L2ZpYl90cmllLmMtMjYyMC1cXHRcXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jPTI2NDU9c3RhdGljIHN0cnVjdCBrZXlfdmVjdG9yICpmaWJfdHJpZV9nZXRfaWR4KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgcG9zKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjUxLVxcbm5ldC9pcHY0L2ZpYl90cmllLmM6MjY1MjpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjUzLVxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl90cmllLmM9MjY3OT1zdGF0aWMgdm9pZCAqZmliX3RyaWVfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjk0LVxcdC8qIHdhbGsgcmVzdCBvZiB0aGlzIGhhc2ggY2hhaW4gKi9cXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2OTU6XFx0aCA9IHRiLVxcdTAwM2V0Yl9pZCBcXHUwMDI2IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7XFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjk2LVxcdHdoaWxlICgodGJfbm9kZSA9IHJjdV9kZXJlZmVyZW5jZShobGlzdF9uZXh0X3JjdShcXHUwMDI2dGItXFx1MDAzZXRiX2hsaXN0KSkpKSB7XFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDMtXFx0LyogbmV3IGhhc2ggY2hhaW4gKi9cXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI3MDQ6XFx0d2hpbGUgKCsraCBcXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1opIHtcXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDUtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0MzozMS41MjQxNTc0MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzE3NTgzODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRklCIFRhYmxlIER1bXAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBpbmV0X2R1bXBfZmliYCBmdW5jdGlvbiBhZ2FpbiwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYEZJQl9UQUJMRV9IQVNIU1pgIGlzIGEgZnVuZGFtZW50YWwgY29uc3RhbnQgaGVyZSwgdXNlZCB0aHJvdWdob3V0LiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwsIGFzIGl0IGl0ZXJhdGVzIHRocm91Z2ggdGhlIEZJQiB0YWJsZXMgYW5kIGR1bXBzIHRoZW0uIFRoZSBjcnV4IG9mIHRoZSBpc3N1ZSBzZWVtcyB0byBiZSBob3cgaXQgaGFuZGxlcyByZXN1bWluZyBhIGR1bXAuIFByZXZpb3VzbHksIGl0IHVzZWQgYHNfZWAgdG8gc2tpcCB0YWJsZXMsIGFuZCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgdGhpcyBpbmRleC1iYXNlZCBhcHByb2FjaCBsaWtlbHkgYmVjYW1lIHByb2JsZW1hdGljIHdoZW4gdGFibGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCBkeW5hbWljYWxseS4gVGhlIGluZGV4IGBzX2VgIGNvdWxkIGVhc2lseSBiZWNvbWUgbWlzYWxpZ25lZCwgb3IgdGhlIHNraXBwaW5nIG1pZ2h0IGhhdmUgYmVlbiBzaW1wbHkgaW5jb3JyZWN0LiBUaGUgcGF0Y2ggdXNlcyBgc19pZGAsIHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhYmxlIElEIGFuZCByZXN1bWVzIHRoZSBkdW1wIGZyb20gdGhlIHByZWNpc2UgdGFibGUgSUQgbGFzdCBwcm9jZXNzZWQuXG5cbk5vdywgbGV0J3MgZGlzc2VjdCB0aGUgY29kZSBjaGFuZ2VzIGEgYml0IG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBgc19oYCByZXByZXNlbnRzIHRoZSBzdGFydGluZyBoYXNoIGJ1Y2tldCwgdGhhdCBtdWNoIGlzIHVuY2hhbmdlZC4gVGhlIGNydWNpYWwgY2hhbmdlIGlzIHJlcGxhY2luZyBgc19lYCAoYW4gaW5kZXgpIHdpdGggYHNfaWRgIChhIHRhYmxlIElEKS4gSW5zdGVhZCBvZiBpbmNyZW1lbnRpbmcgYHNfZWAsIGl0IG5vdyBzZXRzIGBzX2lkYCB0byAwLiBJdCBtZWFucyB0aGF0IGBzX2lkYCBpcyBvbmx5IHNldCB3aGVuIHdlIG5lZWQgdG8gcmVzdW1lIGZyb20gdGhhdCBwYXJ0aWN1bGFyIHRhYmxlIElELCBhbmQgd2UgY2FuIHN0YXJ0IGR1bXBpbmcgZnJvbSB0aGF0IHRhYmxlLCB3aGljaCBpcyBtb3JlIHJlbGlhYmxlLiBXZSdyZSBub3cgZGlyZWN0bHkgY29tcGFyaW5nIHRhYmxlIElEcyAoYHRiLVx1MDAzZXRiX2lkYCkgd2l0aGluIHRoZSBsb29wLiBUaGUgYGNiLVx1MDAzZWFyZ3NbMV1gIGlzIHVwZGF0ZWQgd2l0aCB0aGUgY3VycmVudCB0YWJsZSdzIElELlxuXG5UaGlzIGNoYW5nZSBmdW5jdGlvbmFsbHkgYWx0ZXJzIGBpbmV0X2R1bXBfZmliYC4gSSBzaG91bGQgbm90ZSB0aGF0IGBJUF9NVUxUSVBMRV9UQUJMRVNgIG1heSBiZSB1c2VmdWwsIGVzcGVjaWFsbHkgd2hlbiB0ZXN0aW5nIHRoZSBkdW1wLCB0byBnZXQgYSBkdW1wIHRoYXQgc3BhbnMgbXVsdGlwbGUgbmV0bGluayBtZXNzYWdlcywgYW5kIHJlcXVpcmVzIHJlc3VtaW5nLiBJdCdzIG5vdCBzdHJpY3RseSByZXF1aXJlZCB0byAqY29tcGlsZSogdGhpcyBjb2RlLCBidXQgaXQncyBlc3NlbnRpYWwgZm9yIHByb3Blcmx5IHRlc3RpbmcgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGRlbW9uc3RyYXRpbmcgdGhlIHJlc3VtZSBjYXBhYmlsaXR5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGlzIGV2ZW4gYSByZWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuc3VyZSBJIGNhbiBwcm9wZXJseSB0ZXN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6NDAuMjQxNzQzOTU4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE3OTgzMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX01VTFRJUExFX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NTY9Y29uZmlnIElQX0ZJQl9UUklFX1NUQVRTXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTYyLVxcbm5ldC9pcHY0L0tjb25maWc6NjM6Y29uZmlnIElQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiSVA6IHBvbGljeSByb3V0aW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0Mzo0MC4zODM1NDkzNDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMTQzODg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQb2xpY3kgUm91dGluZyBDb25maWd1cmF0aW9uIFJldmlldyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBwb2xpY3kgcm91dGluZyBhbmQgY29uZmlybWluZyB0aGF0IGBJUF9NVUxUSVBMRV9UQUJMRVNgIGlzIGluZGVlZCB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyB0aGUga2V5IHRvIHVubG9ja2luZyB0aGUgcG93ZXIgb2YgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMuIFdpdGhvdXQgaXQsIHdlJ3JlIHN0dWNrIHdpdGgganVzdCB0aGUgZGVmYXVsdCBtYWluIGFuZCBsb2NhbCB0YWJsZXMsIHdoaWNoIHNldmVyZWx5IGxpbWl0cyB0aGUgZmxleGliaWxpdHkgd2UgbmVlZCBmb3Igc29waGlzdGljYXRlZCB0cmFmZmljIG1hbmFnZW1lbnQuIEJ1dCB3aXRoIHRoaXMgZW5hYmxlZCwgd2UgY2FuIGxldmVyYWdlIHVwIHRvIDI1NSBvciBldmVuIG1vcmUgdGFibGVzLCB3aGljaCBvcGVucyB1cCBhIHdvcmxkIG9mIHBvc3NpYmlsaXRpZXMuIFRoZXJlZm9yZSwgZW5hYmxpbmcgYElQX01VTFRJUExFX1RBQkxFU2Agc2VlbXMgbGlrZSBhIG5vLWJyYWluZXIgZm9yIGFueSBwb2xpY3kgcm91dGluZyBpbXBsZW1lbnRhdGlvbi5cblxuTm93LCBJJ20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhbHNvIGltcG9ydGFudC4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY29kZS4gTGV0J3MgZGVsdmUgaW50byBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGtub2JzIHdlIHNob3VsZCBjb25zaWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcwMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0Mzo0NC4zODQ5OTAzMzNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxNjYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjUxOiNpZm5kZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTE0PXN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzEtfVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEzMjojZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzMy1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xMzQ9c3RhdGljIHZvaWQgZmliX3JlcGxhY2VfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliX3RhYmxlICpvbGQsXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzYte1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEzNzojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzOC1cXHRzd2l0Y2ggKG5ldy1cXHUwMDNldGJfaWQpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTMxMT1ib29sIGZpYl9pbmZvX25oX3VzZXNfZGV2KHN0cnVjdCBmaWJfaW5mbyAqZmksIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0zMTMtXFx0Ym9vbCBkZXZfbWF0Y2ggPSBmYWxzZTtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzozMTQ6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0zMTUtXFx0aWYgKHVubGlrZWx5KGZpLVxcdTAwM2VuaCkpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTY5MT1pbnQgZmliX2d3X2Zyb21fdmlhKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTcxNC1cXHRjYXNlIEFGX0lORVQ2Olxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjcxNTojaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy03MTYtXFx0XFx0aWYgKGFsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE0NTY9c3RhdGljIGludCBmaWJfaW5ldGFkZHJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNDY0LVxcdFxcdGZpYl9hZGRfaWZhZGRyKGlmYSk7XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTQ2NTojaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSFxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE0NjYtXFx0XFx0ZmliX3N5bmNfdXAoZGV2LCBSVE5IX0ZfREVBRCk7XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNDg3PXN0YXRpYyBpbnQgZmliX25ldGRldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MTEtXFx0XFx0fVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTI6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTEzLVxcdFxcdGZpYl9zeW5jX3VwKGRldiwgUlROSF9GX0RFQUQpO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTU1ND1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NjItXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU2MzojaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSFxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NjQtXFx0LyogRGVmYXVsdCB0byAzLXR1cGxlICovXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTkwPXN0YXRpYyB2b2lkIGlwX2ZpYl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTk0LVxcdEFTU0VSVF9SVE5MX05FVChuZXQpO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1OTU6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTk2LVxcdFJDVV9JTklUX1BPSU5URVIobmV0LVxcdTAwM2VpcHY0LmZpYl9tYWluLCBOVUxMKTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTc9c3RhdGljIGludCBfX25ldF9pbml0IGZpYl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjIwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2MjE6I2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTYyMi1cXHRhdG9taWNfc2V0KFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX251bV90Y2xhc3NpZF91c2VycywgMCk7XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjUwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2NTE6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjUyLVxcdGZpYjRfcnVsZXNfZXhpdChuZXQpO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTY3MT1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGZpYl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY3Mi17XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY3MzojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2NzQtXFx0ZmliNF9ydWxlc19leGl0KG5ldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjQ0LjUzNjUxMzQzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDI4NTQ4NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBgSVBfTVVMVElQTEVfVEFCTEVTYCBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXQgbWUgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0uIEl0J3MgdGhlIG1vc3QgcmVsZXZhbnQgZmxhZyB0byBjb25zaWRlciBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGVsc2UgdGhpcyBwYXRjaCB0b3VjaGVzLCB0aG91Z2guXG5cblJpZ2h0LCB0aGUgY2hhbmdlcyBzZWVtIGlzb2xhdGVkIHRvIGBpbmV0X2R1bXBfZmliYC4gTGV0IG1lIGpvdCBkb3duIHRoYXQgZm9jdXMgc3ltYm9sOiBgaW5ldF9kdW1wX2ZpYmAuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgcHJldHR5IGNsZWFyIGZyb20gdGhlIHJlYXNvbmluZy4gVGhpcyBwYXRjaCBpcyBmaXhpbmcgdGhlIHdheSB0aGUgSVB2NCByb3V0aW5nIHRhYmxlIG5ldGxpbmsgZHVtcCBoYW5kbGVzIGludGVycnVwdGlvbnMgYW5kIHJlc3VtZXMuIFNwZWNpZmljYWxseSwgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHdoZXJlIHRhYmxlIElEcyBtaWdodCBiZSBza2lwcGVkIGlmIHRoZSB1bmRlcmx5aW5nIGhhc2ggY2hhaW4gaXMgbW9kaWZpZWQgYmV0d2VlbiBuZXRsaW5rIGNhbGxzLiBTd2l0Y2hpbmcgZnJvbSBhIGJ1Y2tldCBpbmRleCB0byB0aGUgYWN0dWFsIHRhYmxlIElEIGZvciByZXN1bWluZyBzZWVtcyBsaWtlIGEgc29saWQgYXBwcm9hY2guXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIElQdjQgcm91dGluZyBuZXRsaW5rIGludGVyZmFjZSwgZnV6emluZyB0aGlzIGFyZWEgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIEl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHRlc3RpbmcgaXRzIHJvYnVzdG5lc3MgdW5kZXIgcHJlc3N1cmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaW5ldF9kdW1wX2ZpYmAgZnVuY3Rpb24gaXRzZWxmLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AuIEdvdHRhIGNvbmZpcm0gdGhlIGRldGFpbHMgYXJlIHdoYXQgSSB0aGluayB0aGV5IGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMzOSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0Mzo1MC41NjUwNjQzMDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9maWJfZnJvbnRlbmQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDE0LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAxNDpcXHRzdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbjEwMTU6XFx0e1xcbjEwMTY6XFx0XFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGggPSBjYi1cXHUwMDNlbmxoO1xcbjEwMTc6XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxuMTAxODpcXHRcXHRzdHJ1Y3QgZmliX2R1bXBfZmlsdGVyIGZpbHRlciA9IHtcXG4xMDE5OlxcdFxcdFxcdC5kdW1wX3JvdXRlcyA9IHRydWUsXFxuMTAyMDpcXHRcXHRcXHQuZHVtcF9leGNlcHRpb25zID0gdHJ1ZSxcXG4xMDIxOlxcdFxcdH07XFxuMTAyMjpcXHRcXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDtcXG4xMDIzOlxcdFxcdGludCBkdW1wZWQgPSAwLCBlcnIgPSAwO1xcbjEwMjQ6XFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuMTAyNTpcXHRcXHR1bnNpZ25lZCBpbnQgaCwgc19oO1xcbjEwMjY6XFx0XFx0dTMyIHNfaWQ7XFxuMTAyNzpcXHRcXG4xMDI4OlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4xMDI5OlxcdFxcdGlmIChjYi1cXHUwMDNlc3RyaWN0X2NoZWNrKSB7XFxuMTAzMDpcXHRcXHRcXHRlcnIgPSBpcF92YWxpZF9maWJfZHVtcF9yZXEobmV0LCBubGgsIFxcdTAwMjZmaWx0ZXIsIGNiKTtcXG4xMDMxOlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjEwMzI6XFx0XFx0XFx0XFx0Z290byB1bmxvY2s7XFxuMTAzMzpcXHRcXHR9IGVsc2UgaWYgKG5sbXNnX2xlbihubGgpIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgcnRtc2cpKSB7XFxuMTAzNDpcXHRcXHRcXHRzdHJ1Y3QgcnRtc2cgKnJ0bSA9IG5sbXNnX2RhdGEobmxoKTtcXG4xMDM1OlxcdFxcbjEwMzY6XFx0XFx0XFx0ZmlsdGVyLmZsYWdzID0gcnRtLVxcdTAwM2VydG1fZmxhZ3MgXFx1MDAyNiAoUlRNX0ZfUFJFRklYIHwgUlRNX0ZfQ0xPTkVEKTtcXG4xMDM3OlxcdFxcdH1cXG4xMDM4OlxcdFxcbjEwMzk6XFx0XFx0LyogaXB2NCBkb2VzIG5vdCB1c2UgcHJlZml4IGZsYWcgKi9cXG4xMDQwOlxcdFxcdGlmIChmaWx0ZXIuZmxhZ3MgXFx1MDAyNiBSVE1fRl9QUkVGSVgpXFxuMTA0MTpcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4xMDQyOlxcdFxcbjEwNDM6XFx0XFx0aWYgKGZpbHRlci50YWJsZV9pZCkge1xcbjEwNDQ6XFx0XFx0XFx0dGIgPSBmaWJfZ2V0X3RhYmxlKG5ldCwgZmlsdGVyLnRhYmxlX2lkKTtcXG4xMDQ1OlxcdFxcdFxcdGlmICghdGIpIHtcXG4xMDQ2OlxcdFxcdFxcdFxcdGlmIChydG5sX21zZ19mYW1pbHkoY2ItXFx1MDAzZW5saCkgIT0gUEZfSU5FVClcXG4xMDQ3OlxcdFxcdFxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbjEwNDg6XFx0XFxuMTA0OTpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhjYi1cXHUwMDNlZXh0YWNrLCBcXFwiaXB2NDogRklCIHRhYmxlIGRvZXMgbm90IGV4aXN0XFxcIik7XFxuMTA1MDpcXHRcXHRcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbjEwNTE6XFx0XFx0XFx0XFx0Z290byB1bmxvY2s7XFxuMTA1MjpcXHRcXHRcXHR9XFxuMTA1MzpcXHRcXHRcXHRlcnIgPSBmaWJfdGFibGVfZHVtcCh0Yiwgc2tiLCBjYiwgXFx1MDAyNmZpbHRlcik7XFxuMTA1NDpcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4xMDU1OlxcdFxcdH1cXG4xMDU2OlxcdFxcbjEwNTc6XFx0XFx0c19oID0gY2ItXFx1MDAzZWFyZ3NbMF07XFxuMTA1ODpcXHRcXHRzX2lkID0gY2ItXFx1MDAzZWFyZ3NbMV07XFxuMTA1OTpcXHRcXG4xMDYwOlxcdFxcdGVyciA9IDA7XFxuMTA2MTpcXHRcXHRmb3IgKGggPSBzX2g7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyssIHNfaWQgPSAwKSB7XFxuMTA2MjpcXHRcXHRcXHRoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4xMDYzOlxcdFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHtcXG4xMDY0OlxcdFxcdFxcdFxcdGlmIChzX2lkIFxcdTAwMjZcXHUwMDI2IHRiLVxcdTAwM2V0Yl9pZCAhPSBzX2lkKVxcbjEwNjU6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMTA2NjpcXHRcXG4xMDY3OlxcdFxcdFxcdFxcdHNfaWQgPSAwO1xcbjEwNjg6XFx0XFx0XFx0XFx0aWYgKGR1bXBlZClcXG4xMDY5OlxcdFxcdFxcdFxcdFxcdG1lbXNldChcXHUwMDI2Y2ItXFx1MDAzZWFyZ3NbMl0sIDAsIHNpemVvZihjYi1cXHUwMDNlYXJncykgLVxcbjEwNzA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IDIgKiBzaXplb2YoY2ItXFx1MDAzZWFyZ3NbMF0pKTtcXG4xMDcxOlxcdFxcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzFdID0gdGItXFx1MDAzZXRiX2lkO1xcbjEwNzI6XFx0XFx0XFx0XFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFxcdTAwMjZmaWx0ZXIpO1xcbjEwNzM6XFx0XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMTA3NDpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4xMDc1OlxcdFxcdFxcdFxcdGR1bXBlZCA9IDE7XFxuMTA3NjpcXHRcXHRcXHR9XFxuMTA3NzpcXHRcXHR9XFxuMTA3ODpcXHRvdXQ6XFxuMTA3OTpcXHRcXG4xMDgwOlxcdFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gaDtcXG4xMDgxOlxcdFxcbjEwODI6XFx0dW5sb2NrOlxcbjEwODM6XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuMTA4NDpcXHRcXHRyZXR1cm4gZXJyO1xcbjEwODU6XFx0fVxcbjEwODY6XFx0XFxuMTA4NzpcXHQvKiBQcmVwYXJlIGFuZCBmZWVkIGludHJhLWtlcm5lbCByb3V0aW5nIHJlcXVlc3QuXFxuMTA4ODpcXHQgKiBSZWFsbHksIGl0IHNob3VsZCBiZSBuZXRsaW5rIG1lc3NhZ2UsIGJ1dCA6LSggbmV0bGlua1xcbjEwODk6XFx0ICogY2FuIGJlIG5vdCBjb25maWd1cmVkLCBzbyB0aGF0IHdlIGZlZWQgaXQgZGlyZWN0bHlcXG4xMDkwOlxcdCAqIHRvIGZpYiBlbmdpbmUuIEl0IGlzIGxlZ2FsLCBiZWNhdXNlIGFsbCBldmVudHMgb2NjdXJcXG4xMDkxOlxcdCAqIG9ubHkgd2hlbiBuZXRsaW5rIGlzIGFscmVhZHkgbG9ja2VkLlxcbjEwOTI6XFx0ICovXFxuMTA5MzpcXHRzdGF0aWMgdm9pZCBmaWJfbWFnaWMoaW50IGNtZCwgaW50IHR5cGUsIF9fYmUzMiBkc3QsIGludCBkc3RfbGVuLFxcbjEwOTQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IGluX2lmYWRkciAqaWZhLCB1MzIgcnRfcHJpb3JpdHkpXFxuMTA5NTpcXHR7XFxuMTA5NjpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGlmYS1cXHUwMDNlaWZhX2Rldi1cXHUwMDNlZGV2KTtcXG4xMDk3OlxcdFxcdHUzMiB0Yl9pZCA9IGwzbWRldl9maWJfdGFibGUoaWZhLVxcdTAwM2VpZmFfZGV2LVxcdTAwM2VkZXYpO1xcbjEwOTg6XFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuMTA5OTpcXHRcXHRzdHJ1Y3QgZmliX2NvbmZpZyBjZmcgPSB7XFxuMTEwMDpcXHRcXHRcXHQuZmNfcHJvdG9jb2wgPSBSVFBST1RfS0VSTkVMLFxcbjExMDE6XFx0XFx0XFx0LmZjX3R5cGUgPSB0eXBlLFxcbjExMDI6XFx0XFx0XFx0LmZjX2RzdCA9IGRzdCxcXG4xMTAzOlxcdFxcdFxcdC5mY19kc3RfbGVuID0gZHN0X2xlbixcXG4xMTA0OlxcdFxcdFxcdC5mY19wcmlvcml0eSA9IHJ0X3ByaW9yaXR5LFxcbjExMDU6XFx0XFx0XFx0LmZjX3ByZWZzcmMgPSBpZmEtXFx1MDAzZWlmYV9sb2NhbCxcXG4xMTA2OlxcdFxcdFxcdC5mY19vaWYgPSBpZmEtXFx1MDAzZWlmYV9kZXYtXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCxcXG4xMTA3OlxcdFxcdFxcdC5mY19ubGZsYWdzID0gTkxNX0ZfQ1JFQVRFIHwgTkxNX0ZfQVBQRU5ELFxcbjExMDg6XFx0XFx0XFx0LmZjX25saW5mbyA9IHtcXG4xMTA5OlxcdFxcdFxcdFxcdC5ubF9uZXQgPSBuZXQsXFxuMTExMDpcXHRcXHRcXHR9LFxcbjExMTE6XFx0XFx0fTtcXG4xMTEyOlxcdFxcbjExMTM6XFx0XFx0aWYgKCF0Yl9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6NTAuNTY3MzkxMDc4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDc5ODUwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGlzIHByZWNpc2VseSB3aGF0IEkgYW50aWNpcGF0ZWQuIFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSBpdHMgbW9kaWZpY2F0aW9uIG9mIGBpbmV0X2R1bXBfZmliYCwgc2VlbXMgc291bmQsIGFuZCBpdCdzIHJlYWR5IGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgY2hhbmdlcyB0byBgaW5ldF9kdW1wX2ZpYmAsIHRoYXQncyBkZWZpbml0ZWx5IHRoZSBrZXkgc3ltYm9sIHRvIHRhcmdldCBkdXJpbmcgdGVzdGluZy4gRnVydGhlcm1vcmUsIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcywgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgYElQX01VTFRJUExFX1RBQkxFU2AgY29uZmlndXJhdGlvbi4gUmlnaHQsIHRpbWUgdG8gbW92ZSBhaGVhZCB3aXRoIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzgzLCJPdXRwdXRUb2tlbnMiOjEyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6NTQuMTc1Mzg3Nzg1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczMTMzMTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbmV0X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9kdW1wX2ZpYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGhvdyB0aGUgbmV0bGluayBkdW1wIG9mIElQdjQgcm91dGluZyB0YWJsZXMgcmVzdW1lcyBhZnRlciBiZWluZyBpbnRlcnJ1cHRlZCAoZS5nLiwgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwpLiBJdCByZXBsYWNlcyB0aGUgdXNlIG9mIGEgYnVja2V0IGluZGV4IHdpdGggdGhlIGFjdHVhbCB0YWJsZSBJRCB0byBhdm9pZCBza2lwcGluZyB0YWJsZXMgaWYgdGhlIGhhc2ggY2hhaW4gaXMgbW9kaWZpZWQgYmV0d2VlbiBkdW1wIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIG5ldGxpbmsgaW50ZXJmYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 10:28:55 +0000 UTC FinishedAt: 2026-06-30 10:43:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cef9d6804030793cf8b8796fd6936197d065dd3e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES" ], "series_id": "b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "inet_dump_fib" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjljNDEzNmM1ODk1NmU0MzI4YmE3M2NiYzNiNTY5YjJiNDlkMzg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTA6NDM6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuaW5kZXggNDIyMTI5NzBkNzM1NDAuLjI0ODg5NWU3ZWEwNjcwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG5AQCAtMTAxOSwxMCAmIzQzOzEwMTksMTEgQEAgc3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdFx0LmR1bXBfcm91dGVzID0gdHJ1ZSxcbiBcdFx0LmR1bXBfZXhjZXB0aW9ucyA9IHRydWUsXG4gXHR9O1xuLVx0dW5zaWduZWQgaW50IGUgPSAwLCBzX2UsIGgsIHNfaDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0aW50IGR1bXBlZCA9IDAsIGVyciA9IDA7XG4gXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaCwgc19oO1xuJiM0MztcdHUzMiBzX2lkO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWYgKGNiLVx1MDAzZXN0cmljdF9jaGVjaykge1xuQEAgLTEwNTQsMjkgJiM0MzsxMDU1LDI4IEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXHR9XG4gXG4gXHRzX2ggPSBjYi1cdTAwM2VhcmdzWzBdO1xuLVx0c19lID0gY2ItXHUwMDNlYXJnc1sxXTtcbiYjNDM7XHRzX2lkID0gY2ItXHUwMDNlYXJnc1sxXTtcbiBcbiBcdGVyciA9IDA7XG4tXHRmb3IgKGggPSBzX2g7IGggXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2UgPSAwKSB7XG4tXHRcdGUgPSAwO1xuJiM0MztcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7XG4gXHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCkge1xuLVx0XHRcdGlmIChlIFx1MDAzYyBzX2UpXG4tXHRcdFx0XHRnb3RvIG5leHQ7XG4mIzQzO1x0XHRcdGlmIChzX2lkIFx1MDAyNlx1MDAyNiB0Yi1cdTAwM2V0Yl9pZCAhPSBzX2lkKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdFx0c19pZCA9IDA7XG4gXHRcdFx0aWYgKGR1bXBlZClcbiBcdFx0XHRcdG1lbXNldChcdTAwMjZjYi1cdTAwM2VhcmdzWzJdLCAwLCBzaXplb2YoY2ItXHUwMDNlYXJncykgLVxuIFx0XHRcdFx0XHRcdCAyICogc2l6ZW9mKGNiLVx1MDAzZWFyZ3NbMF0pKTtcbiYjNDM7XHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IHRiLVx1MDAzZXRiX2lkO1xuIFx0XHRcdGVyciA9IGZpYl90YWJsZV9kdW1wKHRiLCBza2IsIGNiLCBcdTAwMjZmaWx0ZXIpO1xuIFx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdFx0XHRnb3RvIG91dDtcbiBcdFx0XHRkdW1wZWQgPSAxO1xuLW5leHQ6XG4tXHRcdFx0ZSYjNDM7JiM0Mzs7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4gXG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0X2R1bXBfZmliJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGhvdyB0aGUgbmV0bGluayBkdW1wIG9mIElQdjQgcm91dGluZyB0YWJsZXMgcmVzdW1lcyBhZnRlciBiZWluZyBpbnRlcnJ1cHRlZCAoZS5nLiwgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwpLiBJdCByZXBsYWNlcyB0aGUgdXNlIG9mIGEgYnVja2V0IGluZGV4IHdpdGggdGhlIGFjdHVhbCB0YWJsZSBJRCB0byBhdm9pZCBza2lwcGluZyB0YWJsZXMgaWYgdGhlIGhhc2ggY2hhaW4gaXMgbW9kaWZpZWQgYmV0d2VlbiBkdW1wIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIG5ldGxpbmsgaW50ZXJmYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZjljNDEzNmM1ODk1NmU0MzI4YmE3M2NiYzNiNTY5YjJiNDlkMzg2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMTA6NDM6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jCmluZGV4IDQyMjEyOTcwZDczNTQwLi4yNDg4OTVlN2VhMDY3MCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKQEAgLTEwMTksMTAgJiM0MzsxMDE5LDExIEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJCS5kdW1wX3JvdXRlcyA9IHRydWUsCiAJCS5kdW1wX2V4Y2VwdGlvbnMgPSB0cnVlLAogCX07Ci0JdW5zaWduZWQgaW50IGUgPSAwLCBzX2UsIGgsIHNfaDsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDsKIAlpbnQgZHVtcGVkID0gMCwgZXJyID0gMDsKIAlzdHJ1Y3QgZmliX3RhYmxlICp0YjsKJiM0MzsJdW5zaWduZWQgaW50IGgsIHNfaDsKJiM0MzsJdTMyIHNfaWQ7CiAKIAlyY3VfcmVhZF9sb2NrKCk7CiAJaWYgKGNiLSZndDtzdHJpY3RfY2hlY2spIHsKQEAgLTEwNTQsMjkgJiM0MzsxMDU1LDI4IEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJfQogCiAJc19oID0gY2ItJmd0O2FyZ3NbMF07Ci0Jc19lID0gY2ItJmd0O2FyZ3NbMV07CiYjNDM7CXNfaWQgPSBjYi0mZ3Q7YXJnc1sxXTsKIAogCWVyciA9IDA7Ci0JZm9yIChoID0gc19oOyBoICZsdDsgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfZSA9IDApIHsKLQkJZSA9IDA7CiYjNDM7CWZvciAoaCA9IHNfaDsgaCAmbHQ7IEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2lkID0gMCkgewogCQloZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07CiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHsKLQkJCWlmIChlICZsdDsgc19lKQotCQkJCWdvdG8gbmV4dDsKJiM0MzsJCQlpZiAoc19pZCAmYW1wOyZhbXA7IHRiLSZndDt0Yl9pZCAhPSBzX2lkKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCQlzX2lkID0gMDsKIAkJCWlmIChkdW1wZWQpCiAJCQkJbWVtc2V0KCZhbXA7Y2ItJmd0O2FyZ3NbMl0sIDAsIHNpemVvZihjYi0mZ3Q7YXJncykgLQogCQkJCQkJIDIgKiBzaXplb2YoY2ItJmd0O2FyZ3NbMF0pKTsKJiM0MzsJCQljYi0mZ3Q7YXJnc1sxXSA9IHRiLSZndDt0Yl9pZDsKIAkJCWVyciA9IGZpYl90YWJsZV9kdW1wKHRiLCBza2IsIGNiLCAmYW1wO2ZpbHRlcik7CiAJCQlpZiAoZXJyICZsdDsgMCkKIAkJCQlnb3RvIG91dDsKIAkJCWR1bXBlZCA9IDE7Ci1uZXh0OgotCQkJZSYjNDM7JiM0Mzs7CiAJCX0KIAl9CiBvdXQ6CiAKLQljYi0mZ3Q7YXJnc1sxXSA9IGU7CiAJY2ItJmd0O2FyZ3NbMF0gPSBoOwogCiB1bmxvY2s6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBSb3V0aW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AuIFNwZWNpZmljYWxseSwgdGhlIGZ1bmN0aW9uIGBpbmV0X2R1bXBfZmliYC4gSXQgc2VlbXMgdGhlIGNoYW5nZSBpcyBzdWJ0bGUsIGFmZmVjdGluZyBob3cgd2UgcmVzdW1lIHRoZSBpdGVyYXRpb24gdGhyb3VnaCB0aGUgYGZpYl90YWJsZV9oYXNoYC4gQXBwYXJlbnRseSwgaW5zdGVhZCBvZiB1c2luZyBgc19lYCwgYW4gaW5kZXggaW50byB0aGUgYnVja2V0LCBpdCYjMzk7cyB1c2luZyBgc19pZGAsIHRoZSB0YWJsZSBJRCwgdG8gcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIGluIHRoZSBuZXRsaW5rIGR1bXAgZm9yIElQdjQgRklCIChyb3V0aW5nIHRhYmxlcykuIE5vdGhpbmcganVtcHMgb3V0IGFzIGltbWVkaWF0ZWx5IHByb2JsZW1hdGljLCBidXQgdGhpcyBraW5kIG9mIG5ldGxpbmsgaW50ZXJhY3Rpb24gaXMgYSBjbGFzc2ljIGFyZWEgZm9yIHN1YnRsZSBidWdzLCBzbyBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzIGNoYW5nZS4KCkxldCYjMzk7cyBkaXZlIGludG8gYGluZXRfZHVtcF9maWJgIGl0c2VsZi4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgZHVtcGluZyBJUHY0IHJvdXRlcyB2aWEgbmV0bGluayDigJMgaW1wb3J0YW50IHRvIG5ldHdvcmsgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSBuZWVkcyBjYXJlZnVsIHJldmlldy4gSSYjMzk7bSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdW5kZXIgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGJ1dCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpdCBpcyBwcm9iYWJseSBpbmNsdWRlZCBhcyBwYXJ0IG9mIGJhc2ljIElQdjQgcm91dGluZywgc28gaXQgbWlnaHQgYWx3YXlzIGJlIHByZXNlbnQuIEkgc2hvdWxkIGNvbmZpcm0gdGhhdCBgaW5ldF9kdW1wX2ZpYmAgaXMsIGluIGZhY3QsIGFsd2F5cyBjb21waWxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmV0X2R1bXBfZmliJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTAxMj1FWFBPUlRfU1lNQk9MX0dQTChpcF92YWxpZF9maWJfZHVtcF9yZXEpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTAxMy1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwMTQ6c3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwMTUte1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2ODg9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIGZpYl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2OTItXHQgLmRvaXQgPSBpbmV0X3J0bV9kZWxyb3V0ZSwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2OTM6XHR7LnByb3RvY29sID0gUEZfSU5FVCwgLm1zZ3R5cGUgPSBSVE1fR0VUUk9VVEUsIC5kdW1waXQgPSBpbmV0X2R1bXBfZmliLFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5NC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRFVNUF9VTkxPQ0tFRCB8IFJUTkxfRkxBR19EVU1QX1NQTElUX05MTV9ET05FfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDkxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKlJvdXRlIFJldHJpZXZhbCBEZWJ1Z2dpbmc6IERpdmluZyBpbnRvIHRoZSBLZXJuZWwqKgoKUmlnaHQsIHNvIHRoaXMgYFJUTV9HRVRST1VURWAgZHVtcGl0IGhhbmRsZXIgZm9yIGBQRl9JTkVUYCBoYXMgYmVlbiBmbGFnZ2VkLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbWVhbnMgdGhlIHN5c3RlbSAqY2FuKiByZWFjaCBpdC4gTm93LCB0aGUgcmVhbCBpbnZlc3RpZ2F0aW9uIGJlZ2lucy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwcmVyZXF1aXNpdGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhpcyBiZWhhdmlvci4gUGVyaGFwcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGZsYWcgSSYjMzk7dmUgb3Zlcmxvb2tlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudGVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoYXQgbW9kdWxlJiMzOTtzIGluY2x1c2lvbiBpcyBjb25kaXRpb25hbC4gQWhhLCBpdCYjMzk7cyBub3QgY29udGluZ2VudCBvbiBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AuIEV4Y2VsbGVudC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gU28gYGZpYl9mcm9udGVuZC5jYCBpcyBhbHdheXMgcHJlc2VudCBmb3IgSVB2NC4KCk5vdywgbGV0IG1lIHBlZWsgaW50byBgbmV0L2lwdjQvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmRpdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIGBSVE1fR0VUUk9VVEVgIGhhbmRsaW5nLiBJdCYjMzk7cyB0aW1lIHRvIGNvbmZpcm0gdGhlcmUgYXJlIG5vIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgZmFjdG9ycyBJJiMzOTttIG92ZXJsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYl9mcm9udGVuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXG4tLVxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNTpcdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSVB2NCBSb3V0aW5nIFRhYmxlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCBldmVyeXRoaW5nIGlzLCBhcyB1c3VhbCwgY29tcGlsZWQgd2l0aCBJUHY0IGluIG1pbmQuIFRoaXMgaXMgc3RhbmRhcmQsIGJ1dCBnb29kIHRvIGNvbmZpcm0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBnaXZlbiB0aGlzIGNvbnRleHQsIHdoZXRoZXIgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGNvbWVzIGludG8gcGxheSBoZXJlLiBJdCBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIHJlbGV2YW50IHdoZW4gY29uc2lkZXJpbmcgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMsIGJ1dCB0aGVuIGFnYWluLCBgaW5ldF9kdW1wX2ZpYmAgZnVuY3Rpb25zIGNvcnJlY3RseSwgZXZlbiB3aXRob3V0IGV4cGxpY2l0bHkgZW5hYmxpbmcgbXVsdGlwbGUgdGFibGVzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4KCkhvbGQgb24sIEkgc2VlIGBGSUJfVEFCTEVfSEFTSFNaYCBiZWluZyB1c2VkLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBwYXJhbWV0ZXIgcmVsYXRlZCB0byB0aGUgRmlib25hY2NpIGhlYXAgaGFzaCBzaXplLCBhbmQgaXMgYWxtb3N0IGNlcnRhaW5seSBjb25uZWN0ZWQgdG8gcGVyZm9ybWFuY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYEZJQl9UQUJMRV9IQVNIU1pgICphY3R1YWxseSogbWVhbnMuIExldCBtZSBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IHZhcmlhYmxlIHRvIHNlZSBob3cgdGhlIHN5c3RlbSBpcyBiZWhhdmluZy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUga2V5IHRvIHRoZSBpbnRlcm5hbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RklCX1RBQkxFX0hBU0hTWiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9maWJfZnJvbnRlbmQuYz03Nz1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNi1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwNzpcdGggPSBpZCBcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwOC1cdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZ0Yi1cdTAwM2V0Yl9obGlzdCwgXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF0pO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTExND1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEyMS1cdFx0aWQgPSBSVF9UQUJMRV9NQUlOO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTIyOlx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTIzLVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE4Nj12b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTkwLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTkxOlx0Zm9yIChoID0gMDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE5Mi1cdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xMDE0PXN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTA2MC1cdGVyciA9IDA7XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxMDYxOlx0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoJiM0MzsmIzQzOywgc19pZCA9IDApIHtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNjItXHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTU0PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NTYtXHRpbnQgZXJyO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU1NzpcdHNpemVfdCBzaXplID0gc2l6ZW9mKHN0cnVjdCBobGlzdF9oZWFkKSAqIEZJQl9UQUJMRV9IQVNIU1o7XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU4LVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE1OTA9c3RhdGljIHZvaWQgaXBfZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjAzLVx0ICovXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjA0Olx0Zm9yIChpID0gRklCX1RBQkxFX0hBU0hTWiAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MDUtXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaV07XG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYz0yMTMyPXZvaWQgZmliX2luZm9fbm90aWZ5X3VwZGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubF9pbmZvICppbmZvKVxuLS1cbm5ldC9pcHY0L2ZpYl90cmllLmMtMjEzNS1cbm5ldC9pcHY0L2ZpYl90cmllLmM6MjEzNjpcdGZvciAoaCA9IDA7IGggXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC9maWJfdHJpZS5jLTIxMzctXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYz0yMjA0PWludCBmaWJfbm90aWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTIyMDktXG5uZXQvaXB2NC9maWJfdHJpZS5jOjIyMTA6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoJiM0MzsmIzQzOykge1xubmV0L2lwdjQvZmliX3RyaWUuYy0yMjExLVx0XHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xuLS1cbm5ldC9pcHY0L2ZpYl90cmllLmM9MjYwOD1zdGF0aWMgaW50IGZpYl90cmllc3RhdF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI2MTgtXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2MTk6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoJiM0MzsmIzQzOykge1xubmV0L2lwdjQvZmliX3RyaWUuYy0yNjIwLVx0XHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xuLS1cbm5ldC9pcHY0L2ZpYl90cmllLmM9MjY0NT1zdGF0aWMgc3RydWN0IGtleV92ZWN0b3IgKmZpYl90cmllX2dldF9pZHgoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCBwb3MpXG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjUxLVxubmV0L2lwdjQvZmliX3RyaWUuYzoyNjUyOlx0Zm9yIChoID0gMDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L2ZpYl90cmllLmMtMjY1My1cdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jPTI2Nzk9c3RhdGljIHZvaWQgKmZpYl90cmllX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI2OTQtXHQvKiB3YWxrIHJlc3Qgb2YgdGhpcyBoYXNoIGNoYWluICovXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2OTU6XHRoID0gdGItXHUwMDNldGJfaWQgXHUwMDI2IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7XG5uZXQvaXB2NC9maWJfdHJpZS5jLTI2OTYtXHR3aGlsZSAoKHRiX25vZGUgPSByY3VfZGVyZWZlcmVuY2UoaGxpc3RfbmV4dF9yY3UoXHUwMDI2dGItXHUwMDNldGJfaGxpc3QpKSkpIHtcbi0tXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDMtXHQvKiBuZXcgaGFzaCBjaGFpbiAqL1xubmV0L2lwdjQvZmliX3RyaWUuYzoyNzA0Olx0d2hpbGUgKCYjNDM7JiM0MztoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaKSB7XG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDUtXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU1MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZJQiBUYWJsZSBEdW1wIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBpbmV0X2R1bXBfZmliYCBmdW5jdGlvbiBhZ2FpbiwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBGSUJfVEFCTEVfSEFTSFNaYCBpcyBhIGZ1bmRhbWVudGFsIGNvbnN0YW50IGhlcmUsIHVzZWQgdGhyb3VnaG91dC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLCBhcyBpdCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBGSUIgdGFibGVzIGFuZCBkdW1wcyB0aGVtLiBUaGUgY3J1eCBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgaG93IGl0IGhhbmRsZXMgcmVzdW1pbmcgYSBkdW1wLiBQcmV2aW91c2x5LCBpdCB1c2VkIGBzX2VgIHRvIHNraXAgdGFibGVzLCBhbmQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoaXMgaW5kZXgtYmFzZWQgYXBwcm9hY2ggbGlrZWx5IGJlY2FtZSBwcm9ibGVtYXRpYyB3aGVuIHRhYmxlcyB3ZXJlIGFkZGVkIG9yIHJlbW92ZWQgZHluYW1pY2FsbHkuIFRoZSBpbmRleCBgc19lYCBjb3VsZCBlYXNpbHkgYmVjb21lIG1pc2FsaWduZWQsIG9yIHRoZSBza2lwcGluZyBtaWdodCBoYXZlIGJlZW4gc2ltcGx5IGluY29ycmVjdC4gVGhlIHBhdGNoIHVzZXMgYHNfaWRgLCB3aGljaCByZXByZXNlbnRzIHRoZSB0YWJsZSBJRCBhbmQgcmVzdW1lcyB0aGUgZHVtcCBmcm9tIHRoZSBwcmVjaXNlIHRhYmxlIElEIGxhc3QgcHJvY2Vzc2VkLgoKTm93LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgY29kZSBjaGFuZ2VzIGEgYml0IG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBgc19oYCByZXByZXNlbnRzIHRoZSBzdGFydGluZyBoYXNoIGJ1Y2tldCwgdGhhdCBtdWNoIGlzIHVuY2hhbmdlZC4gVGhlIGNydWNpYWwgY2hhbmdlIGlzIHJlcGxhY2luZyBgc19lYCAoYW4gaW5kZXgpIHdpdGggYHNfaWRgIChhIHRhYmxlIElEKS4gSW5zdGVhZCBvZiBpbmNyZW1lbnRpbmcgYHNfZWAsIGl0IG5vdyBzZXRzIGBzX2lkYCB0byAwLiBJdCBtZWFucyB0aGF0IGBzX2lkYCBpcyBvbmx5IHNldCB3aGVuIHdlIG5lZWQgdG8gcmVzdW1lIGZyb20gdGhhdCBwYXJ0aWN1bGFyIHRhYmxlIElELCBhbmQgd2UgY2FuIHN0YXJ0IGR1bXBpbmcgZnJvbSB0aGF0IHRhYmxlLCB3aGljaCBpcyBtb3JlIHJlbGlhYmxlLiBXZSYjMzk7cmUgbm93IGRpcmVjdGx5IGNvbXBhcmluZyB0YWJsZSBJRHMgKGB0Yi0mZ3Q7dGJfaWRgKSB3aXRoaW4gdGhlIGxvb3AuIFRoZSBgY2ItJmd0O2FyZ3NbMV1gIGlzIHVwZGF0ZWQgd2l0aCB0aGUgY3VycmVudCB0YWJsZSYjMzk7cyBJRC4KClRoaXMgY2hhbmdlIGZ1bmN0aW9uYWxseSBhbHRlcnMgYGluZXRfZHVtcF9maWJgLiBJIHNob3VsZCBub3RlIHRoYXQgYElQX01VTFRJUExFX1RBQkxFU2AgbWF5IGJlIHVzZWZ1bCwgZXNwZWNpYWxseSB3aGVuIHRlc3RpbmcgdGhlIGR1bXAsIHRvIGdldCBhIGR1bXAgdGhhdCBzcGFucyBtdWx0aXBsZSBuZXRsaW5rIG1lc3NhZ2VzLCBhbmQgcmVxdWlyZXMgcmVzdW1pbmcuIEl0JiMzOTtzIG5vdCBzdHJpY3RseSByZXF1aXJlZCB0byAqY29tcGlsZSogdGhpcyBjb2RlLCBidXQgaXQmIzM5O3MgZXNzZW50aWFsIGZvciBwcm9wZXJseSB0ZXN0aW5nIGl0cyBmdW5jdGlvbmFsaXR5IGFuZCBkZW1vbnN0cmF0aW5nIHRoZSByZXN1bWUgY2FwYWJpbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AgaXMgZXZlbiBhIHJlYWwgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5zdXJlIEkgY2FuIHByb3Blcmx5IHRlc3QgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX01VTFRJUExFX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz01Nj1jb25maWcgSVBfRklCX1RSSUVfU1RBVFNcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTYyLVxubmV0L2lwdjQvS2NvbmZpZzo2Mzpjb25maWcgSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtJUDogcG9saWN5IHJvdXRpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQb2xpY3kgUm91dGluZyBDb25maWd1cmF0aW9uIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHBvbGljeSByb3V0aW5nIGFuZCBjb25maXJtaW5nIHRoYXQgYElQX01VTFRJUExFX1RBQkxFU2AgaXMgaW5kZWVkIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVubG9ja2luZyB0aGUgcG93ZXIgb2YgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMuIFdpdGhvdXQgaXQsIHdlJiMzOTtyZSBzdHVjayB3aXRoIGp1c3QgdGhlIGRlZmF1bHQgbWFpbiBhbmQgbG9jYWwgdGFibGVzLCB3aGljaCBzZXZlcmVseSBsaW1pdHMgdGhlIGZsZXhpYmlsaXR5IHdlIG5lZWQgZm9yIHNvcGhpc3RpY2F0ZWQgdHJhZmZpYyBtYW5hZ2VtZW50LiBCdXQgd2l0aCB0aGlzIGVuYWJsZWQsIHdlIGNhbiBsZXZlcmFnZSB1cCB0byAyNTUgb3IgZXZlbiBtb3JlIHRhYmxlcywgd2hpY2ggb3BlbnMgdXAgYSB3b3JsZCBvZiBwb3NzaWJpbGl0aWVzLiBUaGVyZWZvcmUsIGVuYWJsaW5nIGBJUF9NVUxUSVBMRV9UQUJMRVNgIHNlZW1zIGxpa2UgYSBuby1icmFpbmVyIGZvciBhbnkgcG9saWN5IHJvdXRpbmcgaW1wbGVtZW50YXRpb24uCgpOb3csIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhbHNvIGltcG9ydGFudC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvZGUuIExldCYjMzk7cyBkZWx2ZSBpbnRvIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQga25vYnMgd2Ugc2hvdWxkIGNvbnNpZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtNTAtXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzo1MTojaWZuZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTExND1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzMS19XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxMzI6I2VuZGlmIC8qIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVMgKi9cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzMy1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTEzND1zdGF0aWMgdm9pZCBmaWJfcmVwbGFjZV90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWJfdGFibGUgKm9sZCxcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzYte1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTM3OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzgtXHRzd2l0Y2ggKG5ldy1cdTAwM2V0Yl9pZCkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTMxMT1ib29sIGZpYl9pbmZvX25oX3VzZXNfZGV2KHN0cnVjdCBmaWJfaW5mbyAqZmksIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMzEzLVx0Ym9vbCBkZXZfbWF0Y2ggPSBmYWxzZTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjMxNDojaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMzE1LVx0aWYgKHVubGlrZWx5KGZpLVx1MDAzZW5oKSkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTY5MT1pbnQgZmliX2d3X2Zyb21fdmlhKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsIHN0cnVjdCBubGF0dHIgKm5sYSxcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy03MTQtXHRjYXNlIEFGX0lORVQ2OlxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6NzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtNzE2LVx0XHRpZiAoYWxlbiAhPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE0NTY9c3RhdGljIGludCBmaWJfaW5ldGFkZHJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTQ2NC1cdFx0ZmliX2FkZF9pZmFkZHIoaWZhKTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE0NjU6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE0NjYtXHRcdGZpYl9zeW5jX3VwKGRldiwgUlROSF9GX0RFQUQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE0ODc9c3RhdGljIGludCBmaWJfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MTEtXHRcdH1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTI6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MTMtXHRcdGZpYl9zeW5jX3VwKGRldiwgUlROSF9GX0RFQUQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE1NTQ9c3RhdGljIGludCBfX25ldF9pbml0IGlwX2ZpYl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU2Mi1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1NjM6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NjQtXHQvKiBEZWZhdWx0IHRvIDMtdHVwbGUgKi9cbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTkwPXN0YXRpYyB2b2lkIGlwX2ZpYl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU5NC1cdEFTU0VSVF9SVE5MX05FVChuZXQpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU5NTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU5Ni1cdFJDVV9JTklUX1BPSU5URVIobmV0LVx1MDAzZWlwdjQuZmliX21haW4sIE5VTEwpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTc9c3RhdGljIGludCBfX25ldF9pbml0IGZpYl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTYyMC1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2MjE6I2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjIyLVx0YXRvbWljX3NldChcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfbnVtX3RjbGFzc2lkX3VzZXJzLCAwKTtcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjUwLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY1MTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY1Mi1cdGZpYjRfcnVsZXNfZXhpdChuZXQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2NzE9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWJfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY3Mi17XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjczOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjc0LVx0ZmliNF9ydWxlc19leGl0KG5ldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMzkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYElQX01VTFRJUExFX1RBQkxFU2AgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBJdCYjMzk7cyB0aGUgbW9zdCByZWxldmFudCBmbGFnIHRvIGNvbnNpZGVyIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZWxzZSB0aGlzIHBhdGNoIHRvdWNoZXMsIHRob3VnaC4KClJpZ2h0LCB0aGUgY2hhbmdlcyBzZWVtIGlzb2xhdGVkIHRvIGBpbmV0X2R1bXBfZmliYC4gTGV0IG1lIGpvdCBkb3duIHRoYXQgZm9jdXMgc3ltYm9sOiBgaW5ldF9kdW1wX2ZpYmAuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgcHJldHR5IGNsZWFyIGZyb20gdGhlIHJlYXNvbmluZy4gVGhpcyBwYXRjaCBpcyBmaXhpbmcgdGhlIHdheSB0aGUgSVB2NCByb3V0aW5nIHRhYmxlIG5ldGxpbmsgZHVtcCBoYW5kbGVzIGludGVycnVwdGlvbnMgYW5kIHJlc3VtZXMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGJ1ZyB3aGVyZSB0YWJsZSBJRHMgbWlnaHQgYmUgc2tpcHBlZCBpZiB0aGUgdW5kZXJseWluZyBoYXNoIGNoYWluIGlzIG1vZGlmaWVkIGJldHdlZW4gbmV0bGluayBjYWxscy4gU3dpdGNoaW5nIGZyb20gYSBidWNrZXQgaW5kZXggdG8gdGhlIGFjdHVhbCB0YWJsZSBJRCBmb3IgcmVzdW1pbmcgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgSVB2NCByb3V0aW5nIG5ldGxpbmsgaW50ZXJmYWNlLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIHRlc3RpbmcgaXRzIHJvYnVzdG5lc3MgdW5kZXIgcHJlc3N1cmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBpbmV0X2R1bXBfZmliYCBmdW5jdGlvbiBpdHNlbGYsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jYC4gR290dGEgY29uZmlybSB0aGUgZGV0YWlscyBhcmUgd2hhdCBJIHRoaW5rIHRoZXkgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAxNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAxNDpcdHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4xMDE1Olx0e1xuMTAxNjpcdFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGggPSBjYi1cdTAwM2VubGg7XG4xMDE3Olx0XHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXHUwMDNlc2spO1xuMTAxODpcdFx0c3RydWN0IGZpYl9kdW1wX2ZpbHRlciBmaWx0ZXIgPSB7XG4xMDE5Olx0XHRcdC5kdW1wX3JvdXRlcyA9IHRydWUsXG4xMDIwOlx0XHRcdC5kdW1wX2V4Y2VwdGlvbnMgPSB0cnVlLFxuMTAyMTpcdFx0fTtcbjEwMjI6XHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuMTAyMzpcdFx0aW50IGR1bXBlZCA9IDAsIGVyciA9IDA7XG4xMDI0Olx0XHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbjEwMjU6XHRcdHVuc2lnbmVkIGludCBoLCBzX2g7XG4xMDI2Olx0XHR1MzIgc19pZDtcbjEwMjc6XHRcbjEwMjg6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjEwMjk6XHRcdGlmIChjYi1cdTAwM2VzdHJpY3RfY2hlY2spIHtcbjEwMzA6XHRcdFx0ZXJyID0gaXBfdmFsaWRfZmliX2R1bXBfcmVxKG5ldCwgbmxoLCBcdTAwMjZmaWx0ZXIsIGNiKTtcbjEwMzE6XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbjEwMzI6XHRcdFx0XHRnb3RvIHVubG9jaztcbjEwMzM6XHRcdH0gZWxzZSBpZiAobmxtc2dfbGVuKG5saCkgXHUwMDNlPSBzaXplb2Yoc3RydWN0IHJ0bXNnKSkge1xuMTAzNDpcdFx0XHRzdHJ1Y3QgcnRtc2cgKnJ0bSA9IG5sbXNnX2RhdGEobmxoKTtcbjEwMzU6XHRcbjEwMzY6XHRcdFx0ZmlsdGVyLmZsYWdzID0gcnRtLVx1MDAzZXJ0bV9mbGFncyBcdTAwMjYgKFJUTV9GX1BSRUZJWCB8IFJUTV9GX0NMT05FRCk7XG4xMDM3Olx0XHR9XG4xMDM4Olx0XG4xMDM5Olx0XHQvKiBpcHY0IGRvZXMgbm90IHVzZSBwcmVmaXggZmxhZyAqL1xuMTA0MDpcdFx0aWYgKGZpbHRlci5mbGFncyBcdTAwMjYgUlRNX0ZfUFJFRklYKVxuMTA0MTpcdFx0XHRnb3RvIHVubG9jaztcbjEwNDI6XHRcbjEwNDM6XHRcdGlmIChmaWx0ZXIudGFibGVfaWQpIHtcbjEwNDQ6XHRcdFx0dGIgPSBmaWJfZ2V0X3RhYmxlKG5ldCwgZmlsdGVyLnRhYmxlX2lkKTtcbjEwNDU6XHRcdFx0aWYgKCF0Yikge1xuMTA0NjpcdFx0XHRcdGlmIChydG5sX21zZ19mYW1pbHkoY2ItXHUwMDNlbmxoKSAhPSBQRl9JTkVUKVxuMTA0NzpcdFx0XHRcdFx0Z290byB1bmxvY2s7XG4xMDQ4Olx0XG4xMDQ5Olx0XHRcdFx0TkxfU0VUX0VSUl9NU0coY2ItXHUwMDNlZXh0YWNrLCBcJiMzNDtpcHY0OiBGSUIgdGFibGUgZG9lcyBub3QgZXhpc3RcJiMzNDspO1xuMTA1MDpcdFx0XHRcdGVyciA9IC1FTk9FTlQ7XG4xMDUxOlx0XHRcdFx0Z290byB1bmxvY2s7XG4xMDUyOlx0XHRcdH1cbjEwNTM6XHRcdFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFx1MDAyNmZpbHRlcik7XG4xMDU0Olx0XHRcdGdvdG8gdW5sb2NrO1xuMTA1NTpcdFx0fVxuMTA1NjpcdFxuMTA1NzpcdFx0c19oID0gY2ItXHUwMDNlYXJnc1swXTtcbjEwNTg6XHRcdHNfaWQgPSBjYi1cdTAwM2VhcmdzWzFdO1xuMTA1OTpcdFxuMTA2MDpcdFx0ZXJyID0gMDtcbjEwNjE6XHRcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7XG4xMDYyOlx0XHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbjEwNjM6XHRcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCkge1xuMTA2NDpcdFx0XHRcdGlmIChzX2lkIFx1MDAyNlx1MDAyNiB0Yi1cdTAwM2V0Yl9pZCAhPSBzX2lkKVxuMTA2NTpcdFx0XHRcdFx0Y29udGludWU7XG4xMDY2Olx0XG4xMDY3Olx0XHRcdFx0c19pZCA9IDA7XG4xMDY4Olx0XHRcdFx0aWYgKGR1bXBlZClcbjEwNjk6XHRcdFx0XHRcdG1lbXNldChcdTAwMjZjYi1cdTAwM2VhcmdzWzJdLCAwLCBzaXplb2YoY2ItXHUwMDNlYXJncykgLVxuMTA3MDpcdFx0XHRcdFx0XHRcdCAyICogc2l6ZW9mKGNiLVx1MDAzZWFyZ3NbMF0pKTtcbjEwNzE6XHRcdFx0XHRjYi1cdTAwM2VhcmdzWzFdID0gdGItXHUwMDNldGJfaWQ7XG4xMDcyOlx0XHRcdFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFx1MDAyNmZpbHRlcik7XG4xMDczOlx0XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbjEwNzQ6XHRcdFx0XHRcdGdvdG8gb3V0O1xuMTA3NTpcdFx0XHRcdGR1bXBlZCA9IDE7XG4xMDc2Olx0XHRcdH1cbjEwNzc6XHRcdH1cbjEwNzg6XHRvdXQ6XG4xMDc5Olx0XG4xMDgwOlx0XHRjYi1cdTAwM2VhcmdzWzBdID0gaDtcbjEwODE6XHRcbjEwODI6XHR1bmxvY2s6XG4xMDgzOlx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjEwODQ6XHRcdHJldHVybiBlcnI7XG4xMDg1Olx0fVxuMTA4NjpcdFxuMTA4NzpcdC8qIFByZXBhcmUgYW5kIGZlZWQgaW50cmEta2VybmVsIHJvdXRpbmcgcmVxdWVzdC5cbjEwODg6XHQgKiBSZWFsbHksIGl0IHNob3VsZCBiZSBuZXRsaW5rIG1lc3NhZ2UsIGJ1dCA6LSggbmV0bGlua1xuMTA4OTpcdCAqIGNhbiBiZSBub3QgY29uZmlndXJlZCwgc28gdGhhdCB3ZSBmZWVkIGl0IGRpcmVjdGx5XG4xMDkwOlx0ICogdG8gZmliIGVuZ2luZS4gSXQgaXMgbGVnYWwsIGJlY2F1c2UgYWxsIGV2ZW50cyBvY2N1clxuMTA5MTpcdCAqIG9ubHkgd2hlbiBuZXRsaW5rIGlzIGFscmVhZHkgbG9ja2VkLlxuMTA5MjpcdCAqL1xuMTA5MzpcdHN0YXRpYyB2b2lkIGZpYl9tYWdpYyhpbnQgY21kLCBpbnQgdHlwZSwgX19iZTMyIGRzdCwgaW50IGRzdF9sZW4sXG4xMDk0Olx0XHRcdCAgICAgIHN0cnVjdCBpbl9pZmFkZHIgKmlmYSwgdTMyIHJ0X3ByaW9yaXR5KVxuMTA5NTpcdHtcbjEwOTY6XHRcdHN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoaWZhLVx1MDAzZWlmYV9kZXYtXHUwMDNlZGV2KTtcbjEwOTc6XHRcdHUzMiB0Yl9pZCA9IGwzbWRldl9maWJfdGFibGUoaWZhLVx1MDAzZWlmYV9kZXYtXHUwMDNlZGV2KTtcbjEwOTg6XHRcdHN0cnVjdCBmaWJfdGFibGUgKnRiO1xuMTA5OTpcdFx0c3RydWN0IGZpYl9jb25maWcgY2ZnID0ge1xuMTEwMDpcdFx0XHQuZmNfcHJvdG9jb2wgPSBSVFBST1RfS0VSTkVMLFxuMTEwMTpcdFx0XHQuZmNfdHlwZSA9IHR5cGUsXG4xMTAyOlx0XHRcdC5mY19kc3QgPSBkc3QsXG4xMTAzOlx0XHRcdC5mY19kc3RfbGVuID0gZHN0X2xlbixcbjExMDQ6XHRcdFx0LmZjX3ByaW9yaXR5ID0gcnRfcHJpb3JpdHksXG4xMTA1Olx0XHRcdC5mY19wcmVmc3JjID0gaWZhLVx1MDAzZWlmYV9sb2NhbCxcbjExMDY6XHRcdFx0LmZjX29pZiA9IGlmYS1cdTAwM2VpZmFfZGV2LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4LFxuMTEwNzpcdFx0XHQuZmNfbmxmbGFncyA9IE5MTV9GX0NSRUFURSB8IE5MTV9GX0FQUEVORCxcbjExMDg6XHRcdFx0LmZjX25saW5mbyA9IHtcbjExMDk6XHRcdFx0XHQubmxfbmV0ID0gbmV0LFxuMTExMDpcdFx0XHR9LFxuMTExMTpcdFx0fTtcbjExMTI6XHRcbjExMTM6XHRcdGlmICghdGJfaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzgzCgkJCQkJCQlvdXRwdXQ6IDEyMwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIGNvZGUgaXMgcHJlY2lzZWx5IHdoYXQgSSBhbnRpY2lwYXRlZC4gVGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IGl0cyBtb2RpZmljYXRpb24gb2YgYGluZXRfZHVtcF9maWJgLCBzZWVtcyBzb3VuZCwgYW5kIGl0JiMzOTtzIHJlYWR5IGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgY2hhbmdlcyB0byBgaW5ldF9kdW1wX2ZpYmAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUga2V5IHN5bWJvbCB0byB0YXJnZXQgZHVyaW5nIHRlc3RpbmcuIEZ1cnRoZXJtb3JlLCB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZSBgSVBfTVVMVElQTEVfVEFCTEVTYCBjb25maWd1cmF0aW9uLiBSaWdodCwgdGltZSB0byBtb3ZlIGFoZWFkIHdpdGggYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0MzoxNi45OTgyMDU0MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ1MDMzNTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbmV0X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjE2Ljk5ODIxMTMxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1NDA0NjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWY5YzQxMzZjNTg5NTZlNDMyOGJhNzNjYmMzYjU2OWIyYjQ5ZDM4NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxMDo0MzoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXFxuaW5kZXggNDIyMTI5NzBkNzM1NDAuLjI0ODg5NWU3ZWEwNjcwIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXFxuKysrIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcXG5AQCAtMTAxOSwxMCArMTAxOSwxMSBAQCBzdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbiBcXHRcXHQuZHVtcF9yb3V0ZXMgPSB0cnVlLFxcbiBcXHRcXHQuZHVtcF9leGNlcHRpb25zID0gdHJ1ZSxcXG4gXFx0fTtcXG4tXFx0dW5zaWduZWQgaW50IGUgPSAwLCBzX2UsIGgsIHNfaDtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7XFxuIFxcdGludCBkdW1wZWQgPSAwLCBlcnIgPSAwO1xcbiBcXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcXG4rXFx0dW5zaWduZWQgaW50IGgsIHNfaDtcXG4rXFx0dTMyIHNfaWQ7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdGlmIChjYi1cXHUwMDNlc3RyaWN0X2NoZWNrKSB7XFxuQEAgLTEwNTQsMjkgKzEwNTUsMjggQEAgc3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4gXFx0fVxcbiBcXG4gXFx0c19oID0gY2ItXFx1MDAzZWFyZ3NbMF07XFxuLVxcdHNfZSA9IGNiLVxcdTAwM2VhcmdzWzFdO1xcbitcXHRzX2lkID0gY2ItXFx1MDAzZWFyZ3NbMV07XFxuIFxcbiBcXHRlcnIgPSAwO1xcbi1cXHRmb3IgKGggPSBzX2g7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyssIHNfZSA9IDApIHtcXG4tXFx0XFx0ZSA9IDA7XFxuK1xcdGZvciAoaCA9IHNfaDsgaCBcXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgrKywgc19pZCA9IDApIHtcXG4gXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XFxuIFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHtcXG4tXFx0XFx0XFx0aWYgKGUgXFx1MDAzYyBzX2UpXFxuLVxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4rXFx0XFx0XFx0aWYgKHNfaWQgXFx1MDAyNlxcdTAwMjYgdGItXFx1MDAzZXRiX2lkICE9IHNfaWQpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0XFx0c19pZCA9IDA7XFxuIFxcdFxcdFxcdGlmIChkdW1wZWQpXFxuIFxcdFxcdFxcdFxcdG1lbXNldChcXHUwMDI2Y2ItXFx1MDAzZWFyZ3NbMl0sIDAsIHNpemVvZihjYi1cXHUwMDNlYXJncykgLVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgMiAqIHNpemVvZihjYi1cXHUwMDNlYXJnc1swXSkpO1xcbitcXHRcXHRcXHRjYi1cXHUwMDNlYXJnc1sxXSA9IHRiLVxcdTAwM2V0Yl9pZDtcXG4gXFx0XFx0XFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFxcdTAwMjZmaWx0ZXIpO1xcbiBcXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdFxcdFxcdGR1bXBlZCA9IDE7XFxuLW5leHQ6XFxuLVxcdFxcdFxcdGUrKztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIG91dDpcXG4gXFxuLVxcdGNiLVxcdTAwM2VhcmdzWzFdID0gZTtcXG4gXFx0Y2ItXFx1MDAzZWFyZ3NbMF0gPSBoO1xcbiBcXG4gdW5sb2NrOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0MzoxNy41OTQ1ODk2MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODUzOTM3MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXRfZHVtcF9maWJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBob3cgdGhlIG5ldGxpbmsgZHVtcCBvZiBJUHY0IHJvdXRpbmcgdGFibGVzIHJlc3VtZXMgYWZ0ZXIgYmVpbmcgaW50ZXJydXB0ZWQgKGUuZy4sIHdoZW4gdGhlIGJ1ZmZlciBpcyBmdWxsKS4gSXQgcmVwbGFjZXMgdGhlIHVzZSBvZiBhIGJ1Y2tldCBpbmRleCB3aXRoIHRoZSBhY3R1YWwgdGFibGUgSUQgdG8gYXZvaWQgc2tpcHBpbmcgdGFibGVzIGlmIHRoZSBoYXNoIGNoYWluIGlzIG1vZGlmaWVkIGJldHdlZW4gZHVtcCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBuZXRsaW5rIGludGVyZmFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZjljNDEzNmM1ODk1NmU0MzI4YmE3M2NiYzNiNTY5YjJiNDlkMzg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTA6NDM6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG5pbmRleCA0MjIxMjk3MGQ3MzU0MC4uMjQ4ODk1ZTdlYTA2NzAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuKysrIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbkBAIC0xMDE5LDEwICsxMDE5LDExIEBAIHN0YXRpYyBpbnQgaW5ldF9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXHRcdC5kdW1wX3JvdXRlcyA9IHRydWUsXG4gXHRcdC5kdW1wX2V4Y2VwdGlvbnMgPSB0cnVlLFxuIFx0fTtcbi1cdHVuc2lnbmVkIGludCBlID0gMCwgc19lLCBoLCBzX2g7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDtcbiBcdGludCBkdW1wZWQgPSAwLCBlcnIgPSAwO1xuIFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4rXHR1bnNpZ25lZCBpbnQgaCwgc19oO1xuK1x0dTMyIHNfaWQ7XG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRpZiAoY2ItXHUwMDNlc3RyaWN0X2NoZWNrKSB7XG5AQCAtMTA1NCwyOSArMTA1NSwyOCBAQCBzdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxuIFx0fVxuIFxuIFx0c19oID0gY2ItXHUwMDNlYXJnc1swXTtcbi1cdHNfZSA9IGNiLVx1MDAzZWFyZ3NbMV07XG4rXHRzX2lkID0gY2ItXHUwMDNlYXJnc1sxXTtcbiBcbiBcdGVyciA9IDA7XG4tXHRmb3IgKGggPSBzX2g7IGggXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgrKywgc19lID0gMCkge1xuLVx0XHRlID0gMDtcbitcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xuIFx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHtcbi1cdFx0XHRpZiAoZSBcdTAwM2Mgc19lKVxuLVx0XHRcdFx0Z290byBuZXh0O1xuK1x0XHRcdGlmIChzX2lkIFx1MDAyNlx1MDAyNiB0Yi1cdTAwM2V0Yl9pZCAhPSBzX2lkKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4rXHRcdFx0c19pZCA9IDA7XG4gXHRcdFx0aWYgKGR1bXBlZClcbiBcdFx0XHRcdG1lbXNldChcdTAwMjZjYi1cdTAwM2VhcmdzWzJdLCAwLCBzaXplb2YoY2ItXHUwMDNlYXJncykgLVxuIFx0XHRcdFx0XHRcdCAyICogc2l6ZW9mKGNiLVx1MDAzZWFyZ3NbMF0pKTtcbitcdFx0XHRjYi1cdTAwM2VhcmdzWzFdID0gdGItXHUwMDNldGJfaWQ7XG4gXHRcdFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFx1MDAyNmZpbHRlcik7XG4gXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdGR1bXBlZCA9IDE7XG4tbmV4dDpcbi1cdFx0XHRlKys7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4gXG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjE3LjU5NDU5MzE0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTkzMDIwNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBSb3V0aW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBgaW5ldF9kdW1wX2ZpYmAuIEl0IHNlZW1zIHRoZSBjaGFuZ2UgaXMgc3VidGxlLCBhZmZlY3RpbmcgaG93IHdlIHJlc3VtZSB0aGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGBmaWJfdGFibGVfaGFzaGAuIEFwcGFyZW50bHksIGluc3RlYWQgb2YgdXNpbmcgYHNfZWAsIGFuIGluZGV4IGludG8gdGhlIGJ1Y2tldCwgaXQncyB1c2luZyBgc19pZGAsIHRoZSB0YWJsZSBJRCwgdG8gcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIGluIHRoZSBuZXRsaW5rIGR1bXAgZm9yIElQdjQgRklCIChyb3V0aW5nIHRhYmxlcykuIE5vdGhpbmcganVtcHMgb3V0IGFzIGltbWVkaWF0ZWx5IHByb2JsZW1hdGljLCBidXQgdGhpcyBraW5kIG9mIG5ldGxpbmsgaW50ZXJhY3Rpb24gaXMgYSBjbGFzc2ljIGFyZWEgZm9yIHN1YnRsZSBidWdzLCBzbyBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHRoaXMgY2hhbmdlLlxuXG5MZXQncyBkaXZlIGludG8gYGluZXRfZHVtcF9maWJgIGl0c2VsZi4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgZHVtcGluZyBJUHY0IHJvdXRlcyB2aWEgbmV0bGluayDigJMgaW1wb3J0YW50IHRvIG5ldHdvcmsgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSBuZWVkcyBjYXJlZnVsIHJldmlldy4gSSdtIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB1bmRlciBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AgYnV0LCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGl0IGlzIHByb2JhYmx5IGluY2x1ZGVkIGFzIHBhcnQgb2YgYmFzaWMgSVB2NCByb3V0aW5nLCBzbyBpdCBtaWdodCBhbHdheXMgYmUgcHJlc2VudC4gSSBzaG91bGQgY29uZmlybSB0aGF0IGBpbmV0X2R1bXBfZmliYCBpcywgaW4gZmFjdCwgYWx3YXlzIGNvbXBpbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6MjIuODEzODk4MTEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjk5MDQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbmV0X2R1bXBfZmliXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTEwMTI9RVhQT1JUX1NZTUJPTF9HUEwoaXBfdmFsaWRfZmliX2R1bXBfcmVxKTtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMDEzLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwMTQ6c3RhdGljIGludCBpbmV0X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMDE1LXtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2ODg9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIGZpYl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5Mi1cXHQgLmRvaXQgPSBpbmV0X3J0bV9kZWxyb3V0ZSwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjkzOlxcdHsucHJvdG9jb2wgPSBQRl9JTkVULCAubXNndHlwZSA9IFJUTV9HRVRST1VURSwgLmR1bXBpdCA9IGluZXRfZHVtcF9maWIsXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5NC1cXHQgLmZsYWdzID0gUlROTF9GTEFHX0RVTVBfVU5MT0NLRUQgfCBSVE5MX0ZMQUdfRFVNUF9TUExJVF9OTE1fRE9ORX0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjIyLjk1Njg5OTEzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTEwNDIzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipSb3V0ZSBSZXRyaWV2YWwgRGVidWdnaW5nOiBEaXZpbmcgaW50byB0aGUgS2VybmVsKipcblxuUmlnaHQsIHNvIHRoaXMgYFJUTV9HRVRST1VURWAgZHVtcGl0IGhhbmRsZXIgZm9yIGBQRl9JTkVUYCBoYXMgYmVlbiBmbGFnZ2VkLiBUaGF0J3MgZ29vZCwgdGhhdCBtZWFucyB0aGUgc3lzdGVtICpjYW4qIHJlYWNoIGl0LiBOb3csIHRoZSByZWFsIGludmVzdGlnYXRpb24gYmVnaW5zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgYmVoYXZpb3IuIFBlcmhhcHMgdGhlcmUncyBhIHNwZWNpZmljIGZsYWcgSSd2ZSBvdmVybG9va2VkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy5cblxuSSdsbCBzdGFydCB3aXRoIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50ZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhhdCBtb2R1bGUncyBpbmNsdXNpb24gaXMgY29uZGl0aW9uYWwuIEFoYSwgaXQncyBub3QgY29udGluZ2VudCBvbiBgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU2AuIEV4Y2VsbGVudC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gU28gYGZpYl9mcm9udGVuZC5jYCBpcyBhbHdheXMgcHJlc2VudCBmb3IgSVB2NC5cblxuTm93LCBsZXQgbWUgcGVlayBpbnRvIGBuZXQvaXB2NC9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZGl0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgYFJUTV9HRVRST1VURWAgaGFuZGxpbmcuIEl0J3MgdGltZSB0byBjb25maXJtIHRoZXJlIGFyZSBubyBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIG9yIG90aGVyIGZhY3RvcnMgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDkxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6MjYuODA3OTQzODgyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDI2MzY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWJfZnJvbnRlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXFx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTU6XFx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjI3LjA4MjIxMjgwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjAzNzgwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIElQdjQgUm91dGluZyBUYWJsZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgZXZlcnl0aGluZyBpcywgYXMgdXN1YWwsIGNvbXBpbGVkIHdpdGggSVB2NCBpbiBtaW5kLiBUaGlzIGlzIHN0YW5kYXJkLCBidXQgZ29vZCB0byBjb25maXJtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZ2l2ZW4gdGhpcyBjb250ZXh0LCB3aGV0aGVyIGBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTYCBjb21lcyBpbnRvIHBsYXkgaGVyZS4gSXQgc2VlbXMgbGlrZSBpdCBtaWdodCBiZSByZWxldmFudCB3aGVuIGNvbnNpZGVyaW5nIG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLCBidXQgdGhlbiBhZ2FpbiwgYGluZXRfZHVtcF9maWJgIGZ1bmN0aW9ucyBjb3JyZWN0bHksIGV2ZW4gd2l0aG91dCBleHBsaWNpdGx5IGVuYWJsaW5nIG11bHRpcGxlIHRhYmxlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cbkhvbGQgb24sIEkgc2VlIGBGSUJfVEFCTEVfSEFTSFNaYCBiZWluZyB1c2VkLiBUaGF0J3MgYSBjcnVjaWFsIHBhcmFtZXRlciByZWxhdGVkIHRvIHRoZSBGaWJvbmFjY2kgaGVhcCBoYXNoIHNpemUsIGFuZCBpcyBhbG1vc3QgY2VydGFpbmx5IGNvbm5lY3RlZCB0byBwZXJmb3JtYW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgRklCX1RBQkxFX0hBU0hTWmAgKmFjdHVhbGx5KiBtZWFucy4gTGV0IG1lIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgdmFyaWFibGUgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlzIGJlaGF2aW5nLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBrZXkgdG8gdGhlIGludGVybmFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjMwLjk0MjU5Mjg5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODE1NTY3NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRklCX1RBQkxFX0hBU0hTWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9Nzc9c3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNi1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxMDc6XFx0aCA9IGlkIFxcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMDgtXFx0aGxpc3RfYWRkX2hlYWRfcmN1KFxcdTAwMjZ0Yi1cXHUwMDNldGJfaGxpc3QsIFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF0pO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTE0PXN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMjEtXFx0XFx0aWQgPSBSVF9UQUJMRV9NQUlOO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEyMjpcXHRoID0gaWQgXFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEyMy1cXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE4Nj12b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xOTAtXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTkxOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyspIHtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xOTItXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTAxND1zdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTA2MC1cXHRlcnIgPSAwO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEwNjE6XFx0Zm9yIChoID0gc19oOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEwNjItXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTU0PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU1Ni1cXHRpbnQgZXJyO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1NTc6XFx0c2l6ZV90IHNpemUgPSBzaXplb2Yoc3RydWN0IGhsaXN0X2hlYWQpICogRklCX1RBQkxFX0hBU0hTWjtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU4LVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTU5MD1zdGF0aWMgdm9pZCBpcF9maWJfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTYwMy1cXHQgKi9cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjA0OlxcdGZvciAoaSA9IEZJQl9UQUJMRV9IQVNIU1ogLSAxOyBpIFxcdTAwM2U9IDA7IGktLSkge1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MDUtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2ldO1xcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYz0yMTMyPXZvaWQgZmliX2luZm9fbm90aWZ5X3VwZGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yMTM1LVxcbm5ldC9pcHY0L2ZpYl90cmllLmM6MjEzNjpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjQvZmliX3RyaWUuYy0yMTM3LVxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl90cmllLmM9MjIwND1pbnQgZmliX25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jLTIyMDktXFxubmV0L2lwdjQvZmliX3RyaWUuYzoyMjEwOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyspIHtcXG5uZXQvaXB2NC9maWJfdHJpZS5jLTIyMTEtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYz0yNjA4PXN0YXRpYyBpbnQgZmliX3RyaWVzdGF0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjE4LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2MTk6XFx0Zm9yIChoID0gMDsgaCBcXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1o7IGgrKykge1xcbm5ldC9pcHY0L2ZpYl90cmllLmMtMjYyMC1cXHRcXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jPTI2NDU9c3RhdGljIHN0cnVjdCBrZXlfdmVjdG9yICpmaWJfdHJpZV9nZXRfaWR4KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgcG9zKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjUxLVxcbm5ldC9pcHY0L2ZpYl90cmllLmM6MjY1MjpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjUzLVxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl90cmllLmM9MjY3OT1zdGF0aWMgdm9pZCAqZmliX3RyaWVfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjk0LVxcdC8qIHdhbGsgcmVzdCBvZiB0aGlzIGhhc2ggY2hhaW4gKi9cXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI2OTU6XFx0aCA9IHRiLVxcdTAwM2V0Yl9pZCBcXHUwMDI2IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7XFxubmV0L2lwdjQvZmliX3RyaWUuYy0yNjk2LVxcdHdoaWxlICgodGJfbm9kZSA9IHJjdV9kZXJlZmVyZW5jZShobGlzdF9uZXh0X3JjdShcXHUwMDI2dGItXFx1MDAzZXRiX2hsaXN0KSkpKSB7XFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDMtXFx0LyogbmV3IGhhc2ggY2hhaW4gKi9cXG5uZXQvaXB2NC9maWJfdHJpZS5jOjI3MDQ6XFx0d2hpbGUgKCsraCBcXHUwMDNjIEZJQl9UQUJMRV9IQVNIU1opIHtcXG5uZXQvaXB2NC9maWJfdHJpZS5jLTI3MDUtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0MzozMS41MjQxNTc0MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzE3NTgzODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRklCIFRhYmxlIER1bXAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBpbmV0X2R1bXBfZmliYCBmdW5jdGlvbiBhZ2FpbiwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYEZJQl9UQUJMRV9IQVNIU1pgIGlzIGEgZnVuZGFtZW50YWwgY29uc3RhbnQgaGVyZSwgdXNlZCB0aHJvdWdob3V0LiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwsIGFzIGl0IGl0ZXJhdGVzIHRocm91Z2ggdGhlIEZJQiB0YWJsZXMgYW5kIGR1bXBzIHRoZW0uIFRoZSBjcnV4IG9mIHRoZSBpc3N1ZSBzZWVtcyB0byBiZSBob3cgaXQgaGFuZGxlcyByZXN1bWluZyBhIGR1bXAuIFByZXZpb3VzbHksIGl0IHVzZWQgYHNfZWAgdG8gc2tpcCB0YWJsZXMsIGFuZCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgdGhpcyBpbmRleC1iYXNlZCBhcHByb2FjaCBsaWtlbHkgYmVjYW1lIHByb2JsZW1hdGljIHdoZW4gdGFibGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCBkeW5hbWljYWxseS4gVGhlIGluZGV4IGBzX2VgIGNvdWxkIGVhc2lseSBiZWNvbWUgbWlzYWxpZ25lZCwgb3IgdGhlIHNraXBwaW5nIG1pZ2h0IGhhdmUgYmVlbiBzaW1wbHkgaW5jb3JyZWN0LiBUaGUgcGF0Y2ggdXNlcyBgc19pZGAsIHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhYmxlIElEIGFuZCByZXN1bWVzIHRoZSBkdW1wIGZyb20gdGhlIHByZWNpc2UgdGFibGUgSUQgbGFzdCBwcm9jZXNzZWQuXG5cbk5vdywgbGV0J3MgZGlzc2VjdCB0aGUgY29kZSBjaGFuZ2VzIGEgYml0IG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBgc19oYCByZXByZXNlbnRzIHRoZSBzdGFydGluZyBoYXNoIGJ1Y2tldCwgdGhhdCBtdWNoIGlzIHVuY2hhbmdlZC4gVGhlIGNydWNpYWwgY2hhbmdlIGlzIHJlcGxhY2luZyBgc19lYCAoYW4gaW5kZXgpIHdpdGggYHNfaWRgIChhIHRhYmxlIElEKS4gSW5zdGVhZCBvZiBpbmNyZW1lbnRpbmcgYHNfZWAsIGl0IG5vdyBzZXRzIGBzX2lkYCB0byAwLiBJdCBtZWFucyB0aGF0IGBzX2lkYCBpcyBvbmx5IHNldCB3aGVuIHdlIG5lZWQgdG8gcmVzdW1lIGZyb20gdGhhdCBwYXJ0aWN1bGFyIHRhYmxlIElELCBhbmQgd2UgY2FuIHN0YXJ0IGR1bXBpbmcgZnJvbSB0aGF0IHRhYmxlLCB3aGljaCBpcyBtb3JlIHJlbGlhYmxlLiBXZSdyZSBub3cgZGlyZWN0bHkgY29tcGFyaW5nIHRhYmxlIElEcyAoYHRiLVx1MDAzZXRiX2lkYCkgd2l0aGluIHRoZSBsb29wLiBUaGUgYGNiLVx1MDAzZWFyZ3NbMV1gIGlzIHVwZGF0ZWQgd2l0aCB0aGUgY3VycmVudCB0YWJsZSdzIElELlxuXG5UaGlzIGNoYW5nZSBmdW5jdGlvbmFsbHkgYWx0ZXJzIGBpbmV0X2R1bXBfZmliYC4gSSBzaG91bGQgbm90ZSB0aGF0IGBJUF9NVUxUSVBMRV9UQUJMRVNgIG1heSBiZSB1c2VmdWwsIGVzcGVjaWFsbHkgd2hlbiB0ZXN0aW5nIHRoZSBkdW1wLCB0byBnZXQgYSBkdW1wIHRoYXQgc3BhbnMgbXVsdGlwbGUgbmV0bGluayBtZXNzYWdlcywgYW5kIHJlcXVpcmVzIHJlc3VtaW5nLiBJdCdzIG5vdCBzdHJpY3RseSByZXF1aXJlZCB0byAqY29tcGlsZSogdGhpcyBjb2RlLCBidXQgaXQncyBlc3NlbnRpYWwgZm9yIHByb3Blcmx5IHRlc3RpbmcgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGRlbW9uc3RyYXRpbmcgdGhlIHJlc3VtZSBjYXBhYmlsaXR5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGlzIGV2ZW4gYSByZWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuc3VyZSBJIGNhbiBwcm9wZXJseSB0ZXN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6NDAuMjQxNzQzOTU4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE3OTgzMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX01VTFRJUExFX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NTY9Y29uZmlnIElQX0ZJQl9UUklFX1NUQVRTXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTYyLVxcbm5ldC9pcHY0L0tjb25maWc6NjM6Y29uZmlnIElQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiSVA6IHBvbGljeSByb3V0aW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0Mzo0MC4zODM1NDkzNDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMTQzODg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQb2xpY3kgUm91dGluZyBDb25maWd1cmF0aW9uIFJldmlldyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBwb2xpY3kgcm91dGluZyBhbmQgY29uZmlybWluZyB0aGF0IGBJUF9NVUxUSVBMRV9UQUJMRVNgIGlzIGluZGVlZCB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyB0aGUga2V5IHRvIHVubG9ja2luZyB0aGUgcG93ZXIgb2YgbXVsdGlwbGUgcm91dGluZyB0YWJsZXMuIFdpdGhvdXQgaXQsIHdlJ3JlIHN0dWNrIHdpdGgganVzdCB0aGUgZGVmYXVsdCBtYWluIGFuZCBsb2NhbCB0YWJsZXMsIHdoaWNoIHNldmVyZWx5IGxpbWl0cyB0aGUgZmxleGliaWxpdHkgd2UgbmVlZCBmb3Igc29waGlzdGljYXRlZCB0cmFmZmljIG1hbmFnZW1lbnQuIEJ1dCB3aXRoIHRoaXMgZW5hYmxlZCwgd2UgY2FuIGxldmVyYWdlIHVwIHRvIDI1NSBvciBldmVuIG1vcmUgdGFibGVzLCB3aGljaCBvcGVucyB1cCBhIHdvcmxkIG9mIHBvc3NpYmlsaXRpZXMuIFRoZXJlZm9yZSwgZW5hYmxpbmcgYElQX01VTFRJUExFX1RBQkxFU2Agc2VlbXMgbGlrZSBhIG5vLWJyYWluZXIgZm9yIGFueSBwb2xpY3kgcm91dGluZyBpbXBsZW1lbnRhdGlvbi5cblxuTm93LCBJJ20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhbHNvIGltcG9ydGFudC4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY29kZS4gTGV0J3MgZGVsdmUgaW50byBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGtub2JzIHdlIHNob3VsZCBjb25zaWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcwMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0Mzo0NC4zODQ5OTAzMzNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxNjYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjUxOiNpZm5kZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTE0PXN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzEtfVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEzMjojZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzMy1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xMzQ9c3RhdGljIHZvaWQgZmliX3JlcGxhY2VfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliX3RhYmxlICpvbGQsXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xMzYte1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjEzNzojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTEzOC1cXHRzd2l0Y2ggKG5ldy1cXHUwMDNldGJfaWQpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTMxMT1ib29sIGZpYl9pbmZvX25oX3VzZXNfZGV2KHN0cnVjdCBmaWJfaW5mbyAqZmksIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0zMTMtXFx0Ym9vbCBkZXZfbWF0Y2ggPSBmYWxzZTtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzozMTQ6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0zMTUtXFx0aWYgKHVubGlrZWx5KGZpLVxcdTAwM2VuaCkpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTY5MT1pbnQgZmliX2d3X2Zyb21fdmlhKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTcxNC1cXHRjYXNlIEFGX0lORVQ2Olxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjcxNTojaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy03MTYtXFx0XFx0aWYgKGFsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE0NTY9c3RhdGljIGludCBmaWJfaW5ldGFkZHJfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNDY0LVxcdFxcdGZpYl9hZGRfaWZhZGRyKGlmYSk7XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTQ2NTojaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSFxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE0NjYtXFx0XFx0ZmliX3N5bmNfdXAoZGV2LCBSVE5IX0ZfREVBRCk7XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNDg3PXN0YXRpYyBpbnQgZmliX25ldGRldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MTEtXFx0XFx0fVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTI6I2lmZGVmIENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTEzLVxcdFxcdGZpYl9zeW5jX3VwKGRldiwgUlROSF9GX0RFQUQpO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTU1ND1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NjItXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU2MzojaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSFxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1NjQtXFx0LyogRGVmYXVsdCB0byAzLXR1cGxlICovXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTkwPXN0YXRpYyB2b2lkIGlwX2ZpYl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTk0LVxcdEFTU0VSVF9SVE5MX05FVChuZXQpO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1OTU6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTk2LVxcdFJDVV9JTklUX1BPSU5URVIobmV0LVxcdTAwM2VpcHY0LmZpYl9tYWluLCBOVUxMKTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTc9c3RhdGljIGludCBfX25ldF9pbml0IGZpYl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjIwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2MjE6I2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTYyMi1cXHRhdG9taWNfc2V0KFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX251bV90Y2xhc3NpZF91c2VycywgMCk7XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjUwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE2NTE6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjUyLVxcdGZpYjRfcnVsZXNfZXhpdChuZXQpO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTY3MT1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGZpYl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY3Mi17XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY3MzojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2NzQtXFx0ZmliNF9ydWxlc19leGl0KG5ldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjQzOjQ0LjUzNjUxMzQzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDI4NTQ4NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBgSVBfTVVMVElQTEVfVEFCTEVTYCBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXQgbWUgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0uIEl0J3MgdGhlIG1vc3QgcmVsZXZhbnQgZmxhZyB0byBjb25zaWRlciBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGVsc2UgdGhpcyBwYXRjaCB0b3VjaGVzLCB0aG91Z2guXG5cblJpZ2h0LCB0aGUgY2hhbmdlcyBzZWVtIGlzb2xhdGVkIHRvIGBpbmV0X2R1bXBfZmliYC4gTGV0IG1lIGpvdCBkb3duIHRoYXQgZm9jdXMgc3ltYm9sOiBgaW5ldF9kdW1wX2ZpYmAuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgcHJldHR5IGNsZWFyIGZyb20gdGhlIHJlYXNvbmluZy4gVGhpcyBwYXRjaCBpcyBmaXhpbmcgdGhlIHdheSB0aGUgSVB2NCByb3V0aW5nIHRhYmxlIG5ldGxpbmsgZHVtcCBoYW5kbGVzIGludGVycnVwdGlvbnMgYW5kIHJlc3VtZXMuIFNwZWNpZmljYWxseSwgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHdoZXJlIHRhYmxlIElEcyBtaWdodCBiZSBza2lwcGVkIGlmIHRoZSB1bmRlcmx5aW5nIGhhc2ggY2hhaW4gaXMgbW9kaWZpZWQgYmV0d2VlbiBuZXRsaW5rIGNhbGxzLiBTd2l0Y2hpbmcgZnJvbSBhIGJ1Y2tldCBpbmRleCB0byB0aGUgYWN0dWFsIHRhYmxlIElEIGZvciByZXN1bWluZyBzZWVtcyBsaWtlIGEgc29saWQgYXBwcm9hY2guXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIElQdjQgcm91dGluZyBuZXRsaW5rIGludGVyZmFjZSwgZnV6emluZyB0aGlzIGFyZWEgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIEl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHRlc3RpbmcgaXRzIHJvYnVzdG5lc3MgdW5kZXIgcHJlc3N1cmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaW5ldF9kdW1wX2ZpYmAgZnVuY3Rpb24gaXRzZWxmLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvaXB2NC9maWJfZnJvbnRlbmQuY2AuIEdvdHRhIGNvbmZpcm0gdGhlIGRldGFpbHMgYXJlIHdoYXQgSSB0aGluayB0aGV5IGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMzOSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDo0Mzo1MC41NjUwNjQzMDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9maWJfZnJvbnRlbmQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDE0LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAxNDpcXHRzdGF0aWMgaW50IGluZXRfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbjEwMTU6XFx0e1xcbjEwMTY6XFx0XFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGggPSBjYi1cXHUwMDNlbmxoO1xcbjEwMTc6XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxuMTAxODpcXHRcXHRzdHJ1Y3QgZmliX2R1bXBfZmlsdGVyIGZpbHRlciA9IHtcXG4xMDE5OlxcdFxcdFxcdC5kdW1wX3JvdXRlcyA9IHRydWUsXFxuMTAyMDpcXHRcXHRcXHQuZHVtcF9leGNlcHRpb25zID0gdHJ1ZSxcXG4xMDIxOlxcdFxcdH07XFxuMTAyMjpcXHRcXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDtcXG4xMDIzOlxcdFxcdGludCBkdW1wZWQgPSAwLCBlcnIgPSAwO1xcbjEwMjQ6XFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuMTAyNTpcXHRcXHR1bnNpZ25lZCBpbnQgaCwgc19oO1xcbjEwMjY6XFx0XFx0dTMyIHNfaWQ7XFxuMTAyNzpcXHRcXG4xMDI4OlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4xMDI5OlxcdFxcdGlmIChjYi1cXHUwMDNlc3RyaWN0X2NoZWNrKSB7XFxuMTAzMDpcXHRcXHRcXHRlcnIgPSBpcF92YWxpZF9maWJfZHVtcF9yZXEobmV0LCBubGgsIFxcdTAwMjZmaWx0ZXIsIGNiKTtcXG4xMDMxOlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjEwMzI6XFx0XFx0XFx0XFx0Z290byB1bmxvY2s7XFxuMTAzMzpcXHRcXHR9IGVsc2UgaWYgKG5sbXNnX2xlbihubGgpIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgcnRtc2cpKSB7XFxuMTAzNDpcXHRcXHRcXHRzdHJ1Y3QgcnRtc2cgKnJ0bSA9IG5sbXNnX2RhdGEobmxoKTtcXG4xMDM1OlxcdFxcbjEwMzY6XFx0XFx0XFx0ZmlsdGVyLmZsYWdzID0gcnRtLVxcdTAwM2VydG1fZmxhZ3MgXFx1MDAyNiAoUlRNX0ZfUFJFRklYIHwgUlRNX0ZfQ0xPTkVEKTtcXG4xMDM3OlxcdFxcdH1cXG4xMDM4OlxcdFxcbjEwMzk6XFx0XFx0LyogaXB2NCBkb2VzIG5vdCB1c2UgcHJlZml4IGZsYWcgKi9cXG4xMDQwOlxcdFxcdGlmIChmaWx0ZXIuZmxhZ3MgXFx1MDAyNiBSVE1fRl9QUkVGSVgpXFxuMTA0MTpcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4xMDQyOlxcdFxcbjEwNDM6XFx0XFx0aWYgKGZpbHRlci50YWJsZV9pZCkge1xcbjEwNDQ6XFx0XFx0XFx0dGIgPSBmaWJfZ2V0X3RhYmxlKG5ldCwgZmlsdGVyLnRhYmxlX2lkKTtcXG4xMDQ1OlxcdFxcdFxcdGlmICghdGIpIHtcXG4xMDQ2OlxcdFxcdFxcdFxcdGlmIChydG5sX21zZ19mYW1pbHkoY2ItXFx1MDAzZW5saCkgIT0gUEZfSU5FVClcXG4xMDQ3OlxcdFxcdFxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbjEwNDg6XFx0XFxuMTA0OTpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhjYi1cXHUwMDNlZXh0YWNrLCBcXFwiaXB2NDogRklCIHRhYmxlIGRvZXMgbm90IGV4aXN0XFxcIik7XFxuMTA1MDpcXHRcXHRcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbjEwNTE6XFx0XFx0XFx0XFx0Z290byB1bmxvY2s7XFxuMTA1MjpcXHRcXHRcXHR9XFxuMTA1MzpcXHRcXHRcXHRlcnIgPSBmaWJfdGFibGVfZHVtcCh0Yiwgc2tiLCBjYiwgXFx1MDAyNmZpbHRlcik7XFxuMTA1NDpcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4xMDU1OlxcdFxcdH1cXG4xMDU2OlxcdFxcbjEwNTc6XFx0XFx0c19oID0gY2ItXFx1MDAzZWFyZ3NbMF07XFxuMTA1ODpcXHRcXHRzX2lkID0gY2ItXFx1MDAzZWFyZ3NbMV07XFxuMTA1OTpcXHRcXG4xMDYwOlxcdFxcdGVyciA9IDA7XFxuMTA2MTpcXHRcXHRmb3IgKGggPSBzX2g7IGggXFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyssIHNfaWQgPSAwKSB7XFxuMTA2MjpcXHRcXHRcXHRoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4xMDYzOlxcdFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QpIHtcXG4xMDY0OlxcdFxcdFxcdFxcdGlmIChzX2lkIFxcdTAwMjZcXHUwMDI2IHRiLVxcdTAwM2V0Yl9pZCAhPSBzX2lkKVxcbjEwNjU6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMTA2NjpcXHRcXG4xMDY3OlxcdFxcdFxcdFxcdHNfaWQgPSAwO1xcbjEwNjg6XFx0XFx0XFx0XFx0aWYgKGR1bXBlZClcXG4xMDY5OlxcdFxcdFxcdFxcdFxcdG1lbXNldChcXHUwMDI2Y2ItXFx1MDAzZWFyZ3NbMl0sIDAsIHNpemVvZihjYi1cXHUwMDNlYXJncykgLVxcbjEwNzA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IDIgKiBzaXplb2YoY2ItXFx1MDAzZWFyZ3NbMF0pKTtcXG4xMDcxOlxcdFxcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzFdID0gdGItXFx1MDAzZXRiX2lkO1xcbjEwNzI6XFx0XFx0XFx0XFx0ZXJyID0gZmliX3RhYmxlX2R1bXAodGIsIHNrYiwgY2IsIFxcdTAwMjZmaWx0ZXIpO1xcbjEwNzM6XFx0XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMTA3NDpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4xMDc1OlxcdFxcdFxcdFxcdGR1bXBlZCA9IDE7XFxuMTA3NjpcXHRcXHRcXHR9XFxuMTA3NzpcXHRcXHR9XFxuMTA3ODpcXHRvdXQ6XFxuMTA3OTpcXHRcXG4xMDgwOlxcdFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gaDtcXG4xMDgxOlxcdFxcbjEwODI6XFx0dW5sb2NrOlxcbjEwODM6XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuMTA4NDpcXHRcXHRyZXR1cm4gZXJyO1xcbjEwODU6XFx0fVxcbjEwODY6XFx0XFxuMTA4NzpcXHQvKiBQcmVwYXJlIGFuZCBmZWVkIGludHJhLWtlcm5lbCByb3V0aW5nIHJlcXVlc3QuXFxuMTA4ODpcXHQgKiBSZWFsbHksIGl0IHNob3VsZCBiZSBuZXRsaW5rIG1lc3NhZ2UsIGJ1dCA6LSggbmV0bGlua1xcbjEwODk6XFx0ICogY2FuIGJlIG5vdCBjb25maWd1cmVkLCBzbyB0aGF0IHdlIGZlZWQgaXQgZGlyZWN0bHlcXG4xMDkwOlxcdCAqIHRvIGZpYiBlbmdpbmUuIEl0IGlzIGxlZ2FsLCBiZWNhdXNlIGFsbCBldmVudHMgb2NjdXJcXG4xMDkxOlxcdCAqIG9ubHkgd2hlbiBuZXRsaW5rIGlzIGFscmVhZHkgbG9ja2VkLlxcbjEwOTI6XFx0ICovXFxuMTA5MzpcXHRzdGF0aWMgdm9pZCBmaWJfbWFnaWMoaW50IGNtZCwgaW50IHR5cGUsIF9fYmUzMiBkc3QsIGludCBkc3RfbGVuLFxcbjEwOTQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IGluX2lmYWRkciAqaWZhLCB1MzIgcnRfcHJpb3JpdHkpXFxuMTA5NTpcXHR7XFxuMTA5NjpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGlmYS1cXHUwMDNlaWZhX2Rldi1cXHUwMDNlZGV2KTtcXG4xMDk3OlxcdFxcdHUzMiB0Yl9pZCA9IGwzbWRldl9maWJfdGFibGUoaWZhLVxcdTAwM2VpZmFfZGV2LVxcdTAwM2VkZXYpO1xcbjEwOTg6XFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuMTA5OTpcXHRcXHRzdHJ1Y3QgZmliX2NvbmZpZyBjZmcgPSB7XFxuMTEwMDpcXHRcXHRcXHQuZmNfcHJvdG9jb2wgPSBSVFBST1RfS0VSTkVMLFxcbjExMDE6XFx0XFx0XFx0LmZjX3R5cGUgPSB0eXBlLFxcbjExMDI6XFx0XFx0XFx0LmZjX2RzdCA9IGRzdCxcXG4xMTAzOlxcdFxcdFxcdC5mY19kc3RfbGVuID0gZHN0X2xlbixcXG4xMTA0OlxcdFxcdFxcdC5mY19wcmlvcml0eSA9IHJ0X3ByaW9yaXR5LFxcbjExMDU6XFx0XFx0XFx0LmZjX3ByZWZzcmMgPSBpZmEtXFx1MDAzZWlmYV9sb2NhbCxcXG4xMTA2OlxcdFxcdFxcdC5mY19vaWYgPSBpZmEtXFx1MDAzZWlmYV9kZXYtXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCxcXG4xMTA3OlxcdFxcdFxcdC5mY19ubGZsYWdzID0gTkxNX0ZfQ1JFQVRFIHwgTkxNX0ZfQVBQRU5ELFxcbjExMDg6XFx0XFx0XFx0LmZjX25saW5mbyA9IHtcXG4xMTA5OlxcdFxcdFxcdFxcdC5ubF9uZXQgPSBuZXQsXFxuMTExMDpcXHRcXHRcXHR9LFxcbjExMTE6XFx0XFx0fTtcXG4xMTEyOlxcdFxcbjExMTM6XFx0XFx0aWYgKCF0Yl9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6NTAuNTY3MzkxMDc4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDc5ODUwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGlzIHByZWNpc2VseSB3aGF0IEkgYW50aWNpcGF0ZWQuIFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSBpdHMgbW9kaWZpY2F0aW9uIG9mIGBpbmV0X2R1bXBfZmliYCwgc2VlbXMgc291bmQsIGFuZCBpdCdzIHJlYWR5IGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgY2hhbmdlcyB0byBgaW5ldF9kdW1wX2ZpYmAsIHRoYXQncyBkZWZpbml0ZWx5IHRoZSBrZXkgc3ltYm9sIHRvIHRhcmdldCBkdXJpbmcgdGVzdGluZy4gRnVydGhlcm1vcmUsIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcywgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgYElQX01VTFRJUExFX1RBQkxFU2AgY29uZmlndXJhdGlvbi4gUmlnaHQsIHRpbWUgdG8gbW92ZSBhaGVhZCB3aXRoIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzgzLCJPdXRwdXRUb2tlbnMiOjEyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6NDM6NTQuMTc1Mzg3Nzg1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczMTMzMTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbmV0X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaG93IHRoZSBuZXRsaW5rIGR1bXAgb2YgSVB2NCByb3V0aW5nIHRhYmxlcyByZXN1bWVzIGFmdGVyIGJlaW5nIGludGVycnVwdGVkIChlLmcuLCB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbCkuIEl0IHJlcGxhY2VzIHRoZSB1c2Ugb2YgYSBidWNrZXQgaW5kZXggd2l0aCB0aGUgYWN0dWFsIHRhYmxlIElEIHRvIGF2b2lkIHNraXBwaW5nIHRhYmxlcyBpZiB0aGUgaGFzaCBjaGFpbiBpcyBtb2RpZmllZCBiZXR3ZWVuIGR1bXAgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHY0IHJvdXRpbmcgbmV0bGluayBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9kdW1wX2ZpYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGhvdyB0aGUgbmV0bGluayBkdW1wIG9mIElQdjQgcm91dGluZyB0YWJsZXMgcmVzdW1lcyBhZnRlciBiZWluZyBpbnRlcnJ1cHRlZCAoZS5nLiwgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwpLiBJdCByZXBsYWNlcyB0aGUgdXNlIG9mIGEgYnVja2V0IGluZGV4IHdpdGggdGhlIGFjdHVhbCB0YWJsZSBJRCB0byBhdm9pZCBza2lwcGluZyB0YWJsZXMgaWYgdGhlIGhhc2ggY2hhaW4gaXMgbW9kaWZpZWQgYmV0d2VlbiBkdW1wIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIG5ldGxpbmsgaW50ZXJmYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[1] Phase: Succeeded StartedAt: 2026-06-30 10:44:06 +0000 UTC FinishedAt: 2026-06-30 10:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 10:44:06 +0000 UTC FinishedAt: 2026-06-30 10:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2] Phase: Succeeded StartedAt: 2026-06-30 10:44:06 +0000 UTC FinishedAt: 2026-06-30 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 10:44:07 +0000 UTC FinishedAt: 2026-06-30 14:54:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 10:44:07 +0000 UTC FinishedAt: 2026-06-30 10:44:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 10:44:07 +0000 UTC FinishedAt: 2026-06-30 10:44:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1980984566/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 10:44:57 +0000 UTC FinishedAt: 2026-06-30 11:19:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 10:44:57 +0000 UTC FinishedAt: 2026-06-30 11:19:20 +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:*519ecabd-7c85-4a44-8ece-da975884ef27,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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1980984566/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": "4acf3480-e334-4588-b7a9-443bcfcb6107", "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-workflow9qn8t/series-workflow9qn8t-build-action-2843314188/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 10:44:57 +0000 UTC FinishedAt: 2026-06-30 11:18:36 +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:*519ecabd-7c85-4a44-8ece-da975884ef27,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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1980984566/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": "4acf3480-e334-4588-b7a9-443bcfcb6107", "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-workflow9qn8t/series-workflow9qn8t-build-action-2843314188/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 11:19:20 +0000 UTC FinishedAt: 2026-06-30 11:19:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 11:19:20 +0000 UTC FinishedAt: 2026-06-30 11:19:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 11:19:20 +0000 UTC FinishedAt: 2026-06-30 11:19:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 11:19:20 +0000 UTC FinishedAt: 2026-06-30 11:19:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1898452105/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 11:19:42 +0000 UTC FinishedAt: 2026-06-30 11:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 11:19:42 +0000 UTC FinishedAt: 2026-06-30 11:21:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4acf3480-e334-4588-b7a9-443bcfcb6107,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-workflow9qn8t/series-workflow9qn8t-build-action-2843314188/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-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 11:21:54 +0000 UTC FinishedAt: 2026-06-30 11:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 11:21:54 +0000 UTC FinishedAt: 2026-06-30 11:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 11:21:54 +0000 UTC FinishedAt: 2026-06-30 11:49:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 11:21:54 +0000 UTC FinishedAt: 2026-06-30 11:49:18 +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:*519ecabd-7c85-4a44-8ece-da975884ef27,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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1898452105/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": "501ca8f6-6828-4ebf-b5be-471018969828", "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-workflow9qn8t/series-workflow9qn8t-build-action-3337950821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 11:21:54 +0000 UTC FinishedAt: 2026-06-30 11:49:07 +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:*519ecabd-7c85-4a44-8ece-da975884ef27,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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1898452105/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": "501ca8f6-6828-4ebf-b5be-471018969828", "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-workflow9qn8t/series-workflow9qn8t-build-action-3337950821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 11:49:18 +0000 UTC FinishedAt: 2026-06-30 11:49:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 11:49:18 +0000 UTC FinishedAt: 2026-06-30 11:49:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 11:49:18 +0000 UTC FinishedAt: 2026-06-30 11:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 11:49:18 +0000 UTC FinishedAt: 2026-06-30 11:50:55 +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:*501ca8f6-6828-4ebf-b5be-471018969828,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-workflow9qn8t/series-workflow9qn8t-build-action-3337950821/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-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 14:54:07 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"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:*4acf3480-e334-4588-b7a9-443bcfcb6107,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*501ca8f6-6828-4ebf-b5be-471018969828,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-workflow9qn8t/series-workflow9qn8t-build-action-2843314188/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-workflow9qn8t/series-workflow9qn8t-build-action-3337950821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 11:51:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 11:51:12 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1952000222/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 11:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 11:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 11:51:06 +0000 UTC FinishedAt: 2026-06-30 11:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 11:51:16 +0000 UTC FinishedAt: 2026-06-30 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qn8t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cef9d6804030793cf8b8796fd6936197d065dd3e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES"],"series_id":"b6797e89-fd91-4ef6-8c2e-9e5fbe6d1731","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 11:51:16 +0000 UTC FinishedAt: 2026-06-30 14:53:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4acf3480-e334-4588-b7a9-443bcfcb6107,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*501ca8f6-6828-4ebf-b5be-471018969828,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-workflow9qn8t/series-workflow9qn8t-build-action-2843314188/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-workflow9qn8t/series-workflow9qn8t-build-action-3337950821/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-workflow9qn8t/series-workflow9qn8t-convert-artifact-1952000222/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,}