Name: series-workflown2225 Phase: Succeeded StartedAt: 2026-07-29 01:25:38 +0000 UTC FinishedAt: 2026-07-29 05:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[0] Phase: Succeeded StartedAt: 2026-07-29 01:25:38 +0000 UTC FinishedAt: 2026-07-29 01:57:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 01:25:38 +0000 UTC FinishedAt: 2026-07-29 01:57:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9736d2efc99670054359e153a9f312ef4646ec7b", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9736d2efc99670054359e153a9f312ef4646ec7b", "config_name": "upstream-apparmor-kasan.config", "series_id": "7138fa87-5f4a-48df-8c15-69b0b5cf6ccf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtm_new_nexthop" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX25ld19uZXh0aG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgbWVtb3J5IGFjY291bnRpbmcgKF9fR0ZQX0FDQ09VTlQgLyBHRlBfS0VSTkVMX0FDQ09VTlQpIGZvciBuZXh0aG9wIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyBtZW1jZyB0byB0cmFjayBhbmQgbGltaXQgbWVtb3J5IHVzZWQgYnkgbmV4dGhvcHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIG5leHRob3AgY3JlYXRpb24gdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyB3aGVuIG1lbW9yeSBsaW1pdHMgYXJlIGhpdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDczZWQ1MmY1ZDA2ZjU5ODZhYTc0NTEwZTI0NmE4MTc4ZTA5ZGU1MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMTo1NjozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbmluZGV4IDQ0ZmU3NTAwNGNhY2IuLmM4Njg1YzU4MzU3OTQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTE2OSw3ICYjNDM7MTY5LDcgQEAgc3RhdGljIGludCBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxuIFx0aW5mby1cdTAwM2V0eXBlID0gTkhfTk9USUZJRVJfSU5GT19UWVBFX1JFU19UQUJMRTtcbiBcdHNpemUgPSBzdHJ1Y3Rfc2l6ZShpbmZvLVx1MDAzZW5oX3Jlc190YWJsZSwgbmhzLCBudW1fbmhfYnVja2V0cyk7XG4gXHRpbmZvLVx1MDAzZW5oX3Jlc190YWJsZSA9IF9fdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyB8XG4tXHRcdFx0XHQgICAgICAgX19HRlBfTk9XQVJOKTtcbiYjNDM7XHRcdFx0XHQgICAgICAgX19HRlBfTk9XQVJOIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWluZm8tXHUwMDNlbmhfcmVzX3RhYmxlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC01MzMsNyAmIzQzOzUzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hbGxvYyh2b2lkKVxuIHtcbiBcdHN0cnVjdCBuZXh0aG9wICpuaDtcbiBcbi1cdG5oID0ga3phbGxvY19vYmooc3RydWN0IG5leHRob3ApO1xuJiM0MztcdG5oID0ga3phbGxvY19vYmooc3RydWN0IG5leHRob3AsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAobmgpIHtcbiBcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmgtXHUwMDNlZmlfbGlzdCk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5oLVx1MDAzZWY2aV9saXN0KTtcbkBAIC01NDgsNyAmIzQzOzU0OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmhfZ3JvdXAgKm5leHRob3BfZ3JwX2FsbG9jKHUxNiBudW1fbmgpXG4ge1xuIFx0c3RydWN0IG5oX2dyb3VwICpuaGc7XG4gXG4tXHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oKTtcbiYjNDM7XHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKG5oZylcbiBcdFx0bmhnLVx1MDAzZW51bV9uaCA9IG51bV9uaDtcbiBcbkBAIC01NjUsNyAmIzQzOzU2NSw4IEBAIG5leHRob3BfcmVzX3RhYmxlX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCwgdTMyIG5oZ19pZCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnKVxuIFx0dW5zaWduZWQgbG9uZyBzaXplO1xuIFxuIFx0c2l6ZSA9IHN0cnVjdF9zaXplKHJlc190YWJsZSwgbmhfYnVja2V0cywgbnVtX25oX2J1Y2tldHMpO1xuLVx0cmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHwgX19HRlBfTk9XQVJOKTtcbiYjNDM7XHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4gfFxuJiM0MztcdFx0XHQgICAgICBfX0dGUF9BQ0NPVU5UKTtcbiBcdGlmICghcmVzX3RhYmxlKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbkBAIC0yNzk5LDcgJiM0MzsyODAwLDggQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0bmhnLVx1MDAzZWhhc192NCA9IHRydWU7XG4gXG4gXHRcdG5oZy1cdTAwM2VuaF9lbnRyaWVzW2ldLnN0YXRzID1cbi1cdFx0XHRuZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3QgbmhfZ3JwX2VudHJ5X3N0YXRzKTtcbiYjNDM7XHRcdFx0X19uZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3QgbmhfZ3JwX2VudHJ5X3N0YXRzLFxuJiM0MztcdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbmhnLVx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMpIHtcbiBcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRcdG5leHRob3BfcHV0KG5oZSk7XG5AQCAtMjk0Myw3ICYjNDM7Mjk0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4gXHRpZiAoIW5oKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiBcbi1cdG5oaSA9IGt6YWxsb2Nfb2JqKCpuaGkpO1xuJiM0MztcdG5oaSA9IGt6YWxsb2Nfb2JqKCpuaGksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIW5oaSkge1xuIFx0XHRrZnJlZShuaCk7XG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChfX0dGUF9BQ0NPVU5UIC8gR0ZQX0tFUk5FTF9BQ0NPVU5UKSBmb3IgbmV4dGhvcCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgbWVtY2cgdG8gdHJhY2sgYW5kIGxpbWl0IG1lbW9yeSB1c2VkIGJ5IG5leHRob3BzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBuZXh0aG9wIGNyZWF0aW9uIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBoaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3M2VkNTJmNWQwNmY1OTg2YWE3NDUxMGUyNDZhODE3OGUwOWRlNTJmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDE6NTY6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmMKaW5kZXggNDRmZTc1MDA0Y2FjYi4uYzg2ODVjNTgzNTc5NCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV4dGhvcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L25leHRob3AuYwpAQCAtMTY5LDcgJiM0MzsxNjksNyBAQCBzdGF0aWMgaW50IG5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXQoc3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8sCiAJaW5mby0mZ3Q7dHlwZSA9IE5IX05PVElGSUVSX0lORk9fVFlQRV9SRVNfVEFCTEU7CiAJc2l6ZSA9IHN0cnVjdF9zaXplKGluZm8tJmd0O25oX3Jlc190YWJsZSwgbmhzLCBudW1fbmhfYnVja2V0cyk7CiAJaW5mby0mZ3Q7bmhfcmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHwKLQkJCQkgICAgICAgX19HRlBfTk9XQVJOKTsKJiM0MzsJCQkJICAgICAgIF9fR0ZQX05PV0FSTiB8IF9fR0ZQX0FDQ09VTlQpOwogCWlmICghaW5mby0mZ3Q7bmhfcmVzX3RhYmxlKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNTMzLDcgJiM0Mzs1MzMsNyBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfYWxsb2Modm9pZCkKIHsKIAlzdHJ1Y3QgbmV4dGhvcCAqbmg7CiAKLQluaCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZXh0aG9wKTsKJiM0MzsJbmggPSBremFsbG9jX29iaihzdHJ1Y3QgbmV4dGhvcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAobmgpIHsKIAkJSU5JVF9MSVNUX0hFQUQoJmFtcDtuaC0mZ3Q7ZmlfbGlzdCk7CiAJCUlOSVRfTElTVF9IRUFEKCZhbXA7bmgtJmd0O2Y2aV9saXN0KTsKQEAgLTU0OCw3ICYjNDM7NTQ4LDcgQEAgc3RhdGljIHN0cnVjdCBuaF9ncm91cCAqbmV4dGhvcF9ncnBfYWxsb2ModTE2IG51bV9uaCkKIHsKIAlzdHJ1Y3QgbmhfZ3JvdXAgKm5oZzsKIAotCW5oZyA9IGt6YWxsb2NfZmxleCgqbmhnLCBuaF9lbnRyaWVzLCBudW1fbmgpOwomIzQzOwluaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmIChuaGcpCiAJCW5oZy0mZ3Q7bnVtX25oID0gbnVtX25oOwogCkBAIC01NjUsNyAmIzQzOzU2NSw4IEBAIG5leHRob3BfcmVzX3RhYmxlX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCwgdTMyIG5oZ19pZCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnKQogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAogCXNpemUgPSBzdHJ1Y3Rfc2l6ZShyZXNfdGFibGUsIG5oX2J1Y2tldHMsIG51bV9uaF9idWNrZXRzKTsKLQlyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4pOwomIzQzOwlyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4gfAomIzQzOwkJCSAgICAgIF9fR0ZQX0FDQ09VTlQpOwogCWlmICghcmVzX3RhYmxlKQogCQlyZXR1cm4gTlVMTDsKIApAQCAtMjc5OSw3ICYjNDM7MjgwMCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LAogCQkJbmhnLSZndDtoYXNfdjQgPSB0cnVlOwogCiAJCW5oZy0mZ3Q7bmhfZW50cmllc1tpXS5zdGF0cyA9Ci0JCQluZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3QgbmhfZ3JwX2VudHJ5X3N0YXRzKTsKJiM0MzsJCQlfX25ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMsCiYjNDM7CQkJCQkJICBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoIW5oZy0mZ3Q7bmhfZW50cmllc1tpXS5zdGF0cykgewogCQkJZXJyID0gLUVOT01FTTsKIAkJCW5leHRob3BfcHV0KG5oZSk7CkBAIC0yOTQzLDcgJiM0MzsyOTQ1LDcgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZywKIAlpZiAoIW5oKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCW5oaSA9IGt6YWxsb2Nfb2JqKCpuaGkpOwomIzQzOwluaGkgPSBremFsbG9jX29iaigqbmhpLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghbmhpKSB7CiAJCWtmcmVlKG5oKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYG5leHRob3AuY2AgTWVtb3J5IEFjY291bnRpbmcgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgYG5ldC9pcHY0L25leHRob3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGBfX0dGUF9BQ0NPVU5UYCBvciB1c2luZyBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBpbnN0ZWFkIG9mIGBHRlBfS0VSTkVMYCBpbiBhIGJ1bmNoIG9mIGFsbG9jYXRpb24gZnVuY3Rpb25zOiBgbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdGAsIGBuZXh0aG9wX2FsbG9jYCwgYG5leHRob3BfZ3JwX2FsbG9jYCwgYG5leHRob3BfcmVzX3RhYmxlX2FsbG9jYCwgYG5leHRob3BfY3JlYXRlX2dyb3VwYCwgYW5kIGBuZXh0aG9wX2NyZWF0ZWAuIEhtbSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBlbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgbmV4dGhvcCBvYmplY3RzLCB3aGljaCB1c2Vyc3BhY2UgY2FuIGludGVyYWN0IHdpdGggdmlhIG5ldGxpbmsuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKT24gdGhlIHN1cmZhY2UsIGl0IHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgbWVtb3J5IGFjY291bnRpbmcgZmxhZyBhZGRpdGlvbi4gQnV0IGNvbnNpZGVyaW5nIHRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCB0aGVzZSBmdW5jdGlvbnMgYXJlIHJlbGF0ZWQgdG8gY3JlYXRpbmcgYW5kIG1hbmFnaW5nIG5leHRob3Agb2JqZWN0cywgeWVzLCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vayB3aXRoIGZ1enppbmcuIFdlIGNhbiB1c2UgZnV6emluZyB0byB0cmlnZ2VyIHRoZXNlIGFsbG9jYXRpb25zIGFuZCBzZWUgaWYgd2UgY2FuIGhpdCBhbnkgbWVtb3J5IGxpbWl0cyBvciB1bmNvdmVyIGlzc3VlcyB3aXRoIHRoZSBhY2NvdW50aW5nIGl0c2VsZi4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgd2hhdCBjb25maWdzIHdlIG5lZWQgdG8gaGF2ZSBlbmFibGVkIGZvciBgbmV0L2lwdjQvbmV4dGhvcC5jYCB0byBldmVuIGJlIGNvbXBpbGVkLiBJdCYjMzk7cyBsaWtlbHkgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIHRvIGJlIHN1cmUuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHN0ZXAgdG8gYmVpbmcgYWJsZSB0byByZXByb2R1Y2UgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gYW5kIFNjb3BlIG9mIHRoZSBOZXh0aG9wIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgYG5leHRob3BgIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGluY2x1ZGVkIGluIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFzIHBhcnQgb2YgYG9iai15YC4gVGhhdCBgb2JqLXlgIGFzc2lnbm1lbnQgbWVhbnMgaXQmIzM5O3MgYWx3YXlzIGNvbXBpbGVkIGFzIGxvbmcgYXMgYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLCB3aGljaCBpcyBhIGtleSBkZXBlbmRlbmN5IHRvIGtlZXAgaW4gbWluZC4KClRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZGl0aW9ucyB0aWVkIHRvIGBuZXh0aG9wLmNgIGl0c2VsZiwgb3IgaWYgaXQmIzM5O3MgaW1wbGljaXRseSBwYXJ0IG9mIHRoZSBsYXJnZXIgYENPTkZJR19JTkVUYCBjb25maWd1cmF0aW9uLgoKTm93LCBsZXQmIzM5O3MgcGlucG9pbnQgdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIHRoZSBmb2xsb3dpbmc6IGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAsIGBuZXh0aG9wX2NyZWF0ZWAsIGBuZXh0aG9wX3Jlc190YWJsZV9hbGxvY2AsIGBuZXh0aG9wX2dycF9hbGxvY2AsIGFuZCBgbmV4dGhvcF9hbGxvY2AuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlaXIgc2NvcGUuIEFyZSB0aGVzZSBmdW5jdGlvbnMgZXhwb3NlZCBleHRlcm5hbGx5LCBvciBhcmUgdGhleSBpbnRlcm5hbCB0byB0aGUgYG5leHRob3BgIG1vZHVsZT8gSSBoYXZlIGEgaHVuY2guIExldCBtZSBjaGVjazogYG5leHRob3BfYWxsb2NgIGlzIHN0YXRpYy4gQWxyaWdodCwgdGhhdCYjMzk7cyBvbmUuIGBuZXh0aG9wX2dycF9hbGxvY2AgaXMgYWxzbyBzdGF0aWMuIEFuZCBgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2NgIGFzIHdlbGwhIEFuZCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLCBhbmQgYG5leHRob3BfY3JlYXRlYC4gU28sIGxvb2tzIGxpa2UgYWxsIHRob3NlIGNvcmUgZnVuY3Rpb25zIGFyZSBpbmRlZWQgc3RhdGljLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIGdvIGJhY2sgdG8gdGhlIHNvdXJjZSAtIGBuZXQvaXB2NC9uZXh0aG9wLmNgIC0gYW5kIGNvbmZpcm0gdGhhdCB0aGVzZSBzdGF0aWMgZGVjbGFyYXRpb25zIGFyZSBjb3JyZWN0LiBUaGF0IGlzIGEgbXVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9Mjc0MD1zdGF0aWMgdm9pZCBmbHVzaF9hbGxfbmV4dGhvcHMoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0yNzU1LVxubmV0L2lwdjQvbmV4dGhvcC5jOjI3NTY6c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjc1Ny1cdFx0XHRcdFx0ICAgIHN0cnVjdCBuaF9jb25maWcgKmNmZylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MjkwMz1zdGF0aWMgaW50IG5oX2NyZWF0ZV9pcHY2KHN0cnVjdCBuZXQgKm5ldCwgIHN0cnVjdCBuZXh0aG9wICpuaCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjkzNi1cbm5ldC9pcHY0L25leHRob3AuYzoyOTM3OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjkzOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9Mjk5ND1zdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zMDA4LVx0aWYgKGNmZy1cdTAwM2VuaF9ncnApXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAwOTpcdFx0bmggPSBuZXh0aG9wX2NyZWF0ZV9ncm91cChuZXQsIGNmZyk7XG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxMC1cdGVsc2Vcbm5ldC9pcHY0L25leHRob3AuYzozMDExOlx0XHRuaCA9IG5leHRob3BfY3JlYXRlKG5ldCwgY2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMwMTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgbmV4dGhvcF9hZGRgKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBuZXh0aG9wX2FkZGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGlzIHRoaW5nIGlzIGRlZmluZWQgc3RhdGljYWxseSBhcyB3ZWxsLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgYmVoYXZpb3IsIHNvIEkmIzM5O2xsIGRpdmUgaW4gYW5kIGRvdWJsZS1jaGVjayBpdHMgZGVjbGFyYXRpb24gb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgYW55dGhpbmcsIGV2ZW4gaWYgaXQgZmVlbHMgb2J2aW91cyBiYXNlZCBvbiB0aGUgc3Vycm91bmRpbmcgY29kZS4gR290dGEgdmVyaWZ5IGl0cyBtdXRhYmlsaXR5IHRvIHVuZGVyc3RhbmQgaXRzIGxpZmVjeWNsZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3BfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0yOTM3PXN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTI5OTMtLyogY2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQgKi9cbm5ldC9pcHY0L25leHRob3AuYzoyOTk0OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjk5NS1cdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzI5ND1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cbm5ldC9pcHY0L25leHRob3AuYzozMzI1Olx0bmggPSBuZXh0aG9wX2FkZChuZXQsIFx1MDAyNmNmZywgZXh0YWNrKTtcbm5ldC9pcHY0L25leHRob3AuYy0zMzI2LVx0aWYgKElTX0VSUihuaCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlN0YXRpYyBgcnRtX25ld19uZXh0aG9wYD8gQSBRdWljayBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJ0bV9uZXdfbmV4dGhvcGAuIEl0IGp1c3QgaGl0IG1lOiBpcyB0aGF0IGZ1bmN0aW9uIGRlY2xhcmVkIGBzdGF0aWNgPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgaXRzIHNjb3BlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSWYgaXQmIzM5O3Mgc3RhdGljLCB0aGF0IGltbWVkaWF0ZWx5IGltcGxpZXMgaXQmIzM5O3Mgc2NvcGVkIHRvIGEgc2luZ2xlIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBmb3IgbW9kdWxhcml0eSwgcmV1c2FiaWxpdHksIGFuZCBwb3RlbnRpYWwgbmFtZXNwYWNlIGNvbmZsaWN0cyB3aXRoaW4gdGhlIHdpZGVyIHN5c3RlbS4gSWYgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBJIHN0aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhbmQgd2hldGhlciBhbnkgZ2xvYmFsIGRlcGVuZGVuY2llcyBvciBzaWRlIGVmZmVjdHMgY291bGQgYmUgaW50cm9kdWNlZCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBxdWVzdGlvbiB0aGF0JiMzOTtsbCBkZXRlcm1pbmUgdGhlIGV4dGVudCBvZiBteSBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9MzI2Mj1zdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI5My0vKiBydG5sICovXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI5NDpzdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC9pcHY0L25leHRob3AuYy0zMjk1LVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgbmV4dGhvcF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xubmV0L2lwdjQvbmV4dGhvcC5jOjQxNzc6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXTkVYVEhPUCwgLmRvaXQgPSBydG1fbmV3X25leHRob3AsXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE3OC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy00MTg1LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE4NjpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTg3LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX0dFVE5FWFRIT1AsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODktXHR7LnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE5MDpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTkxLVx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGBydG1fbmV3X25leHRob3BgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBydG1fbmV3X25leHRob3BgIGlzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIG5ldyBuZXh0LWhvcCBmdW5jdGlvbmFsaXR5LCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbj8gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBnaXZlbiBpdCYjMzk7cyByZWdpc3RlcmVkIGFzIGFuIFJUTkwgbWVzc2FnZSBoYW5kbGVyLiBJJiMzOTttIHdvbmRlcmluZyBob3cgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgb3IgY2FsbGVkLiBUaGUgc3RhdGljIG5hdHVyZSBpbXBsaWVzIGludGVybmFsIHVzZSB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHlldCBSVE5MIGhhbmRsZXJzIGFyZSB0eXBpY2FsbHkgZXhwb3NlZC4gVGhpcyBzZXR1cCBpbnRyaWd1ZXMgbWUuIEkmIzM5O3ZlIGdvdCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBoZXJlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGFzc29jaWF0ZWQgY29kZSBpbiBgbmV4dGhvcC5jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IG1vZGlmeSBvciBpbnRlcmFjdCB3aXRoIGBydG1fbmV3X25leHRob3BgIHdpbGwgaWxsdW1pbmF0ZSB0aGUgY2FsbCBjaGFpbiBhbmQgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoaXMgZGVlcGVyIGRpdmUgc2hvdWxkIHJldmVhbCB0aGUgY29ubmVjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X0EtWjAtOV0mIzQzOyBuZXh0aG9wXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9NTAzPXN0YXRpYyB2b2lkIG5leHRob3BfZnJlZV9zaW5nbGUoc3RydWN0IG5leHRob3AgKm5oKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy01MTgtXG5uZXQvaXB2NC9uZXh0aG9wLmM6NTE5OnZvaWQgbmV4dGhvcF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvaXB2NC9uZXh0aG9wLmMtNTIwLXtcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MTUxMD1FWFBPUlRfU1lNQk9MX0dQTChuZXh0aG9wX3NlbGVjdF9wYXRoKTtcbm5ldC9pcHY0L25leHRob3AuYy0xNTExLVxubmV0L2lwdjQvbmV4dGhvcC5jOjE1MTI6aW50IG5leHRob3BfZm9yX2VhY2hfZmliNl9uaChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTUxMy1cdFx0XHQgICAgIGludCAoKmNiKShzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZyksXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTQwNTI9RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX25leHRob3Bfbm90aWZpZXIpO1xubmV0L2lwdjQvbmV4dGhvcC5jLTQwNTMtXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDA1NDp2b2lkIG5leHRob3Bfc2V0X2h3X2ZsYWdzKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkLCBib29sIG9mZmxvYWQsIGJvb2wgdHJhcClcbm5ldC9pcHY0L25leHRob3AuYy00MDU1LXtcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDA3Mz1FWFBPUlRfU1lNQk9MKG5leHRob3Bfc2V0X2h3X2ZsYWdzKTtcbm5ldC9pcHY0L25leHRob3AuYy00MDc0LVxubmV0L2lwdjQvbmV4dGhvcC5jOjQwNzU6dm9pZCBuZXh0aG9wX2J1Y2tldF9zZXRfaHdfZmxhZ3Moc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQsIHUxNiBidWNrZXRfaW5kZXgsXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA3Ni1cdFx0XHRcdCBib29sIG9mZmxvYWQsIGJvb2wgdHJhcClcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDEwNz1FWFBPUlRfU1lNQk9MKG5leHRob3BfYnVja2V0X3NldF9od19mbGFncyk7XG5uZXQvaXB2NC9uZXh0aG9wLmMtNDEwOC1cbm5ldC9pcHY0L25leHRob3AuYzo0MTA5OnZvaWQgbmV4dGhvcF9yZXNfZ3JwX2FjdGl2aXR5X3VwZGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCwgdTE2IG51bV9idWNrZXRzLFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxMTAtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgKmFjdGl2aXR5KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODAyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5leHRob3AgRnVuY3Rpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgaGFuZGxpbmcgbmV3IG5leHRob3BzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBmb3IgdGhlIGBSVE1fTkVXTkVYVEhPUGAgbmV0bGluayBtZXNzYWdlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBydG1fbmV3X25leHRob3BgLCBidXQgdGhhdCYjMzk7cyBzdGF0aWMsIHNvIGl0IGNhbiYjMzk7dCBiZSBhIGZvY3VzIHN5bWJvbC4gVGhlIHNhbWUgYXBwbGllcyB0byBgbmV4dGhvcF9hZGRgLiBJIG5lZWQgYSBub24tc3RhdGljIGZ1bmN0aW9uIHRvIGFuY2hvciBteSBpbnZlc3RpZ2F0aW9uLgoKSSYjMzk7dmUgbW92ZWQgb250byBgbmV0L2lwdjQvbmV4dGhvcC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBgRVhQT1JUX1NZTUJPTGAgZGVmaW5pdGlvbnMgb3IsIGFsdGVybmF0aXZlbHksIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG5leHRob3AgY3JlYXRpb24uIEkgY2hlY2tlZCBmb3IgY29tbW9uIGZ1bmN0aW9ucyB1c2VkIGluIG1hbnkgcGFydHMgb2YgdGhlIGtlcm5lbC4gYG5leHRob3BfZnJlZV9yY3VgLCBgbmV4dGhvcF9mb3JfZWFjaF9maWI2X25oYCwgYG5leHRob3Bfc2V0X2h3X2ZsYWdzYCwgYG5leHRob3BfYnVja2V0X3NldF9od19mbGFnc2AsIGFuZCBgbmV4dGhvcF9yZXNfZ3JwX2FjdGl2aXR5X3VwZGF0ZWAgYXJlIGFsbCBoZXJlLCBidXQgdGhleSBhcmVuJiMzOTt0IHRoZSBwcmltYXJ5IG5leHRob3AgKmNyZWF0aW9uKiBmdW5jdGlvbnMuCgpBaGEhIGBuZXh0aG9wX2FsbG9jYCBpcyBjYWxsZWQgZnJvbSBgbmV4dGhvcF9jcmVhdGVgIGFuZCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGxlYWQuIEl0IGxvb2tzIGxpa2UgYG5leHRob3BfYWxsb2NgIGlzIHByb2JhYmx5IHRoZSBjb3JlIGFsbG9jYXRpb24gZnVuY3Rpb24sIGJ1dCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGVudHJ5IHBvaW50cyBieSBpbnNwZWN0aW5nIGBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0YC4gSSYjMzk7bGwgZXhwbG9yZSB0aGF0IGZ1bmN0aW9uIGZ1cnRoZXIgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFkZGl0aW9uYWwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9MTMzPXN0YXRpYyBpbnQgbmhfbm90aWZpZXJfbXBhdGhfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0xNjAtXG5uZXQvaXB2NC9uZXh0aG9wLmM6MTYxOnN0YXRpYyBpbnQgbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdChzdHJ1Y3Qgbmhfbm90aWZpZXJfaW5mbyAqaW5mbyxcbm5ldC9pcHY0L25leHRob3AuYy0xNjItXHRcdFx0XHRcdCAgIHN0cnVjdCBuaF9ncm91cCAqbmhnKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0xOTM9c3RhdGljIGludCBuaF9ub3RpZmllcl9ncnBfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0yMDAtXHRlbHNlIGlmIChuaGctXHUwMDNlcmVzaWxpZW50KVxubmV0L2lwdjQvbmV4dGhvcC5jOjIwMTpcdFx0cmV0dXJuIG5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXQoaW5mbywgbmhnKTtcbm5ldC9pcHY0L25leHRob3AuYy0yMDItXHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGludGVybmFsIHN0dWZmLiBTaW5jZSBpdCYjMzk7cyB0b3VjaGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmbGFncywgaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgZ3VpZGluZyBtZSB0b3dhcmQgY2hvb3NpbmcgdGhlIHJpZ2h0IHN5bWJvbCBmb3IgdGhpcy4gVGhlIG1haW4gZW50cnkgcG9pbnQgc2VlbXMgdG8gYmUgYHJ0bV9uZXdfbmV4dGhvcGAsIGFuZCBJIGluaXRpYWxseSBmbGFnZ2VkIGl0IGFzIHN0YXRpYywgd2hpY2ggaXMgYSBwb3RlbnRpYWwgaXNzdWUgYWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMuIFRoZXkgd2FudCBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBJZiB0aG9zZSBkb24mIzM5O3QgZXhpc3QsIEkgY2FuIGVpdGhlciBvbWl0IGBGb2N1c1N5bWJvbHNgIGVudGlyZWx5IG9yIHByb3ZpZGUgYW4gZW1wdHkgbGlzdCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGRvIHRoYXQuCgpUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gYXZvaWQgaW5saW5lZCBzdGF0aWMgaGVscGVycyBiZWNhdXNlIHRoZXkgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiB1c2UgdGhpcyBzdGF0aWMgZnVuY3Rpb24/IEhtbSwgbGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFnYWluLi4uIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZC4uLiBPa2F5LCBzbyBsZXQmIzM5O3Mgc2VlIGlmIGBydG1fbmV3X25leHRob3BgIGlzIGFjdHVhbGx5IGlubGluZWQuIEl0JiMzOTtzIHJlZ2lzdGVyZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBuZXh0aG9wX3J0bmxfbXNnX2hhbmRsZXJzYCwgc28gYnkgZGVmaW5pdGlvbiwgaXQgKmNhbm5vdCogYmUgaW5saW5lZC4gVGhhdCYjMzk7cyBnb29kIG5ld3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvdWdoLgoKT2theSwgbGV0IG1lIGNoZWNrIGBuZXh0aG9wX2FkZGAgYW5kIGBuZXh0aG9wX2NyZWF0ZWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJZiBgcnRtX25ld19uZXh0aG9wYCAqaXNuJiMzOTt0KiBpbmxpbmVkLCB0aGVuIGl0IGRvZXMgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBhbmQgSSBjYW4gdXNlIGl0LiBJIHJlbWVtYmVyIHRoZSBjb250ZXh0LCBpdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCB0aGlzIGRvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9MzI2Mj1zdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI5My0vKiBydG5sICovXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI5NDpzdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC9pcHY0L25leHRob3AuYy0zMjk1LVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgbmV4dGhvcF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xubmV0L2lwdjQvbmV4dGhvcC5jOjQxNzc6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXTkVYVEhPUCwgLmRvaXQgPSBydG1fbmV3X25leHRob3AsXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE3OC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy00MTg1LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE4NjpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTg3LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX0dFVE5FWFRIT1AsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODktXHR7LnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE5MDpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTkxLVx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODg4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIE5leHRob3AgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gYHJ0bV9uZXdfbmV4dGhvcGAgc2VlbXMgbGlrZSB0aGUgY2VudHJhbCBwb2ludCBvZiBpbnRlcmVzdCBoZXJlLCBhIHNvbGlkIGZvY3VzLiBCdXQsIHNob3VsZCBJIGFsc28gY29uc2lkZXIgYHJ0bV9kZWxfbmV4dGhvcGAgYW5kIGBydG1fZ2V0X25leHRob3BgPyBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gbWVtb3J5IGFsbG9jYXRpb24sIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYHJ0bV9uZXdfbmV4dGhvcGAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzLgoKTm93LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBgQ09ORklHYCBvcHRpb25zIHRoYXQgbWlnaHQgYmUgY3J1Y2lhbC4gRG9lcyB0aGlzIGNvZGUgcGF0aCBoYXZlIGEgZGVwZW5kZW5jeSBvbiwgc2F5LCBgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSGA/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIGBuZXQvaXB2NC9LY29uZmlnYCBhbmQgdHJhY2UgZGVwZW5kZW5jaWVzIGZvciBgbmV4dGhvcC5jYCB0byBpZGVudGlmeSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIGNvdWxkIHJldmVhbCBpbXBvcnRhbnQgY29udGV4dCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlJldmlzaXRpbmcgdGhlIElQdjQgTWFrZWZpbGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIGBuZXQvaXB2NC9NYWtlZmlsZWAuIEkmIzM5O3ZlIGJlZW4gd29ya2luZyB3aXRoIHRoZSBJUHY0IHN0YWNrIGZvciBhIHdoaWxlIG5vdywgYW5kIGNlcnRhaW4gcGF0dGVybnMgYW5kIHF1aXJrcyB0ZW5kIHRvIHJlcGVhdCB0aGVtc2VsdmVzIGluIG15IHdvcmtmbG93LiBNeSBpbnRlcm5hbCBjaGVja2xpc3Qgbm93IGluY2x1ZGVzIGdvaW5nIGJhY2sgb3ZlciB0aG9zZSBNYWtlZmlsZXMuIFRoZXJlJiMzOTtzIHVzdWFsbHkgc29tZXRoaW5nIEkgbmVlZCB0byByZWZyZXNoIG9uLCBhIG5ldyBkZXBlbmRlbmN5IHRoYXQmIzM5O3MgYmVlbiBpbnRyb2R1Y2VkLCBvciBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkIGluaXRpYWxseS4gSXQgY291bGQgYmUgYW4gaW5jbHVzaW9uIHN0cmF0ZWd5IGZvciBoZWFkZXJzLCB0aGUgYnVpbGQgZmxhZ3MgZm9yIGEgcGFydGljdWxhciBtb2R1bGUsIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gSXQmIzM5O3MgdGltZSB0byByZS1leGFtaW5lIGl0IGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBmb3Jnb3R0ZW4gYW55dGhpbmcgY3JpdGljYWwgb3Igb3Zlcmxvb2tlZCBhIHBvdGVudGlhbCBzbmFnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU4OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhpcyBjaGFuZ2UgSSYjMzk7bSBsb29raW5nIGF0LCBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiBgb2JqLXlgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBjb21waWxlZCBhcyBwYXJ0IG9mIHRoZSBgbmV0L2lwdjQvYCBtb2R1bGUuIFRoZSBwcmVzZW5jZSBvZiBgbmV0L2lwdjQvYCBzZWVtcyB0byBiZSBnYXRlZCBieSBgQ09ORklHX0lORVRgLCBzbyB0aGF0JiMzOTtzIHRoZSBiYXNlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gRXhjZWxsZW50LCBubyBvYnNjdXJlLCBzcGVjaWFsaXplZCBvcHRpb25zIG5lZWRlZC4gSXQmIzM5O3MgYnVpbHQgaW4gd2l0aCBzdGFuZGFyZCBuZXR3b3JraW5nLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLi4uIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYF9fbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHNgIGluIHRoZSBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGEgYml0Li4uIGJyb2FkZXIgdGhhbiBqdXN0IHN0YW5kYXJkIElQdjQuIEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgc2hvdWxkIGNoZWNrIHRoZSBjb250ZXh0IG9mIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAgdG8gc2VlIGlmIGl0IGJyaW5ncyBpbiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBpbXBsaWNpdCBkZXBlbmRlbmN5IHRoZXJlLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLiBUaW1lIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3BfY3JlYXRlX2dyb3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0yNzQwPXN0YXRpYyB2b2lkIGZsdXNoX2FsbF9uZXh0aG9wcyhzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NTUtXG5uZXQvaXB2NC9uZXh0aG9wLmM6Mjc1NjpzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9pcHY0L25leHRob3AuYy0yNzU3LVx0XHRcdFx0XHQgICAgc3RydWN0IG5oX2NvbmZpZyAqY2ZnKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0yOTk0PXN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMwMDgtXHRpZiAoY2ZnLVx1MDAzZW5oX2dycClcbm5ldC9pcHY0L25leHRob3AuYzozMDA5Olx0XHRuaCA9IG5leHRob3BfY3JlYXRlX2dyb3VwKG5ldCwgY2ZnKTtcbm5ldC9pcHY0L25leHRob3AuYy0zMDEwLVx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE3MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgRGVwZW5kZW5jaWVzIG9mIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBpcyBoYW5naW5nIG9mZiBvZiBzb21lIG9ic2N1cmUgY29uZmlndXJhdGlvbiBmbGFnIG9yIGRlcGVuZGVuY3kuIEl0JiMzOTtzIGNydWNpYWwgZm9yIG1lIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBlZGdlIGNhc2VzIGFuZCBob3cgZWFzaWx5IHRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgaW1wYWN0ZWQgYnkgY2hhbmdlcyBlbHNld2hlcmUgaW4gdGhlIHN5c3RlbS4gR2l2ZW4gbXkgbGV2ZWwgb2YgZXhwZXJ0aXNlLCBJIHdvdWxkIGV4cGVjdCBhIGZ1bmN0aW9uIGxpa2UgdGhpcyB0byBiZSBzb21ld2hhdCBpbmRlcGVuZGVudCwgYnV0IEkgY2FuJiMzOTt0IGxlYXZlIGFueXRoaW5nIHRvIGFzc3VtcHRpb24uCgpUaGUgYmVzdCB3YXkgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSB3b3VsZCBiZSB0byBpbnZlc3RpZ2F0ZSB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgZGlyZWN0IG1ldGhvZCBpcyB0byBleGFtaW5lIHRoZSBgbmV4dGhvcC5jYCBmaWxlIGl0c2VsZi4gTXkgaW1tZWRpYXRlIGZvY3VzIHdpbGwgYmUgb24gc2VhcmNoaW5nIGZvciBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgc3Vycm91bmRpbmcgdGhlIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAgZGVmaW5pdGlvbiBvciBpdHMgdXNlLiBJZiB0aGVyZSBhcmUgYW55LCB0aGVzZSBgI2lmZGVmYHMgd2lsbCBwcm92aWRlIGNsdWVzIGFzIHRvIHdoZW4sIG9yIHVuZGVyIHdoYXQgY29uZGl0aW9ucywgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjb21waWxlZCBhbmQgYWN0aXZlLiBUaGUgcHJlc2VuY2Ugb2YgYCNpZmRlZmBzIGluZGljYXRlcyB0aGF0IGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb3IgZmVhdHVyZXMgbWlnaHQgYmUgbmVjZXNzYXJ5IGZvciB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSB0byBiZSBhY3RpdmUuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBzZXR0aW5ncyB0cmlnZ2VyIGl0cyBhY3RpdmF0aW9uLCB3aGljaCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpZiBJIGFudGljaXBhdGUgYW55IGNoYW5nZXMgdG8gdGhlc2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBJZiBJIGNhbiBmaW5kIHRoZSBgI2lmZGVmYCBibG9ja3MsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBleGFjdCBzZXQgb2YgY29uZGl0aW9ucyB0aGF0IGluZmx1ZW5jZSB3aGV0aGVyIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAgaXMgZXZlbiBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU3OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIEFic2VuY2Ugb2YgUHJlcHJvY2Vzc29yIERpcmVjdGl2ZXMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBhIHdob2xlIGJ1bmNoIG9mIGAjaWZkZWZgIGRpcmVjdGl2ZXMgaW4gYG5leHRob3AuY2AsIGJ1dCBJJiMzOTttIG5vdCBzZWVpbmcgYW55LiBUaGF0JiMzOTtzIHVudXN1YWwsIGFuZCBpdCBtYWtlcyBtZSB3b25kZXIgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJlbGF0ZWQgdG8gbmV0d29yayBuZXh0IGhvcCBiZWhhdmlvci4gV2FpdCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLi4uIG1heWJlIHRoZXkmIzM5O3JlIHVzaW5nIHNvbWV0aGluZyBlbHNlLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXkmIzM5O3ZlIG9wdGVkIHRvIHVzZSB0aGUgYCNpZmAgZGlyZWN0aXZlLCBpbnN0ZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzc3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgYSBQb3RlbnRpYWwgR3JlcCBQaXRmYWxsKioKCk9rYXksIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGV4dHJhY3Qgc29tZSBpbmZvcm1hdGlvbiBmcm9tIGEgY29uZmlndXJhdGlvbiBmaWxlLCBsaWtlbHkgdXNpbmcgYSBjb21tYW5kLWxpbmUgdG9vbC4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCB1c2luZyBgZ3JlcGAgd2l0aCBgI2lmYCBjb25zdHJ1Y3RzIHRvIG5hcnJvdyB0aGUgc2VhcmNoLiBCdXQgaGFuZyBvbiwgdXNpbmcgYCNpZmAgd2l0aCBgZ3JlcGDigJR0aGF0IGNvdWxkIGdldCBtZXNzeS4gSSYjMzk7ZCBoYXZlIHRvIGRlYWwgd2l0aCBlc2NhcGluZyBjaGFyYWN0ZXJzIHRvIGVuc3VyZSB0aGUgYGdyZXBgIGNvbW1hbmQgcHJvcGVybHkgaW50ZXJwcmV0cyB0aGUgYCNpZmAgZGlyZWN0aXZlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIHBhaW4sIGFuZCBpdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gTWF5YmUgSSBuZWVkIHRvIHJlYWQgdGhlIGVudGlyZSBmaWxlIGludG8gdGhlIHByb2dyYW0gYW5kIHBhcnNlLiBPciBtYXliZSBhIHN0cmFpZ2h0IGBncmVwYCBmb3IgYENPTkZJR19gIHdvdWxkIGJlIHRoZSBsZWFzdCBlcnJvciBwcm9uZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBhY2NvdW50IGZvciBwb3RlbnRpYWwgdmFyaWF0aW9ucyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHN5bnRheCwgYnV0IEkmIzM5O20gbGVhbmluZyB0b3dhcmQgYXZvaWRpbmcgYW55IHRyaWNreSBlc2NhcGVzIG9yIGNvbXBsaWNhdGVkIHJlZ2V4IHJpZ2h0IG5vdy4gQmVzdCB0byBzdGFydCBzaW1wbGUgYW5kIGl0ZXJhdGUgaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0xNDEyPXN0YXRpYyBib29sIG5leHRob3BfaXNfZ29vZF9uaChjb25zdCBzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTE0MTktXHRjYXNlIEFGX0lORVQ2OlxubmV0L2lwdjQvbmV4dGhvcC5jOjE0MjA6XHRcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19JUFY2KSBcdTAwMjZcdTAwMjYgaXB2Nl9nb29kX25oKFx1MDAyNm5oaS1cdTAwM2VmaWI2X25oKTtcbm5ldC9pcHY0L25leHRob3AuYy0xNDIxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTE4MwoJCQkJCQkJb3V0cHV0OiAxMDcKCQkJCQkJCXRob3VnaHRzOiAyMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV4dGhvcCBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGUgY29kZSBpbiBgbmV4dGhvcC5jYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBJUHY0IHN1cHBvcnQsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhlIGtleSBoZXJlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYEdGUF9LRVJORUxfQUNDT1VOVGAgaW4gdGhlIGFsbG9jYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGFjdGl2YXRlcyBtZW1vcnkgYWNjb3VudGluZywgb3IgbWVtY2csIGZvciB0aGVzZSBgbmV4dGhvcGAgb2JqZWN0cy4KClRoYXQmIzM5O3MgYSBkZWZpbml0ZSAmIzM0O3dvcnRoIGZ1enppbmcmIzM0OyBmbGFnLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gYmVoYXZlcyBhcyBleHBlY3RlZCB1bmRlciBtZW1vcnkgcHJlc3N1cmUsIGVzcGVjaWFsbHkgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBpbXBvc2VkIGJ5IG1lbWNnLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIHNpdHVhdGlvbnMgd2hlcmUgYWxsb2NhdGlvbnMgbWlnaHQgZmFpbCBiZWNhdXNlIHRoZSBsaW1pdHMgYXJlIGhpdC4gQXJlIHdlIGhhbmRsaW5nIHRob3NlIGZhaWx1cmVzIGdyYWNlZnVsbHk/IE5vIHVuZXhwZWN0ZWQgY3Jhc2hlcywgbm8gbWVtb3J5IGxlYWtzLi4uIHRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gdmVyaWZ5LgoKTXkgbWVudGFsIGNoZWNrbGlzdCBsb29rcyBsaWtlIHRoaXM6CgoqICAgKipXb3J0aEZ1enppbmcqKjogQWJzb2x1dGVseSwgeWVzLiBUaGlzIGlzIHRoZSBjcnV4IG9mIGl0LgoqICAgKipGb2N1c1N5bWJvbHMqKjogSSYjMzk7bGwgdGFyZ2V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gY3JlYXRpbmcgbmV3IG5leHRob3BzLCBzcGVjaWZpY2FsbHkgJiMzNDtydG1cX25ld1xfbmV4dGhvcCYjMzQ7LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIGFyZSBsaWtlbHkgdG8gbWFuaWZlc3QuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogTm9uZSwgaXQmIzM5O3Mgbm90IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCiogICAqKlJlYXNvbmluZyoqOiAmIzM0O1RoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBjaGFuZ2VzIGhvdyBgbmV4dGhvcGAgb2JqZWN0cyBoYW5kbGUgbWVtb3J5LCBlbmFibGluZyBtZW1jZyB0cmFja2luZy4gTXkgZnV6emluZyBlZmZvcnRzIG5lZWQgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBuZXh0aG9wYCBjcmVhdGlvbiAoYHJ0bV9uZXdfbmV4dGhvcGApIHRvIHZhbGlkYXRlIHByb3BlciBlcnJvciBoYW5kbGluZyB3aGVuIG1lbW9yeSBsaW1pdHMgYXJlIHJlYWNoZWQuIEVuc3VyaW5nIHRoZSBzeXN0ZW0gYmVoYXZlcyByZWxpYWJseSB1bmRlciBtZW1vcnkgY29uc3RyYWludHMgaXMgcGFyYW1vdW50LiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydG1fbmV3X25leHRob3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoX19HRlBfQUNDT1VOVCAvIEdGUF9LRVJORUxfQUNDT1VOVCkgZm9yIG5leHRob3Agb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIG1lbWNnIHRvIHRyYWNrIGFuZCBsaW1pdCBtZW1vcnkgdXNlZCBieSBuZXh0aG9wcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gbmV4dGhvcCBjcmVhdGlvbiB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaGl0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChfX0dGUF9BQ0NPVU5UIC8gR0ZQX0tFUk5FTF9BQ0NPVU5UKSBmb3IgbmV4dGhvcCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgbWVtY2cgdG8gdHJhY2sgYW5kIGxpbWl0IG1lbW9yeSB1c2VkIGJ5IG5leHRob3BzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBuZXh0aG9wIGNyZWF0aW9uIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBoaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NjozMy43MTU1OTE4ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjkzNjk2MDY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydG1fbmV3X25leHRob3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChfX0dGUF9BQ0NPVU5UIC8gR0ZQX0tFUk5FTF9BQ0NPVU5UKSBmb3IgbmV4dGhvcCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgbWVtY2cgdG8gdHJhY2sgYW5kIGxpbWl0IG1lbW9yeSB1c2VkIGJ5IG5leHRob3BzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBuZXh0aG9wIGNyZWF0aW9uIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBoaXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjMzLjcxNTYwMjk2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyNTQxMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNlZDUyZjVkMDZmNTk4NmFhNzQ1MTBlMjQ2YTgxNzhlMDlkZTUyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMTo1NjozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcXG5pbmRleCA0NGZlNzUwMDRjYWNiLi5jODY4NWM1ODM1Nzk0IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25leHRob3AuY1xcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xcbkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIGludCBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxcbiBcXHRpbmZvLVxcdTAwM2V0eXBlID0gTkhfTk9USUZJRVJfSU5GT19UWVBFX1JFU19UQUJMRTtcXG4gXFx0c2l6ZSA9IHN0cnVjdF9zaXplKGluZm8tXFx1MDAzZW5oX3Jlc190YWJsZSwgbmhzLCBudW1fbmhfYnVja2V0cyk7XFxuIFxcdGluZm8tXFx1MDAzZW5oX3Jlc190YWJsZSA9IF9fdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyB8XFxuLVxcdFxcdFxcdFxcdCAgICAgICBfX0dGUF9OT1dBUk4pO1xcbitcXHRcXHRcXHRcXHQgICAgICAgX19HRlBfTk9XQVJOIHwgX19HRlBfQUNDT1VOVCk7XFxuIFxcdGlmICghaW5mby1cXHUwMDNlbmhfcmVzX3RhYmxlKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTUzMyw3ICs1MzMsNyBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfYWxsb2Modm9pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV4dGhvcCAqbmg7XFxuIFxcbi1cXHRuaCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZXh0aG9wKTtcXG4rXFx0bmggPSBremFsbG9jX29iaihzdHJ1Y3QgbmV4dGhvcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKG5oKSB7XFxuIFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuaC1cXHUwMDNlZmlfbGlzdCk7XFxuIFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuaC1cXHUwMDNlZjZpX2xpc3QpO1xcbkBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGljIHN0cnVjdCBuaF9ncm91cCAqbmV4dGhvcF9ncnBfYWxsb2ModTE2IG51bV9uaClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmhfZ3JvdXAgKm5oZztcXG4gXFxuLVxcdG5oZyA9IGt6YWxsb2NfZmxleCgqbmhnLCBuaF9lbnRyaWVzLCBudW1fbmgpO1xcbitcXHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAobmhnKVxcbiBcXHRcXHRuaGctXFx1MDAzZW51bV9uaCA9IG51bV9uaDtcXG4gXFxuQEAgLTU2NSw3ICs1NjUsOCBAQCBuZXh0aG9wX3Jlc190YWJsZV9hbGxvYyhzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBuaGdfaWQsIHN0cnVjdCBuaF9jb25maWcgKmNmZylcXG4gXFx0dW5zaWduZWQgbG9uZyBzaXplO1xcbiBcXG4gXFx0c2l6ZSA9IHN0cnVjdF9zaXplKHJlc190YWJsZSwgbmhfYnVja2V0cywgbnVtX25oX2J1Y2tldHMpO1xcbi1cXHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4pO1xcbitcXHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4gfFxcbitcXHRcXHRcXHQgICAgICBfX0dGUF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFyZXNfdGFibGUpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG5AQCAtMjc5OSw3ICsyODAwLDggQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdG5oZy1cXHUwMDNlaGFzX3Y0ID0gdHJ1ZTtcXG4gXFxuIFxcdFxcdG5oZy1cXHUwMDNlbmhfZW50cmllc1tpXS5zdGF0cyA9XFxuLVxcdFxcdFxcdG5ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMpO1xcbitcXHRcXHRcXHRfX25ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0aWYgKCFuaGctXFx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0XFx0bmV4dGhvcF9wdXQobmhlKTtcXG5AQCAtMjk0Myw3ICsyOTQ1LDcgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4gXFx0aWYgKCFuaClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIFxcbi1cXHRuaGkgPSBremFsbG9jX29iaigqbmhpKTtcXG4rXFx0bmhpID0ga3phbGxvY19vYmooKm5oaSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFuaGkpIHtcXG4gXFx0XFx0a2ZyZWUobmgpO1xcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6MzQuMjQ5MDY1MjU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY0MDM0ODAyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX25ld19uZXh0aG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoX19HRlBfQUNDT1VOVCAvIEdGUF9LRVJORUxfQUNDT1VOVCkgZm9yIG5leHRob3Agb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIG1lbWNnIHRvIHRyYWNrIGFuZCBsaW1pdCBtZW1vcnkgdXNlZCBieSBuZXh0aG9wcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gbmV4dGhvcCBjcmVhdGlvbiB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3M2VkNTJmNWQwNmY1OTg2YWE3NDUxMGUyNDZhODE3OGUwOWRlNTJmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDE6NTY6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbmluZGV4IDQ0ZmU3NTAwNGNhY2IuLmM4Njg1YzU4MzU3OTQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgaW50IG5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXQoc3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8sXG4gXHRpbmZvLVx1MDAzZXR5cGUgPSBOSF9OT1RJRklFUl9JTkZPX1RZUEVfUkVTX1RBQkxFO1xuIFx0c2l6ZSA9IHN0cnVjdF9zaXplKGluZm8tXHUwMDNlbmhfcmVzX3RhYmxlLCBuaHMsIG51bV9uaF9idWNrZXRzKTtcbiBcdGluZm8tXHUwMDNlbmhfcmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHxcbi1cdFx0XHRcdCAgICAgICBfX0dGUF9OT1dBUk4pO1xuK1x0XHRcdFx0ICAgICAgIF9fR0ZQX05PV0FSTiB8IF9fR0ZQX0FDQ09VTlQpO1xuIFx0aWYgKCFpbmZvLVx1MDAzZW5oX3Jlc190YWJsZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNTMzLDcgKzUzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hbGxvYyh2b2lkKVxuIHtcbiBcdHN0cnVjdCBuZXh0aG9wICpuaDtcbiBcbi1cdG5oID0ga3phbGxvY19vYmooc3RydWN0IG5leHRob3ApO1xuK1x0bmggPSBremFsbG9jX29iaihzdHJ1Y3QgbmV4dGhvcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmIChuaCkge1xuIFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZuaC1cdTAwM2VmaV9saXN0KTtcbiBcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmgtXHUwMDNlZjZpX2xpc3QpO1xuQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgc3RydWN0IG5oX2dyb3VwICpuZXh0aG9wX2dycF9hbGxvYyh1MTYgbnVtX25oKVxuIHtcbiBcdHN0cnVjdCBuaF9ncm91cCAqbmhnO1xuIFxuLVx0bmhnID0ga3phbGxvY19mbGV4KCpuaGcsIG5oX2VudHJpZXMsIG51bV9uaCk7XG4rXHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKG5oZylcbiBcdFx0bmhnLVx1MDAzZW51bV9uaCA9IG51bV9uaDtcbiBcbkBAIC01NjUsNyArNTY1LDggQEAgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2Moc3RydWN0IG5ldCAqbmV0LCB1MzIgbmhnX2lkLCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXG4gXHR1bnNpZ25lZCBsb25nIHNpemU7XG4gXG4gXHRzaXplID0gc3RydWN0X3NpemUocmVzX3RhYmxlLCBuaF9idWNrZXRzLCBudW1fbmhfYnVja2V0cyk7XG4tXHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4pO1xuK1x0cmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHwgX19HRlBfTk9XQVJOIHxcbitcdFx0XHQgICAgICBfX0dGUF9BQ0NPVU5UKTtcbiBcdGlmICghcmVzX3RhYmxlKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbkBAIC0yNzk5LDcgKzI4MDAsOCBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHRuaGctXHUwMDNlaGFzX3Y0ID0gdHJ1ZTtcbiBcbiBcdFx0bmhnLVx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMgPVxuLVx0XHRcdG5ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMpO1xuK1x0XHRcdF9fbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IG5oX2dycF9lbnRyeV9zdGF0cyxcbitcdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbmhnLVx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMpIHtcbiBcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRcdG5leHRob3BfcHV0KG5oZSk7XG5AQCAtMjk0Myw3ICsyOTQ1LDcgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbiBcdGlmICghbmgpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIFxuLVx0bmhpID0ga3phbGxvY19vYmooKm5oaSk7XG4rXHRuaGkgPSBremFsbG9jX29iaigqbmhpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFuaGkpIHtcbiBcdFx0a2ZyZWUobmgpO1xuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjM0LjI0OTA2ODA3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDA1NzY3MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYG5leHRob3AuY2AgTWVtb3J5IEFjY291bnRpbmcgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdHdlYWtpbmcgYG5ldC9pcHY0L25leHRob3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYF9fR0ZQX0FDQ09VTlRgIG9yIHVzaW5nIGBHRlBfS0VSTkVMX0FDQ09VTlRgIGluc3RlYWQgb2YgYEdGUF9LRVJORUxgIGluIGEgYnVuY2ggb2YgYWxsb2NhdGlvbiBmdW5jdGlvbnM6IGBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0YCwgYG5leHRob3BfYWxsb2NgLCBgbmV4dGhvcF9ncnBfYWxsb2NgLCBgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2NgLCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLCBhbmQgYG5leHRob3BfY3JlYXRlYC4gSG1tLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGVuYWJsaW5nIG1lbW9yeSBhY2NvdW50aW5nIGZvciBuZXh0aG9wIG9iamVjdHMsIHdoaWNoIHVzZXJzcGFjZSBjYW4gaW50ZXJhY3Qgd2l0aCB2aWEgbmV0bGluay4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cbk9uIHRoZSBzdXJmYWNlLCBpdCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBhY2NvdW50aW5nIGZsYWcgYWRkaXRpb24uIEJ1dCBjb25zaWRlcmluZyB0aGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWxhdGVkIHRvIGNyZWF0aW5nIGFuZCBtYW5hZ2luZyBuZXh0aG9wIG9iamVjdHMsIHllcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgd2l0aCBmdXp6aW5nLiBXZSBjYW4gdXNlIGZ1enppbmcgdG8gdHJpZ2dlciB0aGVzZSBhbGxvY2F0aW9ucyBhbmQgc2VlIGlmIHdlIGNhbiBoaXQgYW55IG1lbW9yeSBsaW1pdHMgb3IgdW5jb3ZlciBpc3N1ZXMgd2l0aCB0aGUgYWNjb3VudGluZyBpdHNlbGYuXG5cbk5vdywgbGV0J3MgZmlndXJlIG91dCB3aGF0IGNvbmZpZ3Mgd2UgbmVlZCB0byBoYXZlIGVuYWJsZWQgZm9yIGBuZXQvaXB2NC9uZXh0aG9wLmNgIHRvIGV2ZW4gYmUgY29tcGlsZWQuIEl0J3MgbGlrZWx5IGBDT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCB0byBiZSBzdXJlLiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAgdG8gYmVpbmcgYWJsZSB0byByZXByb2R1Y2UgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjM5Ljk0OTY0ODMzN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE0NzgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xcbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo0MC4wMDM4MDUyNzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEyOTY2MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gYW5kIFNjb3BlIG9mIHRoZSBOZXh0aG9wIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIGBuZXh0aG9wYCBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgdW5jb25kaXRpb25hbGx5IGluY2x1ZGVkIGluIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFzIHBhcnQgb2YgYG9iai15YC4gVGhhdCBgb2JqLXlgIGFzc2lnbm1lbnQgbWVhbnMgaXQncyBhbHdheXMgY29tcGlsZWQgYXMgbG9uZyBhcyBgQ09ORklHX0lORVRgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIGEga2V5IGRlcGVuZGVuY3kgdG8ga2VlcCBpbiBtaW5kLlxuXG5UbyBjb25maXJtIHRoaXMsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmRpdGlvbnMgdGllZCB0byBgbmV4dGhvcC5jYCBpdHNlbGYsIG9yIGlmIGl0J3MgaW1wbGljaXRseSBwYXJ0IG9mIHRoZSBsYXJnZXIgYENPTkZJR19JTkVUYCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIHBpbnBvaW50IHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIHRoZSBmb2xsb3dpbmc6IGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAsIGBuZXh0aG9wX2NyZWF0ZWAsIGBuZXh0aG9wX3Jlc190YWJsZV9hbGxvY2AsIGBuZXh0aG9wX2dycF9hbGxvY2AsIGFuZCBgbmV4dGhvcF9hbGxvY2AuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZWlyIHNjb3BlLiBBcmUgdGhlc2UgZnVuY3Rpb25zIGV4cG9zZWQgZXh0ZXJuYWxseSwgb3IgYXJlIHRoZXkgaW50ZXJuYWwgdG8gdGhlIGBuZXh0aG9wYCBtb2R1bGU/IEkgaGF2ZSBhIGh1bmNoLiBMZXQgbWUgY2hlY2s6IGBuZXh0aG9wX2FsbG9jYCBpcyBzdGF0aWMuIEFscmlnaHQsIHRoYXQncyBvbmUuIGBuZXh0aG9wX2dycF9hbGxvY2AgaXMgYWxzbyBzdGF0aWMuIEFuZCBgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2NgIGFzIHdlbGwhIEFuZCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLCBhbmQgYG5leHRob3BfY3JlYXRlYC4gU28sIGxvb2tzIGxpa2UgYWxsIHRob3NlIGNvcmUgZnVuY3Rpb25zIGFyZSBpbmRlZWQgc3RhdGljLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBnbyBiYWNrIHRvIHRoZSBzb3VyY2UgLSBgbmV0L2lwdjQvbmV4dGhvcC5jYCAtIGFuZCBjb25maXJtIHRoYXQgdGhlc2Ugc3RhdGljIGRlY2xhcmF0aW9ucyBhcmUgY29ycmVjdC4gVGhhdCBpcyBhIG11c3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NDQuNTE2Nzc1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk3OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTI3NDA9c3RhdGljIHZvaWQgZmx1c2hfYWxsX25leHRob3BzKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yNzU1LVxcbm5ldC9pcHY0L25leHRob3AuYzoyNzU2OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L25leHRob3AuYy0yNzU3LVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MjkwMz1zdGF0aWMgaW50IG5oX2NyZWF0ZV9pcHY2KHN0cnVjdCBuZXQgKm5ldCwgIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yOTM2LVxcbm5ldC9pcHY0L25leHRob3AuYzoyOTM3OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI5MzgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTI5OTQ9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMDA4LVxcdGlmIChjZmctXFx1MDAzZW5oX2dycClcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAwOTpcXHRcXHRuaCA9IG5leHRob3BfY3JlYXRlX2dyb3VwKG5ldCwgY2ZnKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxMC1cXHRlbHNlXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMTE6XFx0XFx0bmggPSBuZXh0aG9wX2NyZWF0ZShuZXQsIGNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NDQuNTc0NzY4OTM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwMDAwNDMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgYG5leHRob3BfYWRkYCoqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYG5leHRob3BfYWRkYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIGlmIHRoaXMgdGhpbmcgaXMgZGVmaW5lZCBzdGF0aWNhbGx5IGFzIHdlbGwuIEkgbmVlZCB0byBjb25maXJtIGl0cyBiZWhhdmlvciwgc28gSSdsbCBkaXZlIGluIGFuZCBkb3VibGUtY2hlY2sgaXRzIGRlY2xhcmF0aW9uIG9yIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0J3MgYmVpbmcgdXNlZC4gSSBjYW4ndCBqdXN0IGFzc3VtZSBhbnl0aGluZywgZXZlbiBpZiBpdCBmZWVscyBvYnZpb3VzIGJhc2VkIG9uIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBHb3R0YSB2ZXJpZnkgaXRzIG11dGFiaWxpdHkgdG8gdW5kZXJzdGFuZCBpdHMgbGlmZWN5Y2xlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo0Ny4yNzQ3Nzc0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODMwNDUxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTI5Mzc9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yOTkzLS8qIGNhbGxlZCB3aXRoIHJ0bmwgbG9jayBoZWxkICovXFxubmV0L2lwdjQvbmV4dGhvcC5jOjI5OTQ6c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjk5NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzI5ND1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMzI0LVxcbm5ldC9pcHY0L25leHRob3AuYzozMzI1OlxcdG5oID0gbmV4dGhvcF9hZGQobmV0LCBcXHUwMDI2Y2ZnLCBleHRhY2spO1xcbm5ldC9pcHY0L25leHRob3AuYy0zMzI2LVxcdGlmIChJU19FUlIobmgpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo0Ny4zMzMwOTMwNTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE3OTYxNjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipTdGF0aWMgYHJ0bV9uZXdfbmV4dGhvcGA/IEEgUXVpY2sgQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcnRtX25ld19uZXh0aG9wYC4gSXQganVzdCBoaXQgbWU6IGlzIHRoYXQgZnVuY3Rpb24gZGVjbGFyZWQgYHN0YXRpY2A/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgc2NvcGUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQuIElmIGl0J3Mgc3RhdGljLCB0aGF0IGltbWVkaWF0ZWx5IGltcGxpZXMgaXQncyBzY29wZWQgdG8gYSBzaW5nbGUgY29tcGlsYXRpb24gdW5pdCwgYW5kIEkgbmVlZCB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIGZvciBtb2R1bGFyaXR5LCByZXVzYWJpbGl0eSwgYW5kIHBvdGVudGlhbCBuYW1lc3BhY2UgY29uZmxpY3RzIHdpdGhpbiB0aGUgd2lkZXIgc3lzdGVtLiBJZiBpdCdzICpub3QqIHN0YXRpYywgSSBzdGlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBjYWxsZWQgZnJvbSBhbmQgd2hldGhlciBhbnkgZ2xvYmFsIGRlcGVuZGVuY2llcyBvciBzaWRlIGVmZmVjdHMgY291bGQgYmUgaW50cm9kdWNlZCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoYXQnbGwgZGV0ZXJtaW5lIHRoZSBleHRlbnQgb2YgbXkgZnVydGhlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTM2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NTAuMTUxMDYwNTk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjUxOTgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydG1fbmV3X25leHRob3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz0zMjYyPXN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZ19ydG5sKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMyOTMtLyogcnRubCAqL1xcbm5ldC9pcHY0L25leHRob3AuYzozMjk0OnN0YXRpYyBpbnQgcnRtX25ld19uZXh0aG9wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMjk1LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz00MTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBuZXh0aG9wX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XFxubmV0L2lwdjQvbmV4dGhvcC5jOjQxNzc6XFx0ey5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsIC5kb2l0ID0gcnRtX25ld19uZXh0aG9wLFxcbm5ldC9pcHY0L25leHRob3AuYy00MTc4LVxcdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODUtXFx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXFxubmV0L2lwdjQvbmV4dGhvcC5jOjQxODY6XFx0IC5kb2l0ID0gcnRtX25ld19uZXh0aG9wLCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxcbm5ldC9pcHY0L25leHRob3AuYy00MTg3LVxcdHsucHJvdG9jb2wgPSBQRl9JTkVULCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODktXFx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9ORVdORVhUSE9QLFxcbm5ldC9pcHY0L25leHRob3AuYzo0MTkwOlxcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE5MS1cXHR7LnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX0dFVE5FWFRIT1AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjUwLjIyMzU5MTgwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUzMTYwMTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgYHJ0bV9uZXdfbmV4dGhvcGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgcnRtX25ld19uZXh0aG9wYCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhpcyBuZXcgbmV4dC1ob3AgZnVuY3Rpb25hbGl0eSwgdGhhdCdzIGNsZWFyLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0J3MgYSBsaXR0bGUgdW51c3VhbCwgZ2l2ZW4gaXQncyByZWdpc3RlcmVkIGFzIGFuIFJUTkwgbWVzc2FnZSBoYW5kbGVyLiBJJ20gd29uZGVyaW5nIGhvdyBpdCdzIGJlaW5nIGFjY2Vzc2VkIG9yIGNhbGxlZC4gVGhlIHN0YXRpYyBuYXR1cmUgaW1wbGllcyBpbnRlcm5hbCB1c2Ugd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCB5ZXQgUlROTCBoYW5kbGVycyBhcmUgdHlwaWNhbGx5IGV4cG9zZWQuIFRoaXMgc2V0dXAgaW50cmlndWVzIG1lLiBJJ3ZlIGdvdCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBoZXJlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYXNzb2NpYXRlZCBjb2RlIGluIGBuZXh0aG9wLmNgLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgbW9kaWZ5IG9yIGludGVyYWN0IHdpdGggYHJ0bV9uZXdfbmV4dGhvcGAgd2lsbCBpbGx1bWluYXRlIHRoZSBjYWxsIGNoYWluIGFuZCBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gVGhpcyBkZWVwZXIgZGl2ZSBzaG91bGQgcmV2ZWFsIHRoZSBjb25uZWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjUzLjY3Njc1NTU4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MjU2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpfQS1aMC05XSsgbmV4dGhvcF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz01MDM9c3RhdGljIHZvaWQgbmV4dGhvcF9mcmVlX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtNTE4LVxcbm5ldC9pcHY0L25leHRob3AuYzo1MTk6dm9pZCBuZXh0aG9wX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNTIwLXtcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0xNTEwPUVYUE9SVF9TWU1CT0xfR1BMKG5leHRob3Bfc2VsZWN0X3BhdGgpO1xcbm5ldC9pcHY0L25leHRob3AuYy0xNTExLVxcbm5ldC9pcHY0L25leHRob3AuYzoxNTEyOmludCBuZXh0aG9wX2Zvcl9lYWNoX2ZpYjZfbmgoc3RydWN0IG5leHRob3AgKm5oLFxcbm5ldC9pcHY0L25leHRob3AuYy0xNTEzLVxcdFxcdFxcdCAgICAgaW50ICgqY2IpKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKSxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz00MDUyPUVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9uZXh0aG9wX25vdGlmaWVyKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA1My1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDA1NDp2b2lkIG5leHRob3Bfc2V0X2h3X2ZsYWdzKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkLCBib29sIG9mZmxvYWQsIGJvb2wgdHJhcClcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA1NS17XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDA3Mz1FWFBPUlRfU1lNQk9MKG5leHRob3Bfc2V0X2h3X2ZsYWdzKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA3NC1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDA3NTp2b2lkIG5leHRob3BfYnVja2V0X3NldF9od19mbGFncyhzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCwgdTE2IGJ1Y2tldF9pbmRleCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA3Ni1cXHRcXHRcXHRcXHQgYm9vbCBvZmZsb2FkLCBib29sIHRyYXApXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDEwNz1FWFBPUlRfU1lNQk9MKG5leHRob3BfYnVja2V0X3NldF9od19mbGFncyk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxMDgtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjQxMDk6dm9pZCBuZXh0aG9wX3Jlc19ncnBfYWN0aXZpdHlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkLCB1MTYgbnVtX2J1Y2tldHMsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxMTAtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nICphY3Rpdml0eSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NTMuNzM0NjkwODgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjI0MTI2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV4dGhvcCBGdW5jdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgaGFuZGxpbmcgbmV3IG5leHRob3BzIHdpdGhpbiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGZvciB0aGUgYFJUTV9ORVdORVhUSE9QYCBuZXRsaW5rIG1lc3NhZ2UuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgYHJ0bV9uZXdfbmV4dGhvcGAsIGJ1dCB0aGF0J3Mgc3RhdGljLCBzbyBpdCBjYW4ndCBiZSBhIGZvY3VzIHN5bWJvbC4gVGhlIHNhbWUgYXBwbGllcyB0byBgbmV4dGhvcF9hZGRgLiBJIG5lZWQgYSBub24tc3RhdGljIGZ1bmN0aW9uIHRvIGFuY2hvciBteSBpbnZlc3RpZ2F0aW9uLlxuXG5JJ3ZlIG1vdmVkIG9udG8gYG5ldC9pcHY0L25leHRob3AuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgYEVYUE9SVF9TWU1CT0xgIGRlZmluaXRpb25zIG9yLCBhbHRlcm5hdGl2ZWx5LCBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBuZXh0aG9wIGNyZWF0aW9uLiBJIGNoZWNrZWQgZm9yIGNvbW1vbiBmdW5jdGlvbnMgdXNlZCBpbiBtYW55IHBhcnRzIG9mIHRoZSBrZXJuZWwuIGBuZXh0aG9wX2ZyZWVfcmN1YCwgYG5leHRob3BfZm9yX2VhY2hfZmliNl9uaGAsIGBuZXh0aG9wX3NldF9od19mbGFnc2AsIGBuZXh0aG9wX2J1Y2tldF9zZXRfaHdfZmxhZ3NgLCBhbmQgYG5leHRob3BfcmVzX2dycF9hY3Rpdml0eV91cGRhdGVgIGFyZSBhbGwgaGVyZSwgYnV0IHRoZXkgYXJlbid0IHRoZSBwcmltYXJ5IG5leHRob3AgKmNyZWF0aW9uKiBmdW5jdGlvbnMuXG5cbkFoYSEgYG5leHRob3BfYWxsb2NgIGlzIGNhbGxlZCBmcm9tIGBuZXh0aG9wX2NyZWF0ZWAgYW5kIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAuIFRoYXQncyBhIHN0cm9uZyBsZWFkLiBJdCBsb29rcyBsaWtlIGBuZXh0aG9wX2FsbG9jYCBpcyBwcm9iYWJseSB0aGUgY29yZSBhbGxvY2F0aW9uIGZ1bmN0aW9uLCBidXQgSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBlbnRyeSBwb2ludHMgYnkgaW5zcGVjdGluZyBgbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdGAuIEknbGwgZXhwbG9yZSB0aGF0IGZ1bmN0aW9uIGZ1cnRoZXIgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFkZGl0aW9uYWwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgwMiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo1OC44OTcxMDk4MzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDg0ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz0xMzM9c3RhdGljIGludCBuaF9ub3RpZmllcl9tcGF0aF9pbmZvX2luaXQoc3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTYwLVxcbm5ldC9pcHY0L25leHRob3AuYzoxNjE6c3RhdGljIGludCBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxcbm5ldC9pcHY0L25leHRob3AuYy0xNjItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5oX2dyb3VwICpuaGcpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MTkzPXN0YXRpYyBpbnQgbmhfbm90aWZpZXJfZ3JwX2luZm9faW5pdChzdHJ1Y3Qgbmhfbm90aWZpZXJfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yMDAtXFx0ZWxzZSBpZiAobmhnLVxcdTAwM2VyZXNpbGllbnQpXFxubmV0L2lwdjQvbmV4dGhvcC5jOjIwMTpcXHRcXHRyZXR1cm4gbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdChpbmZvLCBuaGcpO1xcbm5ldC9pcHY0L25leHRob3AuYy0yMDItXFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjU4Ljk1ODIwMjg0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU0MDY3MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBpbnRlcm5hbCBzdHVmZi4gU2luY2UgaXQncyB0b3VjaGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmbGFncywgaXQncyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIHRoYXQncyB0aGUga2V5LiBOb3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGd1aWRpbmcgbWUgdG93YXJkIGNob29zaW5nIHRoZSByaWdodCBzeW1ib2wgZm9yIHRoaXMuIFRoZSBtYWluIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBydG1fbmV3X25leHRob3BgLCBhbmQgSSBpbml0aWFsbHkgZmxhZ2dlZCBpdCBhcyBzdGF0aWMsIHdoaWNoIGlzIGEgcG90ZW50aWFsIGlzc3VlIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGV5IHdhbnQgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSWYgdGhvc2UgZG9uJ3QgZXhpc3QsIEkgY2FuIGVpdGhlciBvbWl0IGBGb2N1c1N5bWJvbHNgIGVudGlyZWx5IG9yIHByb3ZpZGUgYW4gZW1wdHkgbGlzdCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGRvIHRoYXQuXG5cblRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byBhdm9pZCBpbmxpbmVkIHN0YXRpYyBoZWxwZXJzIGJlY2F1c2UgdGhleSBkb24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gdXNlIHRoaXMgc3RhdGljIGZ1bmN0aW9uPyBIbW0sIGxldCBtZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBhZ2Fpbi4uLiBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQuLi4gT2theSwgc28gbGV0J3Mgc2VlIGlmIGBydG1fbmV3X25leHRob3BgIGlzIGFjdHVhbGx5IGlubGluZWQuIEl0J3MgcmVnaXN0ZXJlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYG5leHRob3BfcnRubF9tc2dfaGFuZGxlcnNgLCBzbyBieSBkZWZpbml0aW9uLCBpdCAqY2Fubm90KiBiZSBpbmxpbmVkLiBUaGF0J3MgZ29vZCBuZXdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3VnaC5cblxuT2theSwgbGV0IG1lIGNoZWNrIGBuZXh0aG9wX2FkZGAgYW5kIGBuZXh0aG9wX2NyZWF0ZWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJZiBgcnRtX25ld19uZXh0aG9wYCAqaXNuJ3QqIGlubGluZWQsIHRoZW4gaXQgZG9lcyBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIGFuZCBJIGNhbiB1c2UgaXQuIEkgcmVtZW1iZXIgdGhlIGNvbnRleHQsIGl0J3MgZGVmaW5lZCBpbiBgbmV0L2lwdjQvbmV4dGhvcC5jYCwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhpcyBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjA0LjAxMjI3Mjk0OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0Mjk0OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRtX25ld19uZXh0aG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9MzI2Mj1zdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0YixcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMjkzLS8qIHJ0bmwgKi9cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI5NDpzdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI5NS1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgbmV4dGhvcF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xcbm5ldC9pcHY0L25leHRob3AuYzo0MTc3OlxcdHsubXNndHlwZSA9IFJUTV9ORVdORVhUSE9QLCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE3OC1cXHQgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy00MTg1LVxcdHsucHJvdG9jb2wgPSBQRl9JTkVULCAubXNndHlwZSA9IFJUTV9ORVdORVhUSE9QLFxcbm5ldC9pcHY0L25leHRob3AuYzo0MTg2OlxcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE4Ny1cXHR7LnByb3RvY29sID0gUEZfSU5FVCwgLm1zZ3R5cGUgPSBSVE1fR0VUTkVYVEhPUCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy00MTg5LVxcdHsucHJvdG9jb2wgPSBQRl9JTkVUNiwgLm1zZ3R5cGUgPSBSVE1fTkVXTkVYVEhPUCxcXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE5MDpcXHQgLmRvaXQgPSBydG1fbmV3X25leHRob3AsIC5mbGFncyA9IFJUTkxfRkxBR19ET0lUX1BFUk5FVH0sXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxOTEtXFx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzowNC4wNjc3MTI1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA5NTk4MDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIE5leHRob3AgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBgcnRtX25ld19uZXh0aG9wYCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIHBvaW50IG9mIGludGVyZXN0IGhlcmUsIGEgc29saWQgZm9jdXMuIEJ1dCwgc2hvdWxkIEkgYWxzbyBjb25zaWRlciBgcnRtX2RlbF9uZXh0aG9wYCBhbmQgYHJ0bV9nZXRfbmV4dGhvcGA/IFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggY2VudGVycyBvbiBtZW1vcnkgYWxsb2NhdGlvbiwgYW5kIHRoYXQncyBwcmVjaXNlbHkgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYHJ0bV9uZXdfbmV4dGhvcGAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gY29uY2VudHJhdGUgbXkgYW5hbHlzaXMuXG5cbk5vdywgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgYENPTkZJR2Agb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIGNydWNpYWwuIERvZXMgdGhpcyBjb2RlIHBhdGggaGF2ZSBhIGRlcGVuZGVuY3kgb24sIHNheSwgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuSSdsbCBzdGFydCBieSBleGFtaW5pbmcgYG5ldC9pcHY0L0tjb25maWdgIGFuZCB0cmFjZSBkZXBlbmRlbmNpZXMgZm9yIGBuZXh0aG9wLmNgIHRvIGlkZW50aWZ5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgY291bGQgcmV2ZWFsIGltcG9ydGFudCBjb250ZXh0IGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjA3LjU3NzMxNjYyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzODE5MzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTc6MDcuNjI3NzEyNjE3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDU1MDg0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyB0aGUgSVB2NCBNYWtlZmlsZSoqXG5cbkFscmlnaHQsIGxldCdzIGNpcmNsZSBiYWNrIHRvIGBuZXQvaXB2NC9NYWtlZmlsZWAuIEkndmUgYmVlbiB3b3JraW5nIHdpdGggdGhlIElQdjQgc3RhY2sgZm9yIGEgd2hpbGUgbm93LCBhbmQgY2VydGFpbiBwYXR0ZXJucyBhbmQgcXVpcmtzIHRlbmQgdG8gcmVwZWF0IHRoZW1zZWx2ZXMgaW4gbXkgd29ya2Zsb3cuIE15IGludGVybmFsIGNoZWNrbGlzdCBub3cgaW5jbHVkZXMgZ29pbmcgYmFjayBvdmVyIHRob3NlIE1ha2VmaWxlcy4gVGhlcmUncyB1c3VhbGx5IHNvbWV0aGluZyBJIG5lZWQgdG8gcmVmcmVzaCBvbiwgYSBuZXcgZGVwZW5kZW5jeSB0aGF0J3MgYmVlbiBpbnRyb2R1Y2VkLCBvciBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkIGluaXRpYWxseS4gSXQgY291bGQgYmUgYW4gaW5jbHVzaW9uIHN0cmF0ZWd5IGZvciBoZWFkZXJzLCB0aGUgYnVpbGQgZmxhZ3MgZm9yIGEgcGFydGljdWxhciBtb2R1bGUsIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gSXQncyB0aW1lIHRvIHJlLWV4YW1pbmUgaXQgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgZm9yZ290dGVuIGFueXRoaW5nIGNyaXRpY2FsIG9yIG92ZXJsb29rZWQgYSBwb3RlbnRpYWwgc25hZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI1NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjEwLjc3MzIyNTE2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MDg5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV4dGhvcC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXFxcXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlLTE2LVxcdCAgICAgaW5ldF9mcmFnbWVudC5vIHBpbmcubyBpcF90dW5uZWxfY29yZS5vIGdyZV9vZmZsb2FkLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjE3OlxcdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTc6MTAuODI2MTQxNTMxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mzg1MDUwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoaXMgY2hhbmdlIEknbSBsb29raW5nIGF0LCBpdCdzIGRlZmluZWQgd2l0aGluIGBvYmoteWAsIHdoaWNoIG1lYW5zIGl0J3MgY29tcGlsZWQgYXMgcGFydCBvZiB0aGUgYG5ldC9pcHY0L2AgbW9kdWxlLiBUaGUgcHJlc2VuY2Ugb2YgYG5ldC9pcHY0L2Agc2VlbXMgdG8gYmUgZ2F0ZWQgYnkgYENPTkZJR19JTkVUYCwgc28gdGhhdCdzIHRoZSBiYXNlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gRXhjZWxsZW50LCBubyBvYnNjdXJlLCBzcGVjaWFsaXplZCBvcHRpb25zIG5lZWRlZC4gSXQncyBidWlsdCBpbiB3aXRoIHN0YW5kYXJkIG5ldHdvcmtpbmcuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBfX25ldGRldl9hbGxvY19wY3B1X3N0YXRzYCBpbiB0aGUgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBhIGJpdC4uLiBicm9hZGVyIHRoYW4ganVzdCBzdGFuZGFyZCBJUHY0LiBJIG5lZWQgdG8gYmUgY29tcGxldGVseSBzdXJlLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgIHRvIHNlZSBpZiBpdCBicmluZ3MgaW4gYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBvciBpZiB0aGVyZSdzIGFueSBpbXBsaWNpdCBkZXBlbmRlbmN5IHRoZXJlLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLiBUaW1lIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1ODksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxNC4yNjQ2NTEwMTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTM3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3BfY3JlYXRlX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9Mjc0MD1zdGF0aWMgdm9pZCBmbHVzaF9hbGxfbmV4dGhvcHMoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NTUtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjI3NTY6c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NTctXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuaF9jb25maWcgKmNmZylcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0yOTk0PXN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAwOC1cXHRpZiAoY2ZnLVxcdTAwM2VuaF9ncnApXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMDk6XFx0XFx0bmggPSBuZXh0aG9wX2NyZWF0ZV9ncm91cChuZXQsIGNmZyk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTMwMTAtXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxNC4zMjIxOTY3OTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2Njc2OTgyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBEZXBlbmRlbmNpZXMgb2YgYG5leHRob3BfY3JlYXRlX2dyb3VwYCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBpcyBoYW5naW5nIG9mZiBvZiBzb21lIG9ic2N1cmUgY29uZmlndXJhdGlvbiBmbGFnIG9yIGRlcGVuZGVuY3kuIEl0J3MgY3J1Y2lhbCBmb3IgbWUgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGVkZ2UgY2FzZXMgYW5kIGhvdyBlYXNpbHkgdGhpcyBmdW5jdGlvbiBtaWdodCBiZSBpbXBhY3RlZCBieSBjaGFuZ2VzIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBHaXZlbiBteSBsZXZlbCBvZiBleHBlcnRpc2UsIEkgd291bGQgZXhwZWN0IGEgZnVuY3Rpb24gbGlrZSB0aGlzIHRvIGJlIHNvbWV3aGF0IGluZGVwZW5kZW50LCBidXQgSSBjYW4ndCBsZWF2ZSBhbnl0aGluZyB0byBhc3N1bXB0aW9uLlxuXG5UaGUgYmVzdCB3YXkgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSB3b3VsZCBiZSB0byBpbnZlc3RpZ2F0ZSB0aGUgc291cmNlIGNvZGUuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBkaXJlY3QgbWV0aG9kIGlzIHRvIGV4YW1pbmUgdGhlIGBuZXh0aG9wLmNgIGZpbGUgaXRzZWxmLiBNeSBpbW1lZGlhdGUgZm9jdXMgd2lsbCBiZSBvbiBzZWFyY2hpbmcgZm9yIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBzdXJyb3VuZGluZyB0aGUgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBkZWZpbml0aW9uIG9yIGl0cyB1c2UuIElmIHRoZXJlIGFyZSBhbnksIHRoZXNlIGAjaWZkZWZgcyB3aWxsIHByb3ZpZGUgY2x1ZXMgYXMgdG8gd2hlbiwgb3IgdW5kZXIgd2hhdCBjb25kaXRpb25zLCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGFuZCBhY3RpdmUuIFRoZSBwcmVzZW5jZSBvZiBgI2lmZGVmYHMgaW5kaWNhdGVzIHRoYXQgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvciBmZWF0dXJlcyBtaWdodCBiZSBuZWNlc3NhcnkgZm9yIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IHRvIGJlIGFjdGl2ZS4gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggc2V0dGluZ3MgdHJpZ2dlciBpdHMgYWN0aXZhdGlvbiwgd2hpY2ggaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgSSBhbnRpY2lwYXRlIGFueSBjaGFuZ2VzIHRvIHRoZXNlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gSWYgSSBjYW4gZmluZCB0aGUgYCNpZmRlZmAgYmxvY2tzLCBJIHNob3VsZCBiZSBhYmxlIHRvIGRlZHVjZSB0aGUgZXhhY3Qgc2V0IG9mIGNvbmRpdGlvbnMgdGhhdCBpbmZsdWVuY2Ugd2hldGhlciBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgIGlzIGV2ZW4gaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNzAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxNy45ODg5NzAzOTlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjk5Mjc3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxOC4wNDk2ODA1NjVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MDc2NDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBYnNlbmNlIG9mIFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBhIHdob2xlIGJ1bmNoIG9mIGAjaWZkZWZgIGRpcmVjdGl2ZXMgaW4gYG5leHRob3AuY2AsIGJ1dCBJJ20gbm90IHNlZWluZyBhbnkuIFRoYXQncyB1bnVzdWFsLCBhbmQgaXQgbWFrZXMgbWUgd29uZGVyIGhvdyB0aGV5J3JlIGhhbmRsaW5nIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJlbGF0ZWQgdG8gbmV0d29yayBuZXh0IGhvcCBiZWhhdmlvci4gV2FpdCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLi4uIG1heWJlIHRoZXkncmUgdXNpbmcgc29tZXRoaW5nIGVsc2UuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGV5J3ZlIG9wdGVkIHRvIHVzZSB0aGUgYCNpZmAgZGlyZWN0aXZlLCBpbnN0ZWFkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjIxLjEyMDQ0OTc5NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1NzIxNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjIxLjE3OTAzMjM5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA4NjIzMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBhIFBvdGVudGlhbCBHcmVwIFBpdGZhbGwqKlxuXG5Pa2F5LCBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGV4dHJhY3Qgc29tZSBpbmZvcm1hdGlvbiBmcm9tIGEgY29uZmlndXJhdGlvbiBmaWxlLCBsaWtlbHkgdXNpbmcgYSBjb21tYW5kLWxpbmUgdG9vbC4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCB1c2luZyBgZ3JlcGAgd2l0aCBgI2lmYCBjb25zdHJ1Y3RzIHRvIG5hcnJvdyB0aGUgc2VhcmNoLiBCdXQgaGFuZyBvbiwgdXNpbmcgYCNpZmAgd2l0aCBgZ3JlcGDigJR0aGF0IGNvdWxkIGdldCBtZXNzeS4gSSdkIGhhdmUgdG8gZGVhbCB3aXRoIGVzY2FwaW5nIGNoYXJhY3RlcnMgdG8gZW5zdXJlIHRoZSBgZ3JlcGAgY29tbWFuZCBwcm9wZXJseSBpbnRlcnByZXRzIHRoZSBgI2lmYCBkaXJlY3RpdmVzLiBUaGF0IHNvdW5kcyBsaWtlIGEgcGFpbiwgYW5kIGl0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiBNYXliZSBJIG5lZWQgdG8gcmVhZCB0aGUgZW50aXJlIGZpbGUgaW50byB0aGUgcHJvZ3JhbSBhbmQgcGFyc2UuIE9yIG1heWJlIGEgc3RyYWlnaHQgYGdyZXBgIGZvciBgQ09ORklHX2Agd291bGQgYmUgdGhlIGxlYXN0IGVycm9yIHByb25lLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gYWNjb3VudCBmb3IgcG90ZW50aWFsIHZhcmlhdGlvbnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBzeW50YXgsIGJ1dCBJJ20gbGVhbmluZyB0b3dhcmQgYXZvaWRpbmcgYW55IHRyaWNreSBlc2NhcGVzIG9yIGNvbXBsaWNhdGVkIHJlZ2V4IHJpZ2h0IG5vdy4gQmVzdCB0byBzdGFydCBzaW1wbGUgYW5kIGl0ZXJhdGUgaWYgbmVlZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc3NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjI0LjQ4NzY2NDYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIzNDcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9MTQxMj1zdGF0aWMgYm9vbCBuZXh0aG9wX2lzX2dvb2RfbmgoY29uc3Qgc3RydWN0IG5leHRob3AgKm5oKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTE0MTktXFx0Y2FzZSBBRl9JTkVUNjpcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MTQyMDpcXHRcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfSVBWNikgXFx1MDAyNlxcdTAwMjYgaXB2Nl9nb29kX25oKFxcdTAwMjZuaGktXFx1MDAzZWZpYjZfbmgpO1xcbm5ldC9pcHY0L25leHRob3AuYy0xNDIxLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTc6MjQuNTQ0OTEwOTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNzU4OTM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXh0aG9wIE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGUgY29kZSBpbiBgbmV4dGhvcC5jYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBJUHY0IHN1cHBvcnQsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhlIGtleSBoZXJlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYEdGUF9LRVJORUxfQUNDT1VOVGAgaW4gdGhlIGFsbG9jYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGFjdGl2YXRlcyBtZW1vcnkgYWNjb3VudGluZywgb3IgbWVtY2csIGZvciB0aGVzZSBgbmV4dGhvcGAgb2JqZWN0cy5cblxuVGhhdCdzIGEgZGVmaW5pdGUgXCJ3b3J0aCBmdXp6aW5nXCIgZmxhZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgc3lzdGVtIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgdW5kZXIgbWVtb3J5IHByZXNzdXJlLCBlc3BlY2lhbGx5IHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaW1wb3NlZCBieSBtZW1jZy4gSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIHNpdHVhdGlvbnMgd2hlcmUgYWxsb2NhdGlvbnMgbWlnaHQgZmFpbCBiZWNhdXNlIHRoZSBsaW1pdHMgYXJlIGhpdC4gQXJlIHdlIGhhbmRsaW5nIHRob3NlIGZhaWx1cmVzIGdyYWNlZnVsbHk/IE5vIHVuZXhwZWN0ZWQgY3Jhc2hlcywgbm8gbWVtb3J5IGxlYWtzLi4uIHRoYXQncyB3aGF0IEkgbmVlZCB0byB2ZXJpZnkuXG5cbk15IG1lbnRhbCBjaGVja2xpc3QgbG9va3MgbGlrZSB0aGlzOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogQWJzb2x1dGVseSwgeWVzLiBUaGlzIGlzIHRoZSBjcnV4IG9mIGl0LlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IEknbGwgdGFyZ2V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gY3JlYXRpbmcgbmV3IG5leHRob3BzLCBzcGVjaWZpY2FsbHkgXCJydG1cXF9uZXdcXF9uZXh0aG9wXCIuIFRoYXQncyB3aGVyZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBhcmUgbGlrZWx5IHRvIG1hbmlmZXN0LlxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBOb25lLCBpdCdzIG5vdCBjb25kaXRpb25hbCBvbiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuKiAgICoqUmVhc29uaW5nKio6IFwiVGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGNoYW5nZXMgaG93IGBuZXh0aG9wYCBvYmplY3RzIGhhbmRsZSBtZW1vcnksIGVuYWJsaW5nIG1lbWNnIHRyYWNraW5nLiBNeSBmdXp6aW5nIGVmZm9ydHMgbmVlZCB0byBiZSBjZW50ZXJlZCBhcm91bmQgYG5leHRob3BgIGNyZWF0aW9uIChgcnRtX25ld19uZXh0aG9wYCkgdG8gdmFsaWRhdGUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgcmVhY2hlZC4gRW5zdXJpbmcgdGhlIHN5c3RlbSBiZWhhdmVzIHJlbGlhYmx5IHVuZGVyIG1lbW9yeSBjb25zdHJhaW50cyBpcyBwYXJhbW91bnQuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTExODMsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjMwLjY1MjUwNDIxNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX25ld19uZXh0aG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoX19HRlBfQUNDT1VOVCAvIEdGUF9LRVJORUxfQUNDT1VOVCkgZm9yIG5leHRob3Agb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIG1lbWNnIHRvIHRyYWNrIGFuZCBsaW1pdCBtZW1vcnkgdXNlZCBieSBuZXh0aG9wcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gbmV4dGhvcCBjcmVhdGlvbiB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGVuYWJsZXMgbWVtb3J5IGFjY291bnRpbmcgKF9fR0ZQX0FDQ09VTlQgLyBHRlBfS0VSTkVMX0FDQ09VTlQpIGZvciBuZXh0aG9wIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyBtZW1jZyB0byB0cmFjayBhbmQgbGltaXQgbWVtb3J5IHVzZWQgYnkgbmV4dGhvcHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIG5leHRob3AgY3JlYXRpb24gdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyB3aGVuIG1lbW9yeSBsaW1pdHMgYXJlIGhpdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflown2225[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 01:25:38 +0000 UTC FinishedAt: 2026-07-29 01:57:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9736d2efc99670054359e153a9f312ef4646ec7b", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9736d2efc99670054359e153a9f312ef4646ec7b", "config_name": "upstream-apparmor-kasan.config", "series_id": "7138fa87-5f4a-48df-8c15-69b0b5cf6ccf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtm_new_nexthop" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX25ld19uZXh0aG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgbWVtb3J5IGFjY291bnRpbmcgKF9fR0ZQX0FDQ09VTlQgLyBHRlBfS0VSTkVMX0FDQ09VTlQpIGZvciBuZXh0aG9wIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyBtZW1jZyB0byB0cmFjayBhbmQgbGltaXQgbWVtb3J5IHVzZWQgYnkgbmV4dGhvcHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIG5leHRob3AgY3JlYXRpb24gdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyB3aGVuIG1lbW9yeSBsaW1pdHMgYXJlIGhpdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDczZWQ1MmY1ZDA2ZjU5ODZhYTc0NTEwZTI0NmE4MTc4ZTA5ZGU1MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMTo1NjozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbmluZGV4IDQ0ZmU3NTAwNGNhY2IuLmM4Njg1YzU4MzU3OTQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTE2OSw3ICYjNDM7MTY5LDcgQEAgc3RhdGljIGludCBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxuIFx0aW5mby1cdTAwM2V0eXBlID0gTkhfTk9USUZJRVJfSU5GT19UWVBFX1JFU19UQUJMRTtcbiBcdHNpemUgPSBzdHJ1Y3Rfc2l6ZShpbmZvLVx1MDAzZW5oX3Jlc190YWJsZSwgbmhzLCBudW1fbmhfYnVja2V0cyk7XG4gXHRpbmZvLVx1MDAzZW5oX3Jlc190YWJsZSA9IF9fdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyB8XG4tXHRcdFx0XHQgICAgICAgX19HRlBfTk9XQVJOKTtcbiYjNDM7XHRcdFx0XHQgICAgICAgX19HRlBfTk9XQVJOIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWluZm8tXHUwMDNlbmhfcmVzX3RhYmxlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC01MzMsNyAmIzQzOzUzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hbGxvYyh2b2lkKVxuIHtcbiBcdHN0cnVjdCBuZXh0aG9wICpuaDtcbiBcbi1cdG5oID0ga3phbGxvY19vYmooc3RydWN0IG5leHRob3ApO1xuJiM0MztcdG5oID0ga3phbGxvY19vYmooc3RydWN0IG5leHRob3AsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAobmgpIHtcbiBcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmgtXHUwMDNlZmlfbGlzdCk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5oLVx1MDAzZWY2aV9saXN0KTtcbkBAIC01NDgsNyAmIzQzOzU0OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmhfZ3JvdXAgKm5leHRob3BfZ3JwX2FsbG9jKHUxNiBudW1fbmgpXG4ge1xuIFx0c3RydWN0IG5oX2dyb3VwICpuaGc7XG4gXG4tXHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oKTtcbiYjNDM7XHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKG5oZylcbiBcdFx0bmhnLVx1MDAzZW51bV9uaCA9IG51bV9uaDtcbiBcbkBAIC01NjUsNyAmIzQzOzU2NSw4IEBAIG5leHRob3BfcmVzX3RhYmxlX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCwgdTMyIG5oZ19pZCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnKVxuIFx0dW5zaWduZWQgbG9uZyBzaXplO1xuIFxuIFx0c2l6ZSA9IHN0cnVjdF9zaXplKHJlc190YWJsZSwgbmhfYnVja2V0cywgbnVtX25oX2J1Y2tldHMpO1xuLVx0cmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHwgX19HRlBfTk9XQVJOKTtcbiYjNDM7XHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4gfFxuJiM0MztcdFx0XHQgICAgICBfX0dGUF9BQ0NPVU5UKTtcbiBcdGlmICghcmVzX3RhYmxlKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbkBAIC0yNzk5LDcgJiM0MzsyODAwLDggQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0bmhnLVx1MDAzZWhhc192NCA9IHRydWU7XG4gXG4gXHRcdG5oZy1cdTAwM2VuaF9lbnRyaWVzW2ldLnN0YXRzID1cbi1cdFx0XHRuZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3QgbmhfZ3JwX2VudHJ5X3N0YXRzKTtcbiYjNDM7XHRcdFx0X19uZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3QgbmhfZ3JwX2VudHJ5X3N0YXRzLFxuJiM0MztcdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbmhnLVx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMpIHtcbiBcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRcdG5leHRob3BfcHV0KG5oZSk7XG5AQCAtMjk0Myw3ICYjNDM7Mjk0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4gXHRpZiAoIW5oKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiBcbi1cdG5oaSA9IGt6YWxsb2Nfb2JqKCpuaGkpO1xuJiM0MztcdG5oaSA9IGt6YWxsb2Nfb2JqKCpuaGksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIW5oaSkge1xuIFx0XHRrZnJlZShuaCk7XG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChfX0dGUF9BQ0NPVU5UIC8gR0ZQX0tFUk5FTF9BQ0NPVU5UKSBmb3IgbmV4dGhvcCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgbWVtY2cgdG8gdHJhY2sgYW5kIGxpbWl0IG1lbW9yeSB1c2VkIGJ5IG5leHRob3BzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBuZXh0aG9wIGNyZWF0aW9uIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBoaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3M2VkNTJmNWQwNmY1OTg2YWE3NDUxMGUyNDZhODE3OGUwOWRlNTJmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDE6NTY6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmMKaW5kZXggNDRmZTc1MDA0Y2FjYi4uYzg2ODVjNTgzNTc5NCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV4dGhvcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L25leHRob3AuYwpAQCAtMTY5LDcgJiM0MzsxNjksNyBAQCBzdGF0aWMgaW50IG5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXQoc3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8sCiAJaW5mby0mZ3Q7dHlwZSA9IE5IX05PVElGSUVSX0lORk9fVFlQRV9SRVNfVEFCTEU7CiAJc2l6ZSA9IHN0cnVjdF9zaXplKGluZm8tJmd0O25oX3Jlc190YWJsZSwgbmhzLCBudW1fbmhfYnVja2V0cyk7CiAJaW5mby0mZ3Q7bmhfcmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHwKLQkJCQkgICAgICAgX19HRlBfTk9XQVJOKTsKJiM0MzsJCQkJICAgICAgIF9fR0ZQX05PV0FSTiB8IF9fR0ZQX0FDQ09VTlQpOwogCWlmICghaW5mby0mZ3Q7bmhfcmVzX3RhYmxlKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNTMzLDcgJiM0Mzs1MzMsNyBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfYWxsb2Modm9pZCkKIHsKIAlzdHJ1Y3QgbmV4dGhvcCAqbmg7CiAKLQluaCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZXh0aG9wKTsKJiM0MzsJbmggPSBremFsbG9jX29iaihzdHJ1Y3QgbmV4dGhvcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAobmgpIHsKIAkJSU5JVF9MSVNUX0hFQUQoJmFtcDtuaC0mZ3Q7ZmlfbGlzdCk7CiAJCUlOSVRfTElTVF9IRUFEKCZhbXA7bmgtJmd0O2Y2aV9saXN0KTsKQEAgLTU0OCw3ICYjNDM7NTQ4LDcgQEAgc3RhdGljIHN0cnVjdCBuaF9ncm91cCAqbmV4dGhvcF9ncnBfYWxsb2ModTE2IG51bV9uaCkKIHsKIAlzdHJ1Y3QgbmhfZ3JvdXAgKm5oZzsKIAotCW5oZyA9IGt6YWxsb2NfZmxleCgqbmhnLCBuaF9lbnRyaWVzLCBudW1fbmgpOwomIzQzOwluaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmIChuaGcpCiAJCW5oZy0mZ3Q7bnVtX25oID0gbnVtX25oOwogCkBAIC01NjUsNyAmIzQzOzU2NSw4IEBAIG5leHRob3BfcmVzX3RhYmxlX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCwgdTMyIG5oZ19pZCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnKQogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAogCXNpemUgPSBzdHJ1Y3Rfc2l6ZShyZXNfdGFibGUsIG5oX2J1Y2tldHMsIG51bV9uaF9idWNrZXRzKTsKLQlyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4pOwomIzQzOwlyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4gfAomIzQzOwkJCSAgICAgIF9fR0ZQX0FDQ09VTlQpOwogCWlmICghcmVzX3RhYmxlKQogCQlyZXR1cm4gTlVMTDsKIApAQCAtMjc5OSw3ICYjNDM7MjgwMCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LAogCQkJbmhnLSZndDtoYXNfdjQgPSB0cnVlOwogCiAJCW5oZy0mZ3Q7bmhfZW50cmllc1tpXS5zdGF0cyA9Ci0JCQluZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3QgbmhfZ3JwX2VudHJ5X3N0YXRzKTsKJiM0MzsJCQlfX25ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMsCiYjNDM7CQkJCQkJICBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoIW5oZy0mZ3Q7bmhfZW50cmllc1tpXS5zdGF0cykgewogCQkJZXJyID0gLUVOT01FTTsKIAkJCW5leHRob3BfcHV0KG5oZSk7CkBAIC0yOTQzLDcgJiM0MzsyOTQ1LDcgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZywKIAlpZiAoIW5oKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCW5oaSA9IGt6YWxsb2Nfb2JqKCpuaGkpOwomIzQzOwluaGkgPSBremFsbG9jX29iaigqbmhpLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghbmhpKSB7CiAJCWtmcmVlKG5oKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYG5leHRob3AuY2AgTWVtb3J5IEFjY291bnRpbmcgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgYG5ldC9pcHY0L25leHRob3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGBfX0dGUF9BQ0NPVU5UYCBvciB1c2luZyBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBpbnN0ZWFkIG9mIGBHRlBfS0VSTkVMYCBpbiBhIGJ1bmNoIG9mIGFsbG9jYXRpb24gZnVuY3Rpb25zOiBgbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdGAsIGBuZXh0aG9wX2FsbG9jYCwgYG5leHRob3BfZ3JwX2FsbG9jYCwgYG5leHRob3BfcmVzX3RhYmxlX2FsbG9jYCwgYG5leHRob3BfY3JlYXRlX2dyb3VwYCwgYW5kIGBuZXh0aG9wX2NyZWF0ZWAuIEhtbSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBlbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgbmV4dGhvcCBvYmplY3RzLCB3aGljaCB1c2Vyc3BhY2UgY2FuIGludGVyYWN0IHdpdGggdmlhIG5ldGxpbmsuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKT24gdGhlIHN1cmZhY2UsIGl0IHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgbWVtb3J5IGFjY291bnRpbmcgZmxhZyBhZGRpdGlvbi4gQnV0IGNvbnNpZGVyaW5nIHRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCB0aGVzZSBmdW5jdGlvbnMgYXJlIHJlbGF0ZWQgdG8gY3JlYXRpbmcgYW5kIG1hbmFnaW5nIG5leHRob3Agb2JqZWN0cywgeWVzLCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vayB3aXRoIGZ1enppbmcuIFdlIGNhbiB1c2UgZnV6emluZyB0byB0cmlnZ2VyIHRoZXNlIGFsbG9jYXRpb25zIGFuZCBzZWUgaWYgd2UgY2FuIGhpdCBhbnkgbWVtb3J5IGxpbWl0cyBvciB1bmNvdmVyIGlzc3VlcyB3aXRoIHRoZSBhY2NvdW50aW5nIGl0c2VsZi4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgd2hhdCBjb25maWdzIHdlIG5lZWQgdG8gaGF2ZSBlbmFibGVkIGZvciBgbmV0L2lwdjQvbmV4dGhvcC5jYCB0byBldmVuIGJlIGNvbXBpbGVkLiBJdCYjMzk7cyBsaWtlbHkgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIHRvIGJlIHN1cmUuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHN0ZXAgdG8gYmVpbmcgYWJsZSB0byByZXByb2R1Y2UgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gYW5kIFNjb3BlIG9mIHRoZSBOZXh0aG9wIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgYG5leHRob3BgIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGluY2x1ZGVkIGluIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFzIHBhcnQgb2YgYG9iai15YC4gVGhhdCBgb2JqLXlgIGFzc2lnbm1lbnQgbWVhbnMgaXQmIzM5O3MgYWx3YXlzIGNvbXBpbGVkIGFzIGxvbmcgYXMgYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLCB3aGljaCBpcyBhIGtleSBkZXBlbmRlbmN5IHRvIGtlZXAgaW4gbWluZC4KClRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZGl0aW9ucyB0aWVkIHRvIGBuZXh0aG9wLmNgIGl0c2VsZiwgb3IgaWYgaXQmIzM5O3MgaW1wbGljaXRseSBwYXJ0IG9mIHRoZSBsYXJnZXIgYENPTkZJR19JTkVUYCBjb25maWd1cmF0aW9uLgoKTm93LCBsZXQmIzM5O3MgcGlucG9pbnQgdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIHRoZSBmb2xsb3dpbmc6IGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAsIGBuZXh0aG9wX2NyZWF0ZWAsIGBuZXh0aG9wX3Jlc190YWJsZV9hbGxvY2AsIGBuZXh0aG9wX2dycF9hbGxvY2AsIGFuZCBgbmV4dGhvcF9hbGxvY2AuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlaXIgc2NvcGUuIEFyZSB0aGVzZSBmdW5jdGlvbnMgZXhwb3NlZCBleHRlcm5hbGx5LCBvciBhcmUgdGhleSBpbnRlcm5hbCB0byB0aGUgYG5leHRob3BgIG1vZHVsZT8gSSBoYXZlIGEgaHVuY2guIExldCBtZSBjaGVjazogYG5leHRob3BfYWxsb2NgIGlzIHN0YXRpYy4gQWxyaWdodCwgdGhhdCYjMzk7cyBvbmUuIGBuZXh0aG9wX2dycF9hbGxvY2AgaXMgYWxzbyBzdGF0aWMuIEFuZCBgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2NgIGFzIHdlbGwhIEFuZCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLCBhbmQgYG5leHRob3BfY3JlYXRlYC4gU28sIGxvb2tzIGxpa2UgYWxsIHRob3NlIGNvcmUgZnVuY3Rpb25zIGFyZSBpbmRlZWQgc3RhdGljLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIGdvIGJhY2sgdG8gdGhlIHNvdXJjZSAtIGBuZXQvaXB2NC9uZXh0aG9wLmNgIC0gYW5kIGNvbmZpcm0gdGhhdCB0aGVzZSBzdGF0aWMgZGVjbGFyYXRpb25zIGFyZSBjb3JyZWN0LiBUaGF0IGlzIGEgbXVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9Mjc0MD1zdGF0aWMgdm9pZCBmbHVzaF9hbGxfbmV4dGhvcHMoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0yNzU1LVxubmV0L2lwdjQvbmV4dGhvcC5jOjI3NTY6c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjc1Ny1cdFx0XHRcdFx0ICAgIHN0cnVjdCBuaF9jb25maWcgKmNmZylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MjkwMz1zdGF0aWMgaW50IG5oX2NyZWF0ZV9pcHY2KHN0cnVjdCBuZXQgKm5ldCwgIHN0cnVjdCBuZXh0aG9wICpuaCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjkzNi1cbm5ldC9pcHY0L25leHRob3AuYzoyOTM3OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjkzOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9Mjk5ND1zdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zMDA4LVx0aWYgKGNmZy1cdTAwM2VuaF9ncnApXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAwOTpcdFx0bmggPSBuZXh0aG9wX2NyZWF0ZV9ncm91cChuZXQsIGNmZyk7XG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxMC1cdGVsc2Vcbm5ldC9pcHY0L25leHRob3AuYzozMDExOlx0XHRuaCA9IG5leHRob3BfY3JlYXRlKG5ldCwgY2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMwMTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgbmV4dGhvcF9hZGRgKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBuZXh0aG9wX2FkZGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGlzIHRoaW5nIGlzIGRlZmluZWQgc3RhdGljYWxseSBhcyB3ZWxsLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgYmVoYXZpb3IsIHNvIEkmIzM5O2xsIGRpdmUgaW4gYW5kIGRvdWJsZS1jaGVjayBpdHMgZGVjbGFyYXRpb24gb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgYW55dGhpbmcsIGV2ZW4gaWYgaXQgZmVlbHMgb2J2aW91cyBiYXNlZCBvbiB0aGUgc3Vycm91bmRpbmcgY29kZS4gR290dGEgdmVyaWZ5IGl0cyBtdXRhYmlsaXR5IHRvIHVuZGVyc3RhbmQgaXRzIGxpZmVjeWNsZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3BfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0yOTM3PXN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTI5OTMtLyogY2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQgKi9cbm5ldC9pcHY0L25leHRob3AuYzoyOTk0OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjk5NS1cdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzI5ND1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cbm5ldC9pcHY0L25leHRob3AuYzozMzI1Olx0bmggPSBuZXh0aG9wX2FkZChuZXQsIFx1MDAyNmNmZywgZXh0YWNrKTtcbm5ldC9pcHY0L25leHRob3AuYy0zMzI2LVx0aWYgKElTX0VSUihuaCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlN0YXRpYyBgcnRtX25ld19uZXh0aG9wYD8gQSBRdWljayBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJ0bV9uZXdfbmV4dGhvcGAuIEl0IGp1c3QgaGl0IG1lOiBpcyB0aGF0IGZ1bmN0aW9uIGRlY2xhcmVkIGBzdGF0aWNgPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgaXRzIHNjb3BlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSWYgaXQmIzM5O3Mgc3RhdGljLCB0aGF0IGltbWVkaWF0ZWx5IGltcGxpZXMgaXQmIzM5O3Mgc2NvcGVkIHRvIGEgc2luZ2xlIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBmb3IgbW9kdWxhcml0eSwgcmV1c2FiaWxpdHksIGFuZCBwb3RlbnRpYWwgbmFtZXNwYWNlIGNvbmZsaWN0cyB3aXRoaW4gdGhlIHdpZGVyIHN5c3RlbS4gSWYgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBJIHN0aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhbmQgd2hldGhlciBhbnkgZ2xvYmFsIGRlcGVuZGVuY2llcyBvciBzaWRlIGVmZmVjdHMgY291bGQgYmUgaW50cm9kdWNlZCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBxdWVzdGlvbiB0aGF0JiMzOTtsbCBkZXRlcm1pbmUgdGhlIGV4dGVudCBvZiBteSBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9MzI2Mj1zdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI5My0vKiBydG5sICovXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI5NDpzdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC9pcHY0L25leHRob3AuYy0zMjk1LVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgbmV4dGhvcF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xubmV0L2lwdjQvbmV4dGhvcC5jOjQxNzc6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXTkVYVEhPUCwgLmRvaXQgPSBydG1fbmV3X25leHRob3AsXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE3OC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy00MTg1LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE4NjpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTg3LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX0dFVE5FWFRIT1AsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODktXHR7LnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE5MDpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTkxLVx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGBydG1fbmV3X25leHRob3BgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBydG1fbmV3X25leHRob3BgIGlzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIG5ldyBuZXh0LWhvcCBmdW5jdGlvbmFsaXR5LCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbj8gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBnaXZlbiBpdCYjMzk7cyByZWdpc3RlcmVkIGFzIGFuIFJUTkwgbWVzc2FnZSBoYW5kbGVyLiBJJiMzOTttIHdvbmRlcmluZyBob3cgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgb3IgY2FsbGVkLiBUaGUgc3RhdGljIG5hdHVyZSBpbXBsaWVzIGludGVybmFsIHVzZSB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHlldCBSVE5MIGhhbmRsZXJzIGFyZSB0eXBpY2FsbHkgZXhwb3NlZC4gVGhpcyBzZXR1cCBpbnRyaWd1ZXMgbWUuIEkmIzM5O3ZlIGdvdCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBoZXJlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGFzc29jaWF0ZWQgY29kZSBpbiBgbmV4dGhvcC5jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IG1vZGlmeSBvciBpbnRlcmFjdCB3aXRoIGBydG1fbmV3X25leHRob3BgIHdpbGwgaWxsdW1pbmF0ZSB0aGUgY2FsbCBjaGFpbiBhbmQgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoaXMgZGVlcGVyIGRpdmUgc2hvdWxkIHJldmVhbCB0aGUgY29ubmVjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X0EtWjAtOV0mIzQzOyBuZXh0aG9wXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9NTAzPXN0YXRpYyB2b2lkIG5leHRob3BfZnJlZV9zaW5nbGUoc3RydWN0IG5leHRob3AgKm5oKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy01MTgtXG5uZXQvaXB2NC9uZXh0aG9wLmM6NTE5OnZvaWQgbmV4dGhvcF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvaXB2NC9uZXh0aG9wLmMtNTIwLXtcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MTUxMD1FWFBPUlRfU1lNQk9MX0dQTChuZXh0aG9wX3NlbGVjdF9wYXRoKTtcbm5ldC9pcHY0L25leHRob3AuYy0xNTExLVxubmV0L2lwdjQvbmV4dGhvcC5jOjE1MTI6aW50IG5leHRob3BfZm9yX2VhY2hfZmliNl9uaChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTUxMy1cdFx0XHQgICAgIGludCAoKmNiKShzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZyksXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTQwNTI9RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX25leHRob3Bfbm90aWZpZXIpO1xubmV0L2lwdjQvbmV4dGhvcC5jLTQwNTMtXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDA1NDp2b2lkIG5leHRob3Bfc2V0X2h3X2ZsYWdzKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkLCBib29sIG9mZmxvYWQsIGJvb2wgdHJhcClcbm5ldC9pcHY0L25leHRob3AuYy00MDU1LXtcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDA3Mz1FWFBPUlRfU1lNQk9MKG5leHRob3Bfc2V0X2h3X2ZsYWdzKTtcbm5ldC9pcHY0L25leHRob3AuYy00MDc0LVxubmV0L2lwdjQvbmV4dGhvcC5jOjQwNzU6dm9pZCBuZXh0aG9wX2J1Y2tldF9zZXRfaHdfZmxhZ3Moc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQsIHUxNiBidWNrZXRfaW5kZXgsXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA3Ni1cdFx0XHRcdCBib29sIG9mZmxvYWQsIGJvb2wgdHJhcClcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDEwNz1FWFBPUlRfU1lNQk9MKG5leHRob3BfYnVja2V0X3NldF9od19mbGFncyk7XG5uZXQvaXB2NC9uZXh0aG9wLmMtNDEwOC1cbm5ldC9pcHY0L25leHRob3AuYzo0MTA5OnZvaWQgbmV4dGhvcF9yZXNfZ3JwX2FjdGl2aXR5X3VwZGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCwgdTE2IG51bV9idWNrZXRzLFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxMTAtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgKmFjdGl2aXR5KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODAyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5leHRob3AgRnVuY3Rpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgaGFuZGxpbmcgbmV3IG5leHRob3BzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBmb3IgdGhlIGBSVE1fTkVXTkVYVEhPUGAgbmV0bGluayBtZXNzYWdlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBydG1fbmV3X25leHRob3BgLCBidXQgdGhhdCYjMzk7cyBzdGF0aWMsIHNvIGl0IGNhbiYjMzk7dCBiZSBhIGZvY3VzIHN5bWJvbC4gVGhlIHNhbWUgYXBwbGllcyB0byBgbmV4dGhvcF9hZGRgLiBJIG5lZWQgYSBub24tc3RhdGljIGZ1bmN0aW9uIHRvIGFuY2hvciBteSBpbnZlc3RpZ2F0aW9uLgoKSSYjMzk7dmUgbW92ZWQgb250byBgbmV0L2lwdjQvbmV4dGhvcC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBgRVhQT1JUX1NZTUJPTGAgZGVmaW5pdGlvbnMgb3IsIGFsdGVybmF0aXZlbHksIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG5leHRob3AgY3JlYXRpb24uIEkgY2hlY2tlZCBmb3IgY29tbW9uIGZ1bmN0aW9ucyB1c2VkIGluIG1hbnkgcGFydHMgb2YgdGhlIGtlcm5lbC4gYG5leHRob3BfZnJlZV9yY3VgLCBgbmV4dGhvcF9mb3JfZWFjaF9maWI2X25oYCwgYG5leHRob3Bfc2V0X2h3X2ZsYWdzYCwgYG5leHRob3BfYnVja2V0X3NldF9od19mbGFnc2AsIGFuZCBgbmV4dGhvcF9yZXNfZ3JwX2FjdGl2aXR5X3VwZGF0ZWAgYXJlIGFsbCBoZXJlLCBidXQgdGhleSBhcmVuJiMzOTt0IHRoZSBwcmltYXJ5IG5leHRob3AgKmNyZWF0aW9uKiBmdW5jdGlvbnMuCgpBaGEhIGBuZXh0aG9wX2FsbG9jYCBpcyBjYWxsZWQgZnJvbSBgbmV4dGhvcF9jcmVhdGVgIGFuZCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGxlYWQuIEl0IGxvb2tzIGxpa2UgYG5leHRob3BfYWxsb2NgIGlzIHByb2JhYmx5IHRoZSBjb3JlIGFsbG9jYXRpb24gZnVuY3Rpb24sIGJ1dCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGVudHJ5IHBvaW50cyBieSBpbnNwZWN0aW5nIGBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0YC4gSSYjMzk7bGwgZXhwbG9yZSB0aGF0IGZ1bmN0aW9uIGZ1cnRoZXIgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFkZGl0aW9uYWwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9MTMzPXN0YXRpYyBpbnQgbmhfbm90aWZpZXJfbXBhdGhfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0xNjAtXG5uZXQvaXB2NC9uZXh0aG9wLmM6MTYxOnN0YXRpYyBpbnQgbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdChzdHJ1Y3Qgbmhfbm90aWZpZXJfaW5mbyAqaW5mbyxcbm5ldC9pcHY0L25leHRob3AuYy0xNjItXHRcdFx0XHRcdCAgIHN0cnVjdCBuaF9ncm91cCAqbmhnKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0xOTM9c3RhdGljIGludCBuaF9ub3RpZmllcl9ncnBfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0yMDAtXHRlbHNlIGlmIChuaGctXHUwMDNlcmVzaWxpZW50KVxubmV0L2lwdjQvbmV4dGhvcC5jOjIwMTpcdFx0cmV0dXJuIG5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXQoaW5mbywgbmhnKTtcbm5ldC9pcHY0L25leHRob3AuYy0yMDItXHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGludGVybmFsIHN0dWZmLiBTaW5jZSBpdCYjMzk7cyB0b3VjaGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmbGFncywgaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgZ3VpZGluZyBtZSB0b3dhcmQgY2hvb3NpbmcgdGhlIHJpZ2h0IHN5bWJvbCBmb3IgdGhpcy4gVGhlIG1haW4gZW50cnkgcG9pbnQgc2VlbXMgdG8gYmUgYHJ0bV9uZXdfbmV4dGhvcGAsIGFuZCBJIGluaXRpYWxseSBmbGFnZ2VkIGl0IGFzIHN0YXRpYywgd2hpY2ggaXMgYSBwb3RlbnRpYWwgaXNzdWUgYWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMuIFRoZXkgd2FudCBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBJZiB0aG9zZSBkb24mIzM5O3QgZXhpc3QsIEkgY2FuIGVpdGhlciBvbWl0IGBGb2N1c1N5bWJvbHNgIGVudGlyZWx5IG9yIHByb3ZpZGUgYW4gZW1wdHkgbGlzdCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGRvIHRoYXQuCgpUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gYXZvaWQgaW5saW5lZCBzdGF0aWMgaGVscGVycyBiZWNhdXNlIHRoZXkgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiB1c2UgdGhpcyBzdGF0aWMgZnVuY3Rpb24/IEhtbSwgbGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFnYWluLi4uIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZC4uLiBPa2F5LCBzbyBsZXQmIzM5O3Mgc2VlIGlmIGBydG1fbmV3X25leHRob3BgIGlzIGFjdHVhbGx5IGlubGluZWQuIEl0JiMzOTtzIHJlZ2lzdGVyZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBuZXh0aG9wX3J0bmxfbXNnX2hhbmRsZXJzYCwgc28gYnkgZGVmaW5pdGlvbiwgaXQgKmNhbm5vdCogYmUgaW5saW5lZC4gVGhhdCYjMzk7cyBnb29kIG5ld3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvdWdoLgoKT2theSwgbGV0IG1lIGNoZWNrIGBuZXh0aG9wX2FkZGAgYW5kIGBuZXh0aG9wX2NyZWF0ZWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJZiBgcnRtX25ld19uZXh0aG9wYCAqaXNuJiMzOTt0KiBpbmxpbmVkLCB0aGVuIGl0IGRvZXMgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBhbmQgSSBjYW4gdXNlIGl0LiBJIHJlbWVtYmVyIHRoZSBjb250ZXh0LCBpdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCB0aGlzIGRvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9MzI2Mj1zdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI5My0vKiBydG5sICovXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI5NDpzdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC9pcHY0L25leHRob3AuYy0zMjk1LVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgbmV4dGhvcF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xubmV0L2lwdjQvbmV4dGhvcC5jOjQxNzc6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXTkVYVEhPUCwgLmRvaXQgPSBydG1fbmV3X25leHRob3AsXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE3OC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy00MTg1LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE4NjpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTg3LVx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX0dFVE5FWFRIT1AsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODktXHR7LnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE5MDpcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcbm5ldC9pcHY0L25leHRob3AuYy00MTkxLVx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODg4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIE5leHRob3AgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gYHJ0bV9uZXdfbmV4dGhvcGAgc2VlbXMgbGlrZSB0aGUgY2VudHJhbCBwb2ludCBvZiBpbnRlcmVzdCBoZXJlLCBhIHNvbGlkIGZvY3VzLiBCdXQsIHNob3VsZCBJIGFsc28gY29uc2lkZXIgYHJ0bV9kZWxfbmV4dGhvcGAgYW5kIGBydG1fZ2V0X25leHRob3BgPyBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gbWVtb3J5IGFsbG9jYXRpb24sIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYHJ0bV9uZXdfbmV4dGhvcGAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzLgoKTm93LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBgQ09ORklHYCBvcHRpb25zIHRoYXQgbWlnaHQgYmUgY3J1Y2lhbC4gRG9lcyB0aGlzIGNvZGUgcGF0aCBoYXZlIGEgZGVwZW5kZW5jeSBvbiwgc2F5LCBgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSGA/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIGBuZXQvaXB2NC9LY29uZmlnYCBhbmQgdHJhY2UgZGVwZW5kZW5jaWVzIGZvciBgbmV4dGhvcC5jYCB0byBpZGVudGlmeSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIGNvdWxkIHJldmVhbCBpbXBvcnRhbnQgY29udGV4dCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlJldmlzaXRpbmcgdGhlIElQdjQgTWFrZWZpbGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIGBuZXQvaXB2NC9NYWtlZmlsZWAuIEkmIzM5O3ZlIGJlZW4gd29ya2luZyB3aXRoIHRoZSBJUHY0IHN0YWNrIGZvciBhIHdoaWxlIG5vdywgYW5kIGNlcnRhaW4gcGF0dGVybnMgYW5kIHF1aXJrcyB0ZW5kIHRvIHJlcGVhdCB0aGVtc2VsdmVzIGluIG15IHdvcmtmbG93LiBNeSBpbnRlcm5hbCBjaGVja2xpc3Qgbm93IGluY2x1ZGVzIGdvaW5nIGJhY2sgb3ZlciB0aG9zZSBNYWtlZmlsZXMuIFRoZXJlJiMzOTtzIHVzdWFsbHkgc29tZXRoaW5nIEkgbmVlZCB0byByZWZyZXNoIG9uLCBhIG5ldyBkZXBlbmRlbmN5IHRoYXQmIzM5O3MgYmVlbiBpbnRyb2R1Y2VkLCBvciBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkIGluaXRpYWxseS4gSXQgY291bGQgYmUgYW4gaW5jbHVzaW9uIHN0cmF0ZWd5IGZvciBoZWFkZXJzLCB0aGUgYnVpbGQgZmxhZ3MgZm9yIGEgcGFydGljdWxhciBtb2R1bGUsIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gSXQmIzM5O3MgdGltZSB0byByZS1leGFtaW5lIGl0IGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBmb3Jnb3R0ZW4gYW55dGhpbmcgY3JpdGljYWwgb3Igb3Zlcmxvb2tlZCBhIHBvdGVudGlhbCBzbmFnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU4OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhpcyBjaGFuZ2UgSSYjMzk7bSBsb29raW5nIGF0LCBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiBgb2JqLXlgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBjb21waWxlZCBhcyBwYXJ0IG9mIHRoZSBgbmV0L2lwdjQvYCBtb2R1bGUuIFRoZSBwcmVzZW5jZSBvZiBgbmV0L2lwdjQvYCBzZWVtcyB0byBiZSBnYXRlZCBieSBgQ09ORklHX0lORVRgLCBzbyB0aGF0JiMzOTtzIHRoZSBiYXNlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gRXhjZWxsZW50LCBubyBvYnNjdXJlLCBzcGVjaWFsaXplZCBvcHRpb25zIG5lZWRlZC4gSXQmIzM5O3MgYnVpbHQgaW4gd2l0aCBzdGFuZGFyZCBuZXR3b3JraW5nLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLi4uIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYF9fbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHNgIGluIHRoZSBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGEgYml0Li4uIGJyb2FkZXIgdGhhbiBqdXN0IHN0YW5kYXJkIElQdjQuIEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgc2hvdWxkIGNoZWNrIHRoZSBjb250ZXh0IG9mIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAgdG8gc2VlIGlmIGl0IGJyaW5ncyBpbiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBpbXBsaWNpdCBkZXBlbmRlbmN5IHRoZXJlLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLiBUaW1lIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3BfY3JlYXRlX2dyb3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0yNzQwPXN0YXRpYyB2b2lkIGZsdXNoX2FsbF9uZXh0aG9wcyhzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NTUtXG5uZXQvaXB2NC9uZXh0aG9wLmM6Mjc1NjpzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9pcHY0L25leHRob3AuYy0yNzU3LVx0XHRcdFx0XHQgICAgc3RydWN0IG5oX2NvbmZpZyAqY2ZnKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0yOTk0PXN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMwMDgtXHRpZiAoY2ZnLVx1MDAzZW5oX2dycClcbm5ldC9pcHY0L25leHRob3AuYzozMDA5Olx0XHRuaCA9IG5leHRob3BfY3JlYXRlX2dyb3VwKG5ldCwgY2ZnKTtcbm5ldC9pcHY0L25leHRob3AuYy0zMDEwLVx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE3MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgRGVwZW5kZW5jaWVzIG9mIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBpcyBoYW5naW5nIG9mZiBvZiBzb21lIG9ic2N1cmUgY29uZmlndXJhdGlvbiBmbGFnIG9yIGRlcGVuZGVuY3kuIEl0JiMzOTtzIGNydWNpYWwgZm9yIG1lIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBlZGdlIGNhc2VzIGFuZCBob3cgZWFzaWx5IHRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgaW1wYWN0ZWQgYnkgY2hhbmdlcyBlbHNld2hlcmUgaW4gdGhlIHN5c3RlbS4gR2l2ZW4gbXkgbGV2ZWwgb2YgZXhwZXJ0aXNlLCBJIHdvdWxkIGV4cGVjdCBhIGZ1bmN0aW9uIGxpa2UgdGhpcyB0byBiZSBzb21ld2hhdCBpbmRlcGVuZGVudCwgYnV0IEkgY2FuJiMzOTt0IGxlYXZlIGFueXRoaW5nIHRvIGFzc3VtcHRpb24uCgpUaGUgYmVzdCB3YXkgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSB3b3VsZCBiZSB0byBpbnZlc3RpZ2F0ZSB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgZGlyZWN0IG1ldGhvZCBpcyB0byBleGFtaW5lIHRoZSBgbmV4dGhvcC5jYCBmaWxlIGl0c2VsZi4gTXkgaW1tZWRpYXRlIGZvY3VzIHdpbGwgYmUgb24gc2VhcmNoaW5nIGZvciBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgc3Vycm91bmRpbmcgdGhlIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAgZGVmaW5pdGlvbiBvciBpdHMgdXNlLiBJZiB0aGVyZSBhcmUgYW55LCB0aGVzZSBgI2lmZGVmYHMgd2lsbCBwcm92aWRlIGNsdWVzIGFzIHRvIHdoZW4sIG9yIHVuZGVyIHdoYXQgY29uZGl0aW9ucywgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjb21waWxlZCBhbmQgYWN0aXZlLiBUaGUgcHJlc2VuY2Ugb2YgYCNpZmRlZmBzIGluZGljYXRlcyB0aGF0IGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb3IgZmVhdHVyZXMgbWlnaHQgYmUgbmVjZXNzYXJ5IGZvciB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSB0byBiZSBhY3RpdmUuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBzZXR0aW5ncyB0cmlnZ2VyIGl0cyBhY3RpdmF0aW9uLCB3aGljaCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpZiBJIGFudGljaXBhdGUgYW55IGNoYW5nZXMgdG8gdGhlc2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBJZiBJIGNhbiBmaW5kIHRoZSBgI2lmZGVmYCBibG9ja3MsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBleGFjdCBzZXQgb2YgY29uZGl0aW9ucyB0aGF0IGluZmx1ZW5jZSB3aGV0aGVyIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAgaXMgZXZlbiBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU3OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIEFic2VuY2Ugb2YgUHJlcHJvY2Vzc29yIERpcmVjdGl2ZXMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBhIHdob2xlIGJ1bmNoIG9mIGAjaWZkZWZgIGRpcmVjdGl2ZXMgaW4gYG5leHRob3AuY2AsIGJ1dCBJJiMzOTttIG5vdCBzZWVpbmcgYW55LiBUaGF0JiMzOTtzIHVudXN1YWwsIGFuZCBpdCBtYWtlcyBtZSB3b25kZXIgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJlbGF0ZWQgdG8gbmV0d29yayBuZXh0IGhvcCBiZWhhdmlvci4gV2FpdCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLi4uIG1heWJlIHRoZXkmIzM5O3JlIHVzaW5nIHNvbWV0aGluZyBlbHNlLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXkmIzM5O3ZlIG9wdGVkIHRvIHVzZSB0aGUgYCNpZmAgZGlyZWN0aXZlLCBpbnN0ZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzc3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgYSBQb3RlbnRpYWwgR3JlcCBQaXRmYWxsKioKCk9rYXksIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGV4dHJhY3Qgc29tZSBpbmZvcm1hdGlvbiBmcm9tIGEgY29uZmlndXJhdGlvbiBmaWxlLCBsaWtlbHkgdXNpbmcgYSBjb21tYW5kLWxpbmUgdG9vbC4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCB1c2luZyBgZ3JlcGAgd2l0aCBgI2lmYCBjb25zdHJ1Y3RzIHRvIG5hcnJvdyB0aGUgc2VhcmNoLiBCdXQgaGFuZyBvbiwgdXNpbmcgYCNpZmAgd2l0aCBgZ3JlcGDigJR0aGF0IGNvdWxkIGdldCBtZXNzeS4gSSYjMzk7ZCBoYXZlIHRvIGRlYWwgd2l0aCBlc2NhcGluZyBjaGFyYWN0ZXJzIHRvIGVuc3VyZSB0aGUgYGdyZXBgIGNvbW1hbmQgcHJvcGVybHkgaW50ZXJwcmV0cyB0aGUgYCNpZmAgZGlyZWN0aXZlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIHBhaW4sIGFuZCBpdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gTWF5YmUgSSBuZWVkIHRvIHJlYWQgdGhlIGVudGlyZSBmaWxlIGludG8gdGhlIHByb2dyYW0gYW5kIHBhcnNlLiBPciBtYXliZSBhIHN0cmFpZ2h0IGBncmVwYCBmb3IgYENPTkZJR19gIHdvdWxkIGJlIHRoZSBsZWFzdCBlcnJvciBwcm9uZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBhY2NvdW50IGZvciBwb3RlbnRpYWwgdmFyaWF0aW9ucyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHN5bnRheCwgYnV0IEkmIzM5O20gbGVhbmluZyB0b3dhcmQgYXZvaWRpbmcgYW55IHRyaWNreSBlc2NhcGVzIG9yIGNvbXBsaWNhdGVkIHJlZ2V4IHJpZ2h0IG5vdy4gQmVzdCB0byBzdGFydCBzaW1wbGUgYW5kIGl0ZXJhdGUgaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0xNDEyPXN0YXRpYyBib29sIG5leHRob3BfaXNfZ29vZF9uaChjb25zdCBzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTE0MTktXHRjYXNlIEFGX0lORVQ2OlxubmV0L2lwdjQvbmV4dGhvcC5jOjE0MjA6XHRcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19JUFY2KSBcdTAwMjZcdTAwMjYgaXB2Nl9nb29kX25oKFx1MDAyNm5oaS1cdTAwM2VmaWI2X25oKTtcbm5ldC9pcHY0L25leHRob3AuYy0xNDIxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTE4MwoJCQkJCQkJb3V0cHV0OiAxMDcKCQkJCQkJCXRob3VnaHRzOiAyMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV4dGhvcCBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGUgY29kZSBpbiBgbmV4dGhvcC5jYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBJUHY0IHN1cHBvcnQsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhlIGtleSBoZXJlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYEdGUF9LRVJORUxfQUNDT1VOVGAgaW4gdGhlIGFsbG9jYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGFjdGl2YXRlcyBtZW1vcnkgYWNjb3VudGluZywgb3IgbWVtY2csIGZvciB0aGVzZSBgbmV4dGhvcGAgb2JqZWN0cy4KClRoYXQmIzM5O3MgYSBkZWZpbml0ZSAmIzM0O3dvcnRoIGZ1enppbmcmIzM0OyBmbGFnLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gYmVoYXZlcyBhcyBleHBlY3RlZCB1bmRlciBtZW1vcnkgcHJlc3N1cmUsIGVzcGVjaWFsbHkgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBpbXBvc2VkIGJ5IG1lbWNnLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIHNpdHVhdGlvbnMgd2hlcmUgYWxsb2NhdGlvbnMgbWlnaHQgZmFpbCBiZWNhdXNlIHRoZSBsaW1pdHMgYXJlIGhpdC4gQXJlIHdlIGhhbmRsaW5nIHRob3NlIGZhaWx1cmVzIGdyYWNlZnVsbHk/IE5vIHVuZXhwZWN0ZWQgY3Jhc2hlcywgbm8gbWVtb3J5IGxlYWtzLi4uIHRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gdmVyaWZ5LgoKTXkgbWVudGFsIGNoZWNrbGlzdCBsb29rcyBsaWtlIHRoaXM6CgoqICAgKipXb3J0aEZ1enppbmcqKjogQWJzb2x1dGVseSwgeWVzLiBUaGlzIGlzIHRoZSBjcnV4IG9mIGl0LgoqICAgKipGb2N1c1N5bWJvbHMqKjogSSYjMzk7bGwgdGFyZ2V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gY3JlYXRpbmcgbmV3IG5leHRob3BzLCBzcGVjaWZpY2FsbHkgJiMzNDtydG1cX25ld1xfbmV4dGhvcCYjMzQ7LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIGFyZSBsaWtlbHkgdG8gbWFuaWZlc3QuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogTm9uZSwgaXQmIzM5O3Mgbm90IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCiogICAqKlJlYXNvbmluZyoqOiAmIzM0O1RoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBjaGFuZ2VzIGhvdyBgbmV4dGhvcGAgb2JqZWN0cyBoYW5kbGUgbWVtb3J5LCBlbmFibGluZyBtZW1jZyB0cmFja2luZy4gTXkgZnV6emluZyBlZmZvcnRzIG5lZWQgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBuZXh0aG9wYCBjcmVhdGlvbiAoYHJ0bV9uZXdfbmV4dGhvcGApIHRvIHZhbGlkYXRlIHByb3BlciBlcnJvciBoYW5kbGluZyB3aGVuIG1lbW9yeSBsaW1pdHMgYXJlIHJlYWNoZWQuIEVuc3VyaW5nIHRoZSBzeXN0ZW0gYmVoYXZlcyByZWxpYWJseSB1bmRlciBtZW1vcnkgY29uc3RyYWludHMgaXMgcGFyYW1vdW50LiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydG1fbmV3X25leHRob3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoX19HRlBfQUNDT1VOVCAvIEdGUF9LRVJORUxfQUNDT1VOVCkgZm9yIG5leHRob3Agb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIG1lbWNnIHRvIHRyYWNrIGFuZCBsaW1pdCBtZW1vcnkgdXNlZCBieSBuZXh0aG9wcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gbmV4dGhvcCBjcmVhdGlvbiB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaGl0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChfX0dGUF9BQ0NPVU5UIC8gR0ZQX0tFUk5FTF9BQ0NPVU5UKSBmb3IgbmV4dGhvcCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgbWVtY2cgdG8gdHJhY2sgYW5kIGxpbWl0IG1lbW9yeSB1c2VkIGJ5IG5leHRob3BzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBuZXh0aG9wIGNyZWF0aW9uIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBoaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NjozMy43MTU1OTE4ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjkzNjk2MDY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydG1fbmV3X25leHRob3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChfX0dGUF9BQ0NPVU5UIC8gR0ZQX0tFUk5FTF9BQ0NPVU5UKSBmb3IgbmV4dGhvcCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgbWVtY2cgdG8gdHJhY2sgYW5kIGxpbWl0IG1lbW9yeSB1c2VkIGJ5IG5leHRob3BzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBuZXh0aG9wIGNyZWF0aW9uIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgd2hlbiBtZW1vcnkgbGltaXRzIGFyZSBoaXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjMzLjcxNTYwMjk2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyNTQxMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNlZDUyZjVkMDZmNTk4NmFhNzQ1MTBlMjQ2YTgxNzhlMDlkZTUyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMTo1NjozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcXG5pbmRleCA0NGZlNzUwMDRjYWNiLi5jODY4NWM1ODM1Nzk0IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25leHRob3AuY1xcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xcbkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIGludCBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxcbiBcXHRpbmZvLVxcdTAwM2V0eXBlID0gTkhfTk9USUZJRVJfSU5GT19UWVBFX1JFU19UQUJMRTtcXG4gXFx0c2l6ZSA9IHN0cnVjdF9zaXplKGluZm8tXFx1MDAzZW5oX3Jlc190YWJsZSwgbmhzLCBudW1fbmhfYnVja2V0cyk7XFxuIFxcdGluZm8tXFx1MDAzZW5oX3Jlc190YWJsZSA9IF9fdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyB8XFxuLVxcdFxcdFxcdFxcdCAgICAgICBfX0dGUF9OT1dBUk4pO1xcbitcXHRcXHRcXHRcXHQgICAgICAgX19HRlBfTk9XQVJOIHwgX19HRlBfQUNDT1VOVCk7XFxuIFxcdGlmICghaW5mby1cXHUwMDNlbmhfcmVzX3RhYmxlKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTUzMyw3ICs1MzMsNyBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfYWxsb2Modm9pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV4dGhvcCAqbmg7XFxuIFxcbi1cXHRuaCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZXh0aG9wKTtcXG4rXFx0bmggPSBremFsbG9jX29iaihzdHJ1Y3QgbmV4dGhvcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKG5oKSB7XFxuIFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuaC1cXHUwMDNlZmlfbGlzdCk7XFxuIFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuaC1cXHUwMDNlZjZpX2xpc3QpO1xcbkBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGljIHN0cnVjdCBuaF9ncm91cCAqbmV4dGhvcF9ncnBfYWxsb2ModTE2IG51bV9uaClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmhfZ3JvdXAgKm5oZztcXG4gXFxuLVxcdG5oZyA9IGt6YWxsb2NfZmxleCgqbmhnLCBuaF9lbnRyaWVzLCBudW1fbmgpO1xcbitcXHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAobmhnKVxcbiBcXHRcXHRuaGctXFx1MDAzZW51bV9uaCA9IG51bV9uaDtcXG4gXFxuQEAgLTU2NSw3ICs1NjUsOCBAQCBuZXh0aG9wX3Jlc190YWJsZV9hbGxvYyhzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBuaGdfaWQsIHN0cnVjdCBuaF9jb25maWcgKmNmZylcXG4gXFx0dW5zaWduZWQgbG9uZyBzaXplO1xcbiBcXG4gXFx0c2l6ZSA9IHN0cnVjdF9zaXplKHJlc190YWJsZSwgbmhfYnVja2V0cywgbnVtX25oX2J1Y2tldHMpO1xcbi1cXHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4pO1xcbitcXHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4gfFxcbitcXHRcXHRcXHQgICAgICBfX0dGUF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFyZXNfdGFibGUpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG5AQCAtMjc5OSw3ICsyODAwLDggQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdG5oZy1cXHUwMDNlaGFzX3Y0ID0gdHJ1ZTtcXG4gXFxuIFxcdFxcdG5oZy1cXHUwMDNlbmhfZW50cmllc1tpXS5zdGF0cyA9XFxuLVxcdFxcdFxcdG5ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMpO1xcbitcXHRcXHRcXHRfX25ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0aWYgKCFuaGctXFx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0XFx0bmV4dGhvcF9wdXQobmhlKTtcXG5AQCAtMjk0Myw3ICsyOTQ1LDcgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4gXFx0aWYgKCFuaClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIFxcbi1cXHRuaGkgPSBremFsbG9jX29iaigqbmhpKTtcXG4rXFx0bmhpID0ga3phbGxvY19vYmooKm5oaSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFuaGkpIHtcXG4gXFx0XFx0a2ZyZWUobmgpO1xcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6MzQuMjQ5MDY1MjU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY0MDM0ODAyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX25ld19uZXh0aG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoX19HRlBfQUNDT1VOVCAvIEdGUF9LRVJORUxfQUNDT1VOVCkgZm9yIG5leHRob3Agb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIG1lbWNnIHRvIHRyYWNrIGFuZCBsaW1pdCBtZW1vcnkgdXNlZCBieSBuZXh0aG9wcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gbmV4dGhvcCBjcmVhdGlvbiB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3M2VkNTJmNWQwNmY1OTg2YWE3NDUxMGUyNDZhODE3OGUwOWRlNTJmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDE6NTY6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbmluZGV4IDQ0ZmU3NTAwNGNhY2IuLmM4Njg1YzU4MzU3OTQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgaW50IG5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXQoc3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8sXG4gXHRpbmZvLVx1MDAzZXR5cGUgPSBOSF9OT1RJRklFUl9JTkZPX1RZUEVfUkVTX1RBQkxFO1xuIFx0c2l6ZSA9IHN0cnVjdF9zaXplKGluZm8tXHUwMDNlbmhfcmVzX3RhYmxlLCBuaHMsIG51bV9uaF9idWNrZXRzKTtcbiBcdGluZm8tXHUwMDNlbmhfcmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHxcbi1cdFx0XHRcdCAgICAgICBfX0dGUF9OT1dBUk4pO1xuK1x0XHRcdFx0ICAgICAgIF9fR0ZQX05PV0FSTiB8IF9fR0ZQX0FDQ09VTlQpO1xuIFx0aWYgKCFpbmZvLVx1MDAzZW5oX3Jlc190YWJsZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNTMzLDcgKzUzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hbGxvYyh2b2lkKVxuIHtcbiBcdHN0cnVjdCBuZXh0aG9wICpuaDtcbiBcbi1cdG5oID0ga3phbGxvY19vYmooc3RydWN0IG5leHRob3ApO1xuK1x0bmggPSBremFsbG9jX29iaihzdHJ1Y3QgbmV4dGhvcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmIChuaCkge1xuIFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZuaC1cdTAwM2VmaV9saXN0KTtcbiBcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmgtXHUwMDNlZjZpX2xpc3QpO1xuQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgc3RydWN0IG5oX2dyb3VwICpuZXh0aG9wX2dycF9hbGxvYyh1MTYgbnVtX25oKVxuIHtcbiBcdHN0cnVjdCBuaF9ncm91cCAqbmhnO1xuIFxuLVx0bmhnID0ga3phbGxvY19mbGV4KCpuaGcsIG5oX2VudHJpZXMsIG51bV9uaCk7XG4rXHRuaGcgPSBremFsbG9jX2ZsZXgoKm5oZywgbmhfZW50cmllcywgbnVtX25oLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKG5oZylcbiBcdFx0bmhnLVx1MDAzZW51bV9uaCA9IG51bV9uaDtcbiBcbkBAIC01NjUsNyArNTY1LDggQEAgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2Moc3RydWN0IG5ldCAqbmV0LCB1MzIgbmhnX2lkLCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXG4gXHR1bnNpZ25lZCBsb25nIHNpemU7XG4gXG4gXHRzaXplID0gc3RydWN0X3NpemUocmVzX3RhYmxlLCBuaF9idWNrZXRzLCBudW1fbmhfYnVja2V0cyk7XG4tXHRyZXNfdGFibGUgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8gfCBfX0dGUF9OT1dBUk4pO1xuK1x0cmVzX3RhYmxlID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPIHwgX19HRlBfTk9XQVJOIHxcbitcdFx0XHQgICAgICBfX0dGUF9BQ0NPVU5UKTtcbiBcdGlmICghcmVzX3RhYmxlKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbkBAIC0yNzk5LDcgKzI4MDAsOCBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHRuaGctXHUwMDNlaGFzX3Y0ID0gdHJ1ZTtcbiBcbiBcdFx0bmhnLVx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMgPVxuLVx0XHRcdG5ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCBuaF9ncnBfZW50cnlfc3RhdHMpO1xuK1x0XHRcdF9fbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IG5oX2dycF9lbnRyeV9zdGF0cyxcbitcdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbmhnLVx1MDAzZW5oX2VudHJpZXNbaV0uc3RhdHMpIHtcbiBcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRcdG5leHRob3BfcHV0KG5oZSk7XG5AQCAtMjk0Myw3ICsyOTQ1LDcgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbiBcdGlmICghbmgpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIFxuLVx0bmhpID0ga3phbGxvY19vYmooKm5oaSk7XG4rXHRuaGkgPSBremFsbG9jX29iaigqbmhpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFuaGkpIHtcbiBcdFx0a2ZyZWUobmgpO1xuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjM0LjI0OTA2ODA3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDA1NzY3MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYG5leHRob3AuY2AgTWVtb3J5IEFjY291bnRpbmcgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdHdlYWtpbmcgYG5ldC9pcHY0L25leHRob3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYF9fR0ZQX0FDQ09VTlRgIG9yIHVzaW5nIGBHRlBfS0VSTkVMX0FDQ09VTlRgIGluc3RlYWQgb2YgYEdGUF9LRVJORUxgIGluIGEgYnVuY2ggb2YgYWxsb2NhdGlvbiBmdW5jdGlvbnM6IGBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0YCwgYG5leHRob3BfYWxsb2NgLCBgbmV4dGhvcF9ncnBfYWxsb2NgLCBgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2NgLCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLCBhbmQgYG5leHRob3BfY3JlYXRlYC4gSG1tLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGVuYWJsaW5nIG1lbW9yeSBhY2NvdW50aW5nIGZvciBuZXh0aG9wIG9iamVjdHMsIHdoaWNoIHVzZXJzcGFjZSBjYW4gaW50ZXJhY3Qgd2l0aCB2aWEgbmV0bGluay4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cbk9uIHRoZSBzdXJmYWNlLCBpdCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBhY2NvdW50aW5nIGZsYWcgYWRkaXRpb24uIEJ1dCBjb25zaWRlcmluZyB0aGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWxhdGVkIHRvIGNyZWF0aW5nIGFuZCBtYW5hZ2luZyBuZXh0aG9wIG9iamVjdHMsIHllcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgd2l0aCBmdXp6aW5nLiBXZSBjYW4gdXNlIGZ1enppbmcgdG8gdHJpZ2dlciB0aGVzZSBhbGxvY2F0aW9ucyBhbmQgc2VlIGlmIHdlIGNhbiBoaXQgYW55IG1lbW9yeSBsaW1pdHMgb3IgdW5jb3ZlciBpc3N1ZXMgd2l0aCB0aGUgYWNjb3VudGluZyBpdHNlbGYuXG5cbk5vdywgbGV0J3MgZmlndXJlIG91dCB3aGF0IGNvbmZpZ3Mgd2UgbmVlZCB0byBoYXZlIGVuYWJsZWQgZm9yIGBuZXQvaXB2NC9uZXh0aG9wLmNgIHRvIGV2ZW4gYmUgY29tcGlsZWQuIEl0J3MgbGlrZWx5IGBDT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCB0byBiZSBzdXJlLiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAgdG8gYmVpbmcgYWJsZSB0byByZXByb2R1Y2UgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjM5Ljk0OTY0ODMzN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE0NzgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xcbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo0MC4wMDM4MDUyNzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEyOTY2MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gYW5kIFNjb3BlIG9mIHRoZSBOZXh0aG9wIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIGBuZXh0aG9wYCBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgdW5jb25kaXRpb25hbGx5IGluY2x1ZGVkIGluIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFzIHBhcnQgb2YgYG9iai15YC4gVGhhdCBgb2JqLXlgIGFzc2lnbm1lbnQgbWVhbnMgaXQncyBhbHdheXMgY29tcGlsZWQgYXMgbG9uZyBhcyBgQ09ORklHX0lORVRgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIGEga2V5IGRlcGVuZGVuY3kgdG8ga2VlcCBpbiBtaW5kLlxuXG5UbyBjb25maXJtIHRoaXMsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmRpdGlvbnMgdGllZCB0byBgbmV4dGhvcC5jYCBpdHNlbGYsIG9yIGlmIGl0J3MgaW1wbGljaXRseSBwYXJ0IG9mIHRoZSBsYXJnZXIgYENPTkZJR19JTkVUYCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIHBpbnBvaW50IHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIHRoZSBmb2xsb3dpbmc6IGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAsIGBuZXh0aG9wX2NyZWF0ZWAsIGBuZXh0aG9wX3Jlc190YWJsZV9hbGxvY2AsIGBuZXh0aG9wX2dycF9hbGxvY2AsIGFuZCBgbmV4dGhvcF9hbGxvY2AuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZWlyIHNjb3BlLiBBcmUgdGhlc2UgZnVuY3Rpb25zIGV4cG9zZWQgZXh0ZXJuYWxseSwgb3IgYXJlIHRoZXkgaW50ZXJuYWwgdG8gdGhlIGBuZXh0aG9wYCBtb2R1bGU/IEkgaGF2ZSBhIGh1bmNoLiBMZXQgbWUgY2hlY2s6IGBuZXh0aG9wX2FsbG9jYCBpcyBzdGF0aWMuIEFscmlnaHQsIHRoYXQncyBvbmUuIGBuZXh0aG9wX2dycF9hbGxvY2AgaXMgYWxzbyBzdGF0aWMuIEFuZCBgbmV4dGhvcF9yZXNfdGFibGVfYWxsb2NgIGFzIHdlbGwhIEFuZCBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgLCBhbmQgYG5leHRob3BfY3JlYXRlYC4gU28sIGxvb2tzIGxpa2UgYWxsIHRob3NlIGNvcmUgZnVuY3Rpb25zIGFyZSBpbmRlZWQgc3RhdGljLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBnbyBiYWNrIHRvIHRoZSBzb3VyY2UgLSBgbmV0L2lwdjQvbmV4dGhvcC5jYCAtIGFuZCBjb25maXJtIHRoYXQgdGhlc2Ugc3RhdGljIGRlY2xhcmF0aW9ucyBhcmUgY29ycmVjdC4gVGhhdCBpcyBhIG11c3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NDQuNTE2Nzc1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk3OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTI3NDA9c3RhdGljIHZvaWQgZmx1c2hfYWxsX25leHRob3BzKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yNzU1LVxcbm5ldC9pcHY0L25leHRob3AuYzoyNzU2OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L25leHRob3AuYy0yNzU3LVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MjkwMz1zdGF0aWMgaW50IG5oX2NyZWF0ZV9pcHY2KHN0cnVjdCBuZXQgKm5ldCwgIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yOTM2LVxcbm5ldC9pcHY0L25leHRob3AuYzoyOTM3OnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI5MzgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTI5OTQ9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMDA4LVxcdGlmIChjZmctXFx1MDAzZW5oX2dycClcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAwOTpcXHRcXHRuaCA9IG5leHRob3BfY3JlYXRlX2dyb3VwKG5ldCwgY2ZnKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxMC1cXHRlbHNlXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMTE6XFx0XFx0bmggPSBuZXh0aG9wX2NyZWF0ZShuZXQsIGNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NDQuNTc0NzY4OTM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwMDAwNDMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgYG5leHRob3BfYWRkYCoqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYG5leHRob3BfYWRkYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIGlmIHRoaXMgdGhpbmcgaXMgZGVmaW5lZCBzdGF0aWNhbGx5IGFzIHdlbGwuIEkgbmVlZCB0byBjb25maXJtIGl0cyBiZWhhdmlvciwgc28gSSdsbCBkaXZlIGluIGFuZCBkb3VibGUtY2hlY2sgaXRzIGRlY2xhcmF0aW9uIG9yIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0J3MgYmVpbmcgdXNlZC4gSSBjYW4ndCBqdXN0IGFzc3VtZSBhbnl0aGluZywgZXZlbiBpZiBpdCBmZWVscyBvYnZpb3VzIGJhc2VkIG9uIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBHb3R0YSB2ZXJpZnkgaXRzIG11dGFiaWxpdHkgdG8gdW5kZXJzdGFuZCBpdHMgbGlmZWN5Y2xlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo0Ny4yNzQ3Nzc0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODMwNDUxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTI5Mzc9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yOTkzLS8qIGNhbGxlZCB3aXRoIHJ0bmwgbG9jayBoZWxkICovXFxubmV0L2lwdjQvbmV4dGhvcC5jOjI5OTQ6c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjk5NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzI5ND1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMzI0LVxcbm5ldC9pcHY0L25leHRob3AuYzozMzI1OlxcdG5oID0gbmV4dGhvcF9hZGQobmV0LCBcXHUwMDI2Y2ZnLCBleHRhY2spO1xcbm5ldC9pcHY0L25leHRob3AuYy0zMzI2LVxcdGlmIChJU19FUlIobmgpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo0Ny4zMzMwOTMwNTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE3OTYxNjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipTdGF0aWMgYHJ0bV9uZXdfbmV4dGhvcGA/IEEgUXVpY2sgQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcnRtX25ld19uZXh0aG9wYC4gSXQganVzdCBoaXQgbWU6IGlzIHRoYXQgZnVuY3Rpb24gZGVjbGFyZWQgYHN0YXRpY2A/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgc2NvcGUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQuIElmIGl0J3Mgc3RhdGljLCB0aGF0IGltbWVkaWF0ZWx5IGltcGxpZXMgaXQncyBzY29wZWQgdG8gYSBzaW5nbGUgY29tcGlsYXRpb24gdW5pdCwgYW5kIEkgbmVlZCB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIGZvciBtb2R1bGFyaXR5LCByZXVzYWJpbGl0eSwgYW5kIHBvdGVudGlhbCBuYW1lc3BhY2UgY29uZmxpY3RzIHdpdGhpbiB0aGUgd2lkZXIgc3lzdGVtLiBJZiBpdCdzICpub3QqIHN0YXRpYywgSSBzdGlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBjYWxsZWQgZnJvbSBhbmQgd2hldGhlciBhbnkgZ2xvYmFsIGRlcGVuZGVuY2llcyBvciBzaWRlIGVmZmVjdHMgY291bGQgYmUgaW50cm9kdWNlZCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoYXQnbGwgZGV0ZXJtaW5lIHRoZSBleHRlbnQgb2YgbXkgZnVydGhlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTM2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NTAuMTUxMDYwNTk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjUxOTgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydG1fbmV3X25leHRob3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz0zMjYyPXN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZ19ydG5sKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMyOTMtLyogcnRubCAqL1xcbm5ldC9pcHY0L25leHRob3AuYzozMjk0OnN0YXRpYyBpbnQgcnRtX25ld19uZXh0aG9wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMjk1LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz00MTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBuZXh0aG9wX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XFxubmV0L2lwdjQvbmV4dGhvcC5jOjQxNzc6XFx0ey5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsIC5kb2l0ID0gcnRtX25ld19uZXh0aG9wLFxcbm5ldC9pcHY0L25leHRob3AuYy00MTc4LVxcdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODUtXFx0ey5wcm90b2NvbCA9IFBGX0lORVQsIC5tc2d0eXBlID0gUlRNX05FV05FWFRIT1AsXFxubmV0L2lwdjQvbmV4dGhvcC5jOjQxODY6XFx0IC5kb2l0ID0gcnRtX25ld19uZXh0aG9wLCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9QRVJORVR9LFxcbm5ldC9pcHY0L25leHRob3AuYy00MTg3LVxcdHsucHJvdG9jb2wgPSBQRl9JTkVULCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxODktXFx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9ORVdORVhUSE9QLFxcbm5ldC9pcHY0L25leHRob3AuYzo0MTkwOlxcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE5MS1cXHR7LnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX0dFVE5FWFRIT1AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjUwLjIyMzU5MTgwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUzMTYwMTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgYHJ0bV9uZXdfbmV4dGhvcGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgcnRtX25ld19uZXh0aG9wYCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhpcyBuZXcgbmV4dC1ob3AgZnVuY3Rpb25hbGl0eSwgdGhhdCdzIGNsZWFyLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0J3MgYSBsaXR0bGUgdW51c3VhbCwgZ2l2ZW4gaXQncyByZWdpc3RlcmVkIGFzIGFuIFJUTkwgbWVzc2FnZSBoYW5kbGVyLiBJJ20gd29uZGVyaW5nIGhvdyBpdCdzIGJlaW5nIGFjY2Vzc2VkIG9yIGNhbGxlZC4gVGhlIHN0YXRpYyBuYXR1cmUgaW1wbGllcyBpbnRlcm5hbCB1c2Ugd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCB5ZXQgUlROTCBoYW5kbGVycyBhcmUgdHlwaWNhbGx5IGV4cG9zZWQuIFRoaXMgc2V0dXAgaW50cmlndWVzIG1lLiBJJ3ZlIGdvdCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBoZXJlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYXNzb2NpYXRlZCBjb2RlIGluIGBuZXh0aG9wLmNgLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgbW9kaWZ5IG9yIGludGVyYWN0IHdpdGggYHJ0bV9uZXdfbmV4dGhvcGAgd2lsbCBpbGx1bWluYXRlIHRoZSBjYWxsIGNoYWluIGFuZCBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gVGhpcyBkZWVwZXIgZGl2ZSBzaG91bGQgcmV2ZWFsIHRoZSBjb25uZWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjUzLjY3Njc1NTU4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MjU2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpfQS1aMC05XSsgbmV4dGhvcF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz01MDM9c3RhdGljIHZvaWQgbmV4dGhvcF9mcmVlX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtNTE4LVxcbm5ldC9pcHY0L25leHRob3AuYzo1MTk6dm9pZCBuZXh0aG9wX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNTIwLXtcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0xNTEwPUVYUE9SVF9TWU1CT0xfR1BMKG5leHRob3Bfc2VsZWN0X3BhdGgpO1xcbm5ldC9pcHY0L25leHRob3AuYy0xNTExLVxcbm5ldC9pcHY0L25leHRob3AuYzoxNTEyOmludCBuZXh0aG9wX2Zvcl9lYWNoX2ZpYjZfbmgoc3RydWN0IG5leHRob3AgKm5oLFxcbm5ldC9pcHY0L25leHRob3AuYy0xNTEzLVxcdFxcdFxcdCAgICAgaW50ICgqY2IpKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKSxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz00MDUyPUVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9uZXh0aG9wX25vdGlmaWVyKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA1My1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDA1NDp2b2lkIG5leHRob3Bfc2V0X2h3X2ZsYWdzKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkLCBib29sIG9mZmxvYWQsIGJvb2wgdHJhcClcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA1NS17XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDA3Mz1FWFBPUlRfU1lNQk9MKG5leHRob3Bfc2V0X2h3X2ZsYWdzKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA3NC1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDA3NTp2b2lkIG5leHRob3BfYnVja2V0X3NldF9od19mbGFncyhzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCwgdTE2IGJ1Y2tldF9pbmRleCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDA3Ni1cXHRcXHRcXHRcXHQgYm9vbCBvZmZsb2FkLCBib29sIHRyYXApXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDEwNz1FWFBPUlRfU1lNQk9MKG5leHRob3BfYnVja2V0X3NldF9od19mbGFncyk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxMDgtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjQxMDk6dm9pZCBuZXh0aG9wX3Jlc19ncnBfYWN0aXZpdHlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkLCB1MTYgbnVtX2J1Y2tldHMsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxMTAtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nICphY3Rpdml0eSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTY6NTMuNzM0NjkwODgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjI0MTI2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV4dGhvcCBGdW5jdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgaGFuZGxpbmcgbmV3IG5leHRob3BzIHdpdGhpbiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGZvciB0aGUgYFJUTV9ORVdORVhUSE9QYCBuZXRsaW5rIG1lc3NhZ2UuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgYHJ0bV9uZXdfbmV4dGhvcGAsIGJ1dCB0aGF0J3Mgc3RhdGljLCBzbyBpdCBjYW4ndCBiZSBhIGZvY3VzIHN5bWJvbC4gVGhlIHNhbWUgYXBwbGllcyB0byBgbmV4dGhvcF9hZGRgLiBJIG5lZWQgYSBub24tc3RhdGljIGZ1bmN0aW9uIHRvIGFuY2hvciBteSBpbnZlc3RpZ2F0aW9uLlxuXG5JJ3ZlIG1vdmVkIG9udG8gYG5ldC9pcHY0L25leHRob3AuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgYEVYUE9SVF9TWU1CT0xgIGRlZmluaXRpb25zIG9yLCBhbHRlcm5hdGl2ZWx5LCBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBuZXh0aG9wIGNyZWF0aW9uLiBJIGNoZWNrZWQgZm9yIGNvbW1vbiBmdW5jdGlvbnMgdXNlZCBpbiBtYW55IHBhcnRzIG9mIHRoZSBrZXJuZWwuIGBuZXh0aG9wX2ZyZWVfcmN1YCwgYG5leHRob3BfZm9yX2VhY2hfZmliNl9uaGAsIGBuZXh0aG9wX3NldF9od19mbGFnc2AsIGBuZXh0aG9wX2J1Y2tldF9zZXRfaHdfZmxhZ3NgLCBhbmQgYG5leHRob3BfcmVzX2dycF9hY3Rpdml0eV91cGRhdGVgIGFyZSBhbGwgaGVyZSwgYnV0IHRoZXkgYXJlbid0IHRoZSBwcmltYXJ5IG5leHRob3AgKmNyZWF0aW9uKiBmdW5jdGlvbnMuXG5cbkFoYSEgYG5leHRob3BfYWxsb2NgIGlzIGNhbGxlZCBmcm9tIGBuZXh0aG9wX2NyZWF0ZWAgYW5kIGBuZXh0aG9wX2NyZWF0ZV9ncm91cGAuIFRoYXQncyBhIHN0cm9uZyBsZWFkLiBJdCBsb29rcyBsaWtlIGBuZXh0aG9wX2FsbG9jYCBpcyBwcm9iYWJseSB0aGUgY29yZSBhbGxvY2F0aW9uIGZ1bmN0aW9uLCBidXQgSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBlbnRyeSBwb2ludHMgYnkgaW5zcGVjdGluZyBgbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdGAuIEknbGwgZXhwbG9yZSB0aGF0IGZ1bmN0aW9uIGZ1cnRoZXIgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFkZGl0aW9uYWwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgwMiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1Njo1OC44OTcxMDk4MzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDg0ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5oX25vdGlmaWVyX3Jlc190YWJsZV9pbmZvX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz0xMzM9c3RhdGljIGludCBuaF9ub3RpZmllcl9tcGF0aF9pbmZvX2luaXQoc3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTYwLVxcbm5ldC9pcHY0L25leHRob3AuYzoxNjE6c3RhdGljIGludCBuaF9ub3RpZmllcl9yZXNfdGFibGVfaW5mb19pbml0KHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvLFxcbm5ldC9pcHY0L25leHRob3AuYy0xNjItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5oX2dyb3VwICpuaGcpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MTkzPXN0YXRpYyBpbnQgbmhfbm90aWZpZXJfZ3JwX2luZm9faW5pdChzdHJ1Y3Qgbmhfbm90aWZpZXJfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yMDAtXFx0ZWxzZSBpZiAobmhnLVxcdTAwM2VyZXNpbGllbnQpXFxubmV0L2lwdjQvbmV4dGhvcC5jOjIwMTpcXHRcXHRyZXR1cm4gbmhfbm90aWZpZXJfcmVzX3RhYmxlX2luZm9faW5pdChpbmZvLCBuaGcpO1xcbm5ldC9pcHY0L25leHRob3AuYy0yMDItXFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU2OjU4Ljk1ODIwMjg0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU0MDY3MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBpbnRlcm5hbCBzdHVmZi4gU2luY2UgaXQncyB0b3VjaGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmbGFncywgaXQncyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIHRoYXQncyB0aGUga2V5LiBOb3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGd1aWRpbmcgbWUgdG93YXJkIGNob29zaW5nIHRoZSByaWdodCBzeW1ib2wgZm9yIHRoaXMuIFRoZSBtYWluIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBydG1fbmV3X25leHRob3BgLCBhbmQgSSBpbml0aWFsbHkgZmxhZ2dlZCBpdCBhcyBzdGF0aWMsIHdoaWNoIGlzIGEgcG90ZW50aWFsIGlzc3VlIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGV5IHdhbnQgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSWYgdGhvc2UgZG9uJ3QgZXhpc3QsIEkgY2FuIGVpdGhlciBvbWl0IGBGb2N1c1N5bWJvbHNgIGVudGlyZWx5IG9yIHByb3ZpZGUgYW4gZW1wdHkgbGlzdCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGRvIHRoYXQuXG5cblRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byBhdm9pZCBpbmxpbmVkIHN0YXRpYyBoZWxwZXJzIGJlY2F1c2UgdGhleSBkb24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gdXNlIHRoaXMgc3RhdGljIGZ1bmN0aW9uPyBIbW0sIGxldCBtZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBhZ2Fpbi4uLiBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQuLi4gT2theSwgc28gbGV0J3Mgc2VlIGlmIGBydG1fbmV3X25leHRob3BgIGlzIGFjdHVhbGx5IGlubGluZWQuIEl0J3MgcmVnaXN0ZXJlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYG5leHRob3BfcnRubF9tc2dfaGFuZGxlcnNgLCBzbyBieSBkZWZpbml0aW9uLCBpdCAqY2Fubm90KiBiZSBpbmxpbmVkLiBUaGF0J3MgZ29vZCBuZXdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3VnaC5cblxuT2theSwgbGV0IG1lIGNoZWNrIGBuZXh0aG9wX2FkZGAgYW5kIGBuZXh0aG9wX2NyZWF0ZWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJZiBgcnRtX25ld19uZXh0aG9wYCAqaXNuJ3QqIGlubGluZWQsIHRoZW4gaXQgZG9lcyBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIGFuZCBJIGNhbiB1c2UgaXQuIEkgcmVtZW1iZXIgdGhlIGNvbnRleHQsIGl0J3MgZGVmaW5lZCBpbiBgbmV0L2lwdjQvbmV4dGhvcC5jYCwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhpcyBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjA0LjAxMjI3Mjk0OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0Mjk0OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRtX25ld19uZXh0aG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9MzI2Mj1zdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0YixcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMjkzLS8qIHJ0bmwgKi9cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI5NDpzdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI5NS1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9NDE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgbmV4dGhvcF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xcbm5ldC9pcHY0L25leHRob3AuYzo0MTc3OlxcdHsubXNndHlwZSA9IFJUTV9ORVdORVhUSE9QLCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE3OC1cXHQgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy00MTg1LVxcdHsucHJvdG9jb2wgPSBQRl9JTkVULCAubXNndHlwZSA9IFJUTV9ORVdORVhUSE9QLFxcbm5ldC9pcHY0L25leHRob3AuYzo0MTg2OlxcdCAuZG9pdCA9IHJ0bV9uZXdfbmV4dGhvcCwgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfUEVSTkVUfSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtNDE4Ny1cXHR7LnByb3RvY29sID0gUEZfSU5FVCwgLm1zZ3R5cGUgPSBSVE1fR0VUTkVYVEhPUCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy00MTg5LVxcdHsucHJvdG9jb2wgPSBQRl9JTkVUNiwgLm1zZ3R5cGUgPSBSVE1fTkVXTkVYVEhPUCxcXG5uZXQvaXB2NC9uZXh0aG9wLmM6NDE5MDpcXHQgLmRvaXQgPSBydG1fbmV3X25leHRob3AsIC5mbGFncyA9IFJUTkxfRkxBR19ET0lUX1BFUk5FVH0sXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxOTEtXFx0ey5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRORVhUSE9QLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzowNC4wNjc3MTI1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA5NTk4MDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIE5leHRob3AgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBgcnRtX25ld19uZXh0aG9wYCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIHBvaW50IG9mIGludGVyZXN0IGhlcmUsIGEgc29saWQgZm9jdXMuIEJ1dCwgc2hvdWxkIEkgYWxzbyBjb25zaWRlciBgcnRtX2RlbF9uZXh0aG9wYCBhbmQgYHJ0bV9nZXRfbmV4dGhvcGA/IFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggY2VudGVycyBvbiBtZW1vcnkgYWxsb2NhdGlvbiwgYW5kIHRoYXQncyBwcmVjaXNlbHkgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYHJ0bV9uZXdfbmV4dGhvcGAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gY29uY2VudHJhdGUgbXkgYW5hbHlzaXMuXG5cbk5vdywgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgYENPTkZJR2Agb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIGNydWNpYWwuIERvZXMgdGhpcyBjb2RlIHBhdGggaGF2ZSBhIGRlcGVuZGVuY3kgb24sIHNheSwgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuSSdsbCBzdGFydCBieSBleGFtaW5pbmcgYG5ldC9pcHY0L0tjb25maWdgIGFuZCB0cmFjZSBkZXBlbmRlbmNpZXMgZm9yIGBuZXh0aG9wLmNgIHRvIGlkZW50aWZ5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgY291bGQgcmV2ZWFsIGltcG9ydGFudCBjb250ZXh0IGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjA3LjU3NzMxNjYyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzODE5MzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTc6MDcuNjI3NzEyNjE3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDU1MDg0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyB0aGUgSVB2NCBNYWtlZmlsZSoqXG5cbkFscmlnaHQsIGxldCdzIGNpcmNsZSBiYWNrIHRvIGBuZXQvaXB2NC9NYWtlZmlsZWAuIEkndmUgYmVlbiB3b3JraW5nIHdpdGggdGhlIElQdjQgc3RhY2sgZm9yIGEgd2hpbGUgbm93LCBhbmQgY2VydGFpbiBwYXR0ZXJucyBhbmQgcXVpcmtzIHRlbmQgdG8gcmVwZWF0IHRoZW1zZWx2ZXMgaW4gbXkgd29ya2Zsb3cuIE15IGludGVybmFsIGNoZWNrbGlzdCBub3cgaW5jbHVkZXMgZ29pbmcgYmFjayBvdmVyIHRob3NlIE1ha2VmaWxlcy4gVGhlcmUncyB1c3VhbGx5IHNvbWV0aGluZyBJIG5lZWQgdG8gcmVmcmVzaCBvbiwgYSBuZXcgZGVwZW5kZW5jeSB0aGF0J3MgYmVlbiBpbnRyb2R1Y2VkLCBvciBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkIGluaXRpYWxseS4gSXQgY291bGQgYmUgYW4gaW5jbHVzaW9uIHN0cmF0ZWd5IGZvciBoZWFkZXJzLCB0aGUgYnVpbGQgZmxhZ3MgZm9yIGEgcGFydGljdWxhciBtb2R1bGUsIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gSXQncyB0aW1lIHRvIHJlLWV4YW1pbmUgaXQgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgZm9yZ290dGVuIGFueXRoaW5nIGNyaXRpY2FsIG9yIG92ZXJsb29rZWQgYSBwb3RlbnRpYWwgc25hZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI1NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjEwLjc3MzIyNTE2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MDg5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV4dGhvcC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXFxcXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlLTE2LVxcdCAgICAgaW5ldF9mcmFnbWVudC5vIHBpbmcubyBpcF90dW5uZWxfY29yZS5vIGdyZV9vZmZsb2FkLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjE3OlxcdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTc6MTAuODI2MTQxNTMxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mzg1MDUwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoaXMgY2hhbmdlIEknbSBsb29raW5nIGF0LCBpdCdzIGRlZmluZWQgd2l0aGluIGBvYmoteWAsIHdoaWNoIG1lYW5zIGl0J3MgY29tcGlsZWQgYXMgcGFydCBvZiB0aGUgYG5ldC9pcHY0L2AgbW9kdWxlLiBUaGUgcHJlc2VuY2Ugb2YgYG5ldC9pcHY0L2Agc2VlbXMgdG8gYmUgZ2F0ZWQgYnkgYENPTkZJR19JTkVUYCwgc28gdGhhdCdzIHRoZSBiYXNlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gRXhjZWxsZW50LCBubyBvYnNjdXJlLCBzcGVjaWFsaXplZCBvcHRpb25zIG5lZWRlZC4gSXQncyBidWlsdCBpbiB3aXRoIHN0YW5kYXJkIG5ldHdvcmtpbmcuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBfX25ldGRldl9hbGxvY19wY3B1X3N0YXRzYCBpbiB0aGUgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBhIGJpdC4uLiBicm9hZGVyIHRoYW4ganVzdCBzdGFuZGFyZCBJUHY0LiBJIG5lZWQgdG8gYmUgY29tcGxldGVseSBzdXJlLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgIHRvIHNlZSBpZiBpdCBicmluZ3MgaW4gYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBvciBpZiB0aGVyZSdzIGFueSBpbXBsaWNpdCBkZXBlbmRlbmN5IHRoZXJlLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLiBUaW1lIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1ODksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxNC4yNjQ2NTEwMTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTM3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3BfY3JlYXRlX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9Mjc0MD1zdGF0aWMgdm9pZCBmbHVzaF9hbGxfbmV4dGhvcHMoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NTUtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjI3NTY6c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZV9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NTctXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuaF9jb25maWcgKmNmZylcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0yOTk0PXN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAwOC1cXHRpZiAoY2ZnLVxcdTAwM2VuaF9ncnApXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMDk6XFx0XFx0bmggPSBuZXh0aG9wX2NyZWF0ZV9ncm91cChuZXQsIGNmZyk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTMwMTAtXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxNC4zMjIxOTY3OTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2Njc2OTgyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBEZXBlbmRlbmNpZXMgb2YgYG5leHRob3BfY3JlYXRlX2dyb3VwYCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBpcyBoYW5naW5nIG9mZiBvZiBzb21lIG9ic2N1cmUgY29uZmlndXJhdGlvbiBmbGFnIG9yIGRlcGVuZGVuY3kuIEl0J3MgY3J1Y2lhbCBmb3IgbWUgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGVkZ2UgY2FzZXMgYW5kIGhvdyBlYXNpbHkgdGhpcyBmdW5jdGlvbiBtaWdodCBiZSBpbXBhY3RlZCBieSBjaGFuZ2VzIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBHaXZlbiBteSBsZXZlbCBvZiBleHBlcnRpc2UsIEkgd291bGQgZXhwZWN0IGEgZnVuY3Rpb24gbGlrZSB0aGlzIHRvIGJlIHNvbWV3aGF0IGluZGVwZW5kZW50LCBidXQgSSBjYW4ndCBsZWF2ZSBhbnl0aGluZyB0byBhc3N1bXB0aW9uLlxuXG5UaGUgYmVzdCB3YXkgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSB3b3VsZCBiZSB0byBpbnZlc3RpZ2F0ZSB0aGUgc291cmNlIGNvZGUuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBkaXJlY3QgbWV0aG9kIGlzIHRvIGV4YW1pbmUgdGhlIGBuZXh0aG9wLmNgIGZpbGUgaXRzZWxmLiBNeSBpbW1lZGlhdGUgZm9jdXMgd2lsbCBiZSBvbiBzZWFyY2hpbmcgZm9yIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBzdXJyb3VuZGluZyB0aGUgYG5leHRob3BfY3JlYXRlX2dyb3VwYCBkZWZpbml0aW9uIG9yIGl0cyB1c2UuIElmIHRoZXJlIGFyZSBhbnksIHRoZXNlIGAjaWZkZWZgcyB3aWxsIHByb3ZpZGUgY2x1ZXMgYXMgdG8gd2hlbiwgb3IgdW5kZXIgd2hhdCBjb25kaXRpb25zLCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGFuZCBhY3RpdmUuIFRoZSBwcmVzZW5jZSBvZiBgI2lmZGVmYHMgaW5kaWNhdGVzIHRoYXQgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvciBmZWF0dXJlcyBtaWdodCBiZSBuZWNlc3NhcnkgZm9yIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IHRvIGJlIGFjdGl2ZS4gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggc2V0dGluZ3MgdHJpZ2dlciBpdHMgYWN0aXZhdGlvbiwgd2hpY2ggaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgSSBhbnRpY2lwYXRlIGFueSBjaGFuZ2VzIHRvIHRoZXNlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gSWYgSSBjYW4gZmluZCB0aGUgYCNpZmRlZmAgYmxvY2tzLCBJIHNob3VsZCBiZSBhYmxlIHRvIGRlZHVjZSB0aGUgZXhhY3Qgc2V0IG9mIGNvbmRpdGlvbnMgdGhhdCBpbmZsdWVuY2Ugd2hldGhlciBgbmV4dGhvcF9jcmVhdGVfZ3JvdXBgIGlzIGV2ZW4gaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNzAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxNy45ODg5NzAzOTlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjk5Mjc3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMTo1NzoxOC4wNDk2ODA1NjVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MDc2NDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBYnNlbmNlIG9mIFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBhIHdob2xlIGJ1bmNoIG9mIGAjaWZkZWZgIGRpcmVjdGl2ZXMgaW4gYG5leHRob3AuY2AsIGJ1dCBJJ20gbm90IHNlZWluZyBhbnkuIFRoYXQncyB1bnVzdWFsLCBhbmQgaXQgbWFrZXMgbWUgd29uZGVyIGhvdyB0aGV5J3JlIGhhbmRsaW5nIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJlbGF0ZWQgdG8gbmV0d29yayBuZXh0IGhvcCBiZWhhdmlvci4gV2FpdCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLi4uIG1heWJlIHRoZXkncmUgdXNpbmcgc29tZXRoaW5nIGVsc2UuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGV5J3ZlIG9wdGVkIHRvIHVzZSB0aGUgYCNpZmAgZGlyZWN0aXZlLCBpbnN0ZWFkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjIxLjEyMDQ0OTc5NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1NzIxNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjIxLjE3OTAzMjM5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA4NjIzMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBhIFBvdGVudGlhbCBHcmVwIFBpdGZhbGwqKlxuXG5Pa2F5LCBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGV4dHJhY3Qgc29tZSBpbmZvcm1hdGlvbiBmcm9tIGEgY29uZmlndXJhdGlvbiBmaWxlLCBsaWtlbHkgdXNpbmcgYSBjb21tYW5kLWxpbmUgdG9vbC4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCB1c2luZyBgZ3JlcGAgd2l0aCBgI2lmYCBjb25zdHJ1Y3RzIHRvIG5hcnJvdyB0aGUgc2VhcmNoLiBCdXQgaGFuZyBvbiwgdXNpbmcgYCNpZmAgd2l0aCBgZ3JlcGDigJR0aGF0IGNvdWxkIGdldCBtZXNzeS4gSSdkIGhhdmUgdG8gZGVhbCB3aXRoIGVzY2FwaW5nIGNoYXJhY3RlcnMgdG8gZW5zdXJlIHRoZSBgZ3JlcGAgY29tbWFuZCBwcm9wZXJseSBpbnRlcnByZXRzIHRoZSBgI2lmYCBkaXJlY3RpdmVzLiBUaGF0IHNvdW5kcyBsaWtlIGEgcGFpbiwgYW5kIGl0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiBNYXliZSBJIG5lZWQgdG8gcmVhZCB0aGUgZW50aXJlIGZpbGUgaW50byB0aGUgcHJvZ3JhbSBhbmQgcGFyc2UuIE9yIG1heWJlIGEgc3RyYWlnaHQgYGdyZXBgIGZvciBgQ09ORklHX2Agd291bGQgYmUgdGhlIGxlYXN0IGVycm9yIHByb25lLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gYWNjb3VudCBmb3IgcG90ZW50aWFsIHZhcmlhdGlvbnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBzeW50YXgsIGJ1dCBJJ20gbGVhbmluZyB0b3dhcmQgYXZvaWRpbmcgYW55IHRyaWNreSBlc2NhcGVzIG9yIGNvbXBsaWNhdGVkIHJlZ2V4IHJpZ2h0IG5vdy4gQmVzdCB0byBzdGFydCBzaW1wbGUgYW5kIGl0ZXJhdGUgaWYgbmVlZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc3NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjI0LjQ4NzY2NDYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIzNDcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9MTQxMj1zdGF0aWMgYm9vbCBuZXh0aG9wX2lzX2dvb2RfbmgoY29uc3Qgc3RydWN0IG5leHRob3AgKm5oKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTE0MTktXFx0Y2FzZSBBRl9JTkVUNjpcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MTQyMDpcXHRcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfSVBWNikgXFx1MDAyNlxcdTAwMjYgaXB2Nl9nb29kX25oKFxcdTAwMjZuaGktXFx1MDAzZWZpYjZfbmgpO1xcbm5ldC9pcHY0L25leHRob3AuYy0xNDIxLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDE6NTc6MjQuNTQ0OTEwOTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNzU4OTM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXh0aG9wIE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGUgY29kZSBpbiBgbmV4dGhvcC5jYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBJUHY0IHN1cHBvcnQsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhlIGtleSBoZXJlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYEdGUF9LRVJORUxfQUNDT1VOVGAgaW4gdGhlIGFsbG9jYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGFjdGl2YXRlcyBtZW1vcnkgYWNjb3VudGluZywgb3IgbWVtY2csIGZvciB0aGVzZSBgbmV4dGhvcGAgb2JqZWN0cy5cblxuVGhhdCdzIGEgZGVmaW5pdGUgXCJ3b3J0aCBmdXp6aW5nXCIgZmxhZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgc3lzdGVtIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgdW5kZXIgbWVtb3J5IHByZXNzdXJlLCBlc3BlY2lhbGx5IHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaW1wb3NlZCBieSBtZW1jZy4gSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIHNpdHVhdGlvbnMgd2hlcmUgYWxsb2NhdGlvbnMgbWlnaHQgZmFpbCBiZWNhdXNlIHRoZSBsaW1pdHMgYXJlIGhpdC4gQXJlIHdlIGhhbmRsaW5nIHRob3NlIGZhaWx1cmVzIGdyYWNlZnVsbHk/IE5vIHVuZXhwZWN0ZWQgY3Jhc2hlcywgbm8gbWVtb3J5IGxlYWtzLi4uIHRoYXQncyB3aGF0IEkgbmVlZCB0byB2ZXJpZnkuXG5cbk15IG1lbnRhbCBjaGVja2xpc3QgbG9va3MgbGlrZSB0aGlzOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogQWJzb2x1dGVseSwgeWVzLiBUaGlzIGlzIHRoZSBjcnV4IG9mIGl0LlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IEknbGwgdGFyZ2V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gY3JlYXRpbmcgbmV3IG5leHRob3BzLCBzcGVjaWZpY2FsbHkgXCJydG1cXF9uZXdcXF9uZXh0aG9wXCIuIFRoYXQncyB3aGVyZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBhcmUgbGlrZWx5IHRvIG1hbmlmZXN0LlxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBOb25lLCBpdCdzIG5vdCBjb25kaXRpb25hbCBvbiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuKiAgICoqUmVhc29uaW5nKio6IFwiVGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGNoYW5nZXMgaG93IGBuZXh0aG9wYCBvYmplY3RzIGhhbmRsZSBtZW1vcnksIGVuYWJsaW5nIG1lbWNnIHRyYWNraW5nLiBNeSBmdXp6aW5nIGVmZm9ydHMgbmVlZCB0byBiZSBjZW50ZXJlZCBhcm91bmQgYG5leHRob3BgIGNyZWF0aW9uIChgcnRtX25ld19uZXh0aG9wYCkgdG8gdmFsaWRhdGUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgcmVhY2hlZC4gRW5zdXJpbmcgdGhlIHN5c3RlbSBiZWhhdmVzIHJlbGlhYmx5IHVuZGVyIG1lbW9yeSBjb25zdHJhaW50cyBpcyBwYXJhbW91bnQuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTExODMsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAxOjU3OjMwLjY1MjUwNDIxNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX25ld19uZXh0aG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoX19HRlBfQUNDT1VOVCAvIEdGUF9LRVJORUxfQUNDT1VOVCkgZm9yIG5leHRob3Agb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIG1lbWNnIHRvIHRyYWNrIGFuZCBsaW1pdCBtZW1vcnkgdXNlZCBieSBuZXh0aG9wcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gbmV4dGhvcCBjcmVhdGlvbiB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gbWVtb3J5IGxpbWl0cyBhcmUgaGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGVuYWJsZXMgbWVtb3J5IGFjY291bnRpbmcgKF9fR0ZQX0FDQ09VTlQgLyBHRlBfS0VSTkVMX0FDQ09VTlQpIGZvciBuZXh0aG9wIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyBtZW1jZyB0byB0cmFjayBhbmQgbGltaXQgbWVtb3J5IHVzZWQgYnkgbmV4dGhvcHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIG5leHRob3AgY3JlYXRpb24gdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyB3aGVuIG1lbW9yeSBsaW1pdHMgYXJlIGhpdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflown2225[1] Phase: Succeeded StartedAt: 2026-07-29 01:57:54 +0000 UTC FinishedAt: 2026-07-29 01:57:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 01:57:54 +0000 UTC FinishedAt: 2026-07-29 01:57:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2] Phase: Succeeded StartedAt: 2026-07-29 01:57:54 +0000 UTC FinishedAt: 2026-07-29 05:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 01:57:54 +0000 UTC FinishedAt: 2026-07-29 05:47:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 01:57:54 +0000 UTC FinishedAt: 2026-07-29 01:58:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 01:57:54 +0000 UTC FinishedAt: 2026-07-29 01:57:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflown2225/series-workflown2225-convert-artifact-1680777612/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 01:58:04 +0000 UTC FinishedAt: 2026-07-29 02:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 01:58:04 +0000 UTC FinishedAt: 2026-07-29 02:19:58 +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:*7bd8c441-d117-47d8-a474-3b869aefb0a4,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-workflown2225/series-workflown2225-convert-artifact-1680777612/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": "738a8655-699c-44ca-8a3d-516fe0a61f85", "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-workflown2225/series-workflown2225-build-action-2060281786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 01:58:04 +0000 UTC FinishedAt: 2026-07-29 02:19:48 +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:*7bd8c441-d117-47d8-a474-3b869aefb0a4,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-workflown2225/series-workflown2225-convert-artifact-1680777612/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": "738a8655-699c-44ca-8a3d-516fe0a61f85", "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-workflown2225/series-workflown2225-build-action-2060281786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 02:19:58 +0000 UTC FinishedAt: 2026-07-29 02:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 02:19:58 +0000 UTC FinishedAt: 2026-07-29 02:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 02:19:58 +0000 UTC FinishedAt: 2026-07-29 02:20:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 02:19:58 +0000 UTC FinishedAt: 2026-07-29 02:20:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflown2225/series-workflown2225-convert-artifact-3620186059/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 02:20:08 +0000 UTC FinishedAt: 2026-07-29 02:22:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 02:20:08 +0000 UTC FinishedAt: 2026-07-29 02:21:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*738a8655-699c-44ca-8a3d-516fe0a61f85,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-workflown2225/series-workflown2225-build-action-2060281786/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-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 02:22:01 +0000 UTC FinishedAt: 2026-07-29 02:22:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 02:22:01 +0000 UTC FinishedAt: 2026-07-29 02:22:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 02:22:01 +0000 UTC FinishedAt: 2026-07-29 02:43:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 02:22:01 +0000 UTC FinishedAt: 2026-07-29 02:43:59 +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:*7bd8c441-d117-47d8-a474-3b869aefb0a4,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-workflown2225/series-workflown2225-convert-artifact-3620186059/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": "7b35804a-cb99-49bf-9073-d72cfb0c0ee8", "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-workflown2225/series-workflown2225-build-action-2202389615/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 02:22:01 +0000 UTC FinishedAt: 2026-07-29 02:43:49 +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:*7bd8c441-d117-47d8-a474-3b869aefb0a4,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-workflown2225/series-workflown2225-convert-artifact-3620186059/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": "7b35804a-cb99-49bf-9073-d72cfb0c0ee8", "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-workflown2225/series-workflown2225-build-action-2202389615/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 02:43:59 +0000 UTC FinishedAt: 2026-07-29 02:43:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 02:43:59 +0000 UTC FinishedAt: 2026-07-29 02:43:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 02:43:59 +0000 UTC FinishedAt: 2026-07-29 02:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 02:43:59 +0000 UTC FinishedAt: 2026-07-29 02:45:56 +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:*7b35804a-cb99-49bf-9073-d72cfb0c0ee8,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-workflown2225/series-workflown2225-build-action-2202389615/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-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 05:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 05:47:34 +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":["rtm_new_nexthop"],"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:*738a8655-699c-44ca-8a3d-516fe0a61f85,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7b35804a-cb99-49bf-9073-d72cfb0c0ee8,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-workflown2225/series-workflown2225-build-action-2060281786/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-workflown2225/series-workflown2225-build-action-2202389615/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 02:46:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 02:46:11 +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":["rtm_new_nexthop"],"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-workflown2225/series-workflown2225-convert-artifact-477131108/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 02:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 02:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 02:46:05 +0000 UTC FinishedAt: 2026-07-29 02:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 02:46:15 +0000 UTC FinishedAt: 2026-07-29 05:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflown2225[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9736d2efc99670054359e153a9f312ef4646ec7b","config_name":"upstream-apparmor-kasan.config","series_id":"7138fa87-5f4a-48df-8c15-69b0b5cf6ccf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 02:46:15 +0000 UTC FinishedAt: 2026-07-29 05:47:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*738a8655-699c-44ca-8a3d-516fe0a61f85,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7b35804a-cb99-49bf-9073-d72cfb0c0ee8,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-workflown2225/series-workflown2225-build-action-2060281786/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-workflown2225/series-workflown2225-build-action-2202389615/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-workflown2225/series-workflown2225-convert-artifact-477131108/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,}