Name: series-workflowlgnfk Phase: Succeeded StartedAt: 2026-08-24 17:54:40 +0000 UTC FinishedAt: 2026-08-24 22:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[0] Phase: Succeeded StartedAt: 2026-08-24 17:54:40 +0000 UTC FinishedAt: 2026-08-24 18:23:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 17:54:40 +0000 UTC FinishedAt: 2026-08-24 18:23:29 +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": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "1ba6b4d5-6c80-4b38-bf73-67cf79151a19" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_lookup", "xfrm_lookup_route", "__xfrm_policy_check", "xfrm_policy_lookup_bytype" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fbG9va3VwJiMzNDssCiAgICAmIzM0O3hmcm1fbG9va3VwX3JvdXRlJiMzNDssCiAgICAmIzM0O19feGZybV9wb2xpY3lfY2hlY2smIzM0OywKICAgICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzZXF1ZW5jZSBjb3VudGVyIHJldHJ5IGxvb3AgKGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgKSBhcm91bmQgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AgdG8gZml4IGEgY29uY3VycmVuY3kgaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHN0YXRlIG9yIHVzZS1hZnRlci1mcmVlKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcxNjJlNjMwNmQxYWU5ODhmMTViYzIxYWI4MWE2M2M3ZWY3MDdjZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxODowODozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbkBAIC0yMTU3LDYgJiM0MzsyMTU3LDcgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsXG4gXHRzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9iaW4gKmJpbjtcbiBcdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLCAqcmV0O1xuIFx0c3RydWN0IGhsaXN0X2hlYWQgKmNoYWluO1xuJiM0MztcdHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlO1xuIFx0dW5zaWduZWQgaW50IHNlcXVlbmNlO1xuIFx0aW50IGVycjtcbiBcbkBAIC0yMTkxLDEyICYjNDM7MjE5MiwxOCBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbiBcdFx0Z290byBza2lwX2luZXhhY3Q7XG4gXG4gXHRiaW4gPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3UobmV0LCB0eXBlLCBmYW1pbHksIGRpciwgaWZfaWQpO1xuLVx0aWYgKCFiaW4gfHwgIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIGJpbiwgc2FkZHIsXG4tXHRcdFx0XHRcdFx0XHQgZGFkZHIpKVxuJiM0MztcdGlmICghYmluKVxuJiM0MztcdFx0Z290byBza2lwX2luZXhhY3Q7XG4mIzQzO1xuJiM0MztcdGluZXhhY3Rfc2VxdWVuY2UgPSByZWFkX3NlcWNvdW50X2JlZ2luKFx1MDAyNmJpbi1cdTAwM2Vjb3VudCk7XG4mIzQzO1x0aWYgKCF4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlcyhcdTAwMjZjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpXG4gXHRcdGdvdG8gc2tpcF9pbmV4YWN0O1xuIFxuIFx0cG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIHJldCwgZmwsIHR5cGUsXG4gXHRcdFx0XHRcdCAgZmFtaWx5LCBpZl9pZCk7XG4mIzQzO1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2YmluLVx1MDAzZWNvdW50LCBpbmV4YWN0X3NlcXVlbmNlKSlcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1xuIFx0aWYgKHBvbCkge1xuIFx0XHRyZXQgPSBwb2w7XG4gXHRcdGlmIChJU19FUlIocG9sKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xMm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9sb29rdXAmIzM0OywKICAgICYjMzQ7eGZybV9sb29rdXBfcm91dGUmIzM0OywKICAgICYjMzQ7X194ZnJtX3BvbGljeV9jaGVjayYjMzQ7LAogICAgJiMzNDt4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcxNjJlNjMwNmQxYWU5ODhmMTViYzIxYWI4MWE2M2M3ZWY3MDdjZTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxODowODozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jCmluZGV4IDkzMmEzMTNiOTQ2MGEuLjVkNGU4NjM4NjNkZmUgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwpAQCAtMjE1Nyw2ICYjNDM7MjE1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLAogCXN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2JpbiAqYmluOwogCXN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLCAqcmV0OwogCXN0cnVjdCBobGlzdF9oZWFkICpjaGFpbjsKJiM0MzsJdW5zaWduZWQgaW50IGluZXhhY3Rfc2VxdWVuY2U7CiAJdW5zaWduZWQgaW50IHNlcXVlbmNlOwogCWludCBlcnI7CiAKQEAgLTIxOTEsMTIgJiM0MzsyMTkyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLAogCQlnb3RvIHNraXBfaW5leGFjdDsKIAogCWJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfbG9va3VwX3JjdShuZXQsIHR5cGUsIGZhbWlseSwgZGlyLCBpZl9pZCk7Ci0JaWYgKCFiaW4gfHwgIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKCZhbXA7Y2FuZCwgYmluLCBzYWRkciwKLQkJCQkJCQkgZGFkZHIpKQomIzQzOwlpZiAoIWJpbikKJiM0MzsJCWdvdG8gc2tpcF9pbmV4YWN0OwomIzQzOwomIzQzOwlpbmV4YWN0X3NlcXVlbmNlID0gcmVhZF9zZXFjb3VudF9iZWdpbigmYW1wO2Jpbi0mZ3Q7Y291bnQpOwomIzQzOwlpZiAoIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKCZhbXA7Y2FuZCwgYmluLCBzYWRkciwgZGFkZHIpKQogCQlnb3RvIHNraXBfaW5leGFjdDsKIAogCXBvbCA9IHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcygmYW1wO2NhbmQsIHJldCwgZmwsIHR5cGUsCiAJCQkJCSAgZmFtaWx5LCBpZl9pZCk7CiYjNDM7CWlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZhbXA7YmluLSZndDtjb3VudCwgaW5leGFjdF9zZXF1ZW5jZSkpCiYjNDM7CQlnb3RvIHJldHJ5OwomIzQzOwogCWlmIChwb2wpIHsKIAkJcmV0ID0gcG9sOwogCQlpZiAoSVNfRVJSKHBvbCkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzIKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aXRoaW4gYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgLCBzcGVjaWZpY2FsbHkgd2hlbiBkZWFsaW5nIHdpdGggaW5leGFjdCBwb2xpY3kgY2FuZGlkYXRlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzOiB0aGV5JiMzOTtyZSBub3cgcmVhZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgYmVmb3JlIGFuZCBhZnRlciBjYWxsaW5nIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AuIElmIHRoZSBjb3VudGVyIGhhcyBjaGFuZ2VkIGluIGJldHdlZW4sIHRoZXkmIzM5O3JlIHJldHJ5aW5nIHRoZSBsb29rdXAuIFRoaXMgaXMgY2xhc3NpYyBjb25jdXJyZW5jeSBjb250cm9sLCBsaWtlbHkgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgc2ltaWxhciBpc3N1ZSB3aGVyZSB0aGUgcG9saWN5IGRhdGEgY291bGQgYmUgbW9kaWZpZWQgbWlkLWxvb2t1cCwgbGVhZGluZyB0byBpbmNvcnJlY3QgcmVzdWx0cy4KClRoZSBrZXkgaGVyZSBpcyB0aGF0IGB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3VgIGlzIGJlaW5nIHVzZWQsIHNvIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgaXMgaW52b2x2ZWQuIFRoZSBzZXF1ZW5jZSBjb3VudGVyIGFkZHMgZnVydGhlciBwcm90ZWN0aW9uIHdpdGhpbiB0aGF0IFJDVSBjb250ZXh0IHRvIGltcHJvdmUgcmVsaWFiaWxpdHkuCgpNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIHRvIHZlcmlmeSB0aGlzIGNoYW5nZSYjMzk7cyByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBjb25maXJtIGlmIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpcyBhY3R1YWxseSBjYWxsZWQgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMsIGFuZCBhbHNvIHdoaWNoIENPTkZJRyBvcHRpb25zIGFyZSBuZWNlc3NhcnkuIFRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgZGVmaW5lZCBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgcHJvYmFibHkgdXNlIGBncmVwcGVyYCBvciBhIHNpbWlsYXIgdG9vbCB0byBmaW5kIGFsbCBjYWxsIHNpdGVzIG9mIHRoZSBmdW5jdGlvbiB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZS4gVGhlIG92ZXJhcmNoaW5nIGBDT05GSUdfWEZSTWAgb3B0aW9uIGlzIGxpa2VseSB0aGUgcHJlcmVxdWlzaXRlLCBidXQgdGhlcmUgbWlnaHQgYmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGUgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBzZXF1ZW5jZSBjb3VudGVyIGltcGxlbWVudGF0aW9uIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwYXRjaCYjMzk7cyBzaWduaWZpY2FuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTIxMjc9eGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2NhbmRpZGF0ZXMgKmNhbmQsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTQ5LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMTUwOnN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVx0XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTIyMjU9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzEtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzI6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9TVUIsIGZsLCBmYW1pbHksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzMtXHRcdFx0XHRcdGRpciwgaWZfaWQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzNi0jZW5kaWZcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzNzpcdHJldHVybiB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLCBmbCwgZmFtaWx5LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM4LVx0XHRcdFx0XHQgZGlyLCBpZl9pZCk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzEtXHQgICAgcG9sc1swXS1cdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyODMyOlx0XHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzMtXHRcdFx0XHRcdFx0ICAgIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzc4Mi1cdGlmIChwb2xzWzBdLVx1MDAzZXR5cGUgIT0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOKSB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3ODM6XHRcdHBvbHNbMV0gPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzg0LVx0XHRcdFx0XHRcdCAgICBcdTAwMjZmbCwgZmFtaWx5LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQ5NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ1MjktXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ1MzA6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXHUwMDI2ZmwsIHNlbC1cdTAwM2VmYW1pbHksIGRpciwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVx0aWYgKElTX0VSUl9PUl9OVUxMKHBvbCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0MgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipEaWdnaW5nIGludG8gWEZSTSBQb2xpY3kgTG9va3VwIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgIGlzIGNsZWFybHkgYSBrZXkgZnVuY3Rpb24sIHNlZWluZyBhcyBpdCYjMzk7cyBjYWxsZWQgYnkgdGhlIGNvcmUgWEZSTSByb3V0aW5lczogYHhmcm1fcG9saWN5X2xvb2t1cGAsIGB4ZnJtX2V4cGFuZF9wb2xpY2llc2AsIHRoZSBwb2xpY3kgY2hlY2tlciBgX194ZnJtX3BvbGljeV9jaGVja2AsIGFuZCBldmVuIHRoZSBwb2xpY3kgbWlncmF0aW9uIGNvZGUgYHhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZGAuIFRoZXNlIGFyZSBhbGwgY2VudHJhbCB0byB0aGUgWEZSTSBmcmFtZXdvcmsuIEdpdmVuIHRoYXQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGZvciBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AgdG8gZmlndXJlIG91dCB3aGF0IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3Nhcnkgb3IgcmVsZXZhbnQgZm9yIHRoZXNlIGZ1bmN0aW9ucyB0byB3b3JrIGNvcnJlY3RseS4gQSBkZWVwIGRpdmUgaXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTEyPWVuZGlmXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cbm5ldC94ZnJtL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXHRcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlhGUk0gQ29uZmlndXJhdGlvbiBIZWFkYWNoZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFhGUk0gc2V0dXAsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX1hGUk1gIGlzIGEgZnVuZGFtZW50YWwgcmVxdWlyZW1lbnQuIENhbiYjMzk7dCByZWFsbHkgZG8gYW55dGhpbmcgWEZSTS1yZWxhdGVkIHdpdGhvdXQgdGhhdCwgaXQgc2VlbXMuIEFuZCB0aGVuLCB0eXBpY2FsbHksIHRvIG1hbmFnZSB0aGVzZSBwb2xpY2llcywgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGJlIGFibGUgdG8gY29uZmlndXJlIHRoaW5ncyBmcm9tIHVzZXIgc3BhY2UuIE1ha2VzIHRoaW5ncyBzbyBtdWNoIGVhc2llciBhbmQgbW9yZSBmbGV4aWJsZSwgcmlnaHQ/IFRoYXQgbWVhbnMgSSYjMzk7bGwgbmVlZCBgQ09ORklHX1hGUk1fVVNFUmAgYXMgd2VsbC4gQWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IGVuYWJsZWQuIFRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgaW4gYG5ldC94ZnJtL0tjb25maWdgIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4gR290dGEgZ2V0IHRoaXMgc2V0dXAgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgWEZSTSBQb2xpY3kgTG9va3VwKioKCk9rYXksIHNvIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgYENPTkZJR19YRlJNX1VTRVJgIGlzIGVzc2VudGlhbCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBYRlJNIHBvbGljaWVzIGZyb20gdXNlciBzcGFjZS4gTWFrZXMgc2Vuc2UuIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgaG9uaW5nIGluIG9uIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYC4gRGVmaW5pdGVseSBhIHByb21pc2luZyB0YXJnZXQgZm9yIGZ1enppbmcg4oCTIHJpZ2h0IHdoZXJlIEkgd291bGQgc3RhcnQuIEkgc2hvdWxkIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBrZXkgc3ltYm9scyBsaWtlIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCwgYHhmcm1fcG9saWN5X2xvb2t1cGAsIGB4ZnJtX2V4cGFuZF9wb2xpY2llc2AsIGFuZCBgX194ZnJtX3BvbGljeV9jaGVja2AuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpcyBzdGF0aWMuIEkgaGFkIGJldHRlciB0YWtlIGEgbG9vayBhdCBgeGZybV9wb2xpY3lfbG9va3VwYCB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTQxMT1MU01fSE9PSyhpbnQsIDAsIHhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oOjQxMjpMU01fSE9PSyhpbnQsIDAsIHhmcm1fcG9saWN5X2xvb2t1cCwgc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaC00MTMtTFNNX0hPT0soaW50LCAxLCB4ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbi0tXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg9MjAwNj12b2lkIHNlY3VyaXR5X3hmcm1fc3RhdGVfZnJlZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg6MjAwNzppbnQgc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKTtcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0yMDA4LWludCBzZWN1cml0eV94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaD0yMDUzPXN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0yMDU3LVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oOjIwNTg6c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTIwNTkte1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTk2ND1zdGF0aWMgaW50IHhmcm1fcG9saWN5X21hdGNoKGNvbnN0IHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTk3OS1cdGlmIChtYXRjaClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTk4MDpcdFx0cmV0ID0gc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHBvbC1cdTAwM2VzZWN1cml0eSwgZmwtXHUwMDNlZmxvd2lfc2VjaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xOTgxLVx0cmV0dXJuIHJldDtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTE5ODQ9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X25vZGUgKlxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxOTg1Onhmcm1fcG9saWN5X2xvb2t1cF9pbmV4YWN0X2FkZHIoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKnIsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE5ODYtXHRcdFx0XHRzZXFjb3VudF9zcGlubG9ja190ICpjb3VudCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTIwMjI9eGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfY2FuZGlkYXRlcyAqY2FuZCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIwMzYtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIwMzc6XHRuID0geGZybV9wb2xpY3lfbG9va3VwX2luZXhhY3RfYWRkcihcdTAwMjZiLVx1MDAzZXJvb3RfZCwgXHUwMDI2Yi1cdTAwM2Vjb3VudCwgZGFkZHIsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIwMzgtXHRcdFx0XHRcdCAgICBmYW1pbHkpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0MC1cdFx0Y2FuZC1cdTAwM2VyZXNbWEZSTV9QT0xfQ0FORF9EQUREUl0gPSBcdTAwMjZuLVx1MDAzZWhoZWFkO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMDQxOlx0XHRuID0geGZybV9wb2xpY3lfbG9va3VwX2luZXhhY3RfYWRkcihcdTAwMjZuLVx1MDAzZXJvb3QsIFx1MDAyNmItXHUwMDNlY291bnQsIHNhZGRyLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQyLVx0XHRcdFx0XHRcdCAgICBmYW1pbHkpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0Ni1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjA0NzpcdG4gPSB4ZnJtX3BvbGljeV9sb29rdXBfaW5leGFjdF9hZGRyKFx1MDAyNmItXHUwMDNlcm9vdF9zLCBcdTAwMjZiLVx1MDAzZWNvdW50LCBzYWRkcixcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0OC1cdFx0XHRcdFx0ICAgIGZhbWlseSk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMTI3PXhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcyhzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9jYW5kaWRhdGVzICpjYW5kLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE0OS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjE1MDpzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE1MS1cdFx0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjI0LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjI1OnN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMjYtXHRcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMxLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjMyOlx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfU1VCLCBmbCwgZmFtaWx5LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMzLVx0XHRcdFx0XHRkaXIsIGlmX2lkKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzYtI2VuZGlmXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzc6XHRyZXR1cm4geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTiwgZmwsIGZhbWlseSxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzOC1cdFx0XHRcdFx0IGRpciwgaWZfaWQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjI0MT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3NrX3BvbGljeV9sb29rdXAoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjI2NS1cdFx0XHR9XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyNjY6XHRcdFx0ZXJyID0gc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHBvbC1cdTAwM2VzZWN1cml0eSxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjI2Ny1cdFx0XHRcdFx0XHQgICAgICBmbC1cdTAwM2VmbG93aV9zZWNpZCk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzEtXHQgICAgcG9sc1swXS1cdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyODMyOlx0XHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzMtXHRcdFx0XHRcdFx0ICAgIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTMwODU9c3RhdGljIHN0cnVjdCB4ZnJtX2RzdCAqeGZybV9idW5kbGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMwOTYtXHRudW1fcG9scyA9IDE7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMwOTc6XHRwb2xzWzBdID0geGZybV9wb2xpY3lfbG9va3VwKG5ldCwgZmwsIGZhbWlseSwgZGlyLCBpZl9pZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMwOTgtXHRlcnIgPSB4ZnJtX2V4cGFuZF9wb2xpY2llcyhmbCwgZmFtaWx5LCBwb2xzLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzYyNj14ZnJtX3BvbGljeSAqeGZybV9pbl9md2RfaWNtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzYzOC1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzYzOTpcdFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwKG5ldCwgXHUwMDI2ZmwxLCBmYW1pbHksIFhGUk1fUE9MSUNZX0ZXRCwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjQwLVx0XHRpZiAoSVNfRVJSKHBvbCkpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjc3PWludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NDgtXHRpZiAoIXBvbClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc0OTpcdFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwKG5ldCwgXHUwMDI2ZmwsIGZhbWlseSwgZGlyLCBpZl9pZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTAtXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzgyLVx0aWYgKHBvbHNbMF0tXHUwMDNldHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX01BSU4pIHtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc4MzpcdFx0cG9sc1sxXSA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX01BSU4sXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3ODQtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNmZsLCBmYW1pbHksXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDk1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDUyOS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDUzMDpcdHBvbCA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCB0eXBlLCBcdTAwMjZmbCwgc2VsLVx1MDAzZWZhbWlseSwgZGlyLCBpZl9pZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ1MzEtXHRpZiAoSVNfRVJSX09SX05VTEwocG9sKSlcbi0tXG5zZWN1cml0eS9zZWN1cml0eS5jPTUwNDU9dm9pZCBzZWN1cml0eV94ZnJtX3N0YXRlX2ZyZWUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDUwLS8qKlxuc2VjdXJpdHkvc2VjdXJpdHkuYzo1MDUxOiAqIHNlY3VyaXR5X3hmcm1fcG9saWN5X2xvb2t1cCgpIC0gQ2hlY2sgaWYgdXNpbmcgYSB4ZnJtIHBvbGljeSBpcyBhbGxvd2VkXG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNTItICogQGN0eDogdGFyZ2V0IHhmcm0gc2VjdXJpdHkgY29udGV4dFxuLS1cbnNlY3VyaXR5L3NlY3VyaXR5LmMtNTA2MS0gKi9cbnNlY3VyaXR5L3NlY3VyaXR5LmM6NTA2MjppbnQgc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKVxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDYzLXtcbnNlY3VyaXR5L3NlY3VyaXR5LmM6NTA2NDpcdHJldHVybiBjYWxsX2ludF9ob29rKHhmcm1fcG9saWN5X2xvb2t1cCwgY3R4LCBmbF9zZWNpZCk7XG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNjUtfVxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz03NTYwPXN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfaG9va19saXN0IHNlbGludXhfaG9va3NbXSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc3NTktXHRMU01fSE9PS19JTklUKHhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5LCBzZWxpbnV4X3hmcm1fc3RhdGVfZGVsZXRlKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NzYwOlx0TFNNX0hPT0tfSU5JVCh4ZnJtX3BvbGljeV9sb29rdXAsIHNlbGludXhfeGZybV9wb2xpY3lfbG9va3VwKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NzYxLVx0TFNNX0hPT0tfSU5JVCh4ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoLFxuLS1cbnNlY3VyaXR5L3NlbGludXgvaW5jbHVkZS94ZnJtLmg9Mjc9aW50IHNlbGludXhfeGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaDoyODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpO1xuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaC0yOS1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTEzND1zdGF0aWMgaW50IHNlbGludXhfeGZybV9kZWxldGUoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4KVxuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jLTE0Ny0gKi9cbnNlY3VyaXR5L3NlbGludXgveGZybS5jOjE0ODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYy0xNDkte1xuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTE3MD1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jLTIwMC1cdCAqIGlzIG5vdyBvZiB0aGUgc2FtZSBsYWJlbCBhcyB0aGUgZmxvdyBhbmQgYSBmbG93IFZzLiBwb2xpY3kgcG9sbWF0Y2hcbnNlY3VyaXR5L3NlbGludXgveGZybS5jOjIwMTpcdCAqIGNoZWNrIGhhZCBhbHJlYWR5IGhhcHBlbmVkIGluIHNlbGludXhfeGZybV9wb2xpY3lfbG9va3VwKCkgYWJvdmUuICovXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYy0yMDItXHRyZXR1cm4gKGF2Y19oYXNfcGVybShmbGljX3NpZCwgc3RhdGVfc2lkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjM1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgWEZSTSBQb2xpY3kgTG9va3VwIGFuZCBDaGVja2luZyoqCgpPa2F5LCBzbyBgeGZybV9wb2xpY3lfbG9va3VwYCBpcyBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uLCBqdXN0IGxpa2UgdGhlIG9uZSBJIHdhcyBsb29raW5nIGF0IHByZXZpb3VzbHkuIFRoYXQgbWVhbnMgaXRzIHZpc2liaWxpdHkgaXMgbGltaXRlZCB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGlzbiYjMzk7dCBpZGVhbCBmb3IgY2VydGFpbiBzY2VuYXJpb3MuIFRoZW4sIGFoYSEgYF9feGZybV9wb2xpY3lfY2hlY2tgIGlzIGVpdGhlciBleHBvcnRlZCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhpcyBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgZGVmaW5pbmcgbW9kdWxlLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHdoYXQgYF9feGZybV9wb2xpY3lfY2hlY2tgIGlzIGRvaW5nLiBUaGlzIG1pZ2h0IG9mZmVyIGltcG9ydGFudCBjbHVlcyBhYm91dCB0aGUgb3ZlcmFsbCBkZXNpZ24uIFdoaWxlIEkgYW0gYXQgaXQsIGxldHMgbm90IG5lZ2xlY3QgYHhmcm1fYnVuZGxlX2xvb2t1cGAgYXMgaXQgaXMgcmVsYXRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBgX194ZnJtX3BvbGljeV9jaGVja2AgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X194ZnJtX3BvbGljeV9jaGVjayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZnJtLmg9MTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhmcm1fb2ZmbG9hZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjY1LSNpZmRlZiBDT05GSUdfWEZSTVxuaW5jbHVkZS9uZXQveGZybS5oOjEyNjY6aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKiwgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjY3LVx0XHRcdHVuc2lnbmVkIHNob3J0IGZhbWlseSk7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTEyNzg9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI4OS1cbmluY2x1ZGUvbmV0L3hmcm0uaDoxMjkwOnN0YXRpYyBpbmxpbmUgaW50IF9feGZybV9wb2xpY3lfY2hlY2syKHN0cnVjdCBzb2NrICpzaywgaW50IGRpcixcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjkxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEyOTktXHRpZiAoc2sgXHUwMDI2XHUwMDI2IHNrLVx1MDAzZXNrX3BvbGljeVtYRlJNX1BPTElDWV9JTl0pXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMwMDpcdFx0cmV0dXJuIF9feGZybV9wb2xpY3lfY2hlY2soc2ssIG5kaXIsIHNrYiwgZmFtaWx5KTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzAxLVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzIwLVx0ICAgICAgIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc2tiLCBkaXIsIGZhbWlseSkgfHxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMzIxOlx0ICAgICAgIF9feGZybV9wb2xpY3lfY2hlY2soc2ssIG5kaXIsIHNrYiwgZmFtaWx5KTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzIyLX1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTMyND1zdGF0aWMgaW5saW5lIGludCB4ZnJtX3BvbGljeV9jaGVjayhzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI1LXtcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMzI2Olx0cmV0dXJuIF9feGZybV9wb2xpY3lfY2hlY2syKHNrLCBkaXIsIHNrYiwgZmFtaWx5LCAwKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI3LX1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTMzOT1zdGF0aWMgaW5saW5lIGludCB4ZnJtNF9wb2xpY3lfY2hlY2tfcmV2ZXJzZShzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEzNDEte1xuaW5jbHVkZS9uZXQveGZybS5oOjEzNDI6XHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBBRl9JTkVULCAxKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzQzLX1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTM0NT1zdGF0aWMgaW5saW5lIGludCB4ZnJtNl9wb2xpY3lfY2hlY2tfcmV2ZXJzZShzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEzNDcte1xuaW5jbHVkZS9uZXQveGZybS5oOjEzNDg6XHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBBRl9JTkVUNiwgMSk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTM0OS19XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjQ4PWRzdF9lbnRyeSAqeGZybV9vdXRfZndkX2ljbXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NzYtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM2Nzc6aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjc4LVx0XHRcdHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM4MzMtXHRcdFx0LyogVGhpcyBwb2xpY3kgdGVtcGxhdGUgd2FzIGFscmVhZHkgY2hlY2tlZCBieSBIV1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzozODM0Olx0XHRcdCAqIGFuZCBzZWNwYXRoIHdhcyByZW1vdmVkIGluIF9feGZybV9wb2xpY3lfY2hlY2syLlxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODM1LVx0XHRcdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg3Ni19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4Nzc6RVhQT1JUX1NZTUJPTChfX3hmcm1fcG9saWN5X2NoZWNrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk0OAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipLZXJuZWwgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlIERlZXAgRGl2ZTogQSBRdWljayBDcm9zcy1SZWZlcmVuY2UgUXVlcnkqKgoKT2theSwgc28gYF9feGZybV9wb2xpY3lfY2hlY2tgIGlzIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdzsgaXQgY29uZmlybXMgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgWEZSTSBwb2xpY3kgZW5mb3JjZW1lbnQgaXMgbWFkZSBhdmFpbGFibGUsIGxpa2VseSBmb3IgdXNlIGJ5IG90aGVyIG1vZHVsZXMgbmVlZGluZyB0byB2YWxpZGF0ZSB0cmFmZmljIGFnYWluc3QgYSBjb25maWd1cmVkIHBvbGljeS4gQnV0IGl0IHJhaXNlcyBhIGZsYWc6IGlmICp0aGF0KiBpcyBleHBvcnRlZCwgdGhlbiB3aGF0JiMzOTtzIHRoZSBkZWFsIHdpdGggYHhmcm1fbG9va3VwYD8KCkkgbmVlZCB0byBjb25maXJtIGlmIGB4ZnJtX2xvb2t1cGAgaGFzIGEgc2ltaWxhciBleHRlcm5hbCBhY2Nlc3NpYmlsaXR5LCBvciBpcyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIGB4ZnJtX2xvb2t1cGAgaXMgY3JpdGljYWwgZm9yLCBmcm9tIG1lbW9yeSwgcmVzb2x2aW5nIHRoZSBTQSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmFmZmljIGZsb3cuIElmIGl0ICppcyogYWNjZXNzaWJsZSwgdGhlcmUgY291bGQgYmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zIGZvciB0aGUgd2F5IHRoaXJkLXBhcnR5IG1vZHVsZXMgY291bGQgcG90ZW50aWFsbHkgaG9vayBpbnRvIG9yIGludGVyYWN0IHdpdGggdGhlIGNvcmUgWEZSTSBsb29rdXAgbWVjaGFuaXNtLiBJZiBpdCYjMzk7cyAqbm90KiBleHBvcnRlZCwgdGhlbiB0aGUgaW50ZW50IGNvdWxkIGJlIHRpZ2h0ZXIgY29udHJvbCBvdmVyIHRoZSBmdW5kYW1lbnRhbCBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgU0Egc2VsZWN0aW9uLiBUaGUgZXhwb3J0IChvciBsYWNrIHRoZXJlb2YpIG9mIGB4ZnJtX2xvb2t1cGAgd2lsbCBiZSBhbiBpbXBvcnRhbnQgZGF0YSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGRlc2lnbiBwaGlsb3NvcGh5IG9uIGZsZXhpYmlsaXR5IHZlcnN1cyBzZWN1cml0eSBhbmQgaXNvbGF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uIGZvciBpdHMgdmlzaWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9sb29rdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvZHN0Lmg9NDg4PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NoZWNrKHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgdTMyIGNvb2tpZSlcbi0tXG5pbmNsdWRlL25ldC9kc3QuaC00OTUtXG5pbmNsdWRlL25ldC9kc3QuaDo0OTY6LyogRmxhZ3MgZm9yIHhmcm1fbG9va3VwIGZsYWdzIGFyZ3VtZW50LiAqL1xuaW5jbHVkZS9uZXQvZHN0LmgtNDk3LWVudW0ge1xuLS1cbmluY2x1ZGUvbmV0L2RzdC5oPTUwMz1zdHJ1Y3QgZmxvd2k7XG5pbmNsdWRlL25ldC9kc3QuaC01MDQtI2lmbmRlZiBDT05GSUdfWEZSTVxuaW5jbHVkZS9uZXQvZHN0Lmg6NTA1OnN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuaW5jbHVkZS9uZXQvZHN0LmgtNTA2LVx0XHRcdFx0XHQgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXG4tLVxuaW5jbHVkZS9uZXQvZHN0Lmg9NTE0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqXG5pbmNsdWRlL25ldC9kc3QuaDo1MTU6eGZybV9sb29rdXBfd2l0aF9pZmlkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXG5pbmNsdWRlL25ldC9kc3QuaC01MTYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL25ldC9kc3QuaC01MjEtXG5pbmNsdWRlL25ldC9kc3QuaDo1MjI6c3RhdGljIGlubGluZSBzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsXG5pbmNsdWRlL25ldC9kc3QuaC01MjMtXHRcdFx0XHRcdFx0ICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbi0tXG5pbmNsdWRlL25ldC9kc3QuaD01MzE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeGZybV9zdGF0ZSAqZHN0X3hmcm0oY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxuLS1cbmluY2x1ZGUvbmV0L2RzdC5oLTUzNi0jZWxzZVxuaW5jbHVkZS9uZXQvZHN0Lmg6NTM3OnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXG5pbmNsdWRlL25ldC9kc3QuaC01MzgtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbmluY2x1ZGUvbmV0L2RzdC5oLTU0MC1cbmluY2x1ZGUvbmV0L2RzdC5oOjU0MTpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF93aXRoX2lmaWQoc3RydWN0IG5ldCAqbmV0LFxuaW5jbHVkZS9uZXQvZHN0LmgtNTQyLVx0XHRcdFx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbi0tXG5pbmNsdWRlL25ldC9kc3QuaC01NDYtXG5pbmNsdWRlL25ldC9kc3QuaDo1NDc6c3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbmluY2x1ZGUvbmV0L2RzdC5oLTU0OC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaWNtcC5jPTQ5ND1zdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4tLVxubmV0L2lwdjQvaWNtcC5jLTUyNi1cbm5ldC9pcHY0L2ljbXAuYzo1Mjc6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIFx1MDAyNnJ0LVx1MDAzZWRzdCxcbm5ldC9pcHY0L2ljbXAuYy01MjgtXHRcdFx0ICBmbG93aTRfdG9fZmxvd2koZmw0KSwgTlVMTCwgMCk7XG4tLVxubmV0L2lwdjQvaWNtcC5jLTYwMS1cbm5ldC9pcHY0L2ljbXAuYzo2MDI6XHRkc3QyID0geGZybV9sb29rdXAobmV0LCBcdTAwMjZydDItXHUwMDNlZHN0LCBmbG93aTRfdG9fZmxvd2koXHUwMDI2Zmw0X2RlYyksIE5VTEwsXG5uZXQvaXB2NC9pY21wLmMtNjAzLVx0XHRcdCAgIFhGUk1fTE9PS1VQX0lDTVApO1xuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jPTE2OT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnRpX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF92dGkuYy0yMTYtXHRkc3RfaG9sZChkc3QpO1xubmV0L2lwdjQvaXBfdnRpLmM6MjE3Olx0ZHN0ID0geGZybV9sb29rdXBfcm91dGUodHVubmVsLVx1MDAzZW5ldCwgZHN0LCBmbCwgTlVMTCwgMCk7XG5uZXQvaXB2NC9pcF92dGkuYy0yMTgtXHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYz0yMj1pbnQgaXBfcm91dGVfbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgYWRkcl90eXBlKVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci5jLTY4LVx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7XG5uZXQvaXB2NC9uZXRmaWx0ZXIuYzo2OTpcdFx0LyogaWdub3JlIHJldHVybiB2YWx1ZSBmcm9tIHNrYl9kc3RyZWZfc3RlYWwsIHhmcm1fbG9va3VwIHRha2VzXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYy03MC1cdFx0ICogY2FyZSBvZiBkcm9wcGluZyB0aGUgcmVmY250IGlmIG5lZWRlZC5cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYy03Mi1cdFx0c2tiX2RzdHJlZl9zdGVhbChza2IpO1xubmV0L2lwdjQvbmV0ZmlsdGVyLmM6NzM6XHRcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTRfdG9fZmxvd2koXHUwMDI2Zmw0KSwgc2ssIDApO1xubmV0L2lwdjQvbmV0ZmlsdGVyLmMtNzQtXHRcdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jPTI5NTg9c3RydWN0IHJ0YWJsZSAqaXBfcm91dGVfb3V0cHV0X2Zsb3coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbHA0LFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtMjk2Ny1cdFx0ZmxwNC1cdTAwM2VmbG93aTRfb2lmID0gcnQtXHUwMDNlZHN0LmRldi1cdTAwM2VpZmluZGV4O1xubmV0L2lwdjQvcm91dGUuYzoyOTY4Olx0XHRydCA9IGRzdF9ydGFibGUoeGZybV9sb29rdXBfcm91dGUobmV0LCBcdTAwMjZydC1cdTAwM2Vkc3QsXG5uZXQvaXB2NC9yb3V0ZS5jLTI5NjktXHRcdFx0XHRcdFx0ICBmbG93aTRfdG9fZmxvd2koZmxwNCksXG4tLVxubmV0L2lwdjYvaWNtcC5jPTM1ND1zdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqaWNtcHY2X3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2lwdjYvaWNtcC5jLTM4MC1cbm5ldC9pcHY2L2ljbXAuYzozODE6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIHNrLCAwKTtcbm5ldC9pcHY2L2ljbXAuYy0zODItXHRpZiAoIUlTX0VSUihkc3QpKSB7XG4tLVxubmV0L2lwdjYvaWNtcC5jLTM5OS1cbm5ldC9pcHY2L2ljbXAuYzo0MDA6XHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QyLCBmbG93aTZfdG9fZmxvd2koXHUwMDI2ZmwyKSwgc2ssIFhGUk1fTE9PS1VQX0lDTVApO1xubmV0L2lwdjYvaWNtcC5jLTQwMS1cdGlmICghSVNfRVJSKGRzdDIpKSB7XG4tLVxubmV0L2lwdjYvaWNtcC5jPTkyMT1zdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gaWNtcHY2X2VjaG9fcmVwbHkoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9pY21wLmMtOTkxLVx0XHRnb3RvIG91dDtcbm5ldC9pcHY2L2ljbXAuYzo5OTI6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIHNrLCAwKTtcbm5ldC9pcHY2L2ljbXAuYy05OTMtXHRpZiAoSVNfRVJSKGRzdCkpXG4tLVxubmV0L2lwdjYvaWxhL2lsYV9sd3QuYz0zOD1zdGF0aWMgaW50IGlsYV9vdXRwdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvaWxhL2lsYV9sd3QuYy04NC1cbm5ldC9pcHY2L2lsYS9pbGFfbHd0LmM6ODU6XHRcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXHUwMDI2Zmw2KSwgTlVMTCwgMCk7XG5uZXQvaXB2Ni9pbGEvaWxhX2x3dC5jLTg2LVx0XHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTI4NT1zdHJ1Y3QgZHN0X2VudHJ5ICppcDZfZHN0X2xvb2t1cF9mbG93KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmxvd2k2ICpmbDYsXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jLTEyOTgtXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTI5OTpcdHJldHVybiB4ZnJtX2xvb2t1cF9yb3V0ZShuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIHNrLCAwKTtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xMzAwLX1cbi0tXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmM9MTEwMD1pbnQgaXA2X3RubF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fdTggZHNmaWVsZCxcbi0tXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTE4My1cdFx0XHRnb3RvIHR4X2Vycl9saW5rX2ZhaWx1cmU7XG5uZXQvaXB2Ni9pcDZfdHVubmVsLmM6MTE4NDpcdFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBOVUxMLCAwKTtcbm5ldC9pcHY2L2lwNl90dW5uZWwuYy0xMTg1LVx0XHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmM9NDEzPXN0YXRpYyBib29sIHZ0aTZfc3RhdGVfY2hlY2soY29uc3Qgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4tLVxubmV0L2lwdjYvaXA2X3Z0aS5jLTQzOS0gKiAgIEBkZXY6IHRoZSBvdXRnb2luZyB0dW5uZWwgZGV2aWNlXG5uZXQvaXB2Ni9pcDZfdnRpLmM6NDQwOiAqICAgQGZsOiB0aGUgZmxvdyBpbmZvcm1hdGlvbnMgZm9yIHRoZSB4ZnJtX2xvb2t1cFxubmV0L2lwdjYvaXA2X3Z0aS5jLTQ0MS0gKiovXG4tLVxubmV0L2lwdjYvaXA2X3Z0aS5jPTQ0Mz12dGk2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGZsb3dpICpmbClcbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmMtNDgzLVx0ZHN0X2hvbGQoZHN0KTtcbm5ldC9pcHY2L2lwNl92dGkuYzo0ODQ6XHRkc3QgPSB4ZnJtX2xvb2t1cF9yb3V0ZSh0LVx1MDAzZW5ldCwgZHN0LCBmbCwgTlVMTCwgMCk7XG5uZXQvaXB2Ni9pcDZfdnRpLmMtNDg1LVx0aWYgKElTX0VSUihkc3QpKSB7XG4tLVxubmV0L2lwdjYvbmRpc2MuYz0xNjU4PXZvaWQgbmRpc2Nfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnRhcmdldClcbi0tXG5uZXQvaXB2Ni9uZGlzYy5jLTE3MDAtXHR9XG5uZXQvaXB2Ni9uZGlzYy5jOjE3MDE6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIE5VTEwsIDApO1xubmV0L2lwdjYvbmRpc2MuYy0xNzAyLVx0aWYgKElTX0VSUihkc3QpKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci5jPTI0PWludCBpcDZfcm91dGVfbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrX3BhcnRpYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNjYtXHQgICAgeGZybV9kZWNvZGVfc2Vzc2lvbihuZXQsIHNrYiwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIEFGX0lORVQ2KSA9PSAwKSB7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzo2NzpcdFx0LyogaWdub3JlIHJldHVybiB2YWx1ZSBmcm9tIHNrYl9kc3RyZWZfc3RlYWwsIHhmcm1fbG9va3VwIHRha2VzXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy02OC1cdFx0ICogY2FyZSBvZiBkcm9wcGluZyB0aGUgcmVmY250IGlmIG5lZWRlZC5cbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy03MC1cdFx0c2tiX2RzdHJlZl9zdGVhbChza2IpO1xubmV0L2lwdjYvbmV0ZmlsdGVyLmM6NzE6XHRcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXHUwMDI2Zmw2KSwgc2ssIDApO1xubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNzItXHRcdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz0zMTM9dm9pZCBuZl9zZW5kX3Jlc2V0NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYy0zNTctXHR9XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzozNTg6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIE5VTEwsIDApO1xubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtMzU5LVx0aWYgKElTX0VSUihkc3QpKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9MzMzNT1zdHJ1Y3QgZHN0X2VudHJ5ICppY21wNl9kc3RfYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTMzNjUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjMzNjY6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIE5VTEwsIDApO1xubmV0L2lwdjYvcm91dGUuYy0zMzY3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NDQ5PV9faXBfdnNfcm91dGVfb3V0cHV0X3Y2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGluNl9hZGRyICpkYWRkcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ2OS1cdGlmIChkb194ZnJtKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjQ3MDpcdFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShcdTAwMjZmbDYpLCBOVUxMLCAwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNDcxLVx0XHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jPTYwMT1zdGF0aWMgaW50IG5mX3hmcm1fbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGZhbWlseSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jLTYyMS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3Byb3RvLmM6NjIyOlx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIFx1MDAyNmZsLCBzaywgMCk7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jLTYyMy1cdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3N5bnByb3h5X2NvcmUuYz04MjI9c3lucHJveHlfc2VuZF90Y3BfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmMtODQ5LVxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmM6ODUwOlx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShcdTAwMjZmbDYpLCBOVUxMLCAwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfc3lucHJveHlfY29yZS5jLTg1MS1cdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM9NDI0PXhmcm1pX3htaXQyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBmbG93aSAqZmwpXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTQ1NS1cdGRzdF9ob2xkKGRzdCk7XG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM6NDU2Olx0ZHN0ID0geGZybV9sb29rdXBfd2l0aF9pZmlkKHhpLVx1MDAzZW5ldCwgZHN0LCBmbCwgTlVMTCwgMCwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTQ1Ny1cdGlmIChJU19FUlIoZHN0KSkge1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9Mjg5Nz1zdGF0aWMgdm9pZCB4ZnJtX3BvbGljeV9xdWV1ZV9wcm9jZXNzKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjkyNS1cdGRzdF9ob2xkKHhmcm1fZHN0X3BhdGgoZHN0KSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjI5MjY6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIHhmcm1fZHN0X3BhdGgoZHN0KSwgXHUwMDI2ZmwsIHNrLCBYRlJNX0xPT0tVUF9RVUVVRSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5MjctXHRpZiAoSVNfRVJSKGRzdCkpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTYwLVx0XHRkc3RfaG9sZCh4ZnJtX2RzdF9wYXRoKHNrYl9kc3Qoc2tiKSkpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyOTYxOlx0XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIHhmcm1fZHN0X3BhdGgoc2tiX2RzdChza2IpKSwgXHUwMDI2ZmwsIHNrYi1cdTAwM2VzaywgMCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5NjItXHRcdGlmIChJU19FUlIoZHN0KSkge1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE0OD1zdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqbWFrZV9ibGFja2hvbGUoc3RydWN0IG5ldCAqbmV0LCB1MTYgZmFtaWx5LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzE2OS0gKlxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTcwOiAqIHhmcm1fbG9va3VwIHVzZXMgYW4gaWZfaWQgb2YgMCBieSBkZWZhdWx0LCBhbmQgaXMgcHJvdmlkZWQgZm9yXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMxNzEtICogY29tcGF0aWJpbGl0eVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTcyLSAqL1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTczOnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMxNzQtXHRcdFx0XHRcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMyNS19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMjY6RVhQT1JUX1NZTUJPTCh4ZnJtX2xvb2t1cF93aXRoX2lmaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzI3LVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMzMi0gKi9cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzMzMzpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzM0LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzMzYte1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzM3Olx0cmV0dXJuIHhmcm1fbG9va3VwX3dpdGhfaWZpZChuZXQsIGRzdF9vcmlnLCBmbCwgc2ssIGZsYWdzLCAwKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMzOC19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMzk6RVhQT1JUX1NZTUJPTCh4ZnJtX2xvb2t1cCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDAtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDE6LyogQ2FsbGVycyBvZiB4ZnJtX2xvb2t1cF9yb3V0ZSgpIG11c3QgZW5zdXJlIGEgY2FsbCB0byBkc3Rfb3V0cHV0KCkuXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDItICogT3RoZXJ3aXNlIHdlIG1heSBzZW5kIG91dCBibGFja2hvbGVkIHBhY2tldHMuXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDMtICovXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDQ6c3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0NS1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0Ny17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDg6XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdF9vcmlnLCBmbCwgc2ssXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDktXHRcdFx0XHRcdCAgICBmbGFncyB8IFhGUk1fTE9PS1VQX1FVRVVFIHxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNTktfVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzYwOkVYUE9SVF9TWU1CT0woeGZybV9sb29rdXBfcm91dGUpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzYxLVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzY0OD1kc3RfZW50cnkgKnhmcm1fb3V0X2Z3ZF9pY21wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aSAqZmwsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjYwLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozNjYxOlx0XHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QsIFx1MDAyNmZsMSwgTlVMTCwgKFhGUk1fTE9PS1VQX1FVRVVFIHwgWEZSTV9MT09LVVBfSUNNUCkpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjYyLVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9Mzg3OT1pbnQgX194ZnJtX3JvdXRlX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg5Ny1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzg5ODpcdC8qIGlnbm9yZSByZXR1cm4gdmFsdWUgZnJvbSBza2JfZHN0cmVmX3N0ZWFsLCB4ZnJtX2xvb2t1cCB0YWtlc1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODk5LVx0ICogY2FyZSBvZiBkcm9wcGluZyB0aGUgcmVmY250IGlmIG5lZWRlZC5cbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM5MDItXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM5MDM6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgXHUwMDI2ZmwsIE5VTEwsIFhGUk1fTE9PS1VQX1FVRVVFKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzkwNC1cdGlmIChJU19FUlIoZHN0KSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM0MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBYRlJNIFBvbGljeSBMb29rdXAgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIFhGUk0gcG9saWN5IGxvb2t1cHMuIEZvciBvdXRnb2luZyBwYWNrZXRzLCB0aGUgaGVhdnkgbGlmdGVycyBhcmUgY2xlYXJseSBgeGZybV9sb29rdXBgIGFuZCBgeGZybV9sb29rdXBfcm91dGVgLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYmUga2VlcGluZyBhIGNsb3NlIGV5ZSBvbi4gQW5kIGZvciBpbmNvbWluZyBwYWNrZXRzLCBpdCYjMzk7cyBhbGwgYWJvdXQgYF9feGZybV9wb2xpY3lfY2hlY2tgLiBUaG9zZSB0aHJlZSBmdW5jdGlvbnMsIGB4ZnJtX2xvb2t1cGAsIGB4ZnJtX2xvb2t1cF9yb3V0ZWAsIGFuZCBgX194ZnJtX3BvbGljeV9jaGVja2AsIGFyZSBkZWZpbml0ZWx5IHRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2xzIGhlcmUuCgpJIGFsc28gc2VlIHRoYXQgYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgIHdhcyB0aGUgZnVuY3Rpb24gdGhhdCBzYXcgc29tZSBtb2RpZmljYXRpb24sIGJ1dCBpdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIG1lIGN1cmlvdXMuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaWcgaW4gYSBiaXQgZGVlcGVyIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgaW5saW5lZC4gU3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreSB0byBhbmFseXplIGRpcmVjdGx5LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyJiMzOTtzIG9wdGltaXphdGlvbiBzdHJhdGVneS4gU28sIGNoZWNraW5nIGZvciBpbmxpbmluZyBpcyB0aGUgbmV4dCBzdGVwIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBsb29rdXAgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTIxMjc9eGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2NhbmRpZGF0ZXMgKmNhbmQsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTQ5LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMTUwOnN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVx0XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTIyMjU9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzEtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzI6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9TVUIsIGZsLCBmYW1pbHksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzMtXHRcdFx0XHRcdGRpciwgaWZfaWQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzNi0jZW5kaWZcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzNzpcdHJldHVybiB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLCBmbCwgZmFtaWx5LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM4LVx0XHRcdFx0XHQgZGlyLCBpZl9pZCk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzEtXHQgICAgcG9sc1swXS1cdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyODMyOlx0XHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzMtXHRcdFx0XHRcdFx0ICAgIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzc4Mi1cdGlmIChwb2xzWzBdLVx1MDAzZXR5cGUgIT0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOKSB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3ODM6XHRcdHBvbHNbMV0gPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzg0LVx0XHRcdFx0XHRcdCAgICBcdTAwMjZmbCwgZmFtaWx5LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQ5NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ1MjktXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ1MzA6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXHUwMDI2ZmwsIHNlbC1cdTAwM2VmYW1pbHksIGRpciwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVx0aWYgKElTX0VSUl9PUl9OVUxMKHBvbCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTQ3CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBjb21waWxlciAqbWlnaHQqIGJlIGlubGluaW5nIHNvbWUgZnVuY3Rpb25zIGhlcmUsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIG5vdCBleHBsaWNpdGx5IG1hcmtlZCB0aGF0IHdheS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBpbmNsdWRlIGB4ZnJtX2xvb2t1cGAsIGB4ZnJtX2xvb2t1cF9yb3V0ZWAsIGBfX3hmcm1fcG9saWN5X2NoZWNrYCwgYW5kIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBhcHByb2FjaCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBpbmxpbmluZy4KCkFuZCBvZiBjb3Vyc2UsIHdlIG5lZWQgdG8gaGF2ZSBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgIGNvbmZpZ3VyZWQgdG8gcnVuIHRoZXNlIHN5bWJvbHMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBzZWUgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IGFzIHdlbGwuIFRoZSBjb2RlIGl0c2VsZiBpcyBsb2NhdGVkIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCwgc28gSSBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIHNvdXJjZS4KCkxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0b3VjaGluZyBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgYWltZWQgYXQgcmVzb2x2aW5nIGEgcmFjZSBjb25kaXRpb24gdGhhdCBwb3BzIHVwIHdoZW4gd2UmIzM5O3JlIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQgaW1wYWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbS4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdG8gaGVscCBjb25maXJtIHRoZSBmaXguCgpGaW5hbGx5LCBJJiMzOTtsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBtYWtlIHRoZSByZXN1bHRzIGNsZWFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2xvb2t1cCYjMzQ7LAogICAgJiMzNDt4ZnJtX2xvb2t1cF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtfX3hmcm1fcG9saWN5X2NoZWNrJiMzNDssCiAgICAmIzM0O3hmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBYRlJNIHBvbGljeSBsb29rdXAgYnkgYWRkaW5nIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aGVuIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBYRlJNIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fbG9va3VwJiMzNDssCiAgICAmIzM0O3hmcm1fbG9va3VwX3JvdXRlJiMzNDssCiAgICAmIzM0O19feGZybV9wb2xpY3lfY2hlY2smIzM0OywKICAgICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFhGUk0gcG9saWN5IGxvb2t1cCBieSBhZGRpbmcgYSBzZXF1ZW5jZSBjb3VudGVyIGNoZWNrIHdoZW4gZXZhbHVhdGluZyBpbmV4YWN0IGNhbmRpZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFhGUk0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNlcXVlbmNlIGNvdW50ZXIgcmV0cnkgbG9vcCAoYHJlYWRfc2VxY291bnRfYmVnaW5gIGFuZCBgcmVhZF9zZXFjb3VudF9yZXRyeWApIGFyb3VuZCBgeGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXNgIGFuZCBgeGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzYCB0byBmaXggYSBjb25jdXJyZW5jeSBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gbGVhZGluZyB0byBpbmNvbnNpc3RlbnQgc3RhdGUgb3IgdXNlLWFmdGVyLWZyZWUpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzE2MmU2MzA2ZDFhZTk4OGYxNWJjMjFhYjgxYTYzYzdlZjcwN2NlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDE4OjA4OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jCkBAIC0yMTU3LDYgJiM0MzsyMTU3LDcgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsCiAJc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfYmluICpiaW47CiAJc3RydWN0IHhmcm1fcG9saWN5ICpwb2wsICpyZXQ7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmNoYWluOwomIzQzOwl1bnNpZ25lZCBpbnQgaW5leGFjdF9zZXF1ZW5jZTsKIAl1bnNpZ25lZCBpbnQgc2VxdWVuY2U7CiAJaW50IGVycjsKIApAQCAtMjE5MSwxMiAmIzQzOzIxOTIsMTggQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsCiAJCWdvdG8gc2tpcF9pbmV4YWN0OwogCiAJYmluID0geGZybV9wb2xpY3lfaW5leGFjdF9sb29rdXBfcmN1KG5ldCwgdHlwZSwgZmFtaWx5LCBkaXIsIGlmX2lkKTsKLQlpZiAoIWJpbiB8fCAheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoJmFtcDtjYW5kLCBiaW4sIHNhZGRyLAotCQkJCQkJCSBkYWRkcikpCiYjNDM7CWlmICghYmluKQomIzQzOwkJZ290byBza2lwX2luZXhhY3Q7CiYjNDM7CiYjNDM7CWluZXhhY3Rfc2VxdWVuY2UgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7YmluLSZndDtjb3VudCk7CiYjNDM7CWlmICgheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoJmFtcDtjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpCiAJCWdvdG8gc2tpcF9pbmV4YWN0OwogCiAJcG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKCZhbXA7Y2FuZCwgcmV0LCBmbCwgdHlwZSwKIAkJCQkJICBmYW1pbHksIGlmX2lkKTsKJiM0MzsJaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJmFtcDtiaW4tJmd0O2NvdW50LCBpbmV4YWN0X3NlcXVlbmNlKSkKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CiAJaWYgKHBvbCkgewogCQlyZXQgPSBwb2w7CiAJCWlmIChJU19FUlIocG9sKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjkKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogNjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgRml4IGluIHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYSBzZXFsb2NrIHJldHJ5IGxvb3AgYXJvdW5kIHRoZSBpbmV4YWN0IHBvbGljeSBsb29rdXAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBhZGRpbmcgYW4gYHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlYCB2YXJpYWJsZSBhbmQgdXNpbmcgYHJlYWRfc2VxY291bnRfYmVnaW5gIGFuZCBgcmVhZF9zZXFjb3VudF9yZXRyeWAgYXJvdW5kIHRoZSBjYWxscyB0byBgeGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXNgIGFuZCBgeGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzYC4KCkVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBkb2luZyB0aGlzOiBmaXJzdCwgYWNxdWlyZSB0aGUgc2VxdWVuY2UgbnVtYmVyLiBUaGVuLCBmaW5kIHRoZSBjYW5kaWRhdGVzLiBOZXh0LCBldmFsdWF0ZSB0aG9zZSBjYW5kaWRhdGVzLiBGaW5hbGx5LCByZXRyeSBpZiB0aGUgc2VxdWVuY2UgbnVtYmVyIGhhcyBjaGFuZ2VkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgY29uY3VycmVuY3kgZml4LiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IGRlc2lnbmVkIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgdGhlIGxvb2t1cCwgd2hpY2ggY291bGQgbGVhZCB0byBlaXRoZXIgYW4gaW5jb3JyZWN0IHBvbGljeSBiZWluZyBjaG9zZW4gb3IsIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB0aGluZ3MgZ28gcmVhbGx5IHdyb25nLiBUaGUgdXNlIG9mIHRoZSBzZXFsb2NrIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQuCgpOb3csIEkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUgYXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQmIzM5O3Mgc2VlLi4uIGBpbmV4YWN0X3NlcXVlbmNlYCBnZXRzIGluaXRpYWxpemVkIGJ5IGByZWFkX3NlcWNvdW50X2JlZ2luYC4gU28gbm8uIE5vIGlzc3VlcyB0aGVyZS4gVGhlIGBjYW5kYCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkIHdpdGhpbiB0aGUgbG9vcC4gTm90aGluZyBJIHNlZSBzdWdnZXN0cyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXhwb3NlZC4KCkxldCYjMzk7cyBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkYXRhIGZsb3cuIGBjYW5kYCBpcyBwYXNzZWQgdG8gdGhlIHR3byBjb3JlIGZ1bmN0aW9ucy4gSWYgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCByZXR1cm5zIGZhbHNlLCB3ZSBnbyB0byBgc2tpcF9pbmV4YWN0YC4gT3RoZXJ3aXNlLCBpdCAqZG9lcyogZmluZCBjYW5kaWRhdGVzLCB0aGVuIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGVtLiBJZiBhIHJldHJ5IGlzIG5lZWRlZCwgd2UgbG9vcC4KClNvIHRoZSBtYWluIGNvbmNlcm4gaGVyZSBzZWVtcyB0byBiZSB0aGUgY29uY3VycmVuY3ksIGxpa2VseSB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IHBvbGljeSBldmFsdWF0aW9uIG9yIGV2ZW4gYSBVQUYuIFRob3NlIGtpbmRzIG9mIGlzc3VlcyBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgS0FTQU4gb3IsIGxlc3MgZHJhbWF0aWNhbGx5LCBsb2dpYyBidWdzLiBLTVNBTiBpc24mIzM5O3QgcmVsZXZhbnQgaGVyZSwgYXMgdGhlcmUgaXNuJiMzOTt0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB3b3JyeSBhYm91dC4KClllcCwgdGhpcyBsb29rcyBzb2xpZC4gSSYjMzk7bSBzZXR0aW5nIE5lZWRzS01TQU49ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzZXF1ZW5jZSBjb3VudGVyIHJldHJ5IGxvb3AgKGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgKSBhcm91bmQgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AgdG8gZml4IGEgY29uY3VycmVuY3kgaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHN0YXRlIG9yIHVzZS1hZnRlci1mcmVlKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2VxdWVuY2UgY291bnRlciByZXRyeSBsb29wIChgcmVhZF9zZXFjb3VudF9iZWdpbmAgYW5kIGByZWFkX3NlcWNvdW50X3JldHJ5YCkgYXJvdW5kIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgYW5kIGB4ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXNgIHRvIGZpeCBhIGNvbmN1cnJlbmN5IGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBsZWFkaW5nIHRvIGluY29uc2lzdGVudCBzdGF0ZSBvciB1c2UtYWZ0ZXItZnJlZSkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODowODozOS40NTg2Nzg4OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzg4NDMyNTY4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9sb29rdXBcIixcbiAgICBcInhmcm1fbG9va3VwX3JvdXRlXCIsXG4gICAgXCJfX3hmcm1fcG9saWN5X2NoZWNrXCIsXG4gICAgXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2VxdWVuY2UgY291bnRlciByZXRyeSBsb29wIChgcmVhZF9zZXFjb3VudF9iZWdpbmAgYW5kIGByZWFkX3NlcWNvdW50X3JldHJ5YCkgYXJvdW5kIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgYW5kIGB4ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXNgIHRvIGZpeCBhIGNvbmN1cnJlbmN5IGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBsZWFkaW5nIHRvIGluY29uc2lzdGVudCBzdGF0ZSBvciB1c2UtYWZ0ZXItZnJlZSkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MDg6MzkuNDU4Njg2MjM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzc2NjUyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MTYyZTYzMDZkMWFlOTg4ZjE1YmMyMWFiODFhNjNjN2VmNzA3Y2U3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDI0IDE4OjA4OjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDRcXG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xcbkBAIC0yMTU3LDYgKzIxNTcsNyBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcXG4gXFx0c3RydWN0IHhmcm1fcG9sX2luZXhhY3RfYmluICpiaW47XFxuIFxcdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLCAqcmV0O1xcbiBcXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqY2hhaW47XFxuK1xcdHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlO1xcbiBcXHR1bnNpZ25lZCBpbnQgc2VxdWVuY2U7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0yMTkxLDEyICsyMTkyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxcbiBcXHRcXHRnb3RvIHNraXBfaW5leGFjdDtcXG4gXFxuIFxcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfbG9va3VwX3JjdShuZXQsIHR5cGUsIGZhbWlseSwgZGlyLCBpZl9pZCk7XFxuLVxcdGlmICghYmluIHx8ICF4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlcyhcXHUwMDI2Y2FuZCwgYmluLCBzYWRkcixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0IGRhZGRyKSlcXG4rXFx0aWYgKCFiaW4pXFxuK1xcdFxcdGdvdG8gc2tpcF9pbmV4YWN0O1xcbitcXG4rXFx0aW5leGFjdF9zZXF1ZW5jZSA9IHJlYWRfc2VxY291bnRfYmVnaW4oXFx1MDAyNmJpbi1cXHUwMDNlY291bnQpO1xcbitcXHRpZiAoIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKFxcdTAwMjZjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpXFxuIFxcdFxcdGdvdG8gc2tpcF9pbmV4YWN0O1xcbiBcXG4gXFx0cG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKFxcdTAwMjZjYW5kLCByZXQsIGZsLCB0eXBlLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGZhbWlseSwgaWZfaWQpO1xcbitcXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcXHUwMDI2YmluLVxcdTAwM2Vjb3VudCwgaW5leGFjdF9zZXF1ZW5jZSkpXFxuK1xcdFxcdGdvdG8gcmV0cnk7XFxuK1xcbiBcXHRpZiAocG9sKSB7XFxuIFxcdFxcdHJldCA9IHBvbDtcXG4gXFx0XFx0aWYgKElTX0VSUihwb2wpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODowODozOS44OTcxMzUxMTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3Mzc5NTkwOTA5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9sb29rdXBcIixcbiAgICBcInhmcm1fbG9va3VwX3JvdXRlXCIsXG4gICAgXCJfX3hmcm1fcG9saWN5X2NoZWNrXCIsXG4gICAgXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBYRlJNIHBvbGljeSBsb29rdXAgYnkgYWRkaW5nIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aGVuIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBYRlJNIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MTYyZTYzMDZkMWFlOTg4ZjE1YmMyMWFiODFhNjNjN2VmNzA3Y2U3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTg6MDg6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbkBAIC0yMTU3LDYgKzIxNTcsNyBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbiBcdHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2JpbiAqYmluO1xuIFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2wsICpyZXQ7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqY2hhaW47XG4rXHR1bnNpZ25lZCBpbnQgaW5leGFjdF9zZXF1ZW5jZTtcbiBcdHVuc2lnbmVkIGludCBzZXF1ZW5jZTtcbiBcdGludCBlcnI7XG4gXG5AQCAtMjE5MSwxMiArMjE5MiwxOCBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbiBcdFx0Z290byBza2lwX2luZXhhY3Q7XG4gXG4gXHRiaW4gPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3UobmV0LCB0eXBlLCBmYW1pbHksIGRpciwgaWZfaWQpO1xuLVx0aWYgKCFiaW4gfHwgIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIGJpbiwgc2FkZHIsXG4tXHRcdFx0XHRcdFx0XHQgZGFkZHIpKVxuK1x0aWYgKCFiaW4pXG4rXHRcdGdvdG8gc2tpcF9pbmV4YWN0O1xuK1xuK1x0aW5leGFjdF9zZXF1ZW5jZSA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2YmluLVx1MDAzZWNvdW50KTtcbitcdGlmICgheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoXHUwMDI2Y2FuZCwgYmluLCBzYWRkciwgZGFkZHIpKVxuIFx0XHRnb3RvIHNraXBfaW5leGFjdDtcbiBcbiBcdHBvbCA9IHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcyhcdTAwMjZjYW5kLCByZXQsIGZsLCB0eXBlLFxuIFx0XHRcdFx0XHQgIGZhbWlseSwgaWZfaWQpO1xuK1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2YmluLVx1MDAzZWNvdW50LCBpbmV4YWN0X3NlcXVlbmNlKSlcbitcdFx0Z290byByZXRyeTtcbitcbiBcdGlmIChwb2wpIHtcbiBcdFx0cmV0ID0gcG9sO1xuIFx0XHRpZiAoSVNfRVJSKHBvbCkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODowODozOS44OTcxMzY2MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDEzNDM0NTgzMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYC4gSXQgc2VlbXMgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aXRoaW4gYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgLCBzcGVjaWZpY2FsbHkgd2hlbiBkZWFsaW5nIHdpdGggaW5leGFjdCBwb2xpY3kgY2FuZGlkYXRlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzOiB0aGV5J3JlIG5vdyByZWFkaW5nIGEgc2VxdWVuY2UgY291bnRlciBiZWZvcmUgYW5kIGFmdGVyIGNhbGxpbmcgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYC4gSWYgdGhlIGNvdW50ZXIgaGFzIGNoYW5nZWQgaW4gYmV0d2VlbiwgdGhleSdyZSByZXRyeWluZyB0aGUgbG9va3VwLiBUaGlzIGlzIGNsYXNzaWMgY29uY3VycmVuY3kgY29udHJvbCwgbGlrZWx5IHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiBvciBhIHNpbWlsYXIgaXNzdWUgd2hlcmUgdGhlIHBvbGljeSBkYXRhIGNvdWxkIGJlIG1vZGlmaWVkIG1pZC1sb29rdXAsIGxlYWRpbmcgdG8gaW5jb3JyZWN0IHJlc3VsdHMuXG5cblRoZSBrZXkgaGVyZSBpcyB0aGF0IGB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3VgIGlzIGJlaW5nIHVzZWQsIHNvIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgaXMgaW52b2x2ZWQuIFRoZSBzZXF1ZW5jZSBjb3VudGVyIGFkZHMgZnVydGhlciBwcm90ZWN0aW9uIHdpdGhpbiB0aGF0IFJDVSBjb250ZXh0IHRvIGltcHJvdmUgcmVsaWFiaWxpdHkuXG5cbk15IG5leHQgc3RlcHMgd291bGQgYmUgdG8gdmVyaWZ5IHRoaXMgY2hhbmdlJ3MgcmVhY2hhYmlsaXR5LiBJIG5lZWQgdG8gY29uZmlybSBpZiBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAgaXMgYWN0dWFsbHkgY2FsbGVkIHVuZGVyIGRpZmZlcmVudCBjb25kaXRpb25zLCBhbmQgYWxzbyB3aGljaCBDT05GSUcgb3B0aW9ucyBhcmUgbmVjZXNzYXJ5LiBUaGUgZnVuY3Rpb24gaXRzZWxmIGlzIGRlZmluZWQgaW4gYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLCBzbyB0aGF0J3Mgd2hlcmUgSSdsbCBzdGFydCBsb29raW5nLiBJJ2xsIHByb2JhYmx5IHVzZSBgZ3JlcHBlcmAgb3IgYSBzaW1pbGFyIHRvb2wgdG8gZmluZCBhbGwgY2FsbCBzaXRlcyBvZiB0aGUgZnVuY3Rpb24gdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIFRoZSBvdmVyYXJjaGluZyBgQ09ORklHX1hGUk1gIG9wdGlvbiBpcyBsaWtlbHkgdGhlIHByZXJlcXVpc2l0ZSwgYnV0IHRoZXJlIG1pZ2h0IGJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoaXMgc2VxdWVuY2UgY291bnRlciBpbXBsZW1lbnRhdGlvbiBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gncyBzaWduaWZpY2FuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoxMDoyMS4yNDA1OTgzMjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MzQ0MjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjEyNz14ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXMoc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfY2FuZGlkYXRlcyAqY2FuZCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE0OS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIxNTA6c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjIyNT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMxLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzMjpcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9TVUIsIGZsLCBmYW1pbHksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMzLVxcdFxcdFxcdFxcdFxcdGRpciwgaWZfaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM2LSNlbmRpZlxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzNzpcXHRyZXR1cm4geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTiwgZmwsIGZhbWlseSxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzgtXFx0XFx0XFx0XFx0XFx0IGRpciwgaWZfaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjgzMS1cXHQgICAgcG9sc1swXS1cXHUwMDNldHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX01BSU4pIHtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjI4MzI6XFx0XFx0cG9sc1sxXSA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoeHBfbmV0KHBvbHNbMF0pLFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjgzMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjc3PWludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzc4Mi1cXHRpZiAocG9sc1swXS1cXHUwMDNldHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX01BSU4pIHtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3ODM6XFx0XFx0cG9sc1sxXSA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX01BSU4sXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzg0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmwsIGZhbWlseSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQ5NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDUyOS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ1MzA6XFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIHR5cGUsIFxcdTAwMjZmbCwgc2VsLVxcdTAwM2VmYW1pbHksIGRpciwgaWZfaWQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDUzMS1cXHRpZiAoSVNfRVJSX09SX05VTEwocG9sKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTA6MjMuMTE0MDQ4MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTgxNjk4NTE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipEaWdnaW5nIGludG8gWEZSTSBQb2xpY3kgTG9va3VwIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgc2VlaW5nIGFzIGl0J3MgY2FsbGVkIGJ5IHRoZSBjb3JlIFhGUk0gcm91dGluZXM6IGB4ZnJtX3BvbGljeV9sb29rdXBgLCBgeGZybV9leHBhbmRfcG9saWNpZXNgLCB0aGUgcG9saWN5IGNoZWNrZXIgYF9feGZybV9wb2xpY3lfY2hlY2tgLCBhbmQgZXZlbiB0aGUgcG9saWN5IG1pZ3JhdGlvbiBjb2RlIGB4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmRgLiBUaGVzZSBhcmUgYWxsIGNlbnRyYWwgdG8gdGhlIFhGUk0gZnJhbWV3b3JrLiBHaXZlbiB0aGF0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgIHRvIGZpZ3VyZSBvdXQgd2hhdCBidWlsZCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IG9yIHJlbGV2YW50IGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gd29yayBjb3JyZWN0bHkuIEEgZGVlcCBkaXZlIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTQ6MDEuMjgzOTAyMDEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzI1NzU5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTQ6MDMuNTU2NDg2NDk2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNDM0MTI2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqWEZSTSBDb25maWd1cmF0aW9uIEhlYWRhY2hlcyoqXG5cbkFscmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFhGUk0gc2V0dXAsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfWEZSTWAgaXMgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudC4gQ2FuJ3QgcmVhbGx5IGRvIGFueXRoaW5nIFhGUk0tcmVsYXRlZCB3aXRob3V0IHRoYXQsIGl0IHNlZW1zLiBBbmQgdGhlbiwgdHlwaWNhbGx5LCB0byBtYW5hZ2UgdGhlc2UgcG9saWNpZXMsIEknbSBnb2luZyB0byB3YW50IHRvIGJlIGFibGUgdG8gY29uZmlndXJlIHRoaW5ncyBmcm9tIHVzZXIgc3BhY2UuIE1ha2VzIHRoaW5ncyBzbyBtdWNoIGVhc2llciBhbmQgbW9yZSBmbGV4aWJsZSwgcmlnaHQ/IFRoYXQgbWVhbnMgSSdsbCBuZWVkIGBDT05GSUdfWEZSTV9VU0VSYCBhcyB3ZWxsLiBBbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZW5hYmxlZC4gVGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyBpbiBgbmV0L3hmcm0vS2NvbmZpZ2AgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGdldCB0aGlzIHNldHVwIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjEyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTQ6MDcuODYwODI5NjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTU5MzY4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZy00LSNcXG5uZXQveGZybS9LY29uZmlnOjU6Y29uZmlnIFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTYtXFx0Ym9vbFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMC1cXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcXG5uZXQveGZybS9LY29uZmlnLTEyLVxcdGJvb2xcXG5uZXQveGZybS9LY29uZmlnLTEzLVxcbm5ldC94ZnJtL0tjb25maWc6MTQ6Y29uZmlnIFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTMxLVxcbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG5uZXQveGZybS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb21wYXRpYmxlIEFCSSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy00Mi1cXG5uZXQveGZybS9LY29uZmlnOjQzOmNvbmZpZyBYRlJNX0lOVEVSRkFDRVxcbm5ldC94ZnJtL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHZpcnR1YWwgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy01MC1cXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcXG5uZXQveGZybS9LY29uZmlnLTUyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNjAtXFxubmV0L3hmcm0vS2NvbmZpZzo2MTpjb25maWcgWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0vS2NvbmZpZy02Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy03MS1cXG5uZXQveGZybS9LY29uZmlnOjcyOmNvbmZpZyBYRlJNX1NUQVRJU1RJQ1NcXG5uZXQveGZybS9LY29uZmlnLTczLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIHN0YXRpc3RpY3NcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTgzLSMgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy05Mi0jIGFsZ29yaXRobXMgdGhhdCBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxcbm5ldC94ZnJtL0tjb25maWc6OTM6Y29uZmlnIFhGUk1fRVNQXFxubmV0L3hmcm0vS2NvbmZpZy05NC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXFxubmV0L3hmcm0vS2NvbmZpZzoxMDY6Y29uZmlnIFhGUk1fSVBDT01QXFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTQwLVxcbm5ldC94ZnJtL0tjb25maWc6MTQxOmNvbmZpZyBYRlJNX0lQVEZTXFxubmV0L3hmcm0vS2NvbmZpZy0xNDItXFx0dHJpc3RhdGUgXFxcIklQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xNTYtXFxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1BcXG5uZXQveGZybS9LY29uZmlnLTE1OC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjE0OjA5LjQ3Njc3MTgxNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODI3NzgyMTYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBYRlJNIFBvbGljeSBMb29rdXAqKlxuXG5Pa2F5LCBzbyBpZiBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHksIGBDT05GSUdfWEZSTV9VU0VSYCBpcyBlc3NlbnRpYWwgZm9yIGludGVyYWN0aW5nIHdpdGggWEZSTSBwb2xpY2llcyBmcm9tIHVzZXIgc3BhY2UuIE1ha2VzIHNlbnNlLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGhvbmluZyBpbiBvbiBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAuIERlZmluaXRlbHkgYSBwcm9taXNpbmcgdGFyZ2V0IGZvciBmdXp6aW5nIOKAkyByaWdodCB3aGVyZSBJIHdvdWxkIHN0YXJ0LiBJIHNob3VsZCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24ga2V5IHN5bWJvbHMgbGlrZSBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAsIGB4ZnJtX3BvbGljeV9sb29rdXBgLCBgeGZybV9leHBhbmRfcG9saWNpZXNgLCBhbmQgYF9feGZybV9wb2xpY3lfY2hlY2tgLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAgaXMgc3RhdGljLiBJIGhhZCBiZXR0ZXIgdGFrZSBhIGxvb2sgYXQgYHhmcm1fcG9saWN5X2xvb2t1cGAgdG8gc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6MjcuNzU0NTk2NDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDMyMDQ0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lfbG9va3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTQxMT1MU01fSE9PSyhpbnQsIDAsIHhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDo0MTI6TFNNX0hPT0soaW50LCAwLCB4ZnJtX3BvbGljeV9sb29rdXAsIHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKVxcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oLTQxMy1MU01fSE9PSyhpbnQsIDEsIHhmcm1fc3RhdGVfcG9sX2Zsb3dfbWF0Y2gsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTIwMDY9dm9pZCBzZWN1cml0eV94ZnJtX3N0YXRlX2ZyZWUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoyMDA3OmludCBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpO1xcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0yMDA4LWludCBzZWN1cml0eV94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTIwNTM9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfeGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMjA1Ny1cXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg6MjA1ODpzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTIwNTkte1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xOTY0PXN0YXRpYyBpbnQgeGZybV9wb2xpY3lfbWF0Y2goY29uc3Qgc3RydWN0IHhmcm1fcG9saWN5ICpwb2wsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE5NzktXFx0aWYgKG1hdGNoKVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTk4MDpcXHRcXHRyZXQgPSBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAocG9sLVxcdTAwM2VzZWN1cml0eSwgZmwtXFx1MDAzZWZsb3dpX3NlY2lkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE5ODEtXFx0cmV0dXJuIHJldDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTk4ND1zdGF0aWMgc3RydWN0IHhmcm1fcG9sX2luZXhhY3Rfbm9kZSAqXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxOTg1Onhmcm1fcG9saWN5X2xvb2t1cF9pbmV4YWN0X2FkZHIoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKnIsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xOTg2LVxcdFxcdFxcdFxcdHNlcWNvdW50X3NwaW5sb2NrX3QgKmNvdW50LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMDIyPXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2NhbmRpZGF0ZXMgKmNhbmQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIwMzYtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMDM3OlxcdG4gPSB4ZnJtX3BvbGljeV9sb29rdXBfaW5leGFjdF9hZGRyKFxcdTAwMjZiLVxcdTAwM2Vyb290X2QsIFxcdTAwMjZiLVxcdTAwM2Vjb3VudCwgZGFkZHIsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDM4LVxcdFxcdFxcdFxcdFxcdCAgICBmYW1pbHkpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQwLVxcdFxcdGNhbmQtXFx1MDAzZXJlc1tYRlJNX1BPTF9DQU5EX0RBRERSXSA9IFxcdTAwMjZuLVxcdTAwM2VoaGVhZDtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIwNDE6XFx0XFx0biA9IHhmcm1fcG9saWN5X2xvb2t1cF9pbmV4YWN0X2FkZHIoXFx1MDAyNm4tXFx1MDAzZXJvb3QsIFxcdTAwMjZiLVxcdTAwM2Vjb3VudCwgc2FkZHIsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBmYW1pbHkpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQ2LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjA0NzpcXHRuID0geGZybV9wb2xpY3lfbG9va3VwX2luZXhhY3RfYWRkcihcXHUwMDI2Yi1cXHUwMDNlcm9vdF9zLCBcXHUwMDI2Yi1cXHUwMDNlY291bnQsIHNhZGRyLFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0OC1cXHRcXHRcXHRcXHRcXHQgICAgZmFtaWx5KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjEyNz14ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXMoc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfY2FuZGlkYXRlcyAqY2FuZCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE0OS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIxNTA6c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIyNC1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMjU6c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMjYtXFx0XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzMS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzI6XFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfU1VCLCBmbCwgZmFtaWx5LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzMy1cXHRcXHRcXHRcXHRcXHRkaXIsIGlmX2lkKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzNi0jZW5kaWZcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzc6XFx0cmV0dXJuIHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX01BSU4sIGZsLCBmYW1pbHksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM4LVxcdFxcdFxcdFxcdFxcdCBkaXIsIGlmX2lkKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjI0MT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3NrX3BvbGljeV9sb29rdXAoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjY1LVxcdFxcdFxcdH1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyNjY6XFx0XFx0XFx0ZXJyID0gc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHBvbC1cXHUwMDNlc2VjdXJpdHksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjY3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGZsLVxcdTAwM2VmbG93aV9zZWNpZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTI4MTE9c3RhdGljIGludCB4ZnJtX2V4cGFuZF9wb2xpY2llcyhjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMxLVxcdCAgICBwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjgzMjpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBYRlJNX1BPTElDWV9UWVBFX01BSU4sXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTMwODU9c3RhdGljIHN0cnVjdCB4ZnJtX2RzdCAqeGZybV9idW5kbGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzA5Ni1cXHRudW1fcG9scyA9IDE7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMDk3OlxcdHBvbHNbMF0gPSB4ZnJtX3BvbGljeV9sb29rdXAobmV0LCBmbCwgZmFtaWx5LCBkaXIsIGlmX2lkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMwOTgtXFx0ZXJyID0geGZybV9leHBhbmRfcG9saWNpZXMoZmwsIGZhbWlseSwgcG9scyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzYyNj14ZnJtX3BvbGljeSAqeGZybV9pbl9md2RfaWNtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjM4LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzYzOTpcXHRcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXAobmV0LCBcXHUwMDI2ZmwxLCBmYW1pbHksIFhGUk1fUE9MSUNZX0ZXRCwgaWZfaWQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzY0MC1cXHRcXHRpZiAoSVNfRVJSKHBvbCkpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzQ4LVxcdGlmICghcG9sKVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc0OTpcXHRcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXAobmV0LCBcXHUwMDI2ZmwsIGZhbWlseSwgZGlyLCBpZl9pZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzUwLVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzgyLVxcdGlmIChwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc4MzpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3ODQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmbCwgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDk1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTI5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDUzMDpcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXFx1MDAyNmZsLCBzZWwtXFx1MDAzZWZhbWlseSwgZGlyLCBpZl9pZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVxcdGlmIChJU19FUlJfT1JfTlVMTChwb2wpKVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYz01MDQ1PXZvaWQgc2VjdXJpdHlfeGZybV9zdGF0ZV9mcmVlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDUwLS8qKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6NTA1MTogKiBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoKSAtIENoZWNrIGlmIHVzaW5nIGEgeGZybSBwb2xpY3kgaXMgYWxsb3dlZFxcbnNlY3VyaXR5L3NlY3VyaXR5LmMtNTA1Mi0gKiBAY3R4OiB0YXJnZXQgeGZybSBzZWN1cml0eSBjb250ZXh0XFxuLS1cXG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNjEtICovXFxuc2VjdXJpdHkvc2VjdXJpdHkuYzo1MDYyOmludCBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDYzLXtcXG5zZWN1cml0eS9zZWN1cml0eS5jOjUwNjQ6XFx0cmV0dXJuIGNhbGxfaW50X2hvb2soeGZybV9wb2xpY3lfbG9va3VwLCBjdHgsIGZsX3NlY2lkKTtcXG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNjUtfVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTc1NjA9c3RhdGljIHN0cnVjdCBzZWN1cml0eV9ob29rX2xpc3Qgc2VsaW51eF9ob29rc1tdIF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NzU5LVxcdExTTV9IT09LX0lOSVQoeGZybV9zdGF0ZV9kZWxldGVfc2VjdXJpdHksIHNlbGludXhfeGZybV9zdGF0ZV9kZWxldGUpLFxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NzYwOlxcdExTTV9IT09LX0lOSVQoeGZybV9wb2xpY3lfbG9va3VwLCBzZWxpbnV4X3hmcm1fcG9saWN5X2xvb2t1cCksXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc3NjEtXFx0TFNNX0hPT0tfSU5JVCh4ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoLFxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaD0yNz1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XFxuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaDoyODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpO1xcbnNlY3VyaXR5L3NlbGludXgvaW5jbHVkZS94ZnJtLmgtMjktaW50IHNlbGludXhfeGZybV9zdGF0ZV9wb2xfZmxvd19tYXRjaChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTEzND1zdGF0aWMgaW50IHNlbGludXhfeGZybV9kZWxldGUoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4KVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC94ZnJtLmMtMTQ3LSAqL1xcbnNlY3VyaXR5L3NlbGludXgveGZybS5jOjE0ODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXFxuc2VjdXJpdHkvc2VsaW51eC94ZnJtLmMtMTQ5LXtcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTE3MD1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC94ZnJtLmMtMjAwLVxcdCAqIGlzIG5vdyBvZiB0aGUgc2FtZSBsYWJlbCBhcyB0aGUgZmxvdyBhbmQgYSBmbG93IFZzLiBwb2xpY3kgcG9sbWF0Y2hcXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYzoyMDE6XFx0ICogY2hlY2sgaGFkIGFscmVhZHkgaGFwcGVuZWQgaW4gc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoKSBhYm92ZS4gKi9cXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYy0yMDItXFx0cmV0dXJuIChhdmNfaGFzX3Blcm0oZmxpY19zaWQsIHN0YXRlX3NpZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6MzAuMzk3ODEwNzgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjQ0MDQyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIFhGUk0gUG9saWN5IExvb2t1cCBhbmQgQ2hlY2tpbmcqKlxuXG5Pa2F5LCBzbyBgeGZybV9wb2xpY3lfbG9va3VwYCBpcyBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uLCBqdXN0IGxpa2UgdGhlIG9uZSBJIHdhcyBsb29raW5nIGF0IHByZXZpb3VzbHkuIFRoYXQgbWVhbnMgaXRzIHZpc2liaWxpdHkgaXMgbGltaXRlZCB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGlzbid0IGlkZWFsIGZvciBjZXJ0YWluIHNjZW5hcmlvcy4gVGhlbiwgYWhhISBgX194ZnJtX3BvbGljeV9jaGVja2AgaXMgZWl0aGVyIGV4cG9ydGVkIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBub3QgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGlzIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl0J3MgZGVzaWduZWQgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIG1vZHVsZS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB3aGF0IGBfX3hmcm1fcG9saWN5X2NoZWNrYCBpcyBkb2luZy4gVGhpcyBtaWdodCBvZmZlciBpbXBvcnRhbnQgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgZGVzaWduLiBXaGlsZSBJIGFtIGF0IGl0LCBsZXRzIG5vdCBuZWdsZWN0IGB4ZnJtX2J1bmRsZV9sb29rdXBgIGFzIGl0IGlzIHJlbGF0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYF9feGZybV9wb2xpY3lfY2hlY2tgIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDozNC44NjIyMTczNjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDk5NjQ5NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX194ZnJtX3BvbGljeV9jaGVja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZnJtLmg9MTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhmcm1fb2ZmbG9hZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTEyNjUtI2lmZGVmIENPTkZJR19YRlJNXFxuaW5jbHVkZS9uZXQveGZybS5oOjEyNjY6aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKiwgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI2Ny1cXHRcXHRcXHR1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTEyNzg9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjg5LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMjkwOnN0YXRpYyBpbmxpbmUgaW50IF9feGZybV9wb2xpY3lfY2hlY2syKHN0cnVjdCBzb2NrICpzaywgaW50IGRpcixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI5MS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjk5LVxcdGlmIChzayBcXHUwMDI2XFx1MDAyNiBzay1cXHUwMDNlc2tfcG9saWN5W1hGUk1fUE9MSUNZX0lOXSlcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMwMDpcXHRcXHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjayhzaywgbmRpciwgc2tiLCBmYW1pbHkpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzAxLVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTEzMjAtXFx0ICAgICAgIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc2tiLCBkaXIsIGZhbWlseSkgfHxcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMyMTpcXHQgICAgICAgX194ZnJtX3BvbGljeV9jaGVjayhzaywgbmRpciwgc2tiLCBmYW1pbHkpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzIyLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xMzI0PXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI1LXtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMyNjpcXHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBmYW1pbHksIDApO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI3LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xMzM5PXN0YXRpYyBpbmxpbmUgaW50IHhmcm00X3BvbGljeV9jaGVja19yZXZlcnNlKHN0cnVjdCBzb2NrICpzaywgaW50IGRpcixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzQxLXtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTM0MjpcXHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBBRl9JTkVULCAxKTtcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTM0My19XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTM0NT1zdGF0aWMgaW5saW5lIGludCB4ZnJtNl9wb2xpY3lfY2hlY2tfcmV2ZXJzZShzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMTM0Ny17XFxuaW5jbHVkZS9uZXQveGZybS5oOjEzNDg6XFx0cmV0dXJuIF9feGZybV9wb2xpY3lfY2hlY2syKHNrLCBkaXIsIHNrYiwgQUZfSU5FVDYsIDEpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzQ5LX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzY0OD1kc3RfZW50cnkgKnhmcm1fb3V0X2Z3ZF9pY21wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aSAqZmwsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NzYtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozNjc3OmludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NzgtXFx0XFx0XFx0dW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODMzLVxcdFxcdFxcdC8qIFRoaXMgcG9saWN5IHRlbXBsYXRlIHdhcyBhbHJlYWR5IGNoZWNrZWQgYnkgSFdcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4MzQ6XFx0XFx0XFx0ICogYW5kIHNlY3BhdGggd2FzIHJlbW92ZWQgaW4gX194ZnJtX3BvbGljeV9jaGVjazIuXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODM1LVxcdFxcdFxcdCAqL1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODc2LX1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4Nzc6RVhQT1JUX1NZTUJPTChfX3hmcm1fcG9saWN5X2NoZWNrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM4NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjM3LjE3MjE5MzAwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgyNjkyNjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipLZXJuZWwgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlIERlZXAgRGl2ZTogQSBRdWljayBDcm9zcy1SZWZlcmVuY2UgUXVlcnkqKlxuXG5Pa2F5LCBzbyBgX194ZnJtX3BvbGljeV9jaGVja2AgaXMgZXhwb3J0ZWQuIFRoYXQncyBnb29kIHRvIGtub3c7IGl0IGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IFhGUk0gcG9saWN5IGVuZm9yY2VtZW50IGlzIG1hZGUgYXZhaWxhYmxlLCBsaWtlbHkgZm9yIHVzZSBieSBvdGhlciBtb2R1bGVzIG5lZWRpbmcgdG8gdmFsaWRhdGUgdHJhZmZpYyBhZ2FpbnN0IGEgY29uZmlndXJlZCBwb2xpY3kuIEJ1dCBpdCByYWlzZXMgYSBmbGFnOiBpZiAqdGhhdCogaXMgZXhwb3J0ZWQsIHRoZW4gd2hhdCdzIHRoZSBkZWFsIHdpdGggYHhmcm1fbG9va3VwYD9cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHhmcm1fbG9va3VwYCBoYXMgYSBzaW1pbGFyIGV4dGVybmFsIGFjY2Vzc2liaWxpdHksIG9yIGlzIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugb25seS4gYHhmcm1fbG9va3VwYCBpcyBjcml0aWNhbCBmb3IsIGZyb20gbWVtb3J5LCByZXNvbHZpbmcgdGhlIFNBIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyYWZmaWMgZmxvdy4gSWYgaXQgKmlzKiBhY2Nlc3NpYmxlLCB0aGVyZSBjb3VsZCBiZSBpbnRlcmVzdGluZyBpbXBsaWNhdGlvbnMgZm9yIHRoZSB3YXkgdGhpcmQtcGFydHkgbW9kdWxlcyBjb3VsZCBwb3RlbnRpYWxseSBob29rIGludG8gb3IgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBYRlJNIGxvb2t1cCBtZWNoYW5pc20uIElmIGl0J3MgKm5vdCogZXhwb3J0ZWQsIHRoZW4gdGhlIGludGVudCBjb3VsZCBiZSB0aWdodGVyIGNvbnRyb2wgb3ZlciB0aGUgZnVuZGFtZW50YWwgcGFja2V0IHByb2Nlc3NpbmcgYW5kIFNBIHNlbGVjdGlvbi4gVGhlIGV4cG9ydCAob3IgbGFjayB0aGVyZW9mKSBvZiBgeGZybV9sb29rdXBgIHdpbGwgYmUgYW4gaW1wb3J0YW50IGRhdGEgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSdzIGRlc2lnbiBwaGlsb3NvcGh5IG9uIGZsZXhpYmlsaXR5IHZlcnN1cyBzZWN1cml0eSBhbmQgaXNvbGF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uIGZvciBpdHMgdmlzaWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk0OCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjQxLjk1NDg5MTQxOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNjY3MDQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2xvb2t1cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9kc3QuaD00ODg9c3RhdGljIGlubGluZSBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2hlY2soc3RydWN0IGRzdF9lbnRyeSAqZHN0LCB1MzIgY29va2llKVxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0LmgtNDk1LVxcbmluY2x1ZGUvbmV0L2RzdC5oOjQ5NjovKiBGbGFncyBmb3IgeGZybV9sb29rdXAgZmxhZ3MgYXJndW1lbnQuICovXFxuaW5jbHVkZS9uZXQvZHN0LmgtNDk3LWVudW0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvZHN0Lmg9NTAzPXN0cnVjdCBmbG93aTtcXG5pbmNsdWRlL25ldC9kc3QuaC01MDQtI2lmbmRlZiBDT05GSUdfWEZSTVxcbmluY2x1ZGUvbmV0L2RzdC5oOjUwNTpzdGF0aWMgaW5saW5lIHN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG5pbmNsdWRlL25ldC9kc3QuaC01MDYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0Lmg9NTE0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqXFxuaW5jbHVkZS9uZXQvZHN0Lmg6NTE1Onhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbmluY2x1ZGUvbmV0L2RzdC5oLTUxNi1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5pbmNsdWRlL25ldC9kc3QuaC01MjEtXFxuaW5jbHVkZS9uZXQvZHN0Lmg6NTIyOnN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LFxcbmluY2x1ZGUvbmV0L2RzdC5oLTUyMy1cXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0Lmg9NTMxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhmcm1fc3RhdGUgKmRzdF94ZnJtKGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdClcXG4tLVxcbmluY2x1ZGUvbmV0L2RzdC5oLTUzNi0jZWxzZVxcbmluY2x1ZGUvbmV0L2RzdC5oOjUzNzpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbmluY2x1ZGUvbmV0L2RzdC5oLTUzOC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5pbmNsdWRlL25ldC9kc3QuaC01NDAtXFxuaW5jbHVkZS9uZXQvZHN0Lmg6NTQxOnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsXFxuaW5jbHVkZS9uZXQvZHN0LmgtNTQyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0LmgtNTQ2LVxcbmluY2x1ZGUvbmV0L2RzdC5oOjU0NzpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbmluY2x1ZGUvbmV0L2RzdC5oLTU0OC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvaWNtcC5jPTQ5ND1zdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtNTI2LVxcbm5ldC9pcHY0L2ljbXAuYzo1Mjc6XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCxcXG5uZXQvaXB2NC9pY21wLmMtNTI4LVxcdFxcdFxcdCAgZmxvd2k0X3RvX2Zsb3dpKGZsNCksIE5VTEwsIDApO1xcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTYwMS1cXG5uZXQvaXB2NC9pY21wLmM6NjAyOlxcdGRzdDIgPSB4ZnJtX2xvb2t1cChuZXQsIFxcdTAwMjZydDItXFx1MDAzZWRzdCwgZmxvd2k0X3RvX2Zsb3dpKFxcdTAwMjZmbDRfZGVjKSwgTlVMTCxcXG5uZXQvaXB2NC9pY21wLmMtNjAzLVxcdFxcdFxcdCAgIFhGUk1fTE9PS1VQX0lDTVApO1xcbi0tXFxubmV0L2lwdjQvaXBfdnRpLmM9MTY5PXN0YXRpYyBuZXRkZXZfdHhfdCB2dGlfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfdnRpLmMtMjE2LVxcdGRzdF9ob2xkKGRzdCk7XFxubmV0L2lwdjQvaXBfdnRpLmM6MjE3OlxcdGRzdCA9IHhmcm1fbG9va3VwX3JvdXRlKHR1bm5lbC1cXHUwMDNlbmV0LCBkc3QsIGZsLCBOVUxMLCAwKTtcXG5uZXQvaXB2NC9pcF92dGkuYy0yMTgtXFx0aWYgKElTX0VSUihkc3QpKSB7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYz0yMj1pbnQgaXBfcm91dGVfbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgYWRkcl90eXBlKVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyLmMtNjgtXFx0XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xcbm5ldC9pcHY0L25ldGZpbHRlci5jOjY5OlxcdFxcdC8qIGlnbm9yZSByZXR1cm4gdmFsdWUgZnJvbSBza2JfZHN0cmVmX3N0ZWFsLCB4ZnJtX2xvb2t1cCB0YWtlc1xcbm5ldC9pcHY0L25ldGZpbHRlci5jLTcwLVxcdFxcdCAqIGNhcmUgb2YgZHJvcHBpbmcgdGhlIHJlZmNudCBpZiBuZWVkZWQuXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYy03Mi1cXHRcXHRza2JfZHN0cmVmX3N0ZWFsKHNrYik7XFxubmV0L2lwdjQvbmV0ZmlsdGVyLmM6NzM6XFx0XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNF90b19mbG93aShcXHUwMDI2Zmw0KSwgc2ssIDApO1xcbm5ldC9pcHY0L25ldGZpbHRlci5jLTc0LVxcdFxcdGlmIChJU19FUlIoZHN0KSlcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9Mjk1OD1zdHJ1Y3QgcnRhYmxlICppcF9yb3V0ZV9vdXRwdXRfZmxvdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZscDQsXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTI5NjctXFx0XFx0ZmxwNC1cXHUwMDNlZmxvd2k0X29pZiA9IHJ0LVxcdTAwM2Vkc3QuZGV2LVxcdTAwM2VpZmluZGV4O1xcbm5ldC9pcHY0L3JvdXRlLmM6Mjk2ODpcXHRcXHRydCA9IGRzdF9ydGFibGUoeGZybV9sb29rdXBfcm91dGUobmV0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCxcXG5uZXQvaXB2NC9yb3V0ZS5jLTI5NjktXFx0XFx0XFx0XFx0XFx0XFx0ICBmbG93aTRfdG9fZmxvd2koZmxwNCksXFxuLS1cXG5uZXQvaXB2Ni9pY21wLmM9MzU0PXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICppY21wdjZfcm91dGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2ljbXAuYy0zODAtXFxubmV0L2lwdjYvaWNtcC5jOjM4MTpcXHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIHNrLCAwKTtcXG5uZXQvaXB2Ni9pY21wLmMtMzgyLVxcdGlmICghSVNfRVJSKGRzdCkpIHtcXG4tLVxcbm5ldC9pcHY2L2ljbXAuYy0zOTktXFxubmV0L2lwdjYvaWNtcC5jOjQwMDpcXHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QyLCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsMiksIHNrLCBYRlJNX0xPT0tVUF9JQ01QKTtcXG5uZXQvaXB2Ni9pY21wLmMtNDAxLVxcdGlmICghSVNfRVJSKGRzdDIpKSB7XFxuLS1cXG5uZXQvaXB2Ni9pY21wLmM9OTIxPXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiBpY21wdjZfZWNob19yZXBseShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWNtcC5jLTk5MS1cXHRcXHRnb3RvIG91dDtcXG5uZXQvaXB2Ni9pY21wLmM6OTkyOlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIHNrLCAwKTtcXG5uZXQvaXB2Ni9pY21wLmMtOTkzLVxcdGlmIChJU19FUlIoZHN0KSlcXG4tLVxcbm5ldC9pcHY2L2lsYS9pbGFfbHd0LmM9Mzg9c3RhdGljIGludCBpbGFfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWxhL2lsYV9sd3QuYy04NC1cXG5uZXQvaXB2Ni9pbGEvaWxhX2x3dC5jOjg1OlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9pcHY2L2lsYS9pbGFfbHd0LmMtODYtXFx0XFx0aWYgKElTX0VSUihkc3QpKSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTI4NT1zdHJ1Y3QgZHN0X2VudHJ5ICppcDZfZHN0X2xvb2t1cF9mbG93KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmxvd2k2ICpmbDYsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTI5OC1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTI5OTpcXHRyZXR1cm4geGZybV9sb29rdXBfcm91dGUobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBzaywgMCk7XFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTEzMDAtfVxcbi0tXFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jPTExMDA9aW50IGlwNl90bmxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX3U4IGRzZmllbGQsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTE4My1cXHRcXHRcXHRnb3RvIHR4X2Vycl9saW5rX2ZhaWx1cmU7XFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jOjExODQ6XFx0XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBOVUxMLCAwKTtcXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTE4NS1cXHRcXHRpZiAoSVNfRVJSKGRzdCkpIHtcXG4tLVxcbm5ldC9pcHY2L2lwNl92dGkuYz00MTM9c3RhdGljIGJvb2wgdnRpNl9zdGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC9pcHY2L2lwNl92dGkuYy00MzktICogICBAZGV2OiB0aGUgb3V0Z29pbmcgdHVubmVsIGRldmljZVxcbm5ldC9pcHY2L2lwNl92dGkuYzo0NDA6ICogICBAZmw6IHRoZSBmbG93IGluZm9ybWF0aW9ucyBmb3IgdGhlIHhmcm1fbG9va3VwXFxubmV0L2lwdjYvaXA2X3Z0aS5jLTQ0MS0gKiovXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdnRpLmM9NDQzPXZ0aTZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxcbi0tXFxubmV0L2lwdjYvaXA2X3Z0aS5jLTQ4My1cXHRkc3RfaG9sZChkc3QpO1xcbm5ldC9pcHY2L2lwNl92dGkuYzo0ODQ6XFx0ZHN0ID0geGZybV9sb29rdXBfcm91dGUodC1cXHUwMDNlbmV0LCBkc3QsIGZsLCBOVUxMLCAwKTtcXG5uZXQvaXB2Ni9pcDZfdnRpLmMtNDg1LVxcdGlmIChJU19FUlIoZHN0KSkge1xcbi0tXFxubmV0L2lwdjYvbmRpc2MuYz0xNjU4PXZvaWQgbmRpc2Nfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnRhcmdldClcXG4tLVxcbm5ldC9pcHY2L25kaXNjLmMtMTcwMC1cXHR9XFxubmV0L2lwdjYvbmRpc2MuYzoxNzAxOlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9pcHY2L25kaXNjLmMtMTcwMi1cXHRpZiAoSVNfRVJSKGRzdCkpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYz0yND1pbnQgaXA2X3JvdXRlX21lX2hhcmRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpza19wYXJ0aWFsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNjYtXFx0ICAgIHhmcm1fZGVjb2RlX3Nlc3Npb24obmV0LCBza2IsIGZsb3dpNl90b19mbG93aShcXHUwMDI2Zmw2KSwgQUZfSU5FVDYpID09IDApIHtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzo2NzpcXHRcXHQvKiBpZ25vcmUgcmV0dXJuIHZhbHVlIGZyb20gc2tiX2RzdHJlZl9zdGVhbCwgeGZybV9sb29rdXAgdGFrZXNcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy02OC1cXHRcXHQgKiBjYXJlIG9mIGRyb3BwaW5nIHRoZSByZWZjbnQgaWYgbmVlZGVkLlxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNzAtXFx0XFx0c2tiX2RzdHJlZl9zdGVhbChza2IpO1xcbm5ldC9pcHY2L25ldGZpbHRlci5jOjcxOlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIHNrLCAwKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy03Mi1cXHRcXHRpZiAoSVNfRVJSKGRzdCkpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz0zMTM9dm9pZCBuZl9zZW5kX3Jlc2V0NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTM1Ny1cXHR9XFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmM6MzU4OlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTM1OS1cXHRpZiAoSVNfRVJSKGRzdCkpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTMzMzU9c3RydWN0IGRzdF9lbnRyeSAqaWNtcDZfZHN0X2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTMzNjUtXFxubmV0L2lwdjYvcm91dGUuYzozMzY2OlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgXFx1MDAyNnJ0LVxcdTAwM2Vkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBOVUxMLCAwKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTMzNjctXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTQ0OT1fX2lwX3ZzX3JvdXRlX291dHB1dF92NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ2OS1cXHRpZiAoZG9feGZybSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NDcwOlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNDcxLVxcdFxcdGlmIChJU19FUlIoZHN0KSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfcHJvdG8uYz02MDE9c3RhdGljIGludCBuZl94ZnJtX21lX2hhcmRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBmYW1pbHkpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jLTYyMS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jOjYyMjpcXHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgXFx1MDAyNmZsLCBzaywgMCk7XFxubmV0L25ldGZpbHRlci9uZl9uYXRfcHJvdG8uYy02MjMtXFx0aWYgKElTX0VSUihkc3QpKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmM9ODIyPXN5bnByb3h5X3NlbmRfdGNwX2lwdjYoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmMtODQ5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfc3lucHJveHlfY29yZS5jOjg1MDpcXHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFxcdTAwMjZmbDYpLCBOVUxMLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3N5bnByb3h5X2NvcmUuYy04NTEtXFx0aWYgKElTX0VSUihkc3QpKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTQyND14ZnJtaV94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTQ1NS1cXHRkc3RfaG9sZChkc3QpO1xcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYzo0NTY6XFx0ZHN0ID0geGZybV9sb29rdXBfd2l0aF9pZmlkKHhpLVxcdTAwM2VuZXQsIGRzdCwgZmwsIE5VTEwsIDAsIGlmX2lkKTtcXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtNDU3LVxcdGlmIChJU19FUlIoZHN0KSkge1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODk3PXN0YXRpYyB2b2lkIHhmcm1fcG9saWN5X3F1ZXVlX3Byb2Nlc3Moc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5MjUtXFx0ZHN0X2hvbGQoeGZybV9kc3RfcGF0aChkc3QpKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjI5MjY6XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCB4ZnJtX2RzdF9wYXRoKGRzdCksIFxcdTAwMjZmbCwgc2ssIFhGUk1fTE9PS1VQX1FVRVVFKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5MjctXFx0aWYgKElTX0VSUihkc3QpKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTYwLVxcdFxcdGRzdF9ob2xkKHhmcm1fZHN0X3BhdGgoc2tiX2RzdChza2IpKSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyOTYxOlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgeGZybV9kc3RfcGF0aChza2JfZHN0KHNrYikpLCBcXHUwMDI2ZmwsIHNrYi1cXHUwMDNlc2ssIDApO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjk2Mi1cXHRcXHRpZiAoSVNfRVJSKGRzdCkpIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE0OD1zdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqbWFrZV9ibGFja2hvbGUoc3RydWN0IG5ldCAqbmV0LCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTY5LSAqXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTcwOiAqIHhmcm1fbG9va3VwIHVzZXMgYW4gaWZfaWQgb2YgMCBieSBkZWZhdWx0LCBhbmQgaXMgcHJvdmlkZWQgZm9yXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTcxLSAqIGNvbXBhdGliaWxpdHlcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMxNzItICovXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTczOnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTc0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzI1LX1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMjY6RVhQT1JUX1NZTUJPTCh4ZnJtX2xvb2t1cF93aXRoX2lmaWQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMyNy1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMzMi0gKi9cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMzM6c3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzMzQtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzM2LXtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMzc6XFx0cmV0dXJuIHhmcm1fbG9va3VwX3dpdGhfaWZpZChuZXQsIGRzdF9vcmlnLCBmbCwgc2ssIGZsYWdzLCAwKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzMzgtfVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzMzOTpFWFBPUlRfU1lNQk9MKHhmcm1fbG9va3VwKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDAtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzQxOi8qIENhbGxlcnMgb2YgeGZybV9sb29rdXBfcm91dGUoKSBtdXN0IGVuc3VyZSBhIGNhbGwgdG8gZHN0X291dHB1dCgpLlxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0Mi0gKiBPdGhlcndpc2Ugd2UgbWF5IHNlbmQgb3V0IGJsYWNraG9sZWQgcGFja2V0cy5cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDMtICovXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzQ0OnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzQ1LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzQ3LXtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDg6XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3Rfb3JpZywgZmwsIHNrLFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0OS1cXHRcXHRcXHRcXHRcXHQgICAgZmxhZ3MgfCBYRlJNX0xPT0tVUF9RVUVVRSB8XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNTktfVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzM2MDpFWFBPUlRfU1lNQk9MKHhmcm1fbG9va3VwX3JvdXRlKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNjEtXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2NDg9ZHN0X2VudHJ5ICp4ZnJtX291dF9md2RfaWNtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjYwLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzY2MTpcXHRcXHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QsIFxcdTAwMjZmbDEsIE5VTEwsIChYRlJNX0xPT0tVUF9RVUVVRSB8IFhGUk1fTE9PS1VQX0lDTVApKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NjItXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM4Nzk9aW50IF9feGZybV9yb3V0ZV9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHNob3J0IGZhbWlseSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg5Ny1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4OTg6XFx0LyogaWdub3JlIHJldHVybiB2YWx1ZSBmcm9tIHNrYl9kc3RyZWZfc3RlYWwsIHhmcm1fbG9va3VwIHRha2VzXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODk5LVxcdCAqIGNhcmUgb2YgZHJvcHBpbmcgdGhlIHJlZmNudCBpZiBuZWVkZWQuXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM5MDItXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozOTAzOlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBcXHUwMDI2ZmwsIE5VTEwsIFhGUk1fTE9PS1VQX1FVRVVFKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM5MDQtXFx0aWYgKElTX0VSUihkc3QpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjQ0LjA2MTU2NTk2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjkwNjQ4MDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFhGUk0gUG9saWN5IExvb2t1cCBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIFhGUk0gcG9saWN5IGxvb2t1cHMuIEZvciBvdXRnb2luZyBwYWNrZXRzLCB0aGUgaGVhdnkgbGlmdGVycyBhcmUgY2xlYXJseSBgeGZybV9sb29rdXBgIGFuZCBgeGZybV9sb29rdXBfcm91dGVgLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYmUga2VlcGluZyBhIGNsb3NlIGV5ZSBvbi4gQW5kIGZvciBpbmNvbWluZyBwYWNrZXRzLCBpdCdzIGFsbCBhYm91dCBgX194ZnJtX3BvbGljeV9jaGVja2AuIFRob3NlIHRocmVlIGZ1bmN0aW9ucywgYHhmcm1fbG9va3VwYCwgYHhmcm1fbG9va3VwX3JvdXRlYCwgYW5kIGBfX3hmcm1fcG9saWN5X2NoZWNrYCwgYXJlIGRlZmluaXRlbHkgdGhlIGNyaXRpY2FsIGZvY3VzIHN5bWJvbHMgaGVyZS5cblxuSSBhbHNvIHNlZSB0aGF0IGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCB3YXMgdGhlIGZ1bmN0aW9uIHRoYXQgc2F3IHNvbWUgbW9kaWZpY2F0aW9uLCBidXQgaXQncyBtYXJrZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIG1lIGN1cmlvdXMuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIgdG8gZmlndXJlIG91dCBpZiBpdCdzIGlubGluZWQuIFN0YXRpYyBmdW5jdGlvbnMgY2FuIHNvbWV0aW1lcyBiZSB0cmlja3kgdG8gYW5hbHl6ZSBkaXJlY3RseSwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcidzIG9wdGltaXphdGlvbiBzdHJhdGVneS4gU28sIGNoZWNraW5nIGZvciBpbmxpbmluZyBpcyB0aGUgbmV4dCBzdGVwIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBsb29rdXAgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNDEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6NDkuMzUyMjE2NzI3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU5NTk0MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMTI3PXhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcyhzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9jYW5kaWRhdGVzICpjYW5kLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTQ5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjE1MDpzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIxNTEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMjI1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzEtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjMyOlxcdHBvbCA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX1NVQiwgZmwsIGZhbWlseSxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzMtXFx0XFx0XFx0XFx0XFx0ZGlyLCBpZl9pZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzYtI2VuZGlmXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjM3OlxcdHJldHVybiB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLCBmbCwgZmFtaWx5LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzOC1cXHRcXHRcXHRcXHRcXHQgZGlyLCBpZl9pZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTI4MTE9c3RhdGljIGludCB4ZnJtX2V4cGFuZF9wb2xpY2llcyhjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMxLVxcdCAgICBwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjgzMjpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBYRlJNX1BPTElDWV9UWVBFX01BSU4sXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzgyLVxcdGlmIChwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc4MzpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3ODQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmbCwgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDk1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTI5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDUzMDpcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXFx1MDAyNmZsLCBzZWwtXFx1MDAzZWZhbWlseSwgZGlyLCBpZl9pZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVxcdGlmIChJU19FUlJfT1JfTlVMTChwb2wpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDo1MS42MTE4MTY3NzRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5MTQwODY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIENvZGUgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIGNvbXBpbGVyICptaWdodCogYmUgaW5saW5pbmcgc29tZSBmdW5jdGlvbnMgaGVyZSwgZXZlbiB0aG91Z2ggaXQncyBub3QgZXhwbGljaXRseSBtYXJrZWQgdGhhdCB3YXkuIExldCdzIG1ha2Ugc3VyZSB3ZSBpbmNsdWRlIGB4ZnJtX2xvb2t1cGAsIGB4ZnJtX2xvb2t1cF9yb3V0ZWAsIGBfX3hmcm1fcG9saWN5X2NoZWNrYCwgYW5kIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBhcHByb2FjaCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBpbmxpbmluZy5cblxuQW5kIG9mIGNvdXJzZSwgd2UgbmVlZCB0byBoYXZlIGBYRlJNYCBhbmQgYFhGUk1fVVNFUmAgY29uZmlndXJlZCB0byBydW4gdGhlc2Ugc3ltYm9scy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQgYXMgd2VsbC4gVGhlIGNvZGUgaXRzZWxmIGlzIGxvY2F0ZWQgaW4gYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLCBzbyBJIGtub3cgd2hlcmUgdG8gZmluZCB0aGUgc291cmNlLlxuXG5Mb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGFpbWVkIGF0IHJlc29sdmluZyBhIHJhY2UgY29uZGl0aW9uIHRoYXQgcG9wcyB1cCB3aGVuIHdlJ3JlIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQgaW1wYWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbS4gR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nIHRvIGhlbHAgY29uZmlybSB0aGUgZml4LlxuXG5GaW5hbGx5LCBJJ2xsIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIG1ha2UgdGhlIHJlc3VsdHMgY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTQ3LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDo1Ny43MDMyMjg3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mjk5MjI2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9sb29rdXBcIixcbiAgICBcInhmcm1fbG9va3VwX3JvdXRlXCIsXG4gICAgXCJfX3hmcm1fcG9saWN5X2NoZWNrXCIsXG4gICAgXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBYRlJNIHBvbGljeSBsb29rdXAgYnkgYWRkaW5nIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aGVuIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBYRlJNIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fbG9va3VwXCIsXG4gICAgXCJ4ZnJtX2xvb2t1cF9yb3V0ZVwiLFxuICAgIFwiX194ZnJtX3BvbGljeV9jaGVja1wiLFxuICAgIFwieGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6NTcuODU2MjMxMjc1WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA0NDU2OTEzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDo1Ny44NTY4OTEzNzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQwNDQ1MDI1NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2VxdWVuY2UgY291bnRlciByZXRyeSBsb29wIChgcmVhZF9zZXFjb3VudF9iZWdpbmAgYW5kIGByZWFkX3NlcWNvdW50X3JldHJ5YCkgYXJvdW5kIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgYW5kIGB4ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXNgIHRvIGZpeCBhIGNvbmN1cnJlbmN5IGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBsZWFkaW5nIHRvIGluY29uc2lzdGVudCBzdGF0ZSBvciB1c2UtYWZ0ZXItZnJlZSkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxNjJlNjMwNmQxYWU5ODhmMTViYzIxYWI4MWE2M2M3ZWY3MDdjZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxODowODozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA5MzJhMzEzYjk0NjBhLi41ZDRlODYzODYzZGZlIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuKysrIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuQEAgLTIxNTcsNiArMjE1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxuIFx0c3RydWN0IHhmcm1fcG9sX2luZXhhY3RfYmluICpiaW47XG4gXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbCwgKnJldDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpjaGFpbjtcbitcdHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlO1xuIFx0dW5zaWduZWQgaW50IHNlcXVlbmNlO1xuIFx0aW50IGVycjtcbiBcbkBAIC0yMTkxLDEyICsyMTkyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxuIFx0XHRnb3RvIHNraXBfaW5leGFjdDtcbiBcbiBcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfbG9va3VwX3JjdShuZXQsIHR5cGUsIGZhbWlseSwgZGlyLCBpZl9pZCk7XG4tXHRpZiAoIWJpbiB8fCAheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoXHUwMDI2Y2FuZCwgYmluLCBzYWRkcixcbi1cdFx0XHRcdFx0XHRcdCBkYWRkcikpXG4rXHRpZiAoIWJpbilcbitcdFx0Z290byBza2lwX2luZXhhY3Q7XG4rXG4rXHRpbmV4YWN0X3NlcXVlbmNlID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZiaW4tXHUwMDNlY291bnQpO1xuK1x0aWYgKCF4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlcyhcdTAwMjZjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpXG4gXHRcdGdvdG8gc2tpcF9pbmV4YWN0O1xuIFxuIFx0cG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIHJldCwgZmwsIHR5cGUsXG4gXHRcdFx0XHRcdCAgZmFtaWx5LCBpZl9pZCk7XG4rXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZiaW4tXHUwMDNlY291bnQsIGluZXhhY3Rfc2VxdWVuY2UpKVxuK1x0XHRnb3RvIHJldHJ5O1xuK1xuIFx0aWYgKHBvbCkge1xuIFx0XHRyZXQgPSBwb2w7XG4gXHRcdGlmIChJU19FUlIocG9sKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjU3Ljg1Njg5MjI1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA0NDQ5OTU5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25jdXJyZW5jeSBGaXggaW4geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBpbnRyb2R1Y2luZyBhIHNlcWxvY2sgcmV0cnkgbG9vcCBhcm91bmQgdGhlIGluZXhhY3QgcG9saWN5IGxvb2t1cCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgYWRkaW5nIGFuIGB1bnNpZ25lZCBpbnQgaW5leGFjdF9zZXF1ZW5jZWAgdmFyaWFibGUgYW5kIHVzaW5nIGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgIGFyb3VuZCB0aGUgY2FsbHMgdG8gYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AuXG5cbkVzc2VudGlhbGx5LCB0aGV5J3JlIGRvaW5nIHRoaXM6IGZpcnN0LCBhY3F1aXJlIHRoZSBzZXF1ZW5jZSBudW1iZXIuIFRoZW4sIGZpbmQgdGhlIGNhbmRpZGF0ZXMuIE5leHQsIGV2YWx1YXRlIHRob3NlIGNhbmRpZGF0ZXMuIEZpbmFsbHksIHJldHJ5IGlmIHRoZSBzZXF1ZW5jZSBudW1iZXIgaGFzIGNoYW5nZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGZpeC4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGRlc2lnbmVkIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgdGhlIGxvb2t1cCwgd2hpY2ggY291bGQgbGVhZCB0byBlaXRoZXIgYW4gaW5jb3JyZWN0IHBvbGljeSBiZWluZyBjaG9zZW4gb3IsIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB0aGluZ3MgZ28gcmVhbGx5IHdyb25nLiBUaGUgdXNlIG9mIHRoZSBzZXFsb2NrIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQuXG5cbk5vdywgSSdtIGNoZWNraW5nIGlmIHRoZXJlIGFyZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0J3Mgc2VlLi4uIGBpbmV4YWN0X3NlcXVlbmNlYCBnZXRzIGluaXRpYWxpemVkIGJ5IGByZWFkX3NlcWNvdW50X2JlZ2luYC4gU28gbm8uIE5vIGlzc3VlcyB0aGVyZS4gVGhlIGBjYW5kYCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkIHdpdGhpbiB0aGUgbG9vcC4gTm90aGluZyBJIHNlZSBzdWdnZXN0cyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXhwb3NlZC5cblxuTGV0J3MgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgZGF0YSBmbG93LiBgY2FuZGAgaXMgcGFzc2VkIHRvIHRoZSB0d28gY29yZSBmdW5jdGlvbnMuIElmIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgcmV0dXJucyBmYWxzZSwgd2UgZ28gdG8gYHNraXBfaW5leGFjdGAuIE90aGVyd2lzZSwgaXQgKmRvZXMqIGZpbmQgY2FuZGlkYXRlcywgdGhlbiB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlbS4gSWYgYSByZXRyeSBpcyBuZWVkZWQsIHdlIGxvb3AuXG5cblNvIHRoZSBtYWluIGNvbmNlcm4gaGVyZSBzZWVtcyB0byBiZSB0aGUgY29uY3VycmVuY3ksIGxpa2VseSB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IHBvbGljeSBldmFsdWF0aW9uIG9yIGV2ZW4gYSBVQUYuIFRob3NlIGtpbmRzIG9mIGlzc3VlcyBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgS0FTQU4gb3IsIGxlc3MgZHJhbWF0aWNhbGx5LCBsb2dpYyBidWdzLiBLTVNBTiBpc24ndCByZWxldmFudCBoZXJlLCBhcyB0aGVyZSBpc24ndCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gd29ycnkgYWJvdXQuXG5cblllcCwgdGhpcyBsb29rcyBzb2xpZC4gSSdtIHNldHRpbmcgTmVlZHNLTVNBTj1mYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2OSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMzoxOC4zMDE4OTIzNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzZXF1ZW5jZSBjb3VudGVyIHJldHJ5IGxvb3AgKGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgKSBhcm91bmQgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AgdG8gZml4IGEgY29uY3VycmVuY3kgaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHN0YXRlIG9yIHVzZS1hZnRlci1mcmVlKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNlcXVlbmNlIGNvdW50ZXIgcmV0cnkgbG9vcCAoYHJlYWRfc2VxY291bnRfYmVnaW5gIGFuZCBgcmVhZF9zZXFjb3VudF9yZXRyeWApIGFyb3VuZCBgeGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXNgIGFuZCBgeGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzYCB0byBmaXggYSBjb25jdXJyZW5jeSBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gbGVhZGluZyB0byBpbmNvbnNpc3RlbnQgc3RhdGUgb3IgdXNlLWFmdGVyLWZyZWUpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 17:54:40 +0000 UTC FinishedAt: 2026-08-24 18:23:19 +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": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "1ba6b4d5-6c80-4b38-bf73-67cf79151a19" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_lookup", "xfrm_lookup_route", "__xfrm_policy_check", "xfrm_policy_lookup_bytype" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fbG9va3VwJiMzNDssCiAgICAmIzM0O3hmcm1fbG9va3VwX3JvdXRlJiMzNDssCiAgICAmIzM0O19feGZybV9wb2xpY3lfY2hlY2smIzM0OywKICAgICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzZXF1ZW5jZSBjb3VudGVyIHJldHJ5IGxvb3AgKGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgKSBhcm91bmQgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AgdG8gZml4IGEgY29uY3VycmVuY3kgaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHN0YXRlIG9yIHVzZS1hZnRlci1mcmVlKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcxNjJlNjMwNmQxYWU5ODhmMTViYzIxYWI4MWE2M2M3ZWY3MDdjZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxODowODozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbkBAIC0yMTU3LDYgJiM0MzsyMTU3LDcgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsXG4gXHRzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9iaW4gKmJpbjtcbiBcdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLCAqcmV0O1xuIFx0c3RydWN0IGhsaXN0X2hlYWQgKmNoYWluO1xuJiM0MztcdHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlO1xuIFx0dW5zaWduZWQgaW50IHNlcXVlbmNlO1xuIFx0aW50IGVycjtcbiBcbkBAIC0yMTkxLDEyICYjNDM7MjE5MiwxOCBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbiBcdFx0Z290byBza2lwX2luZXhhY3Q7XG4gXG4gXHRiaW4gPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3UobmV0LCB0eXBlLCBmYW1pbHksIGRpciwgaWZfaWQpO1xuLVx0aWYgKCFiaW4gfHwgIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIGJpbiwgc2FkZHIsXG4tXHRcdFx0XHRcdFx0XHQgZGFkZHIpKVxuJiM0MztcdGlmICghYmluKVxuJiM0MztcdFx0Z290byBza2lwX2luZXhhY3Q7XG4mIzQzO1xuJiM0MztcdGluZXhhY3Rfc2VxdWVuY2UgPSByZWFkX3NlcWNvdW50X2JlZ2luKFx1MDAyNmJpbi1cdTAwM2Vjb3VudCk7XG4mIzQzO1x0aWYgKCF4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlcyhcdTAwMjZjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpXG4gXHRcdGdvdG8gc2tpcF9pbmV4YWN0O1xuIFxuIFx0cG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIHJldCwgZmwsIHR5cGUsXG4gXHRcdFx0XHRcdCAgZmFtaWx5LCBpZl9pZCk7XG4mIzQzO1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2YmluLVx1MDAzZWNvdW50LCBpbmV4YWN0X3NlcXVlbmNlKSlcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1xuIFx0aWYgKHBvbCkge1xuIFx0XHRyZXQgPSBwb2w7XG4gXHRcdGlmIChJU19FUlIocG9sKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xMm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9sb29rdXAmIzM0OywKICAgICYjMzQ7eGZybV9sb29rdXBfcm91dGUmIzM0OywKICAgICYjMzQ7X194ZnJtX3BvbGljeV9jaGVjayYjMzQ7LAogICAgJiMzNDt4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcxNjJlNjMwNmQxYWU5ODhmMTViYzIxYWI4MWE2M2M3ZWY3MDdjZTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxODowODozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jCmluZGV4IDkzMmEzMTNiOTQ2MGEuLjVkNGU4NjM4NjNkZmUgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwpAQCAtMjE1Nyw2ICYjNDM7MjE1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLAogCXN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2JpbiAqYmluOwogCXN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLCAqcmV0OwogCXN0cnVjdCBobGlzdF9oZWFkICpjaGFpbjsKJiM0MzsJdW5zaWduZWQgaW50IGluZXhhY3Rfc2VxdWVuY2U7CiAJdW5zaWduZWQgaW50IHNlcXVlbmNlOwogCWludCBlcnI7CiAKQEAgLTIxOTEsMTIgJiM0MzsyMTkyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLAogCQlnb3RvIHNraXBfaW5leGFjdDsKIAogCWJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfbG9va3VwX3JjdShuZXQsIHR5cGUsIGZhbWlseSwgZGlyLCBpZl9pZCk7Ci0JaWYgKCFiaW4gfHwgIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKCZhbXA7Y2FuZCwgYmluLCBzYWRkciwKLQkJCQkJCQkgZGFkZHIpKQomIzQzOwlpZiAoIWJpbikKJiM0MzsJCWdvdG8gc2tpcF9pbmV4YWN0OwomIzQzOwomIzQzOwlpbmV4YWN0X3NlcXVlbmNlID0gcmVhZF9zZXFjb3VudF9iZWdpbigmYW1wO2Jpbi0mZ3Q7Y291bnQpOwomIzQzOwlpZiAoIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKCZhbXA7Y2FuZCwgYmluLCBzYWRkciwgZGFkZHIpKQogCQlnb3RvIHNraXBfaW5leGFjdDsKIAogCXBvbCA9IHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcygmYW1wO2NhbmQsIHJldCwgZmwsIHR5cGUsCiAJCQkJCSAgZmFtaWx5LCBpZl9pZCk7CiYjNDM7CWlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZhbXA7YmluLSZndDtjb3VudCwgaW5leGFjdF9zZXF1ZW5jZSkpCiYjNDM7CQlnb3RvIHJldHJ5OwomIzQzOwogCWlmIChwb2wpIHsKIAkJcmV0ID0gcG9sOwogCQlpZiAoSVNfRVJSKHBvbCkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzIKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aXRoaW4gYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgLCBzcGVjaWZpY2FsbHkgd2hlbiBkZWFsaW5nIHdpdGggaW5leGFjdCBwb2xpY3kgY2FuZGlkYXRlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzOiB0aGV5JiMzOTtyZSBub3cgcmVhZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgYmVmb3JlIGFuZCBhZnRlciBjYWxsaW5nIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AuIElmIHRoZSBjb3VudGVyIGhhcyBjaGFuZ2VkIGluIGJldHdlZW4sIHRoZXkmIzM5O3JlIHJldHJ5aW5nIHRoZSBsb29rdXAuIFRoaXMgaXMgY2xhc3NpYyBjb25jdXJyZW5jeSBjb250cm9sLCBsaWtlbHkgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgc2ltaWxhciBpc3N1ZSB3aGVyZSB0aGUgcG9saWN5IGRhdGEgY291bGQgYmUgbW9kaWZpZWQgbWlkLWxvb2t1cCwgbGVhZGluZyB0byBpbmNvcnJlY3QgcmVzdWx0cy4KClRoZSBrZXkgaGVyZSBpcyB0aGF0IGB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3VgIGlzIGJlaW5nIHVzZWQsIHNvIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgaXMgaW52b2x2ZWQuIFRoZSBzZXF1ZW5jZSBjb3VudGVyIGFkZHMgZnVydGhlciBwcm90ZWN0aW9uIHdpdGhpbiB0aGF0IFJDVSBjb250ZXh0IHRvIGltcHJvdmUgcmVsaWFiaWxpdHkuCgpNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIHRvIHZlcmlmeSB0aGlzIGNoYW5nZSYjMzk7cyByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBjb25maXJtIGlmIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpcyBhY3R1YWxseSBjYWxsZWQgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMsIGFuZCBhbHNvIHdoaWNoIENPTkZJRyBvcHRpb25zIGFyZSBuZWNlc3NhcnkuIFRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgZGVmaW5lZCBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgcHJvYmFibHkgdXNlIGBncmVwcGVyYCBvciBhIHNpbWlsYXIgdG9vbCB0byBmaW5kIGFsbCBjYWxsIHNpdGVzIG9mIHRoZSBmdW5jdGlvbiB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZS4gVGhlIG92ZXJhcmNoaW5nIGBDT05GSUdfWEZSTWAgb3B0aW9uIGlzIGxpa2VseSB0aGUgcHJlcmVxdWlzaXRlLCBidXQgdGhlcmUgbWlnaHQgYmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGUgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBzZXF1ZW5jZSBjb3VudGVyIGltcGxlbWVudGF0aW9uIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwYXRjaCYjMzk7cyBzaWduaWZpY2FuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTIxMjc9eGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2NhbmRpZGF0ZXMgKmNhbmQsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTQ5LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMTUwOnN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVx0XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTIyMjU9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzEtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzI6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9TVUIsIGZsLCBmYW1pbHksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzMtXHRcdFx0XHRcdGRpciwgaWZfaWQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzNi0jZW5kaWZcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzNzpcdHJldHVybiB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLCBmbCwgZmFtaWx5LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM4LVx0XHRcdFx0XHQgZGlyLCBpZl9pZCk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzEtXHQgICAgcG9sc1swXS1cdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyODMyOlx0XHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzMtXHRcdFx0XHRcdFx0ICAgIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzc4Mi1cdGlmIChwb2xzWzBdLVx1MDAzZXR5cGUgIT0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOKSB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3ODM6XHRcdHBvbHNbMV0gPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzg0LVx0XHRcdFx0XHRcdCAgICBcdTAwMjZmbCwgZmFtaWx5LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQ5NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ1MjktXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ1MzA6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXHUwMDI2ZmwsIHNlbC1cdTAwM2VmYW1pbHksIGRpciwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVx0aWYgKElTX0VSUl9PUl9OVUxMKHBvbCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0MgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipEaWdnaW5nIGludG8gWEZSTSBQb2xpY3kgTG9va3VwIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgIGlzIGNsZWFybHkgYSBrZXkgZnVuY3Rpb24sIHNlZWluZyBhcyBpdCYjMzk7cyBjYWxsZWQgYnkgdGhlIGNvcmUgWEZSTSByb3V0aW5lczogYHhmcm1fcG9saWN5X2xvb2t1cGAsIGB4ZnJtX2V4cGFuZF9wb2xpY2llc2AsIHRoZSBwb2xpY3kgY2hlY2tlciBgX194ZnJtX3BvbGljeV9jaGVja2AsIGFuZCBldmVuIHRoZSBwb2xpY3kgbWlncmF0aW9uIGNvZGUgYHhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZGAuIFRoZXNlIGFyZSBhbGwgY2VudHJhbCB0byB0aGUgWEZSTSBmcmFtZXdvcmsuIEdpdmVuIHRoYXQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGZvciBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AgdG8gZmlndXJlIG91dCB3aGF0IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3Nhcnkgb3IgcmVsZXZhbnQgZm9yIHRoZXNlIGZ1bmN0aW9ucyB0byB3b3JrIGNvcnJlY3RseS4gQSBkZWVwIGRpdmUgaXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTEyPWVuZGlmXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cbm5ldC94ZnJtL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXHRcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlhGUk0gQ29uZmlndXJhdGlvbiBIZWFkYWNoZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFhGUk0gc2V0dXAsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX1hGUk1gIGlzIGEgZnVuZGFtZW50YWwgcmVxdWlyZW1lbnQuIENhbiYjMzk7dCByZWFsbHkgZG8gYW55dGhpbmcgWEZSTS1yZWxhdGVkIHdpdGhvdXQgdGhhdCwgaXQgc2VlbXMuIEFuZCB0aGVuLCB0eXBpY2FsbHksIHRvIG1hbmFnZSB0aGVzZSBwb2xpY2llcywgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGJlIGFibGUgdG8gY29uZmlndXJlIHRoaW5ncyBmcm9tIHVzZXIgc3BhY2UuIE1ha2VzIHRoaW5ncyBzbyBtdWNoIGVhc2llciBhbmQgbW9yZSBmbGV4aWJsZSwgcmlnaHQ/IFRoYXQgbWVhbnMgSSYjMzk7bGwgbmVlZCBgQ09ORklHX1hGUk1fVVNFUmAgYXMgd2VsbC4gQWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IGVuYWJsZWQuIFRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgaW4gYG5ldC94ZnJtL0tjb25maWdgIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4gR290dGEgZ2V0IHRoaXMgc2V0dXAgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgWEZSTSBQb2xpY3kgTG9va3VwKioKCk9rYXksIHNvIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgYENPTkZJR19YRlJNX1VTRVJgIGlzIGVzc2VudGlhbCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBYRlJNIHBvbGljaWVzIGZyb20gdXNlciBzcGFjZS4gTWFrZXMgc2Vuc2UuIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgaG9uaW5nIGluIG9uIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYC4gRGVmaW5pdGVseSBhIHByb21pc2luZyB0YXJnZXQgZm9yIGZ1enppbmcg4oCTIHJpZ2h0IHdoZXJlIEkgd291bGQgc3RhcnQuIEkgc2hvdWxkIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBrZXkgc3ltYm9scyBsaWtlIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCwgYHhmcm1fcG9saWN5X2xvb2t1cGAsIGB4ZnJtX2V4cGFuZF9wb2xpY2llc2AsIGFuZCBgX194ZnJtX3BvbGljeV9jaGVja2AuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpcyBzdGF0aWMuIEkgaGFkIGJldHRlciB0YWtlIGEgbG9vayBhdCBgeGZybV9wb2xpY3lfbG9va3VwYCB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTQxMT1MU01fSE9PSyhpbnQsIDAsIHhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oOjQxMjpMU01fSE9PSyhpbnQsIDAsIHhmcm1fcG9saWN5X2xvb2t1cCwgc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaC00MTMtTFNNX0hPT0soaW50LCAxLCB4ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbi0tXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg9MjAwNj12b2lkIHNlY3VyaXR5X3hmcm1fc3RhdGVfZnJlZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg6MjAwNzppbnQgc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKTtcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0yMDA4LWludCBzZWN1cml0eV94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaD0yMDUzPXN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0yMDU3LVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oOjIwNTg6c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTIwNTkte1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTk2ND1zdGF0aWMgaW50IHhmcm1fcG9saWN5X21hdGNoKGNvbnN0IHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTk3OS1cdGlmIChtYXRjaClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTk4MDpcdFx0cmV0ID0gc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHBvbC1cdTAwM2VzZWN1cml0eSwgZmwtXHUwMDNlZmxvd2lfc2VjaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xOTgxLVx0cmV0dXJuIHJldDtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTE5ODQ9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X25vZGUgKlxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxOTg1Onhmcm1fcG9saWN5X2xvb2t1cF9pbmV4YWN0X2FkZHIoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKnIsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE5ODYtXHRcdFx0XHRzZXFjb3VudF9zcGlubG9ja190ICpjb3VudCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTIwMjI9eGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfY2FuZGlkYXRlcyAqY2FuZCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIwMzYtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIwMzc6XHRuID0geGZybV9wb2xpY3lfbG9va3VwX2luZXhhY3RfYWRkcihcdTAwMjZiLVx1MDAzZXJvb3RfZCwgXHUwMDI2Yi1cdTAwM2Vjb3VudCwgZGFkZHIsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIwMzgtXHRcdFx0XHRcdCAgICBmYW1pbHkpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0MC1cdFx0Y2FuZC1cdTAwM2VyZXNbWEZSTV9QT0xfQ0FORF9EQUREUl0gPSBcdTAwMjZuLVx1MDAzZWhoZWFkO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMDQxOlx0XHRuID0geGZybV9wb2xpY3lfbG9va3VwX2luZXhhY3RfYWRkcihcdTAwMjZuLVx1MDAzZXJvb3QsIFx1MDAyNmItXHUwMDNlY291bnQsIHNhZGRyLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQyLVx0XHRcdFx0XHRcdCAgICBmYW1pbHkpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0Ni1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjA0NzpcdG4gPSB4ZnJtX3BvbGljeV9sb29rdXBfaW5leGFjdF9hZGRyKFx1MDAyNmItXHUwMDNlcm9vdF9zLCBcdTAwMjZiLVx1MDAzZWNvdW50LCBzYWRkcixcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0OC1cdFx0XHRcdFx0ICAgIGZhbWlseSk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMTI3PXhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcyhzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9jYW5kaWRhdGVzICpjYW5kLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE0OS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjE1MDpzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE1MS1cdFx0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjI0LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjI1OnN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMjYtXHRcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMxLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjMyOlx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfU1VCLCBmbCwgZmFtaWx5LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMzLVx0XHRcdFx0XHRkaXIsIGlmX2lkKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzYtI2VuZGlmXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzc6XHRyZXR1cm4geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTiwgZmwsIGZhbWlseSxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzOC1cdFx0XHRcdFx0IGRpciwgaWZfaWQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjI0MT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3NrX3BvbGljeV9sb29rdXAoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjI2NS1cdFx0XHR9XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyNjY6XHRcdFx0ZXJyID0gc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHBvbC1cdTAwM2VzZWN1cml0eSxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjI2Ny1cdFx0XHRcdFx0XHQgICAgICBmbC1cdTAwM2VmbG93aV9zZWNpZCk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzEtXHQgICAgcG9sc1swXS1cdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyODMyOlx0XHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzMtXHRcdFx0XHRcdFx0ICAgIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTMwODU9c3RhdGljIHN0cnVjdCB4ZnJtX2RzdCAqeGZybV9idW5kbGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMwOTYtXHRudW1fcG9scyA9IDE7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMwOTc6XHRwb2xzWzBdID0geGZybV9wb2xpY3lfbG9va3VwKG5ldCwgZmwsIGZhbWlseSwgZGlyLCBpZl9pZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMwOTgtXHRlcnIgPSB4ZnJtX2V4cGFuZF9wb2xpY2llcyhmbCwgZmFtaWx5LCBwb2xzLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzYyNj14ZnJtX3BvbGljeSAqeGZybV9pbl9md2RfaWNtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzYzOC1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzYzOTpcdFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwKG5ldCwgXHUwMDI2ZmwxLCBmYW1pbHksIFhGUk1fUE9MSUNZX0ZXRCwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjQwLVx0XHRpZiAoSVNfRVJSKHBvbCkpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjc3PWludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NDgtXHRpZiAoIXBvbClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc0OTpcdFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwKG5ldCwgXHUwMDI2ZmwsIGZhbWlseSwgZGlyLCBpZl9pZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTAtXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzgyLVx0aWYgKHBvbHNbMF0tXHUwMDNldHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX01BSU4pIHtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc4MzpcdFx0cG9sc1sxXSA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX01BSU4sXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3ODQtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNmZsLCBmYW1pbHksXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDk1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDUyOS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDUzMDpcdHBvbCA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCB0eXBlLCBcdTAwMjZmbCwgc2VsLVx1MDAzZWZhbWlseSwgZGlyLCBpZl9pZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ1MzEtXHRpZiAoSVNfRVJSX09SX05VTEwocG9sKSlcbi0tXG5zZWN1cml0eS9zZWN1cml0eS5jPTUwNDU9dm9pZCBzZWN1cml0eV94ZnJtX3N0YXRlX2ZyZWUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDUwLS8qKlxuc2VjdXJpdHkvc2VjdXJpdHkuYzo1MDUxOiAqIHNlY3VyaXR5X3hmcm1fcG9saWN5X2xvb2t1cCgpIC0gQ2hlY2sgaWYgdXNpbmcgYSB4ZnJtIHBvbGljeSBpcyBhbGxvd2VkXG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNTItICogQGN0eDogdGFyZ2V0IHhmcm0gc2VjdXJpdHkgY29udGV4dFxuLS1cbnNlY3VyaXR5L3NlY3VyaXR5LmMtNTA2MS0gKi9cbnNlY3VyaXR5L3NlY3VyaXR5LmM6NTA2MjppbnQgc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKVxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDYzLXtcbnNlY3VyaXR5L3NlY3VyaXR5LmM6NTA2NDpcdHJldHVybiBjYWxsX2ludF9ob29rKHhmcm1fcG9saWN5X2xvb2t1cCwgY3R4LCBmbF9zZWNpZCk7XG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNjUtfVxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz03NTYwPXN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfaG9va19saXN0IHNlbGludXhfaG9va3NbXSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc3NTktXHRMU01fSE9PS19JTklUKHhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5LCBzZWxpbnV4X3hmcm1fc3RhdGVfZGVsZXRlKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NzYwOlx0TFNNX0hPT0tfSU5JVCh4ZnJtX3BvbGljeV9sb29rdXAsIHNlbGludXhfeGZybV9wb2xpY3lfbG9va3VwKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NzYxLVx0TFNNX0hPT0tfSU5JVCh4ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoLFxuLS1cbnNlY3VyaXR5L3NlbGludXgvaW5jbHVkZS94ZnJtLmg9Mjc9aW50IHNlbGludXhfeGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaDoyODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpO1xuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaC0yOS1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTEzND1zdGF0aWMgaW50IHNlbGludXhfeGZybV9kZWxldGUoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4KVxuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jLTE0Ny0gKi9cbnNlY3VyaXR5L3NlbGludXgveGZybS5jOjE0ODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYy0xNDkte1xuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTE3MD1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbnNlY3VyaXR5L3NlbGludXgveGZybS5jLTIwMC1cdCAqIGlzIG5vdyBvZiB0aGUgc2FtZSBsYWJlbCBhcyB0aGUgZmxvdyBhbmQgYSBmbG93IFZzLiBwb2xpY3kgcG9sbWF0Y2hcbnNlY3VyaXR5L3NlbGludXgveGZybS5jOjIwMTpcdCAqIGNoZWNrIGhhZCBhbHJlYWR5IGhhcHBlbmVkIGluIHNlbGludXhfeGZybV9wb2xpY3lfbG9va3VwKCkgYWJvdmUuICovXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYy0yMDItXHRyZXR1cm4gKGF2Y19oYXNfcGVybShmbGljX3NpZCwgc3RhdGVfc2lkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjM1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgWEZSTSBQb2xpY3kgTG9va3VwIGFuZCBDaGVja2luZyoqCgpPa2F5LCBzbyBgeGZybV9wb2xpY3lfbG9va3VwYCBpcyBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uLCBqdXN0IGxpa2UgdGhlIG9uZSBJIHdhcyBsb29raW5nIGF0IHByZXZpb3VzbHkuIFRoYXQgbWVhbnMgaXRzIHZpc2liaWxpdHkgaXMgbGltaXRlZCB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGlzbiYjMzk7dCBpZGVhbCBmb3IgY2VydGFpbiBzY2VuYXJpb3MuIFRoZW4sIGFoYSEgYF9feGZybV9wb2xpY3lfY2hlY2tgIGlzIGVpdGhlciBleHBvcnRlZCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhpcyBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgZGVmaW5pbmcgbW9kdWxlLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHdoYXQgYF9feGZybV9wb2xpY3lfY2hlY2tgIGlzIGRvaW5nLiBUaGlzIG1pZ2h0IG9mZmVyIGltcG9ydGFudCBjbHVlcyBhYm91dCB0aGUgb3ZlcmFsbCBkZXNpZ24uIFdoaWxlIEkgYW0gYXQgaXQsIGxldHMgbm90IG5lZ2xlY3QgYHhmcm1fYnVuZGxlX2xvb2t1cGAgYXMgaXQgaXMgcmVsYXRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBgX194ZnJtX3BvbGljeV9jaGVja2AgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X194ZnJtX3BvbGljeV9jaGVjayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZnJtLmg9MTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhmcm1fb2ZmbG9hZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjY1LSNpZmRlZiBDT05GSUdfWEZSTVxuaW5jbHVkZS9uZXQveGZybS5oOjEyNjY6aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKiwgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjY3LVx0XHRcdHVuc2lnbmVkIHNob3J0IGZhbWlseSk7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTEyNzg9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI4OS1cbmluY2x1ZGUvbmV0L3hmcm0uaDoxMjkwOnN0YXRpYyBpbmxpbmUgaW50IF9feGZybV9wb2xpY3lfY2hlY2syKHN0cnVjdCBzb2NrICpzaywgaW50IGRpcixcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjkxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEyOTktXHRpZiAoc2sgXHUwMDI2XHUwMDI2IHNrLVx1MDAzZXNrX3BvbGljeVtYRlJNX1BPTElDWV9JTl0pXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMwMDpcdFx0cmV0dXJuIF9feGZybV9wb2xpY3lfY2hlY2soc2ssIG5kaXIsIHNrYiwgZmFtaWx5KTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzAxLVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzIwLVx0ICAgICAgIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc2tiLCBkaXIsIGZhbWlseSkgfHxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMzIxOlx0ICAgICAgIF9feGZybV9wb2xpY3lfY2hlY2soc2ssIG5kaXIsIHNrYiwgZmFtaWx5KTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzIyLX1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTMyND1zdGF0aWMgaW5saW5lIGludCB4ZnJtX3BvbGljeV9jaGVjayhzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI1LXtcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMzI2Olx0cmV0dXJuIF9feGZybV9wb2xpY3lfY2hlY2syKHNrLCBkaXIsIHNrYiwgZmFtaWx5LCAwKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI3LX1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTMzOT1zdGF0aWMgaW5saW5lIGludCB4ZnJtNF9wb2xpY3lfY2hlY2tfcmV2ZXJzZShzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEzNDEte1xuaW5jbHVkZS9uZXQveGZybS5oOjEzNDI6XHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBBRl9JTkVULCAxKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzQzLX1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTM0NT1zdGF0aWMgaW5saW5lIGludCB4ZnJtNl9wb2xpY3lfY2hlY2tfcmV2ZXJzZShzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEzNDcte1xuaW5jbHVkZS9uZXQveGZybS5oOjEzNDg6XHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBBRl9JTkVUNiwgMSk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTM0OS19XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjQ4PWRzdF9lbnRyeSAqeGZybV9vdXRfZndkX2ljbXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NzYtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM2Nzc6aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjc4LVx0XHRcdHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM4MzMtXHRcdFx0LyogVGhpcyBwb2xpY3kgdGVtcGxhdGUgd2FzIGFscmVhZHkgY2hlY2tlZCBieSBIV1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzozODM0Olx0XHRcdCAqIGFuZCBzZWNwYXRoIHdhcyByZW1vdmVkIGluIF9feGZybV9wb2xpY3lfY2hlY2syLlxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODM1LVx0XHRcdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg3Ni19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4Nzc6RVhQT1JUX1NZTUJPTChfX3hmcm1fcG9saWN5X2NoZWNrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk0OAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipLZXJuZWwgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlIERlZXAgRGl2ZTogQSBRdWljayBDcm9zcy1SZWZlcmVuY2UgUXVlcnkqKgoKT2theSwgc28gYF9feGZybV9wb2xpY3lfY2hlY2tgIGlzIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdzsgaXQgY29uZmlybXMgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgWEZSTSBwb2xpY3kgZW5mb3JjZW1lbnQgaXMgbWFkZSBhdmFpbGFibGUsIGxpa2VseSBmb3IgdXNlIGJ5IG90aGVyIG1vZHVsZXMgbmVlZGluZyB0byB2YWxpZGF0ZSB0cmFmZmljIGFnYWluc3QgYSBjb25maWd1cmVkIHBvbGljeS4gQnV0IGl0IHJhaXNlcyBhIGZsYWc6IGlmICp0aGF0KiBpcyBleHBvcnRlZCwgdGhlbiB3aGF0JiMzOTtzIHRoZSBkZWFsIHdpdGggYHhmcm1fbG9va3VwYD8KCkkgbmVlZCB0byBjb25maXJtIGlmIGB4ZnJtX2xvb2t1cGAgaGFzIGEgc2ltaWxhciBleHRlcm5hbCBhY2Nlc3NpYmlsaXR5LCBvciBpcyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIGB4ZnJtX2xvb2t1cGAgaXMgY3JpdGljYWwgZm9yLCBmcm9tIG1lbW9yeSwgcmVzb2x2aW5nIHRoZSBTQSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmFmZmljIGZsb3cuIElmIGl0ICppcyogYWNjZXNzaWJsZSwgdGhlcmUgY291bGQgYmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zIGZvciB0aGUgd2F5IHRoaXJkLXBhcnR5IG1vZHVsZXMgY291bGQgcG90ZW50aWFsbHkgaG9vayBpbnRvIG9yIGludGVyYWN0IHdpdGggdGhlIGNvcmUgWEZSTSBsb29rdXAgbWVjaGFuaXNtLiBJZiBpdCYjMzk7cyAqbm90KiBleHBvcnRlZCwgdGhlbiB0aGUgaW50ZW50IGNvdWxkIGJlIHRpZ2h0ZXIgY29udHJvbCBvdmVyIHRoZSBmdW5kYW1lbnRhbCBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgU0Egc2VsZWN0aW9uLiBUaGUgZXhwb3J0IChvciBsYWNrIHRoZXJlb2YpIG9mIGB4ZnJtX2xvb2t1cGAgd2lsbCBiZSBhbiBpbXBvcnRhbnQgZGF0YSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGRlc2lnbiBwaGlsb3NvcGh5IG9uIGZsZXhpYmlsaXR5IHZlcnN1cyBzZWN1cml0eSBhbmQgaXNvbGF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uIGZvciBpdHMgdmlzaWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9sb29rdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvZHN0Lmg9NDg4PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NoZWNrKHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgdTMyIGNvb2tpZSlcbi0tXG5pbmNsdWRlL25ldC9kc3QuaC00OTUtXG5pbmNsdWRlL25ldC9kc3QuaDo0OTY6LyogRmxhZ3MgZm9yIHhmcm1fbG9va3VwIGZsYWdzIGFyZ3VtZW50LiAqL1xuaW5jbHVkZS9uZXQvZHN0LmgtNDk3LWVudW0ge1xuLS1cbmluY2x1ZGUvbmV0L2RzdC5oPTUwMz1zdHJ1Y3QgZmxvd2k7XG5pbmNsdWRlL25ldC9kc3QuaC01MDQtI2lmbmRlZiBDT05GSUdfWEZSTVxuaW5jbHVkZS9uZXQvZHN0Lmg6NTA1OnN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuaW5jbHVkZS9uZXQvZHN0LmgtNTA2LVx0XHRcdFx0XHQgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXG4tLVxuaW5jbHVkZS9uZXQvZHN0Lmg9NTE0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqXG5pbmNsdWRlL25ldC9kc3QuaDo1MTU6eGZybV9sb29rdXBfd2l0aF9pZmlkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXG5pbmNsdWRlL25ldC9kc3QuaC01MTYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL25ldC9kc3QuaC01MjEtXG5pbmNsdWRlL25ldC9kc3QuaDo1MjI6c3RhdGljIGlubGluZSBzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsXG5pbmNsdWRlL25ldC9kc3QuaC01MjMtXHRcdFx0XHRcdFx0ICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbi0tXG5pbmNsdWRlL25ldC9kc3QuaD01MzE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeGZybV9zdGF0ZSAqZHN0X3hmcm0oY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxuLS1cbmluY2x1ZGUvbmV0L2RzdC5oLTUzNi0jZWxzZVxuaW5jbHVkZS9uZXQvZHN0Lmg6NTM3OnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXG5pbmNsdWRlL25ldC9kc3QuaC01MzgtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbmluY2x1ZGUvbmV0L2RzdC5oLTU0MC1cbmluY2x1ZGUvbmV0L2RzdC5oOjU0MTpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF93aXRoX2lmaWQoc3RydWN0IG5ldCAqbmV0LFxuaW5jbHVkZS9uZXQvZHN0LmgtNTQyLVx0XHRcdFx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbi0tXG5pbmNsdWRlL25ldC9kc3QuaC01NDYtXG5pbmNsdWRlL25ldC9kc3QuaDo1NDc6c3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbmluY2x1ZGUvbmV0L2RzdC5oLTU0OC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaWNtcC5jPTQ5ND1zdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4tLVxubmV0L2lwdjQvaWNtcC5jLTUyNi1cbm5ldC9pcHY0L2ljbXAuYzo1Mjc6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIFx1MDAyNnJ0LVx1MDAzZWRzdCxcbm5ldC9pcHY0L2ljbXAuYy01MjgtXHRcdFx0ICBmbG93aTRfdG9fZmxvd2koZmw0KSwgTlVMTCwgMCk7XG4tLVxubmV0L2lwdjQvaWNtcC5jLTYwMS1cbm5ldC9pcHY0L2ljbXAuYzo2MDI6XHRkc3QyID0geGZybV9sb29rdXAobmV0LCBcdTAwMjZydDItXHUwMDNlZHN0LCBmbG93aTRfdG9fZmxvd2koXHUwMDI2Zmw0X2RlYyksIE5VTEwsXG5uZXQvaXB2NC9pY21wLmMtNjAzLVx0XHRcdCAgIFhGUk1fTE9PS1VQX0lDTVApO1xuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jPTE2OT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnRpX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF92dGkuYy0yMTYtXHRkc3RfaG9sZChkc3QpO1xubmV0L2lwdjQvaXBfdnRpLmM6MjE3Olx0ZHN0ID0geGZybV9sb29rdXBfcm91dGUodHVubmVsLVx1MDAzZW5ldCwgZHN0LCBmbCwgTlVMTCwgMCk7XG5uZXQvaXB2NC9pcF92dGkuYy0yMTgtXHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYz0yMj1pbnQgaXBfcm91dGVfbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgYWRkcl90eXBlKVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci5jLTY4LVx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7XG5uZXQvaXB2NC9uZXRmaWx0ZXIuYzo2OTpcdFx0LyogaWdub3JlIHJldHVybiB2YWx1ZSBmcm9tIHNrYl9kc3RyZWZfc3RlYWwsIHhmcm1fbG9va3VwIHRha2VzXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYy03MC1cdFx0ICogY2FyZSBvZiBkcm9wcGluZyB0aGUgcmVmY250IGlmIG5lZWRlZC5cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYy03Mi1cdFx0c2tiX2RzdHJlZl9zdGVhbChza2IpO1xubmV0L2lwdjQvbmV0ZmlsdGVyLmM6NzM6XHRcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTRfdG9fZmxvd2koXHUwMDI2Zmw0KSwgc2ssIDApO1xubmV0L2lwdjQvbmV0ZmlsdGVyLmMtNzQtXHRcdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jPTI5NTg9c3RydWN0IHJ0YWJsZSAqaXBfcm91dGVfb3V0cHV0X2Zsb3coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbHA0LFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtMjk2Ny1cdFx0ZmxwNC1cdTAwM2VmbG93aTRfb2lmID0gcnQtXHUwMDNlZHN0LmRldi1cdTAwM2VpZmluZGV4O1xubmV0L2lwdjQvcm91dGUuYzoyOTY4Olx0XHRydCA9IGRzdF9ydGFibGUoeGZybV9sb29rdXBfcm91dGUobmV0LCBcdTAwMjZydC1cdTAwM2Vkc3QsXG5uZXQvaXB2NC9yb3V0ZS5jLTI5NjktXHRcdFx0XHRcdFx0ICBmbG93aTRfdG9fZmxvd2koZmxwNCksXG4tLVxubmV0L2lwdjYvaWNtcC5jPTM1ND1zdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqaWNtcHY2X3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2lwdjYvaWNtcC5jLTM4MC1cbm5ldC9pcHY2L2ljbXAuYzozODE6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIHNrLCAwKTtcbm5ldC9pcHY2L2ljbXAuYy0zODItXHRpZiAoIUlTX0VSUihkc3QpKSB7XG4tLVxubmV0L2lwdjYvaWNtcC5jLTM5OS1cbm5ldC9pcHY2L2ljbXAuYzo0MDA6XHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QyLCBmbG93aTZfdG9fZmxvd2koXHUwMDI2ZmwyKSwgc2ssIFhGUk1fTE9PS1VQX0lDTVApO1xubmV0L2lwdjYvaWNtcC5jLTQwMS1cdGlmICghSVNfRVJSKGRzdDIpKSB7XG4tLVxubmV0L2lwdjYvaWNtcC5jPTkyMT1zdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gaWNtcHY2X2VjaG9fcmVwbHkoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9pY21wLmMtOTkxLVx0XHRnb3RvIG91dDtcbm5ldC9pcHY2L2ljbXAuYzo5OTI6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIHNrLCAwKTtcbm5ldC9pcHY2L2ljbXAuYy05OTMtXHRpZiAoSVNfRVJSKGRzdCkpXG4tLVxubmV0L2lwdjYvaWxhL2lsYV9sd3QuYz0zOD1zdGF0aWMgaW50IGlsYV9vdXRwdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvaWxhL2lsYV9sd3QuYy04NC1cbm5ldC9pcHY2L2lsYS9pbGFfbHd0LmM6ODU6XHRcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXHUwMDI2Zmw2KSwgTlVMTCwgMCk7XG5uZXQvaXB2Ni9pbGEvaWxhX2x3dC5jLTg2LVx0XHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTI4NT1zdHJ1Y3QgZHN0X2VudHJ5ICppcDZfZHN0X2xvb2t1cF9mbG93KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmxvd2k2ICpmbDYsXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jLTEyOTgtXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTI5OTpcdHJldHVybiB4ZnJtX2xvb2t1cF9yb3V0ZShuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIHNrLCAwKTtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xMzAwLX1cbi0tXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmM9MTEwMD1pbnQgaXA2X3RubF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fdTggZHNmaWVsZCxcbi0tXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTE4My1cdFx0XHRnb3RvIHR4X2Vycl9saW5rX2ZhaWx1cmU7XG5uZXQvaXB2Ni9pcDZfdHVubmVsLmM6MTE4NDpcdFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBOVUxMLCAwKTtcbm5ldC9pcHY2L2lwNl90dW5uZWwuYy0xMTg1LVx0XHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmM9NDEzPXN0YXRpYyBib29sIHZ0aTZfc3RhdGVfY2hlY2soY29uc3Qgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4tLVxubmV0L2lwdjYvaXA2X3Z0aS5jLTQzOS0gKiAgIEBkZXY6IHRoZSBvdXRnb2luZyB0dW5uZWwgZGV2aWNlXG5uZXQvaXB2Ni9pcDZfdnRpLmM6NDQwOiAqICAgQGZsOiB0aGUgZmxvdyBpbmZvcm1hdGlvbnMgZm9yIHRoZSB4ZnJtX2xvb2t1cFxubmV0L2lwdjYvaXA2X3Z0aS5jLTQ0MS0gKiovXG4tLVxubmV0L2lwdjYvaXA2X3Z0aS5jPTQ0Mz12dGk2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGZsb3dpICpmbClcbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmMtNDgzLVx0ZHN0X2hvbGQoZHN0KTtcbm5ldC9pcHY2L2lwNl92dGkuYzo0ODQ6XHRkc3QgPSB4ZnJtX2xvb2t1cF9yb3V0ZSh0LVx1MDAzZW5ldCwgZHN0LCBmbCwgTlVMTCwgMCk7XG5uZXQvaXB2Ni9pcDZfdnRpLmMtNDg1LVx0aWYgKElTX0VSUihkc3QpKSB7XG4tLVxubmV0L2lwdjYvbmRpc2MuYz0xNjU4PXZvaWQgbmRpc2Nfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnRhcmdldClcbi0tXG5uZXQvaXB2Ni9uZGlzYy5jLTE3MDAtXHR9XG5uZXQvaXB2Ni9uZGlzYy5jOjE3MDE6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIE5VTEwsIDApO1xubmV0L2lwdjYvbmRpc2MuYy0xNzAyLVx0aWYgKElTX0VSUihkc3QpKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci5jPTI0PWludCBpcDZfcm91dGVfbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrX3BhcnRpYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNjYtXHQgICAgeGZybV9kZWNvZGVfc2Vzc2lvbihuZXQsIHNrYiwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIEFGX0lORVQ2KSA9PSAwKSB7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzo2NzpcdFx0LyogaWdub3JlIHJldHVybiB2YWx1ZSBmcm9tIHNrYl9kc3RyZWZfc3RlYWwsIHhmcm1fbG9va3VwIHRha2VzXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy02OC1cdFx0ICogY2FyZSBvZiBkcm9wcGluZyB0aGUgcmVmY250IGlmIG5lZWRlZC5cbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy03MC1cdFx0c2tiX2RzdHJlZl9zdGVhbChza2IpO1xubmV0L2lwdjYvbmV0ZmlsdGVyLmM6NzE6XHRcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXHUwMDI2Zmw2KSwgc2ssIDApO1xubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNzItXHRcdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz0zMTM9dm9pZCBuZl9zZW5kX3Jlc2V0NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYy0zNTctXHR9XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzozNTg6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFx1MDAyNmZsNiksIE5VTEwsIDApO1xubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtMzU5LVx0aWYgKElTX0VSUihkc3QpKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9MzMzNT1zdHJ1Y3QgZHN0X2VudHJ5ICppY21wNl9kc3RfYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTMzNjUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjMzNjY6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIE5VTEwsIDApO1xubmV0L2lwdjYvcm91dGUuYy0zMzY3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NDQ5PV9faXBfdnNfcm91dGVfb3V0cHV0X3Y2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGluNl9hZGRyICpkYWRkcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ2OS1cdGlmIChkb194ZnJtKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjQ3MDpcdFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShcdTAwMjZmbDYpLCBOVUxMLCAwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNDcxLVx0XHRpZiAoSVNfRVJSKGRzdCkpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jPTYwMT1zdGF0aWMgaW50IG5mX3hmcm1fbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGZhbWlseSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jLTYyMS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3Byb3RvLmM6NjIyOlx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIFx1MDAyNmZsLCBzaywgMCk7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jLTYyMy1cdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3N5bnByb3h5X2NvcmUuYz04MjI9c3lucHJveHlfc2VuZF90Y3BfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmMtODQ5LVxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmM6ODUwOlx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShcdTAwMjZmbDYpLCBOVUxMLCAwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfc3lucHJveHlfY29yZS5jLTg1MS1cdGlmIChJU19FUlIoZHN0KSlcbi0tXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM9NDI0PXhmcm1pX3htaXQyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBmbG93aSAqZmwpXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTQ1NS1cdGRzdF9ob2xkKGRzdCk7XG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM6NDU2Olx0ZHN0ID0geGZybV9sb29rdXBfd2l0aF9pZmlkKHhpLVx1MDAzZW5ldCwgZHN0LCBmbCwgTlVMTCwgMCwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTQ1Ny1cdGlmIChJU19FUlIoZHN0KSkge1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9Mjg5Nz1zdGF0aWMgdm9pZCB4ZnJtX3BvbGljeV9xdWV1ZV9wcm9jZXNzKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjkyNS1cdGRzdF9ob2xkKHhmcm1fZHN0X3BhdGgoZHN0KSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjI5MjY6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIHhmcm1fZHN0X3BhdGgoZHN0KSwgXHUwMDI2ZmwsIHNrLCBYRlJNX0xPT0tVUF9RVUVVRSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5MjctXHRpZiAoSVNfRVJSKGRzdCkpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTYwLVx0XHRkc3RfaG9sZCh4ZnJtX2RzdF9wYXRoKHNrYl9kc3Qoc2tiKSkpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyOTYxOlx0XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIHhmcm1fZHN0X3BhdGgoc2tiX2RzdChza2IpKSwgXHUwMDI2ZmwsIHNrYi1cdTAwM2VzaywgMCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5NjItXHRcdGlmIChJU19FUlIoZHN0KSkge1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE0OD1zdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqbWFrZV9ibGFja2hvbGUoc3RydWN0IG5ldCAqbmV0LCB1MTYgZmFtaWx5LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzE2OS0gKlxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTcwOiAqIHhmcm1fbG9va3VwIHVzZXMgYW4gaWZfaWQgb2YgMCBieSBkZWZhdWx0LCBhbmQgaXMgcHJvdmlkZWQgZm9yXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMxNzEtICogY29tcGF0aWJpbGl0eVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTcyLSAqL1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTczOnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMxNzQtXHRcdFx0XHRcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMyNS19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMjY6RVhQT1JUX1NZTUJPTCh4ZnJtX2xvb2t1cF93aXRoX2lmaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzI3LVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMzMi0gKi9cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzMzMzpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzM0LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsIGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzMzYte1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzM3Olx0cmV0dXJuIHhmcm1fbG9va3VwX3dpdGhfaWZpZChuZXQsIGRzdF9vcmlnLCBmbCwgc2ssIGZsYWdzLCAwKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMzOC19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMzk6RVhQT1JUX1NZTUJPTCh4ZnJtX2xvb2t1cCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDAtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDE6LyogQ2FsbGVycyBvZiB4ZnJtX2xvb2t1cF9yb3V0ZSgpIG11c3QgZW5zdXJlIGEgY2FsbCB0byBkc3Rfb3V0cHV0KCkuXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDItICogT3RoZXJ3aXNlIHdlIG1heSBzZW5kIG91dCBibGFja2hvbGVkIHBhY2tldHMuXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDMtICovXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDQ6c3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0NS1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0Ny17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDg6XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdF9vcmlnLCBmbCwgc2ssXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDktXHRcdFx0XHRcdCAgICBmbGFncyB8IFhGUk1fTE9PS1VQX1FVRVVFIHxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNTktfVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzYwOkVYUE9SVF9TWU1CT0woeGZybV9sb29rdXBfcm91dGUpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzYxLVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzY0OD1kc3RfZW50cnkgKnhmcm1fb3V0X2Z3ZF9pY21wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aSAqZmwsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjYwLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozNjYxOlx0XHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QsIFx1MDAyNmZsMSwgTlVMTCwgKFhGUk1fTE9PS1VQX1FVRVVFIHwgWEZSTV9MT09LVVBfSUNNUCkpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjYyLVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9Mzg3OT1pbnQgX194ZnJtX3JvdXRlX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg5Ny1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzg5ODpcdC8qIGlnbm9yZSByZXR1cm4gdmFsdWUgZnJvbSBza2JfZHN0cmVmX3N0ZWFsLCB4ZnJtX2xvb2t1cCB0YWtlc1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODk5LVx0ICogY2FyZSBvZiBkcm9wcGluZyB0aGUgcmVmY250IGlmIG5lZWRlZC5cbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM5MDItXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM5MDM6XHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgXHUwMDI2ZmwsIE5VTEwsIFhGUk1fTE9PS1VQX1FVRVVFKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzkwNC1cdGlmIChJU19FUlIoZHN0KSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM0MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBYRlJNIFBvbGljeSBMb29rdXAgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIFhGUk0gcG9saWN5IGxvb2t1cHMuIEZvciBvdXRnb2luZyBwYWNrZXRzLCB0aGUgaGVhdnkgbGlmdGVycyBhcmUgY2xlYXJseSBgeGZybV9sb29rdXBgIGFuZCBgeGZybV9sb29rdXBfcm91dGVgLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYmUga2VlcGluZyBhIGNsb3NlIGV5ZSBvbi4gQW5kIGZvciBpbmNvbWluZyBwYWNrZXRzLCBpdCYjMzk7cyBhbGwgYWJvdXQgYF9feGZybV9wb2xpY3lfY2hlY2tgLiBUaG9zZSB0aHJlZSBmdW5jdGlvbnMsIGB4ZnJtX2xvb2t1cGAsIGB4ZnJtX2xvb2t1cF9yb3V0ZWAsIGFuZCBgX194ZnJtX3BvbGljeV9jaGVja2AsIGFyZSBkZWZpbml0ZWx5IHRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2xzIGhlcmUuCgpJIGFsc28gc2VlIHRoYXQgYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgIHdhcyB0aGUgZnVuY3Rpb24gdGhhdCBzYXcgc29tZSBtb2RpZmljYXRpb24sIGJ1dCBpdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIG1lIGN1cmlvdXMuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaWcgaW4gYSBiaXQgZGVlcGVyIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgaW5saW5lZC4gU3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreSB0byBhbmFseXplIGRpcmVjdGx5LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyJiMzOTtzIG9wdGltaXphdGlvbiBzdHJhdGVneS4gU28sIGNoZWNraW5nIGZvciBpbmxpbmluZyBpcyB0aGUgbmV4dCBzdGVwIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBsb29rdXAgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTIxMjc9eGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2NhbmRpZGF0ZXMgKmNhbmQsXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTQ5LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMTUwOnN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVx0XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTIyMjU9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzEtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzI6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9TVUIsIGZsLCBmYW1pbHksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzMtXHRcdFx0XHRcdGRpciwgaWZfaWQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzNi0jZW5kaWZcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzNzpcdHJldHVybiB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLCBmbCwgZmFtaWx5LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM4LVx0XHRcdFx0XHQgZGlyLCBpZl9pZCk7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzEtXHQgICAgcG9sc1swXS1cdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyODMyOlx0XHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI4MzMtXHRcdFx0XHRcdFx0ICAgIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzc4Mi1cdGlmIChwb2xzWzBdLVx1MDAzZXR5cGUgIT0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOKSB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3ODM6XHRcdHBvbHNbMV0gPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzg0LVx0XHRcdFx0XHRcdCAgICBcdTAwMjZmbCwgZmFtaWx5LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQ5NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ1MjktXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ1MzA6XHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXHUwMDI2ZmwsIHNlbC1cdTAwM2VmYW1pbHksIGRpciwgaWZfaWQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVx0aWYgKElTX0VSUl9PUl9OVUxMKHBvbCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTQ3CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBjb21waWxlciAqbWlnaHQqIGJlIGlubGluaW5nIHNvbWUgZnVuY3Rpb25zIGhlcmUsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIG5vdCBleHBsaWNpdGx5IG1hcmtlZCB0aGF0IHdheS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBpbmNsdWRlIGB4ZnJtX2xvb2t1cGAsIGB4ZnJtX2xvb2t1cF9yb3V0ZWAsIGBfX3hmcm1fcG9saWN5X2NoZWNrYCwgYW5kIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBhcHByb2FjaCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBpbmxpbmluZy4KCkFuZCBvZiBjb3Vyc2UsIHdlIG5lZWQgdG8gaGF2ZSBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgIGNvbmZpZ3VyZWQgdG8gcnVuIHRoZXNlIHN5bWJvbHMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBzZWUgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IGFzIHdlbGwuIFRoZSBjb2RlIGl0c2VsZiBpcyBsb2NhdGVkIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCwgc28gSSBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIHNvdXJjZS4KCkxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0b3VjaGluZyBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgYWltZWQgYXQgcmVzb2x2aW5nIGEgcmFjZSBjb25kaXRpb24gdGhhdCBwb3BzIHVwIHdoZW4gd2UmIzM5O3JlIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQgaW1wYWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbS4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdG8gaGVscCBjb25maXJtIHRoZSBmaXguCgpGaW5hbGx5LCBJJiMzOTtsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBtYWtlIHRoZSByZXN1bHRzIGNsZWFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2xvb2t1cCYjMzQ7LAogICAgJiMzNDt4ZnJtX2xvb2t1cF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtfX3hmcm1fcG9saWN5X2NoZWNrJiMzNDssCiAgICAmIzM0O3hmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBYRlJNIHBvbGljeSBsb29rdXAgYnkgYWRkaW5nIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aGVuIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBYRlJNIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fbG9va3VwJiMzNDssCiAgICAmIzM0O3hmcm1fbG9va3VwX3JvdXRlJiMzNDssCiAgICAmIzM0O19feGZybV9wb2xpY3lfY2hlY2smIzM0OywKICAgICYjMzQ7eGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFhGUk0gcG9saWN5IGxvb2t1cCBieSBhZGRpbmcgYSBzZXF1ZW5jZSBjb3VudGVyIGNoZWNrIHdoZW4gZXZhbHVhdGluZyBpbmV4YWN0IGNhbmRpZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFhGUk0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTg6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNlcXVlbmNlIGNvdW50ZXIgcmV0cnkgbG9vcCAoYHJlYWRfc2VxY291bnRfYmVnaW5gIGFuZCBgcmVhZF9zZXFjb3VudF9yZXRyeWApIGFyb3VuZCBgeGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXNgIGFuZCBgeGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzYCB0byBmaXggYSBjb25jdXJyZW5jeSBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gbGVhZGluZyB0byBpbmNvbnNpc3RlbnQgc3RhdGUgb3IgdXNlLWFmdGVyLWZyZWUpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzE2MmU2MzA2ZDFhZTk4OGYxNWJjMjFhYjgxYTYzYzdlZjcwN2NlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDE4OjA4OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jCkBAIC0yMTU3LDYgJiM0MzsyMTU3LDcgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsCiAJc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfYmluICpiaW47CiAJc3RydWN0IHhmcm1fcG9saWN5ICpwb2wsICpyZXQ7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmNoYWluOwomIzQzOwl1bnNpZ25lZCBpbnQgaW5leGFjdF9zZXF1ZW5jZTsKIAl1bnNpZ25lZCBpbnQgc2VxdWVuY2U7CiAJaW50IGVycjsKIApAQCAtMjE5MSwxMiAmIzQzOzIxOTIsMTggQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsCiAJCWdvdG8gc2tpcF9pbmV4YWN0OwogCiAJYmluID0geGZybV9wb2xpY3lfaW5leGFjdF9sb29rdXBfcmN1KG5ldCwgdHlwZSwgZmFtaWx5LCBkaXIsIGlmX2lkKTsKLQlpZiAoIWJpbiB8fCAheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoJmFtcDtjYW5kLCBiaW4sIHNhZGRyLAotCQkJCQkJCSBkYWRkcikpCiYjNDM7CWlmICghYmluKQomIzQzOwkJZ290byBza2lwX2luZXhhY3Q7CiYjNDM7CiYjNDM7CWluZXhhY3Rfc2VxdWVuY2UgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7YmluLSZndDtjb3VudCk7CiYjNDM7CWlmICgheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoJmFtcDtjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpCiAJCWdvdG8gc2tpcF9pbmV4YWN0OwogCiAJcG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKCZhbXA7Y2FuZCwgcmV0LCBmbCwgdHlwZSwKIAkJCQkJICBmYW1pbHksIGlmX2lkKTsKJiM0MzsJaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJmFtcDtiaW4tJmd0O2NvdW50LCBpbmV4YWN0X3NlcXVlbmNlKSkKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CiAJaWYgKHBvbCkgewogCQlyZXQgPSBwb2w7CiAJCWlmIChJU19FUlIocG9sKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjkKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogNjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgRml4IGluIHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYSBzZXFsb2NrIHJldHJ5IGxvb3AgYXJvdW5kIHRoZSBpbmV4YWN0IHBvbGljeSBsb29rdXAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBhZGRpbmcgYW4gYHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlYCB2YXJpYWJsZSBhbmQgdXNpbmcgYHJlYWRfc2VxY291bnRfYmVnaW5gIGFuZCBgcmVhZF9zZXFjb3VudF9yZXRyeWAgYXJvdW5kIHRoZSBjYWxscyB0byBgeGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXNgIGFuZCBgeGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzYC4KCkVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBkb2luZyB0aGlzOiBmaXJzdCwgYWNxdWlyZSB0aGUgc2VxdWVuY2UgbnVtYmVyLiBUaGVuLCBmaW5kIHRoZSBjYW5kaWRhdGVzLiBOZXh0LCBldmFsdWF0ZSB0aG9zZSBjYW5kaWRhdGVzLiBGaW5hbGx5LCByZXRyeSBpZiB0aGUgc2VxdWVuY2UgbnVtYmVyIGhhcyBjaGFuZ2VkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgY29uY3VycmVuY3kgZml4LiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IGRlc2lnbmVkIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgdGhlIGxvb2t1cCwgd2hpY2ggY291bGQgbGVhZCB0byBlaXRoZXIgYW4gaW5jb3JyZWN0IHBvbGljeSBiZWluZyBjaG9zZW4gb3IsIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB0aGluZ3MgZ28gcmVhbGx5IHdyb25nLiBUaGUgdXNlIG9mIHRoZSBzZXFsb2NrIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQuCgpOb3csIEkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUgYXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQmIzM5O3Mgc2VlLi4uIGBpbmV4YWN0X3NlcXVlbmNlYCBnZXRzIGluaXRpYWxpemVkIGJ5IGByZWFkX3NlcWNvdW50X2JlZ2luYC4gU28gbm8uIE5vIGlzc3VlcyB0aGVyZS4gVGhlIGBjYW5kYCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkIHdpdGhpbiB0aGUgbG9vcC4gTm90aGluZyBJIHNlZSBzdWdnZXN0cyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXhwb3NlZC4KCkxldCYjMzk7cyBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkYXRhIGZsb3cuIGBjYW5kYCBpcyBwYXNzZWQgdG8gdGhlIHR3byBjb3JlIGZ1bmN0aW9ucy4gSWYgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCByZXR1cm5zIGZhbHNlLCB3ZSBnbyB0byBgc2tpcF9pbmV4YWN0YC4gT3RoZXJ3aXNlLCBpdCAqZG9lcyogZmluZCBjYW5kaWRhdGVzLCB0aGVuIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGVtLiBJZiBhIHJldHJ5IGlzIG5lZWRlZCwgd2UgbG9vcC4KClNvIHRoZSBtYWluIGNvbmNlcm4gaGVyZSBzZWVtcyB0byBiZSB0aGUgY29uY3VycmVuY3ksIGxpa2VseSB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IHBvbGljeSBldmFsdWF0aW9uIG9yIGV2ZW4gYSBVQUYuIFRob3NlIGtpbmRzIG9mIGlzc3VlcyBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgS0FTQU4gb3IsIGxlc3MgZHJhbWF0aWNhbGx5LCBsb2dpYyBidWdzLiBLTVNBTiBpc24mIzM5O3QgcmVsZXZhbnQgaGVyZSwgYXMgdGhlcmUgaXNuJiMzOTt0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB3b3JyeSBhYm91dC4KClllcCwgdGhpcyBsb29rcyBzb2xpZC4gSSYjMzk7bSBzZXR0aW5nIE5lZWRzS01TQU49ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzZXF1ZW5jZSBjb3VudGVyIHJldHJ5IGxvb3AgKGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgKSBhcm91bmQgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AgdG8gZml4IGEgY29uY3VycmVuY3kgaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHN0YXRlIG9yIHVzZS1hZnRlci1mcmVlKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2VxdWVuY2UgY291bnRlciByZXRyeSBsb29wIChgcmVhZF9zZXFjb3VudF9iZWdpbmAgYW5kIGByZWFkX3NlcWNvdW50X3JldHJ5YCkgYXJvdW5kIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgYW5kIGB4ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXNgIHRvIGZpeCBhIGNvbmN1cnJlbmN5IGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBsZWFkaW5nIHRvIGluY29uc2lzdGVudCBzdGF0ZSBvciB1c2UtYWZ0ZXItZnJlZSkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODowODozOS40NTg2Nzg4OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzg4NDMyNTY4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9sb29rdXBcIixcbiAgICBcInhmcm1fbG9va3VwX3JvdXRlXCIsXG4gICAgXCJfX3hmcm1fcG9saWN5X2NoZWNrXCIsXG4gICAgXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2VxdWVuY2UgY291bnRlciByZXRyeSBsb29wIChgcmVhZF9zZXFjb3VudF9iZWdpbmAgYW5kIGByZWFkX3NlcWNvdW50X3JldHJ5YCkgYXJvdW5kIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgYW5kIGB4ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXNgIHRvIGZpeCBhIGNvbmN1cnJlbmN5IGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBsZWFkaW5nIHRvIGluY29uc2lzdGVudCBzdGF0ZSBvciB1c2UtYWZ0ZXItZnJlZSkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MDg6MzkuNDU4Njg2MjM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzc2NjUyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MTYyZTYzMDZkMWFlOTg4ZjE1YmMyMWFiODFhNjNjN2VmNzA3Y2U3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDI0IDE4OjA4OjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDRcXG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xcbkBAIC0yMTU3LDYgKzIxNTcsNyBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcXG4gXFx0c3RydWN0IHhmcm1fcG9sX2luZXhhY3RfYmluICpiaW47XFxuIFxcdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sLCAqcmV0O1xcbiBcXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqY2hhaW47XFxuK1xcdHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlO1xcbiBcXHR1bnNpZ25lZCBpbnQgc2VxdWVuY2U7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0yMTkxLDEyICsyMTkyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxcbiBcXHRcXHRnb3RvIHNraXBfaW5leGFjdDtcXG4gXFxuIFxcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfbG9va3VwX3JjdShuZXQsIHR5cGUsIGZhbWlseSwgZGlyLCBpZl9pZCk7XFxuLVxcdGlmICghYmluIHx8ICF4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlcyhcXHUwMDI2Y2FuZCwgYmluLCBzYWRkcixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0IGRhZGRyKSlcXG4rXFx0aWYgKCFiaW4pXFxuK1xcdFxcdGdvdG8gc2tpcF9pbmV4YWN0O1xcbitcXG4rXFx0aW5leGFjdF9zZXF1ZW5jZSA9IHJlYWRfc2VxY291bnRfYmVnaW4oXFx1MDAyNmJpbi1cXHUwMDNlY291bnQpO1xcbitcXHRpZiAoIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKFxcdTAwMjZjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpXFxuIFxcdFxcdGdvdG8gc2tpcF9pbmV4YWN0O1xcbiBcXG4gXFx0cG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKFxcdTAwMjZjYW5kLCByZXQsIGZsLCB0eXBlLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGZhbWlseSwgaWZfaWQpO1xcbitcXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcXHUwMDI2YmluLVxcdTAwM2Vjb3VudCwgaW5leGFjdF9zZXF1ZW5jZSkpXFxuK1xcdFxcdGdvdG8gcmV0cnk7XFxuK1xcbiBcXHRpZiAocG9sKSB7XFxuIFxcdFxcdHJldCA9IHBvbDtcXG4gXFx0XFx0aWYgKElTX0VSUihwb2wpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODowODozOS44OTcxMzUxMTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3Mzc5NTkwOTA5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9sb29rdXBcIixcbiAgICBcInhmcm1fbG9va3VwX3JvdXRlXCIsXG4gICAgXCJfX3hmcm1fcG9saWN5X2NoZWNrXCIsXG4gICAgXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBYRlJNIHBvbGljeSBsb29rdXAgYnkgYWRkaW5nIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aGVuIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBYRlJNIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MTYyZTYzMDZkMWFlOTg4ZjE1YmMyMWFiODFhNjNjN2VmNzA3Y2U3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTg6MDg6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuaW5kZXggOTMyYTMxM2I5NDYwYS4uNWQ0ZTg2Mzg2M2RmZSAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcbkBAIC0yMTU3LDYgKzIxNTcsNyBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbiBcdHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2JpbiAqYmluO1xuIFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2wsICpyZXQ7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqY2hhaW47XG4rXHR1bnNpZ25lZCBpbnQgaW5leGFjdF9zZXF1ZW5jZTtcbiBcdHVuc2lnbmVkIGludCBzZXF1ZW5jZTtcbiBcdGludCBlcnI7XG4gXG5AQCAtMjE5MSwxMiArMjE5MiwxOCBAQCBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcbiBcdFx0Z290byBza2lwX2luZXhhY3Q7XG4gXG4gXHRiaW4gPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3UobmV0LCB0eXBlLCBmYW1pbHksIGRpciwgaWZfaWQpO1xuLVx0aWYgKCFiaW4gfHwgIXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIGJpbiwgc2FkZHIsXG4tXHRcdFx0XHRcdFx0XHQgZGFkZHIpKVxuK1x0aWYgKCFiaW4pXG4rXHRcdGdvdG8gc2tpcF9pbmV4YWN0O1xuK1xuK1x0aW5leGFjdF9zZXF1ZW5jZSA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2YmluLVx1MDAzZWNvdW50KTtcbitcdGlmICgheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoXHUwMDI2Y2FuZCwgYmluLCBzYWRkciwgZGFkZHIpKVxuIFx0XHRnb3RvIHNraXBfaW5leGFjdDtcbiBcbiBcdHBvbCA9IHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcyhcdTAwMjZjYW5kLCByZXQsIGZsLCB0eXBlLFxuIFx0XHRcdFx0XHQgIGZhbWlseSwgaWZfaWQpO1xuK1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2YmluLVx1MDAzZWNvdW50LCBpbmV4YWN0X3NlcXVlbmNlKSlcbitcdFx0Z290byByZXRyeTtcbitcbiBcdGlmIChwb2wpIHtcbiBcdFx0cmV0ID0gcG9sO1xuIFx0XHRpZiAoSVNfRVJSKHBvbCkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODowODozOS44OTcxMzY2MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDEzNDM0NTgzMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYC4gSXQgc2VlbXMgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aXRoaW4gYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgLCBzcGVjaWZpY2FsbHkgd2hlbiBkZWFsaW5nIHdpdGggaW5leGFjdCBwb2xpY3kgY2FuZGlkYXRlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzOiB0aGV5J3JlIG5vdyByZWFkaW5nIGEgc2VxdWVuY2UgY291bnRlciBiZWZvcmUgYW5kIGFmdGVyIGNhbGxpbmcgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYC4gSWYgdGhlIGNvdW50ZXIgaGFzIGNoYW5nZWQgaW4gYmV0d2VlbiwgdGhleSdyZSByZXRyeWluZyB0aGUgbG9va3VwLiBUaGlzIGlzIGNsYXNzaWMgY29uY3VycmVuY3kgY29udHJvbCwgbGlrZWx5IHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiBvciBhIHNpbWlsYXIgaXNzdWUgd2hlcmUgdGhlIHBvbGljeSBkYXRhIGNvdWxkIGJlIG1vZGlmaWVkIG1pZC1sb29rdXAsIGxlYWRpbmcgdG8gaW5jb3JyZWN0IHJlc3VsdHMuXG5cblRoZSBrZXkgaGVyZSBpcyB0aGF0IGB4ZnJtX3BvbGljeV9pbmV4YWN0X2xvb2t1cF9yY3VgIGlzIGJlaW5nIHVzZWQsIHNvIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgaXMgaW52b2x2ZWQuIFRoZSBzZXF1ZW5jZSBjb3VudGVyIGFkZHMgZnVydGhlciBwcm90ZWN0aW9uIHdpdGhpbiB0aGF0IFJDVSBjb250ZXh0IHRvIGltcHJvdmUgcmVsaWFiaWxpdHkuXG5cbk15IG5leHQgc3RlcHMgd291bGQgYmUgdG8gdmVyaWZ5IHRoaXMgY2hhbmdlJ3MgcmVhY2hhYmlsaXR5LiBJIG5lZWQgdG8gY29uZmlybSBpZiBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAgaXMgYWN0dWFsbHkgY2FsbGVkIHVuZGVyIGRpZmZlcmVudCBjb25kaXRpb25zLCBhbmQgYWxzbyB3aGljaCBDT05GSUcgb3B0aW9ucyBhcmUgbmVjZXNzYXJ5LiBUaGUgZnVuY3Rpb24gaXRzZWxmIGlzIGRlZmluZWQgaW4gYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLCBzbyB0aGF0J3Mgd2hlcmUgSSdsbCBzdGFydCBsb29raW5nLiBJJ2xsIHByb2JhYmx5IHVzZSBgZ3JlcHBlcmAgb3IgYSBzaW1pbGFyIHRvb2wgdG8gZmluZCBhbGwgY2FsbCBzaXRlcyBvZiB0aGUgZnVuY3Rpb24gdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIFRoZSBvdmVyYXJjaGluZyBgQ09ORklHX1hGUk1gIG9wdGlvbiBpcyBsaWtlbHkgdGhlIHByZXJlcXVpc2l0ZSwgYnV0IHRoZXJlIG1pZ2h0IGJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoaXMgc2VxdWVuY2UgY291bnRlciBpbXBsZW1lbnRhdGlvbiBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gncyBzaWduaWZpY2FuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoxMDoyMS4yNDA1OTgzMjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MzQ0MjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjEyNz14ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXMoc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfY2FuZGlkYXRlcyAqY2FuZCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE0OS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIxNTA6c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjIyNT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMxLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzMjpcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9TVUIsIGZsLCBmYW1pbHksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjMzLVxcdFxcdFxcdFxcdFxcdGRpciwgaWZfaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM2LSNlbmRpZlxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjIzNzpcXHRyZXR1cm4geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTiwgZmwsIGZhbWlseSxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzgtXFx0XFx0XFx0XFx0XFx0IGRpciwgaWZfaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODExPXN0YXRpYyBpbnQgeGZybV9leHBhbmRfcG9saWNpZXMoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgdTE2IGZhbWlseSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjgzMS1cXHQgICAgcG9sc1swXS1cXHUwMDNldHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX01BSU4pIHtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjI4MzI6XFx0XFx0cG9sc1sxXSA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoeHBfbmV0KHBvbHNbMF0pLFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjgzMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjc3PWludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzc4Mi1cXHRpZiAocG9sc1swXS1cXHUwMDNldHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX01BSU4pIHtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3ODM6XFx0XFx0cG9sc1sxXSA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX01BSU4sXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzg0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmwsIGZhbWlseSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQ5NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDUyOS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ1MzA6XFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIHR5cGUsIFxcdTAwMjZmbCwgc2VsLVxcdTAwM2VmYW1pbHksIGRpciwgaWZfaWQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDUzMS1cXHRpZiAoSVNfRVJSX09SX05VTEwocG9sKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTA6MjMuMTE0MDQ4MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTgxNjk4NTE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipEaWdnaW5nIGludG8gWEZSTSBQb2xpY3kgTG9va3VwIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgc2VlaW5nIGFzIGl0J3MgY2FsbGVkIGJ5IHRoZSBjb3JlIFhGUk0gcm91dGluZXM6IGB4ZnJtX3BvbGljeV9sb29rdXBgLCBgeGZybV9leHBhbmRfcG9saWNpZXNgLCB0aGUgcG9saWN5IGNoZWNrZXIgYF9feGZybV9wb2xpY3lfY2hlY2tgLCBhbmQgZXZlbiB0aGUgcG9saWN5IG1pZ3JhdGlvbiBjb2RlIGB4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmRgLiBUaGVzZSBhcmUgYWxsIGNlbnRyYWwgdG8gdGhlIFhGUk0gZnJhbWV3b3JrLiBHaXZlbiB0aGF0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgIHRvIGZpZ3VyZSBvdXQgd2hhdCBidWlsZCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IG9yIHJlbGV2YW50IGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gd29yayBjb3JyZWN0bHkuIEEgZGVlcCBkaXZlIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTQ6MDEuMjgzOTAyMDEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzI1NzU5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTQ6MDMuNTU2NDg2NDk2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNDM0MTI2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqWEZSTSBDb25maWd1cmF0aW9uIEhlYWRhY2hlcyoqXG5cbkFscmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFhGUk0gc2V0dXAsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfWEZSTWAgaXMgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudC4gQ2FuJ3QgcmVhbGx5IGRvIGFueXRoaW5nIFhGUk0tcmVsYXRlZCB3aXRob3V0IHRoYXQsIGl0IHNlZW1zLiBBbmQgdGhlbiwgdHlwaWNhbGx5LCB0byBtYW5hZ2UgdGhlc2UgcG9saWNpZXMsIEknbSBnb2luZyB0byB3YW50IHRvIGJlIGFibGUgdG8gY29uZmlndXJlIHRoaW5ncyBmcm9tIHVzZXIgc3BhY2UuIE1ha2VzIHRoaW5ncyBzbyBtdWNoIGVhc2llciBhbmQgbW9yZSBmbGV4aWJsZSwgcmlnaHQ/IFRoYXQgbWVhbnMgSSdsbCBuZWVkIGBDT05GSUdfWEZSTV9VU0VSYCBhcyB3ZWxsLiBBbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZW5hYmxlZC4gVGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyBpbiBgbmV0L3hmcm0vS2NvbmZpZ2AgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGdldCB0aGlzIHNldHVwIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjEyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MTQ6MDcuODYwODI5NjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTU5MzY4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZy00LSNcXG5uZXQveGZybS9LY29uZmlnOjU6Y29uZmlnIFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTYtXFx0Ym9vbFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMC1cXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcXG5uZXQveGZybS9LY29uZmlnLTEyLVxcdGJvb2xcXG5uZXQveGZybS9LY29uZmlnLTEzLVxcbm5ldC94ZnJtL0tjb25maWc6MTQ6Y29uZmlnIFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTMxLVxcbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG5uZXQveGZybS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb21wYXRpYmxlIEFCSSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy00Mi1cXG5uZXQveGZybS9LY29uZmlnOjQzOmNvbmZpZyBYRlJNX0lOVEVSRkFDRVxcbm5ldC94ZnJtL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHZpcnR1YWwgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy01MC1cXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcXG5uZXQveGZybS9LY29uZmlnLTUyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNjAtXFxubmV0L3hmcm0vS2NvbmZpZzo2MTpjb25maWcgWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0vS2NvbmZpZy02Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy03MS1cXG5uZXQveGZybS9LY29uZmlnOjcyOmNvbmZpZyBYRlJNX1NUQVRJU1RJQ1NcXG5uZXQveGZybS9LY29uZmlnLTczLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIHN0YXRpc3RpY3NcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTgzLSMgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy05Mi0jIGFsZ29yaXRobXMgdGhhdCBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxcbm5ldC94ZnJtL0tjb25maWc6OTM6Y29uZmlnIFhGUk1fRVNQXFxubmV0L3hmcm0vS2NvbmZpZy05NC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXFxubmV0L3hmcm0vS2NvbmZpZzoxMDY6Y29uZmlnIFhGUk1fSVBDT01QXFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTQwLVxcbm5ldC94ZnJtL0tjb25maWc6MTQxOmNvbmZpZyBYRlJNX0lQVEZTXFxubmV0L3hmcm0vS2NvbmZpZy0xNDItXFx0dHJpc3RhdGUgXFxcIklQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xNTYtXFxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1BcXG5uZXQveGZybS9LY29uZmlnLTE1OC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjE0OjA5LjQ3Njc3MTgxNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODI3NzgyMTYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBYRlJNIFBvbGljeSBMb29rdXAqKlxuXG5Pa2F5LCBzbyBpZiBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHksIGBDT05GSUdfWEZSTV9VU0VSYCBpcyBlc3NlbnRpYWwgZm9yIGludGVyYWN0aW5nIHdpdGggWEZSTSBwb2xpY2llcyBmcm9tIHVzZXIgc3BhY2UuIE1ha2VzIHNlbnNlLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGhvbmluZyBpbiBvbiBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAuIERlZmluaXRlbHkgYSBwcm9taXNpbmcgdGFyZ2V0IGZvciBmdXp6aW5nIOKAkyByaWdodCB3aGVyZSBJIHdvdWxkIHN0YXJ0LiBJIHNob3VsZCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24ga2V5IHN5bWJvbHMgbGlrZSBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAsIGB4ZnJtX3BvbGljeV9sb29rdXBgLCBgeGZybV9leHBhbmRfcG9saWNpZXNgLCBhbmQgYF9feGZybV9wb2xpY3lfY2hlY2tgLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBgeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZWAgaXMgc3RhdGljLiBJIGhhZCBiZXR0ZXIgdGFrZSBhIGxvb2sgYXQgYHhmcm1fcG9saWN5X2xvb2t1cGAgdG8gc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6MjcuNzU0NTk2NDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDMyMDQ0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lfbG9va3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTQxMT1MU01fSE9PSyhpbnQsIDAsIHhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDo0MTI6TFNNX0hPT0soaW50LCAwLCB4ZnJtX3BvbGljeV9sb29rdXAsIHN0cnVjdCB4ZnJtX3NlY19jdHggKmN0eCwgdTMyIGZsX3NlY2lkKVxcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oLTQxMy1MU01fSE9PSyhpbnQsIDEsIHhmcm1fc3RhdGVfcG9sX2Zsb3dfbWF0Y2gsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTIwMDY9dm9pZCBzZWN1cml0eV94ZnJtX3N0YXRlX2ZyZWUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoyMDA3OmludCBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpO1xcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0yMDA4LWludCBzZWN1cml0eV94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTIwNTM9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfeGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMjA1Ny1cXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg6MjA1ODpzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTIwNTkte1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xOTY0PXN0YXRpYyBpbnQgeGZybV9wb2xpY3lfbWF0Y2goY29uc3Qgc3RydWN0IHhmcm1fcG9saWN5ICpwb2wsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE5NzktXFx0aWYgKG1hdGNoKVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTk4MDpcXHRcXHRyZXQgPSBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAocG9sLVxcdTAwM2VzZWN1cml0eSwgZmwtXFx1MDAzZWZsb3dpX3NlY2lkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE5ODEtXFx0cmV0dXJuIHJldDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTk4ND1zdGF0aWMgc3RydWN0IHhmcm1fcG9sX2luZXhhY3Rfbm9kZSAqXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxOTg1Onhmcm1fcG9saWN5X2xvb2t1cF9pbmV4YWN0X2FkZHIoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKnIsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xOTg2LVxcdFxcdFxcdFxcdHNlcWNvdW50X3NwaW5sb2NrX3QgKmNvdW50LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMDIyPXhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzKHN0cnVjdCB4ZnJtX3BvbF9pbmV4YWN0X2NhbmRpZGF0ZXMgKmNhbmQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIwMzYtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMDM3OlxcdG4gPSB4ZnJtX3BvbGljeV9sb29rdXBfaW5leGFjdF9hZGRyKFxcdTAwMjZiLVxcdTAwM2Vyb290X2QsIFxcdTAwMjZiLVxcdTAwM2Vjb3VudCwgZGFkZHIsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDM4LVxcdFxcdFxcdFxcdFxcdCAgICBmYW1pbHkpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQwLVxcdFxcdGNhbmQtXFx1MDAzZXJlc1tYRlJNX1BPTF9DQU5EX0RBRERSXSA9IFxcdTAwMjZuLVxcdTAwM2VoaGVhZDtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIwNDE6XFx0XFx0biA9IHhmcm1fcG9saWN5X2xvb2t1cF9pbmV4YWN0X2FkZHIoXFx1MDAyNm4tXFx1MDAzZXJvb3QsIFxcdTAwMjZiLVxcdTAwM2Vjb3VudCwgc2FkZHIsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBmYW1pbHkpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMDQ2LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjA0NzpcXHRuID0geGZybV9wb2xpY3lfbG9va3VwX2luZXhhY3RfYWRkcihcXHUwMDI2Yi1cXHUwMDNlcm9vdF9zLCBcXHUwMDI2Yi1cXHUwMDNlY291bnQsIHNhZGRyLFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjA0OC1cXHRcXHRcXHRcXHRcXHQgICAgZmFtaWx5KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjEyNz14ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXMoc3RydWN0IHhmcm1fcG9sX2luZXhhY3RfY2FuZGlkYXRlcyAqY2FuZCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjE0OS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIxNTA6c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTUxLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIyNC1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMjU6c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMjYtXFx0XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzMS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzI6XFx0cG9sID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfU1VCLCBmbCwgZmFtaWx5LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzMy1cXHRcXHRcXHRcXHRcXHRkaXIsIGlmX2lkKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzNi0jZW5kaWZcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyMzc6XFx0cmV0dXJuIHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX01BSU4sIGZsLCBmYW1pbHksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjM4LVxcdFxcdFxcdFxcdFxcdCBkaXIsIGlmX2lkKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MjI0MT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3NrX3BvbGljeV9sb29rdXAoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjY1LVxcdFxcdFxcdH1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjIyNjY6XFx0XFx0XFx0ZXJyID0gc2VjdXJpdHlfeGZybV9wb2xpY3lfbG9va3VwKHBvbC1cXHUwMDNlc2VjdXJpdHksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMjY3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGZsLVxcdTAwM2VmbG93aV9zZWNpZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTI4MTE9c3RhdGljIGludCB4ZnJtX2V4cGFuZF9wb2xpY2llcyhjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMxLVxcdCAgICBwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjgzMjpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBYRlJNX1BPTElDWV9UWVBFX01BSU4sXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTMwODU9c3RhdGljIHN0cnVjdCB4ZnJtX2RzdCAqeGZybV9idW5kbGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzA5Ni1cXHRudW1fcG9scyA9IDE7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMDk3OlxcdHBvbHNbMF0gPSB4ZnJtX3BvbGljeV9sb29rdXAobmV0LCBmbCwgZmFtaWx5LCBkaXIsIGlmX2lkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMwOTgtXFx0ZXJyID0geGZybV9leHBhbmRfcG9saWNpZXMoZmwsIGZhbWlseSwgcG9scyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzYyNj14ZnJtX3BvbGljeSAqeGZybV9pbl9md2RfaWNtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjM4LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzYzOTpcXHRcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXAobmV0LCBcXHUwMDI2ZmwxLCBmYW1pbHksIFhGUk1fUE9MSUNZX0ZXRCwgaWZfaWQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzY0MC1cXHRcXHRpZiAoSVNfRVJSKHBvbCkpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzQ4LVxcdGlmICghcG9sKVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc0OTpcXHRcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXAobmV0LCBcXHUwMDI2ZmwsIGZhbWlseSwgZGlyLCBpZl9pZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzUwLVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzgyLVxcdGlmIChwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc4MzpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3ODQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmbCwgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDk1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTI5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDUzMDpcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXFx1MDAyNmZsLCBzZWwtXFx1MDAzZWZhbWlseSwgZGlyLCBpZl9pZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVxcdGlmIChJU19FUlJfT1JfTlVMTChwb2wpKVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYz01MDQ1PXZvaWQgc2VjdXJpdHlfeGZybV9zdGF0ZV9mcmVlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDUwLS8qKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6NTA1MTogKiBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoKSAtIENoZWNrIGlmIHVzaW5nIGEgeGZybSBwb2xpY3kgaXMgYWxsb3dlZFxcbnNlY3VyaXR5L3NlY3VyaXR5LmMtNTA1Mi0gKiBAY3R4OiB0YXJnZXQgeGZybSBzZWN1cml0eSBjb250ZXh0XFxuLS1cXG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNjEtICovXFxuc2VjdXJpdHkvc2VjdXJpdHkuYzo1MDYyOmludCBzZWN1cml0eV94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy01MDYzLXtcXG5zZWN1cml0eS9zZWN1cml0eS5jOjUwNjQ6XFx0cmV0dXJuIGNhbGxfaW50X2hvb2soeGZybV9wb2xpY3lfbG9va3VwLCBjdHgsIGZsX3NlY2lkKTtcXG5zZWN1cml0eS9zZWN1cml0eS5jLTUwNjUtfVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTc1NjA9c3RhdGljIHN0cnVjdCBzZWN1cml0eV9ob29rX2xpc3Qgc2VsaW51eF9ob29rc1tdIF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NzU5LVxcdExTTV9IT09LX0lOSVQoeGZybV9zdGF0ZV9kZWxldGVfc2VjdXJpdHksIHNlbGludXhfeGZybV9zdGF0ZV9kZWxldGUpLFxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NzYwOlxcdExTTV9IT09LX0lOSVQoeGZybV9wb2xpY3lfbG9va3VwLCBzZWxpbnV4X3hmcm1fcG9saWN5X2xvb2t1cCksXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc3NjEtXFx0TFNNX0hPT0tfSU5JVCh4ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoLFxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaD0yNz1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XFxuc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3hmcm0uaDoyODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpO1xcbnNlY3VyaXR5L3NlbGludXgvaW5jbHVkZS94ZnJtLmgtMjktaW50IHNlbGludXhfeGZybV9zdGF0ZV9wb2xfZmxvd19tYXRjaChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTEzND1zdGF0aWMgaW50IHNlbGludXhfeGZybV9kZWxldGUoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4KVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC94ZnJtLmMtMTQ3LSAqL1xcbnNlY3VyaXR5L3NlbGludXgveGZybS5jOjE0ODppbnQgc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoc3RydWN0IHhmcm1fc2VjX2N0eCAqY3R4LCB1MzIgZmxfc2VjaWQpXFxuc2VjdXJpdHkvc2VsaW51eC94ZnJtLmMtMTQ5LXtcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgveGZybS5jPTE3MD1pbnQgc2VsaW51eF94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC94ZnJtLmMtMjAwLVxcdCAqIGlzIG5vdyBvZiB0aGUgc2FtZSBsYWJlbCBhcyB0aGUgZmxvdyBhbmQgYSBmbG93IFZzLiBwb2xpY3kgcG9sbWF0Y2hcXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYzoyMDE6XFx0ICogY2hlY2sgaGFkIGFscmVhZHkgaGFwcGVuZWQgaW4gc2VsaW51eF94ZnJtX3BvbGljeV9sb29rdXAoKSBhYm92ZS4gKi9cXG5zZWN1cml0eS9zZWxpbnV4L3hmcm0uYy0yMDItXFx0cmV0dXJuIChhdmNfaGFzX3Blcm0oZmxpY19zaWQsIHN0YXRlX3NpZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6MzAuMzk3ODEwNzgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjQ0MDQyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIFhGUk0gUG9saWN5IExvb2t1cCBhbmQgQ2hlY2tpbmcqKlxuXG5Pa2F5LCBzbyBgeGZybV9wb2xpY3lfbG9va3VwYCBpcyBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uLCBqdXN0IGxpa2UgdGhlIG9uZSBJIHdhcyBsb29raW5nIGF0IHByZXZpb3VzbHkuIFRoYXQgbWVhbnMgaXRzIHZpc2liaWxpdHkgaXMgbGltaXRlZCB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGlzbid0IGlkZWFsIGZvciBjZXJ0YWluIHNjZW5hcmlvcy4gVGhlbiwgYWhhISBgX194ZnJtX3BvbGljeV9jaGVja2AgaXMgZWl0aGVyIGV4cG9ydGVkIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBub3QgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGlzIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl0J3MgZGVzaWduZWQgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIG1vZHVsZS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB3aGF0IGBfX3hmcm1fcG9saWN5X2NoZWNrYCBpcyBkb2luZy4gVGhpcyBtaWdodCBvZmZlciBpbXBvcnRhbnQgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgZGVzaWduLiBXaGlsZSBJIGFtIGF0IGl0LCBsZXRzIG5vdCBuZWdsZWN0IGB4ZnJtX2J1bmRsZV9sb29rdXBgIGFzIGl0IGlzIHJlbGF0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYF9feGZybV9wb2xpY3lfY2hlY2tgIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDozNC44NjIyMTczNjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDk5NjQ5NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX194ZnJtX3BvbGljeV9jaGVja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZnJtLmg9MTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhmcm1fb2ZmbG9hZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTEyNjUtI2lmZGVmIENPTkZJR19YRlJNXFxuaW5jbHVkZS9uZXQveGZybS5oOjEyNjY6aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKiwgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI2Ny1cXHRcXHRcXHR1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTEyNzg9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjg5LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMjkwOnN0YXRpYyBpbmxpbmUgaW50IF9feGZybV9wb2xpY3lfY2hlY2syKHN0cnVjdCBzb2NrICpzaywgaW50IGRpcixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI5MS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjk5LVxcdGlmIChzayBcXHUwMDI2XFx1MDAyNiBzay1cXHUwMDNlc2tfcG9saWN5W1hGUk1fUE9MSUNZX0lOXSlcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMwMDpcXHRcXHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjayhzaywgbmRpciwgc2tiLCBmYW1pbHkpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzAxLVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTEzMjAtXFx0ICAgICAgIF9feGZybV9jaGVja19kZXZfbm9wb2xpY3koc2tiLCBkaXIsIGZhbWlseSkgfHxcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMyMTpcXHQgICAgICAgX194ZnJtX3BvbGljeV9jaGVjayhzaywgbmRpciwgc2tiLCBmYW1pbHkpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzIyLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xMzI0PXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI1LXtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTMyNjpcXHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBmYW1pbHksIDApO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzI3LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xMzM5PXN0YXRpYyBpbmxpbmUgaW50IHhmcm00X3BvbGljeV9jaGVja19yZXZlcnNlKHN0cnVjdCBzb2NrICpzaywgaW50IGRpcixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzQxLXtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTM0MjpcXHRyZXR1cm4gX194ZnJtX3BvbGljeV9jaGVjazIoc2ssIGRpciwgc2tiLCBBRl9JTkVULCAxKTtcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTM0My19XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTM0NT1zdGF0aWMgaW5saW5lIGludCB4ZnJtNl9wb2xpY3lfY2hlY2tfcmV2ZXJzZShzdHJ1Y3Qgc29jayAqc2ssIGludCBkaXIsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMTM0Ny17XFxuaW5jbHVkZS9uZXQveGZybS5oOjEzNDg6XFx0cmV0dXJuIF9feGZybV9wb2xpY3lfY2hlY2syKHNrLCBkaXIsIHNrYiwgQUZfSU5FVDYsIDEpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzQ5LX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzY0OD1kc3RfZW50cnkgKnhmcm1fb3V0X2Z3ZF9pY21wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aSAqZmwsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NzYtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozNjc3OmludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NzgtXFx0XFx0XFx0dW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODMzLVxcdFxcdFxcdC8qIFRoaXMgcG9saWN5IHRlbXBsYXRlIHdhcyBhbHJlYWR5IGNoZWNrZWQgYnkgSFdcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4MzQ6XFx0XFx0XFx0ICogYW5kIHNlY3BhdGggd2FzIHJlbW92ZWQgaW4gX194ZnJtX3BvbGljeV9jaGVjazIuXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODM1LVxcdFxcdFxcdCAqL1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODc2LX1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4Nzc6RVhQT1JUX1NZTUJPTChfX3hmcm1fcG9saWN5X2NoZWNrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM4NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjM3LjE3MjE5MzAwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgyNjkyNjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipLZXJuZWwgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlIERlZXAgRGl2ZTogQSBRdWljayBDcm9zcy1SZWZlcmVuY2UgUXVlcnkqKlxuXG5Pa2F5LCBzbyBgX194ZnJtX3BvbGljeV9jaGVja2AgaXMgZXhwb3J0ZWQuIFRoYXQncyBnb29kIHRvIGtub3c7IGl0IGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IFhGUk0gcG9saWN5IGVuZm9yY2VtZW50IGlzIG1hZGUgYXZhaWxhYmxlLCBsaWtlbHkgZm9yIHVzZSBieSBvdGhlciBtb2R1bGVzIG5lZWRpbmcgdG8gdmFsaWRhdGUgdHJhZmZpYyBhZ2FpbnN0IGEgY29uZmlndXJlZCBwb2xpY3kuIEJ1dCBpdCByYWlzZXMgYSBmbGFnOiBpZiAqdGhhdCogaXMgZXhwb3J0ZWQsIHRoZW4gd2hhdCdzIHRoZSBkZWFsIHdpdGggYHhmcm1fbG9va3VwYD9cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHhmcm1fbG9va3VwYCBoYXMgYSBzaW1pbGFyIGV4dGVybmFsIGFjY2Vzc2liaWxpdHksIG9yIGlzIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugb25seS4gYHhmcm1fbG9va3VwYCBpcyBjcml0aWNhbCBmb3IsIGZyb20gbWVtb3J5LCByZXNvbHZpbmcgdGhlIFNBIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyYWZmaWMgZmxvdy4gSWYgaXQgKmlzKiBhY2Nlc3NpYmxlLCB0aGVyZSBjb3VsZCBiZSBpbnRlcmVzdGluZyBpbXBsaWNhdGlvbnMgZm9yIHRoZSB3YXkgdGhpcmQtcGFydHkgbW9kdWxlcyBjb3VsZCBwb3RlbnRpYWxseSBob29rIGludG8gb3IgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBYRlJNIGxvb2t1cCBtZWNoYW5pc20uIElmIGl0J3MgKm5vdCogZXhwb3J0ZWQsIHRoZW4gdGhlIGludGVudCBjb3VsZCBiZSB0aWdodGVyIGNvbnRyb2wgb3ZlciB0aGUgZnVuZGFtZW50YWwgcGFja2V0IHByb2Nlc3NpbmcgYW5kIFNBIHNlbGVjdGlvbi4gVGhlIGV4cG9ydCAob3IgbGFjayB0aGVyZW9mKSBvZiBgeGZybV9sb29rdXBgIHdpbGwgYmUgYW4gaW1wb3J0YW50IGRhdGEgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSdzIGRlc2lnbiBwaGlsb3NvcGh5IG9uIGZsZXhpYmlsaXR5IHZlcnN1cyBzZWN1cml0eSBhbmQgaXNvbGF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uIGZvciBpdHMgdmlzaWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk0OCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjQxLjk1NDg5MTQxOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNjY3MDQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2xvb2t1cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9kc3QuaD00ODg9c3RhdGljIGlubGluZSBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2hlY2soc3RydWN0IGRzdF9lbnRyeSAqZHN0LCB1MzIgY29va2llKVxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0LmgtNDk1LVxcbmluY2x1ZGUvbmV0L2RzdC5oOjQ5NjovKiBGbGFncyBmb3IgeGZybV9sb29rdXAgZmxhZ3MgYXJndW1lbnQuICovXFxuaW5jbHVkZS9uZXQvZHN0LmgtNDk3LWVudW0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvZHN0Lmg9NTAzPXN0cnVjdCBmbG93aTtcXG5pbmNsdWRlL25ldC9kc3QuaC01MDQtI2lmbmRlZiBDT05GSUdfWEZSTVxcbmluY2x1ZGUvbmV0L2RzdC5oOjUwNTpzdGF0aWMgaW5saW5lIHN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG5pbmNsdWRlL25ldC9kc3QuaC01MDYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0Lmg9NTE0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqXFxuaW5jbHVkZS9uZXQvZHN0Lmg6NTE1Onhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbmluY2x1ZGUvbmV0L2RzdC5oLTUxNi1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5pbmNsdWRlL25ldC9kc3QuaC01MjEtXFxuaW5jbHVkZS9uZXQvZHN0Lmg6NTIyOnN0YXRpYyBpbmxpbmUgc3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LFxcbmluY2x1ZGUvbmV0L2RzdC5oLTUyMy1cXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0Lmg9NTMxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhmcm1fc3RhdGUgKmRzdF94ZnJtKGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdClcXG4tLVxcbmluY2x1ZGUvbmV0L2RzdC5oLTUzNi0jZWxzZVxcbmluY2x1ZGUvbmV0L2RzdC5oOjUzNzpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbmluY2x1ZGUvbmV0L2RzdC5oLTUzOC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5pbmNsdWRlL25ldC9kc3QuaC01NDAtXFxuaW5jbHVkZS9uZXQvZHN0Lmg6NTQxOnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsXFxuaW5jbHVkZS9uZXQvZHN0LmgtNTQyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHN0LmgtNTQ2LVxcbmluY2x1ZGUvbmV0L2RzdC5oOjU0NzpzdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbmluY2x1ZGUvbmV0L2RzdC5oLTU0OC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvaWNtcC5jPTQ5ND1zdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtNTI2LVxcbm5ldC9pcHY0L2ljbXAuYzo1Mjc6XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCxcXG5uZXQvaXB2NC9pY21wLmMtNTI4LVxcdFxcdFxcdCAgZmxvd2k0X3RvX2Zsb3dpKGZsNCksIE5VTEwsIDApO1xcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTYwMS1cXG5uZXQvaXB2NC9pY21wLmM6NjAyOlxcdGRzdDIgPSB4ZnJtX2xvb2t1cChuZXQsIFxcdTAwMjZydDItXFx1MDAzZWRzdCwgZmxvd2k0X3RvX2Zsb3dpKFxcdTAwMjZmbDRfZGVjKSwgTlVMTCxcXG5uZXQvaXB2NC9pY21wLmMtNjAzLVxcdFxcdFxcdCAgIFhGUk1fTE9PS1VQX0lDTVApO1xcbi0tXFxubmV0L2lwdjQvaXBfdnRpLmM9MTY5PXN0YXRpYyBuZXRkZXZfdHhfdCB2dGlfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfdnRpLmMtMjE2LVxcdGRzdF9ob2xkKGRzdCk7XFxubmV0L2lwdjQvaXBfdnRpLmM6MjE3OlxcdGRzdCA9IHhmcm1fbG9va3VwX3JvdXRlKHR1bm5lbC1cXHUwMDNlbmV0LCBkc3QsIGZsLCBOVUxMLCAwKTtcXG5uZXQvaXB2NC9pcF92dGkuYy0yMTgtXFx0aWYgKElTX0VSUihkc3QpKSB7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYz0yMj1pbnQgaXBfcm91dGVfbWVfaGFyZGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgYWRkcl90eXBlKVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyLmMtNjgtXFx0XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xcbm5ldC9pcHY0L25ldGZpbHRlci5jOjY5OlxcdFxcdC8qIGlnbm9yZSByZXR1cm4gdmFsdWUgZnJvbSBza2JfZHN0cmVmX3N0ZWFsLCB4ZnJtX2xvb2t1cCB0YWtlc1xcbm5ldC9pcHY0L25ldGZpbHRlci5jLTcwLVxcdFxcdCAqIGNhcmUgb2YgZHJvcHBpbmcgdGhlIHJlZmNudCBpZiBuZWVkZWQuXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIuYy03Mi1cXHRcXHRza2JfZHN0cmVmX3N0ZWFsKHNrYik7XFxubmV0L2lwdjQvbmV0ZmlsdGVyLmM6NzM6XFx0XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNF90b19mbG93aShcXHUwMDI2Zmw0KSwgc2ssIDApO1xcbm5ldC9pcHY0L25ldGZpbHRlci5jLTc0LVxcdFxcdGlmIChJU19FUlIoZHN0KSlcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9Mjk1OD1zdHJ1Y3QgcnRhYmxlICppcF9yb3V0ZV9vdXRwdXRfZmxvdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZscDQsXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTI5NjctXFx0XFx0ZmxwNC1cXHUwMDNlZmxvd2k0X29pZiA9IHJ0LVxcdTAwM2Vkc3QuZGV2LVxcdTAwM2VpZmluZGV4O1xcbm5ldC9pcHY0L3JvdXRlLmM6Mjk2ODpcXHRcXHRydCA9IGRzdF9ydGFibGUoeGZybV9sb29rdXBfcm91dGUobmV0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCxcXG5uZXQvaXB2NC9yb3V0ZS5jLTI5NjktXFx0XFx0XFx0XFx0XFx0XFx0ICBmbG93aTRfdG9fZmxvd2koZmxwNCksXFxuLS1cXG5uZXQvaXB2Ni9pY21wLmM9MzU0PXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICppY21wdjZfcm91dGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2ljbXAuYy0zODAtXFxubmV0L2lwdjYvaWNtcC5jOjM4MTpcXHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKGZsNiksIHNrLCAwKTtcXG5uZXQvaXB2Ni9pY21wLmMtMzgyLVxcdGlmICghSVNfRVJSKGRzdCkpIHtcXG4tLVxcbm5ldC9pcHY2L2ljbXAuYy0zOTktXFxubmV0L2lwdjYvaWNtcC5jOjQwMDpcXHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QyLCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsMiksIHNrLCBYRlJNX0xPT0tVUF9JQ01QKTtcXG5uZXQvaXB2Ni9pY21wLmMtNDAxLVxcdGlmICghSVNfRVJSKGRzdDIpKSB7XFxuLS1cXG5uZXQvaXB2Ni9pY21wLmM9OTIxPXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiBpY21wdjZfZWNob19yZXBseShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWNtcC5jLTk5MS1cXHRcXHRnb3RvIG91dDtcXG5uZXQvaXB2Ni9pY21wLmM6OTkyOlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIHNrLCAwKTtcXG5uZXQvaXB2Ni9pY21wLmMtOTkzLVxcdGlmIChJU19FUlIoZHN0KSlcXG4tLVxcbm5ldC9pcHY2L2lsYS9pbGFfbHd0LmM9Mzg9c3RhdGljIGludCBpbGFfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWxhL2lsYV9sd3QuYy04NC1cXG5uZXQvaXB2Ni9pbGEvaWxhX2x3dC5jOjg1OlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9pcHY2L2lsYS9pbGFfbHd0LmMtODYtXFx0XFx0aWYgKElTX0VSUihkc3QpKSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTI4NT1zdHJ1Y3QgZHN0X2VudHJ5ICppcDZfZHN0X2xvb2t1cF9mbG93KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmxvd2k2ICpmbDYsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTI5OC1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTI5OTpcXHRyZXR1cm4geGZybV9sb29rdXBfcm91dGUobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBzaywgMCk7XFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTEzMDAtfVxcbi0tXFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jPTExMDA9aW50IGlwNl90bmxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX3U4IGRzZmllbGQsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTE4My1cXHRcXHRcXHRnb3RvIHR4X2Vycl9saW5rX2ZhaWx1cmU7XFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jOjExODQ6XFx0XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBOVUxMLCAwKTtcXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTE4NS1cXHRcXHRpZiAoSVNfRVJSKGRzdCkpIHtcXG4tLVxcbm5ldC9pcHY2L2lwNl92dGkuYz00MTM9c3RhdGljIGJvb2wgdnRpNl9zdGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC9pcHY2L2lwNl92dGkuYy00MzktICogICBAZGV2OiB0aGUgb3V0Z29pbmcgdHVubmVsIGRldmljZVxcbm5ldC9pcHY2L2lwNl92dGkuYzo0NDA6ICogICBAZmw6IHRoZSBmbG93IGluZm9ybWF0aW9ucyBmb3IgdGhlIHhmcm1fbG9va3VwXFxubmV0L2lwdjYvaXA2X3Z0aS5jLTQ0MS0gKiovXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdnRpLmM9NDQzPXZ0aTZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxcbi0tXFxubmV0L2lwdjYvaXA2X3Z0aS5jLTQ4My1cXHRkc3RfaG9sZChkc3QpO1xcbm5ldC9pcHY2L2lwNl92dGkuYzo0ODQ6XFx0ZHN0ID0geGZybV9sb29rdXBfcm91dGUodC1cXHUwMDNlbmV0LCBkc3QsIGZsLCBOVUxMLCAwKTtcXG5uZXQvaXB2Ni9pcDZfdnRpLmMtNDg1LVxcdGlmIChJU19FUlIoZHN0KSkge1xcbi0tXFxubmV0L2lwdjYvbmRpc2MuYz0xNjU4PXZvaWQgbmRpc2Nfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnRhcmdldClcXG4tLVxcbm5ldC9pcHY2L25kaXNjLmMtMTcwMC1cXHR9XFxubmV0L2lwdjYvbmRpc2MuYzoxNzAxOlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9pcHY2L25kaXNjLmMtMTcwMi1cXHRpZiAoSVNfRVJSKGRzdCkpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYz0yND1pbnQgaXA2X3JvdXRlX21lX2hhcmRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpza19wYXJ0aWFsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNjYtXFx0ICAgIHhmcm1fZGVjb2RlX3Nlc3Npb24obmV0LCBza2IsIGZsb3dpNl90b19mbG93aShcXHUwMDI2Zmw2KSwgQUZfSU5FVDYpID09IDApIHtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYzo2NzpcXHRcXHQvKiBpZ25vcmUgcmV0dXJuIHZhbHVlIGZyb20gc2tiX2RzdHJlZl9zdGVhbCwgeGZybV9sb29rdXAgdGFrZXNcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy02OC1cXHRcXHQgKiBjYXJlIG9mIGRyb3BwaW5nIHRoZSByZWZjbnQgaWYgbmVlZGVkLlxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyLmMtNzAtXFx0XFx0c2tiX2RzdHJlZl9zdGVhbChza2IpO1xcbm5ldC9pcHY2L25ldGZpbHRlci5jOjcxOlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIHNrLCAwKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIuYy03Mi1cXHRcXHRpZiAoSVNfRVJSKGRzdCkpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz0zMTM9dm9pZCBuZl9zZW5kX3Jlc2V0NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTM1Ny1cXHR9XFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmM6MzU4OlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTM1OS1cXHRpZiAoSVNfRVJSKGRzdCkpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTMzMzU9c3RydWN0IGRzdF9lbnRyeSAqaWNtcDZfZHN0X2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTMzNjUtXFxubmV0L2lwdjYvcm91dGUuYzozMzY2OlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgXFx1MDAyNnJ0LVxcdTAwM2Vkc3QsIGZsb3dpNl90b19mbG93aShmbDYpLCBOVUxMLCAwKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTMzNjctXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTQ0OT1fX2lwX3ZzX3JvdXRlX291dHB1dF92NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ2OS1cXHRpZiAoZG9feGZybSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NDcwOlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBmbG93aTZfdG9fZmxvd2koXFx1MDAyNmZsNiksIE5VTEwsIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNDcxLVxcdFxcdGlmIChJU19FUlIoZHN0KSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfcHJvdG8uYz02MDE9c3RhdGljIGludCBuZl94ZnJtX21lX2hhcmRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBmYW1pbHkpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jLTYyMS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9wcm90by5jOjYyMjpcXHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgXFx1MDAyNmZsLCBzaywgMCk7XFxubmV0L25ldGZpbHRlci9uZl9uYXRfcHJvdG8uYy02MjMtXFx0aWYgKElTX0VSUihkc3QpKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmM9ODIyPXN5bnByb3h5X3NlbmRfdGNwX2lwdjYoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9zeW5wcm94eV9jb3JlLmMtODQ5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfc3lucHJveHlfY29yZS5jOjg1MDpcXHRkc3QgPSB4ZnJtX2xvb2t1cChuZXQsIGRzdCwgZmxvd2k2X3RvX2Zsb3dpKFxcdTAwMjZmbDYpLCBOVUxMLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3N5bnByb3h5X2NvcmUuYy04NTEtXFx0aWYgKElTX0VSUihkc3QpKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTQyND14ZnJtaV94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTQ1NS1cXHRkc3RfaG9sZChkc3QpO1xcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYzo0NTY6XFx0ZHN0ID0geGZybV9sb29rdXBfd2l0aF9pZmlkKHhpLVxcdTAwM2VuZXQsIGRzdCwgZmwsIE5VTEwsIDAsIGlmX2lkKTtcXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtNDU3LVxcdGlmIChJU19FUlIoZHN0KSkge1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODk3PXN0YXRpYyB2b2lkIHhmcm1fcG9saWN5X3F1ZXVlX3Byb2Nlc3Moc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5MjUtXFx0ZHN0X2hvbGQoeGZybV9kc3RfcGF0aChkc3QpKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjI5MjY6XFx0ZHN0ID0geGZybV9sb29rdXAobmV0LCB4ZnJtX2RzdF9wYXRoKGRzdCksIFxcdTAwMjZmbCwgc2ssIFhGUk1fTE9PS1VQX1FVRVVFKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTI5MjctXFx0aWYgKElTX0VSUihkc3QpKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTYwLVxcdFxcdGRzdF9ob2xkKHhmcm1fZHN0X3BhdGgoc2tiX2RzdChza2IpKSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyOTYxOlxcdFxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgeGZybV9kc3RfcGF0aChza2JfZHN0KHNrYikpLCBcXHUwMDI2ZmwsIHNrYi1cXHUwMDNlc2ssIDApO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjk2Mi1cXHRcXHRpZiAoSVNfRVJSKGRzdCkpIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE0OD1zdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqbWFrZV9ibGFja2hvbGUoc3RydWN0IG5ldCAqbmV0LCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTY5LSAqXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTcwOiAqIHhmcm1fbG9va3VwIHVzZXMgYW4gaWZfaWQgb2YgMCBieSBkZWZhdWx0LCBhbmQgaXMgcHJvdmlkZWQgZm9yXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTcxLSAqIGNvbXBhdGliaWxpdHlcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMxNzItICovXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMTczOnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3dpdGhfaWZpZChzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMTc0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9vcmlnLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzI1LX1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMjY6RVhQT1JUX1NZTUJPTCh4ZnJtX2xvb2t1cF93aXRoX2lmaWQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMyNy1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMzMi0gKi9cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMzM6c3RydWN0IGRzdF9lbnRyeSAqeGZybV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Rfb3JpZyxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzMzQtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzM2LXtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMzc6XFx0cmV0dXJuIHhmcm1fbG9va3VwX3dpdGhfaWZpZChuZXQsIGRzdF9vcmlnLCBmbCwgc2ssIGZsYWdzLCAwKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzMzgtfVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzMzOTpFWFBPUlRfU1lNQk9MKHhmcm1fbG9va3VwKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDAtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzQxOi8qIENhbGxlcnMgb2YgeGZybV9sb29rdXBfcm91dGUoKSBtdXN0IGVuc3VyZSBhIGNhbGwgdG8gZHN0X291dHB1dCgpLlxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0Mi0gKiBPdGhlcndpc2Ugd2UgbWF5IHNlbmQgb3V0IGJsYWNraG9sZWQgcGFja2V0cy5cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNDMtICovXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzQ0OnN0cnVjdCBkc3RfZW50cnkgKnhmcm1fbG9va3VwX3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqZHN0X29yaWcsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzQ1LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzQ3LXtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzNDg6XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0geGZybV9sb29rdXAobmV0LCBkc3Rfb3JpZywgZmwsIHNrLFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzM0OS1cXHRcXHRcXHRcXHRcXHQgICAgZmxhZ3MgfCBYRlJNX0xPT0tVUF9RVUVVRSB8XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNTktfVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzM2MDpFWFBPUlRfU1lNQk9MKHhmcm1fbG9va3VwX3JvdXRlKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTMzNjEtXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2NDg9ZHN0X2VudHJ5ICp4ZnJtX291dF9md2RfaWNtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNjYwLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MzY2MTpcXHRcXHRkc3QyID0geGZybV9sb29rdXAobmV0LCBkc3QsIFxcdTAwMjZmbDEsIE5VTEwsIChYRlJNX0xPT0tVUF9RVUVVRSB8IFhGUk1fTE9PS1VQX0lDTVApKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM2NjItXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM4Nzk9aW50IF9feGZybV9yb3V0ZV9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHNob3J0IGZhbWlseSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzg5Ny1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM4OTg6XFx0LyogaWdub3JlIHJldHVybiB2YWx1ZSBmcm9tIHNrYl9kc3RyZWZfc3RlYWwsIHhmcm1fbG9va3VwIHRha2VzXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zODk5LVxcdCAqIGNhcmUgb2YgZHJvcHBpbmcgdGhlIHJlZmNudCBpZiBuZWVkZWQuXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM5MDItXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozOTAzOlxcdGRzdCA9IHhmcm1fbG9va3VwKG5ldCwgZHN0LCBcXHUwMDI2ZmwsIE5VTEwsIFhGUk1fTE9PS1VQX1FVRVVFKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM5MDQtXFx0aWYgKElTX0VSUihkc3QpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjQ0LjA2MTU2NTk2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjkwNjQ4MDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFhGUk0gUG9saWN5IExvb2t1cCBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIFhGUk0gcG9saWN5IGxvb2t1cHMuIEZvciBvdXRnb2luZyBwYWNrZXRzLCB0aGUgaGVhdnkgbGlmdGVycyBhcmUgY2xlYXJseSBgeGZybV9sb29rdXBgIGFuZCBgeGZybV9sb29rdXBfcm91dGVgLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYmUga2VlcGluZyBhIGNsb3NlIGV5ZSBvbi4gQW5kIGZvciBpbmNvbWluZyBwYWNrZXRzLCBpdCdzIGFsbCBhYm91dCBgX194ZnJtX3BvbGljeV9jaGVja2AuIFRob3NlIHRocmVlIGZ1bmN0aW9ucywgYHhmcm1fbG9va3VwYCwgYHhmcm1fbG9va3VwX3JvdXRlYCwgYW5kIGBfX3hmcm1fcG9saWN5X2NoZWNrYCwgYXJlIGRlZmluaXRlbHkgdGhlIGNyaXRpY2FsIGZvY3VzIHN5bWJvbHMgaGVyZS5cblxuSSBhbHNvIHNlZSB0aGF0IGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCB3YXMgdGhlIGZ1bmN0aW9uIHRoYXQgc2F3IHNvbWUgbW9kaWZpY2F0aW9uLCBidXQgaXQncyBtYXJrZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIG1lIGN1cmlvdXMuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIgdG8gZmlndXJlIG91dCBpZiBpdCdzIGlubGluZWQuIFN0YXRpYyBmdW5jdGlvbnMgY2FuIHNvbWV0aW1lcyBiZSB0cmlja3kgdG8gYW5hbHl6ZSBkaXJlY3RseSwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcidzIG9wdGltaXphdGlvbiBzdHJhdGVneS4gU28sIGNoZWNraW5nIGZvciBpbmxpbmluZyBpcyB0aGUgbmV4dCBzdGVwIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBsb29rdXAgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNDEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6NDkuMzUyMjE2NzI3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU5NTk0MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMTI3PXhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlcyhzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9jYW5kaWRhdGVzICpjYW5kLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yMTQ5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjE1MDpzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKHN0cnVjdCBuZXQgKm5ldCwgdTggdHlwZSxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIxNTEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yMjI1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzEtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjMyOlxcdHBvbCA9IHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUobmV0LCBYRlJNX1BPTElDWV9UWVBFX1NVQiwgZmwsIGZhbWlseSxcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzMtXFx0XFx0XFx0XFx0XFx0ZGlyLCBpZl9pZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTIyMzYtI2VuZGlmXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyMjM3OlxcdHJldHVybiB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgWEZSTV9QT0xJQ1lfVFlQRV9NQUlOLCBmbCwgZmFtaWx5LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjIzOC1cXHRcXHRcXHRcXHRcXHQgZGlyLCBpZl9pZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTI4MTE9c3RhdGljIGludCB4ZnJtX2V4cGFuZF9wb2xpY2llcyhjb25zdCBzdHJ1Y3QgZmxvd2kgKmZsLCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMxLVxcdCAgICBwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MjgzMjpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSh4cF9uZXQocG9sc1swXSksXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yODMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBYRlJNX1BPTElDWV9UWVBFX01BSU4sXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2Nzc9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzgyLVxcdGlmIChwb2xzWzBdLVxcdTAwM2V0eXBlICE9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTikge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc4MzpcXHRcXHRwb2xzWzFdID0geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZShuZXQsIFhGUk1fUE9MSUNZX1RZUEVfTUFJTixcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3ODQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmbCwgZmFtaWx5LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDk1PXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTI5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDUzMDpcXHRwb2wgPSB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlKG5ldCwgdHlwZSwgXFx1MDAyNmZsLCBzZWwtXFx1MDAzZWZhbWlseSwgZGlyLCBpZl9pZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NTMxLVxcdGlmIChJU19FUlJfT1JfTlVMTChwb2wpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDo1MS42MTE4MTY3NzRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5MTQwODY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIENvZGUgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIGNvbXBpbGVyICptaWdodCogYmUgaW5saW5pbmcgc29tZSBmdW5jdGlvbnMgaGVyZSwgZXZlbiB0aG91Z2ggaXQncyBub3QgZXhwbGljaXRseSBtYXJrZWQgdGhhdCB3YXkuIExldCdzIG1ha2Ugc3VyZSB3ZSBpbmNsdWRlIGB4ZnJtX2xvb2t1cGAsIGB4ZnJtX2xvb2t1cF9yb3V0ZWAsIGBfX3hmcm1fcG9saWN5X2NoZWNrYCwgYW5kIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBhcHByb2FjaCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBpbmxpbmluZy5cblxuQW5kIG9mIGNvdXJzZSwgd2UgbmVlZCB0byBoYXZlIGBYRlJNYCBhbmQgYFhGUk1fVVNFUmAgY29uZmlndXJlZCB0byBydW4gdGhlc2Ugc3ltYm9scy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQgYXMgd2VsbC4gVGhlIGNvZGUgaXRzZWxmIGlzIGxvY2F0ZWQgaW4gYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLCBzbyBJIGtub3cgd2hlcmUgdG8gZmluZCB0aGUgc291cmNlLlxuXG5Mb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYHhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGVgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGFpbWVkIGF0IHJlc29sdmluZyBhIHJhY2UgY29uZGl0aW9uIHRoYXQgcG9wcyB1cCB3aGVuIHdlJ3JlIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQgaW1wYWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbS4gR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nIHRvIGhlbHAgY29uZmlybSB0aGUgZml4LlxuXG5GaW5hbGx5LCBJJ2xsIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIG1ha2UgdGhlIHJlc3VsdHMgY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTQ3LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDo1Ny43MDMyMjg3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mjk5MjI2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9sb29rdXBcIixcbiAgICBcInhmcm1fbG9va3VwX3JvdXRlXCIsXG4gICAgXCJfX3hmcm1fcG9saWN5X2NoZWNrXCIsXG4gICAgXCJ4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBYRlJNIHBvbGljeSBsb29rdXAgYnkgYWRkaW5nIGEgc2VxdWVuY2UgY291bnRlciBjaGVjayB3aGVuIGV2YWx1YXRpbmcgaW5leGFjdCBjYW5kaWRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBYRlJNIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fbG9va3VwXCIsXG4gICAgXCJ4ZnJtX2xvb2t1cF9yb3V0ZVwiLFxuICAgIFwiX194ZnJtX3BvbGljeV9jaGVja1wiLFxuICAgIFwieGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gWEZSTSBwb2xpY3kgbG9va3VwIGJ5IGFkZGluZyBhIHNlcXVlbmNlIGNvdW50ZXIgY2hlY2sgd2hlbiBldmFsdWF0aW5nIGluZXhhY3QgY2FuZGlkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgWEZSTSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTg6MjA6NTcuODU2MjMxMjc1WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA0NDU2OTEzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMDo1Ny44NTY4OTEzNzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQwNDQ1MDI1NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2VxdWVuY2UgY291bnRlciByZXRyeSBsb29wIChgcmVhZF9zZXFjb3VudF9iZWdpbmAgYW5kIGByZWFkX3NlcWNvdW50X3JldHJ5YCkgYXJvdW5kIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgYW5kIGB4ZnJtX3BvbGljeV9ldmFsX2NhbmRpZGF0ZXNgIHRvIGZpeCBhIGNvbmN1cnJlbmN5IGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBsZWFkaW5nIHRvIGluY29uc2lzdGVudCBzdGF0ZSBvciB1c2UtYWZ0ZXItZnJlZSkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxNjJlNjMwNmQxYWU5ODhmMTViYzIxYWI4MWE2M2M3ZWY3MDdjZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxODowODozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA5MzJhMzEzYjk0NjBhLi41ZDRlODYzODYzZGZlIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuKysrIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xuQEAgLTIxNTcsNiArMjE1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxuIFx0c3RydWN0IHhmcm1fcG9sX2luZXhhY3RfYmluICpiaW47XG4gXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbCwgKnJldDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpjaGFpbjtcbitcdHVuc2lnbmVkIGludCBpbmV4YWN0X3NlcXVlbmNlO1xuIFx0dW5zaWduZWQgaW50IHNlcXVlbmNlO1xuIFx0aW50IGVycjtcbiBcbkBAIC0yMTkxLDEyICsyMTkyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fcG9saWN5X2xvb2t1cF9ieXR5cGUoc3RydWN0IG5ldCAqbmV0LCB1OCB0eXBlLFxuIFx0XHRnb3RvIHNraXBfaW5leGFjdDtcbiBcbiBcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfbG9va3VwX3JjdShuZXQsIHR5cGUsIGZhbWlseSwgZGlyLCBpZl9pZCk7XG4tXHRpZiAoIWJpbiB8fCAheGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXMoXHUwMDI2Y2FuZCwgYmluLCBzYWRkcixcbi1cdFx0XHRcdFx0XHRcdCBkYWRkcikpXG4rXHRpZiAoIWJpbilcbitcdFx0Z290byBza2lwX2luZXhhY3Q7XG4rXG4rXHRpbmV4YWN0X3NlcXVlbmNlID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZiaW4tXHUwMDNlY291bnQpO1xuK1x0aWYgKCF4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlcyhcdTAwMjZjYW5kLCBiaW4sIHNhZGRyLCBkYWRkcikpXG4gXHRcdGdvdG8gc2tpcF9pbmV4YWN0O1xuIFxuIFx0cG9sID0geGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzKFx1MDAyNmNhbmQsIHJldCwgZmwsIHR5cGUsXG4gXHRcdFx0XHRcdCAgZmFtaWx5LCBpZl9pZCk7XG4rXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZiaW4tXHUwMDNlY291bnQsIGluZXhhY3Rfc2VxdWVuY2UpKVxuK1x0XHRnb3RvIHJldHJ5O1xuK1xuIFx0aWYgKHBvbCkge1xuIFx0XHRyZXQgPSBwb2w7XG4gXHRcdGlmIChJU19FUlIocG9sKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE4OjIwOjU3Ljg1Njg5MjI1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA0NDQ5OTU5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25jdXJyZW5jeSBGaXggaW4geGZybV9wb2xpY3lfbG9va3VwX2J5dHlwZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB4ZnJtX3BvbGljeV9sb29rdXBfYnl0eXBlYCBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBpbnRyb2R1Y2luZyBhIHNlcWxvY2sgcmV0cnkgbG9vcCBhcm91bmQgdGhlIGluZXhhY3QgcG9saWN5IGxvb2t1cCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgYWRkaW5nIGFuIGB1bnNpZ25lZCBpbnQgaW5leGFjdF9zZXF1ZW5jZWAgdmFyaWFibGUgYW5kIHVzaW5nIGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgIGFyb3VuZCB0aGUgY2FsbHMgdG8gYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AuXG5cbkVzc2VudGlhbGx5LCB0aGV5J3JlIGRvaW5nIHRoaXM6IGZpcnN0LCBhY3F1aXJlIHRoZSBzZXF1ZW5jZSBudW1iZXIuIFRoZW4sIGZpbmQgdGhlIGNhbmRpZGF0ZXMuIE5leHQsIGV2YWx1YXRlIHRob3NlIGNhbmRpZGF0ZXMuIEZpbmFsbHksIHJldHJ5IGlmIHRoZSBzZXF1ZW5jZSBudW1iZXIgaGFzIGNoYW5nZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGZpeC4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGRlc2lnbmVkIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgdGhlIGxvb2t1cCwgd2hpY2ggY291bGQgbGVhZCB0byBlaXRoZXIgYW4gaW5jb3JyZWN0IHBvbGljeSBiZWluZyBjaG9zZW4gb3IsIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB0aGluZ3MgZ28gcmVhbGx5IHdyb25nLiBUaGUgdXNlIG9mIHRoZSBzZXFsb2NrIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQuXG5cbk5vdywgSSdtIGNoZWNraW5nIGlmIHRoZXJlIGFyZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0J3Mgc2VlLi4uIGBpbmV4YWN0X3NlcXVlbmNlYCBnZXRzIGluaXRpYWxpemVkIGJ5IGByZWFkX3NlcWNvdW50X2JlZ2luYC4gU28gbm8uIE5vIGlzc3VlcyB0aGVyZS4gVGhlIGBjYW5kYCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkIHdpdGhpbiB0aGUgbG9vcC4gTm90aGluZyBJIHNlZSBzdWdnZXN0cyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXhwb3NlZC5cblxuTGV0J3MgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgZGF0YSBmbG93LiBgY2FuZGAgaXMgcGFzc2VkIHRvIHRoZSB0d28gY29yZSBmdW5jdGlvbnMuIElmIGB4ZnJtX3BvbGljeV9maW5kX2luZXhhY3RfY2FuZGlkYXRlc2AgcmV0dXJucyBmYWxzZSwgd2UgZ28gdG8gYHNraXBfaW5leGFjdGAuIE90aGVyd2lzZSwgaXQgKmRvZXMqIGZpbmQgY2FuZGlkYXRlcywgdGhlbiB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlbS4gSWYgYSByZXRyeSBpcyBuZWVkZWQsIHdlIGxvb3AuXG5cblNvIHRoZSBtYWluIGNvbmNlcm4gaGVyZSBzZWVtcyB0byBiZSB0aGUgY29uY3VycmVuY3ksIGxpa2VseSB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IHBvbGljeSBldmFsdWF0aW9uIG9yIGV2ZW4gYSBVQUYuIFRob3NlIGtpbmRzIG9mIGlzc3VlcyBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgS0FTQU4gb3IsIGxlc3MgZHJhbWF0aWNhbGx5LCBsb2dpYyBidWdzLiBLTVNBTiBpc24ndCByZWxldmFudCBoZXJlLCBhcyB0aGVyZSBpc24ndCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gd29ycnkgYWJvdXQuXG5cblllcCwgdGhpcyBsb29rcyBzb2xpZC4gSSdtIHNldHRpbmcgTmVlZHNLTVNBTj1mYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2OSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxODoyMzoxOC4zMDE4OTIzNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzZXF1ZW5jZSBjb3VudGVyIHJldHJ5IGxvb3AgKGByZWFkX3NlcWNvdW50X2JlZ2luYCBhbmQgYHJlYWRfc2VxY291bnRfcmV0cnlgKSBhcm91bmQgYHhmcm1fcG9saWN5X2ZpbmRfaW5leGFjdF9jYW5kaWRhdGVzYCBhbmQgYHhmcm1fcG9saWN5X2V2YWxfY2FuZGlkYXRlc2AgdG8gZml4IGEgY29uY3VycmVuY3kgaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHN0YXRlIG9yIHVzZS1hZnRlci1mcmVlKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNlcXVlbmNlIGNvdW50ZXIgcmV0cnkgbG9vcCAoYHJlYWRfc2VxY291bnRfYmVnaW5gIGFuZCBgcmVhZF9zZXFjb3VudF9yZXRyeWApIGFyb3VuZCBgeGZybV9wb2xpY3lfZmluZF9pbmV4YWN0X2NhbmRpZGF0ZXNgIGFuZCBgeGZybV9wb2xpY3lfZXZhbF9jYW5kaWRhdGVzYCB0byBmaXggYSBjb25jdXJyZW5jeSBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gbGVhZGluZyB0byBpbmNvbnNpc3RlbnQgc3RhdGUgb3IgdXNlLWFmdGVyLWZyZWUpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[1] Phase: Succeeded StartedAt: 2026-08-24 18:23:29 +0000 UTC FinishedAt: 2026-08-24 18:23:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-24 18:23:29 +0000 UTC FinishedAt: 2026-08-24 18:23:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2] Phase: Succeeded StartedAt: 2026-08-24 18:23:29 +0000 UTC FinishedAt: 2026-08-24 22:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:23:29 +0000 UTC FinishedAt: 2026-08-24 22:19:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:23:29 +0000 UTC FinishedAt: 2026-08-24 18:23:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:23:29 +0000 UTC FinishedAt: 2026-08-24 18:23:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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-workflowlgnfk/series-workflowlgnfk-convert-artifact-1359304396/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:23:39 +0000 UTC FinishedAt: 2026-08-24 18:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:23:39 +0000 UTC FinishedAt: 2026-08-24 18:41:39 +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:*b49ba075-fa1a-4dc4-b717-1e84306980b7,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-workflowlgnfk/series-workflowlgnfk-convert-artifact-1359304396/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": "1da39d9d-9680-4fa0-8059-6e29d35d02fa", "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-workflowlgnfk/series-workflowlgnfk-build-action-1188254970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:23:39 +0000 UTC FinishedAt: 2026-08-24 18:41:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b49ba075-fa1a-4dc4-b717-1e84306980b7,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-workflowlgnfk/series-workflowlgnfk-convert-artifact-1359304396/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": "1da39d9d-9680-4fa0-8059-6e29d35d02fa", "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-workflowlgnfk/series-workflowlgnfk-build-action-1188254970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:41:39 +0000 UTC FinishedAt: 2026-08-24 18:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:41:39 +0000 UTC FinishedAt: 2026-08-24 18:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:41:39 +0000 UTC FinishedAt: 2026-08-24 18:41:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:41:39 +0000 UTC FinishedAt: 2026-08-24 18:41:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-workflowlgnfk/series-workflowlgnfk-convert-artifact-2083864331/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:41:49 +0000 UTC FinishedAt: 2026-08-24 18:43:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:41:49 +0000 UTC FinishedAt: 2026-08-24 18:43:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1da39d9d-9680-4fa0-8059-6e29d35d02fa,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-workflowlgnfk/series-workflowlgnfk-build-action-1188254970/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-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:43:53 +0000 UTC FinishedAt: 2026-08-24 18:43:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:43:53 +0000 UTC FinishedAt: 2026-08-24 18:43:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:43:53 +0000 UTC FinishedAt: 2026-08-24 19:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:43:53 +0000 UTC FinishedAt: 2026-08-24 19:14:05 +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:*b49ba075-fa1a-4dc4-b717-1e84306980b7,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-workflowlgnfk/series-workflowlgnfk-convert-artifact-2083864331/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": "cee94759-799a-42fc-a645-3de13c9aaed7", "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-workflowlgnfk/series-workflowlgnfk-build-action-458218927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 18:43:53 +0000 UTC FinishedAt: 2026-08-24 19:13:40 +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:*b49ba075-fa1a-4dc4-b717-1e84306980b7,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-workflowlgnfk/series-workflowlgnfk-convert-artifact-2083864331/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": "cee94759-799a-42fc-a645-3de13c9aaed7", "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-workflowlgnfk/series-workflowlgnfk-build-action-458218927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:14:05 +0000 UTC FinishedAt: 2026-08-24 19:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:14:05 +0000 UTC FinishedAt: 2026-08-24 19:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:14:05 +0000 UTC FinishedAt: 2026-08-24 19:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:14:05 +0000 UTC FinishedAt: 2026-08-24 19:15:57 +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:*cee94759-799a-42fc-a645-3de13c9aaed7,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-workflowlgnfk/series-workflowlgnfk-build-action-458218927/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-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 22:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 22:19:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"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:*1da39d9d-9680-4fa0-8059-6e29d35d02fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cee94759-799a-42fc-a645-3de13c9aaed7,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-workflowlgnfk/series-workflowlgnfk-build-action-1188254970/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-workflowlgnfk/series-workflowlgnfk-build-action-458218927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 19:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 19:16:21 +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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"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-workflowlgnfk/series-workflowlgnfk-convert-artifact-4256386468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 19:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 19:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:07 +0000 UTC FinishedAt: 2026-08-24 19:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:43 +0000 UTC FinishedAt: 2026-08-24 22:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlgnfk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"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":["xfrm_lookup","xfrm_lookup_route","__xfrm_policy_check","xfrm_policy_lookup_bytype"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"1ba6b4d5-6c80-4b38-bf73-67cf79151a19","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-08-24 19:16:43 +0000 UTC FinishedAt: 2026-08-24 22:19:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1da39d9d-9680-4fa0-8059-6e29d35d02fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cee94759-799a-42fc-a645-3de13c9aaed7,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-workflowlgnfk/series-workflowlgnfk-build-action-1188254970/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-workflowlgnfk/series-workflowlgnfk-build-action-458218927/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-workflowlgnfk/series-workflowlgnfk-convert-artifact-4256386468/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,}