Name: series-workflow2dvrj Phase: Succeeded StartedAt: 2026-07-24 11:13:20 +0000 UTC FinishedAt: 2026-07-24 16:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[0] Phase: Succeeded StartedAt: 2026-07-24 11:13:20 +0000 UTC FinishedAt: 2026-07-24 11:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 11:13:20 +0000 UTC FinishedAt: 2026-07-24 11:33:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLX5_CORE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLX5_CORE" ], "series_id": "00ca0e86-1312-4499-9d21-bf54ca6c033f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mlx5_db_pools_init", "mlx5_db_pools_cleanup", "mlx5_db_alloc_node", "mlx5_db_free" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWDVfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21seDVfZGJfcG9vbHNfaW5pdCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX3Bvb2xzX2NsZWFudXAmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlJiMzNDssCiAgICAmIzM0O21seDVfZGJfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNzAzNDY2MDlhMzljMDNmYzczYWM1MzdmYWJiYWRmNDE0ODBiZTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTE6MzE6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY1xuaW5kZXggNGZlOWQ3ZDRmMTQzOGUuLjYwZmY0MTM5OTlmNzU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXG5AQCAtNDgsMTMgJiM0Mzs0OCw2IEBAXG4gI2RlZmluZSBNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTSBcXFxuIFx0KFBBR0VfU0hJRlQgLSBNTFg1X0ZSQUdfQlVGX1BPT0xfTUlOX0JMT0NLX1NISUZUICYjNDM7IDEpXG4gXG4tc3RydWN0IG1seDVfZGJfcGdkaXIge1xuLVx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbi1cdHVuc2lnbmVkIGxvbmdcdCAgICAgICAqYml0bWFwO1xuLVx0X19iZTMyXHRcdCAgICAgICAqZGJfcGFnZTtcbi1cdGRtYV9hZGRyX3RcdFx0ZGJfZG1hO1xuLX07XG4tXG4gc3RydWN0IG1seDVfZG1hX3Bvb2wge1xuIFx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXG4gXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbkBAIC00NDQsMTA2ICYjNDM7NDM3LDEwMyBAQCB2b2lkIG1seDVfZnJhZ19idWZfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpO1xuIFxuLXN0YXRpYyBzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqbWx4NV9hbGxvY19kYl9wZ2RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuLVx0XHRcdFx0XHRcdCBpbnQgbm9kZSlcbiYjNDM7c3RhdGljIGludCBtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpwcml2KVxuIHtcbi1cdHUzMiBkYl9wZXJfcGFnZSA9IFBBR0VfU0laRSAvIGNhY2hlX2xpbmVfc2l6ZSgpO1xuLVx0c3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyO1xuJiM0MztcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG4mIzQzO1x0aW50IG5vZGU7XG4gXG4tXHRwZ2RpciA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKnBnZGlyKSwgR0ZQX0tFUk5FTCwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyKVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihmaWxlKTtcbiBcbi1cdHBnZGlyLVx1MDAzZWJpdG1hcCA9IGJpdG1hcF96YWxsb2Nfbm9kZShkYl9wZXJfcGFnZSwgR0ZQX0tFUk5FTCwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyLVx1MDAzZWJpdG1hcCkge1xuLVx0XHRrZnJlZShwZ2Rpcik7XG4tXHRcdHJldHVybiBOVUxMO1xuLVx0fVxuJiM0MztcdGlmICghZGV2LVx1MDAzZXByaXYuZGJfbm9kZV9wb29scylcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuLVx0Yml0bWFwX2ZpbGwocGdkaXItXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSk7XG4mIzQzO1x0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG4gXG4tXHRwZ2Rpci1cdTAwM2VkYl9wYWdlID0gbWx4NV9kbWFfemFsbG9jX2NvaGVyZW50X25vZGUoZGV2LCBQQUdFX1NJWkUsXG4tXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBnZGlyLVx1MDAzZWRiX2RtYSwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyLVx1MDAzZWRiX3BhZ2UpIHtcbi1cdFx0Yml0bWFwX2ZyZWUocGdkaXItXHUwMDNlYml0bWFwKTtcbi1cdFx0a2ZyZWUocGdkaXIpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGlmICghcG9vbClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHBnZGlyO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiYjNDM7REVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnMpO1xuIFxuLXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2Rpcixcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG4mIzQzO3ZvaWQgbWx4NV9kYl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4ge1xuLVx0dTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7XG4tXHRpbnQgb2Zmc2V0O1xuLVx0aW50IGk7XG4mIzQzO1x0c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IFx1MDAyNmRldi1cdTAwM2Vwcml2O1xuJiM0MztcdGludCBub2RlO1xuJiM0MztcbiYjNDM7XHRkZWJ1Z2ZzX3JlbW92ZShwcml2LVx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpXG4mIzQzO1x0XHRpZiAocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKVxuJiM0MztcdFx0XHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKTtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IG5vZGU7XG4gXG4tXHRpID0gZmluZF9maXJzdF9iaXQocGdkaXItXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSk7XG4tXHRpZiAoaSBcdTAwM2U9IGRiX3Blcl9wYWdlKVxuJiM0MztcdHByaXYtXHUwMDNlZGJfbm9kZV9wb29scyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzLCBucl9ub2RlX2lkcyk7XG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0X19jbGVhcl9iaXQoaSwgcGdkaXItXHUwMDNlYml0bWFwKTtcbiYjNDM7XHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcbiYjNDM7XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuIFxuLVx0ZGItXHUwMDNldS5wZ2RpciA9IHBnZGlyO1xuLVx0ZGItXHUwMDNlaW5kZXggICA9IGk7XG4tXHRvZmZzZXQgPSBkYi1cdTAwM2VpbmRleCAqIGNhY2hlX2xpbmVfc2l6ZSgpO1xuLVx0ZGItXHUwMDNlZGIgICAgICA9IHBnZGlyLVx1MDAzZWRiX3BhZ2UgJiM0Mzsgb2Zmc2V0IC8gc2l6ZW9mKCpwZ2Rpci1cdTAwM2VkYl9wYWdlKTtcbi1cdGRiLVx1MDAzZWRtYSAgICAgPSBwZ2Rpci1cdTAwM2VkYl9kbWEgICYjNDM7IG9mZnNldDtcbiYjNDM7XHRcdHBvb2wgPSBtbHg1X2RtYV9wb29sX2NyZWF0ZShkZXYsIG5vZGUsXG4mIzQzO1x0XHRcdFx0XHQgICAgb3JkZXJfYmFzZV8yKGNhY2hlX2xpbmVfc2l6ZSgpKSk7XG4mIzQzO1x0XHRpZiAoIXBvb2wpIHtcbiYjNDM7XHRcdFx0bWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7XG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdID0gcG9vbDtcbiYjNDM7XHR9XG4gXG4tXHRkYi1cdTAwM2VkYlswXSA9IDA7XG4tXHRkYi1cdTAwM2VkYlsxXSA9IDA7XG4mIzQzO1x0cHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPVxuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkYl9kbWFfcG9vbHNcJiMzNDssIDA0NDQsIHByaXYtXHUwMDNlZGJnLmRiZ19yb290LFxuJiM0MztcdFx0XHRcdCAgICBkZXYsIFx1MDAyNm1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnNfZm9wcyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKVxuIHtcbi1cdHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2Rpcjtcbi1cdGludCByZXQgPSAwO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlcHJpdi5wZ2Rpcl9tdXRleCk7XG4tXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBnZGlyLCBcdTAwMjZkZXYtXHUwMDNlcHJpdi5wZ2Rpcl9saXN0LCBsaXN0KVxuLVx0XHRpZiAoIW1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVxuLVx0cGdkaXIgPSBtbHg1X2FsbG9jX2RiX3BnZGlyKGRldiwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyKSB7XG4tXHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuJiM0MztcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG4mIzQzO1x0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBpZHg7XG4mIzQzO1x0aW50IG9mZnNldDtcbiBcbi1cdGxpc3RfYWRkKFx1MDAyNnBnZGlyLVx1MDAzZWxpc3QsIFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX2xpc3QpO1xuJiM0MztcdG5vZGUgPSBub2RlID09IE5VTUFfTk9fTk9ERSA/IG51bWFfbWVtX2lkKCkgOiBub2RlO1xuIFxuLVx0LyogVGhpcyBzaG91bGQgbmV2ZXIgZmFpbCAtLSB3ZSBqdXN0IGFsbG9jYXRlZCBhbiBlbXB0eSBwYWdlOiAqL1xuLVx0V0FSTl9PTihtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSk7XG4mIzQzO1x0cG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG4mIzQzO1x0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXHUwMDI2aWR4KTtcbiYjNDM7XHRpZiAoIXBhZ2UpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1vdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuJiM0MztcdG9mZnNldCA9IGlkeCBcdTAwM2NcdTAwM2MgcG9vbC1cdTAwM2VibG9ja19zaGlmdDtcbiYjNDM7XHRkYi1cdTAwM2V1LnBvb2xfcGFnZSA9IHBhZ2U7XG4mIzQzO1x0ZGItXHUwMDNlaW5kZXggPSBpZHg7XG4mIzQzO1x0ZGItXHUwMDNlZGIgPSAoX19iZTMyICopKCh1OCAqKXBhZ2UtXHUwMDNlYnVmICYjNDM7IG9mZnNldCk7XG4mIzQzO1x0ZGItXHUwMDNlZG1hID0gcGFnZS1cdTAwM2VkbWEgJiM0Mzsgb2Zmc2V0O1xuIFxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcbiBcbiB2b2lkIG1seDVfZGJfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG4ge1xuLVx0dTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX211dGV4KTtcbi1cbi1cdF9fc2V0X2JpdChkYi1cdTAwM2VpbmRleCwgZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXApO1xuLVxuLVx0aWYgKGJpdG1hcF9mdWxsKGRiLVx1MDAzZXUucGdkaXItXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSkpIHtcbi1cdFx0ZG1hX2ZyZWVfY29oZXJlbnQobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSwgUEFHRV9TSVpFLFxuLVx0XHRcdFx0ICBkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWRiX3BhZ2UsIGRiLVx1MDAzZXUucGdkaXItXHUwMDNlZGJfZG1hKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2ZGItXHUwMDNldS5wZ2Rpci1cdTAwM2VsaXN0KTtcbi1cdFx0Yml0bWFwX2ZyZWUoZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXApO1xuLVx0XHRrZnJlZShkYi1cdTAwM2V1LnBnZGlyKTtcbi1cdH1cbiYjNDM7XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlID0gZGItXHUwMDNldS5wb29sX3BhZ2U7XG4mIzQzO1x0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLVx1MDAzZXBvb2w7XG4gXG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuJiM0MztcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBkYi1cdTAwM2VpbmRleCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfZnJlZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcbmluZGV4IDY0M2I0YWFjMjAzMzY4Li41ZjI4ZDkwNmMzNWI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcbkBAIC0xODE5LDggJiM0MzsxODE5LDYgQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXBnZGlyX211dGV4KTtcbi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNlcGdkaXJfbGlzdCk7XG4gXG4gXHRwcml2LVx1MDAzZW51bWFfbm9kZSA9IGRldl90b19ub2RlKG1seDVfY29yZV9kbWFfZGV2KGRldikpO1xuIFx0cHJpdi1cdTAwM2VkYmcuZGJnX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoZGV2LVx1MDAzZWRldmljZSksXG5AQCAtMTgzMCw2ICYjNDM7MTgyOCwxMCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDtcbiBcbiYjNDM7XHRlcnIgPSBtbHg1X2RiX3Bvb2xzX2luaXQoZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnJfZGJfcG9vbHNfaW5pdDtcbiYjNDM7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZXRyYXBzKTtcbiBcbiBcdGVyciA9IG1seDVfY21kX2luaXQoZGV2KTtcbkBAIC0xODkxLDEwICYjNDM7MTg5MywxMSBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuIGVycl90aW1lb3V0X2luaXQ6XG4gXHRtbHg1X2NtZF9jbGVhbnVwKGRldik7XG4gZXJyX2NtZF9pbml0OlxuJiM0MztcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuJiM0MztlcnJfZGJfcG9vbHNfaW5pdDpcbiBcdG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChkZXYpO1xuIGVycl9mcmFnX2J1Zl9wb29sc19pbml0OlxuIFx0ZGVidWdmc19yZW1vdmUoZGV2LVx1MDAzZXByaXYuZGJnLmRiZ19yb290KTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbkBAIC0xOTE3LDkgJiM0MzsxOTIwLDkgQEAgdm9pZCBtbHg1X21kZXZfdW5pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4gXHRtbHg1X2hlYWx0aF9jbGVhbnVwKGRldik7XG4gXHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xuIFx0bWx4NV9jbWRfY2xlYW51cChkZXYpO1xuJiM0MztcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuIFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGV2LVx1MDAzZXByaXYuZGJnLmRiZ19yb290KTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmhcbmluZGV4IDA5ZTY2OWY4M2RiYTc2Li5kNjcxM2EyY2U2NzY5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oXG5AQCAtNDM4LDYgJiM0Mzs0MzgsOCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KTtcbiB2b2lkIG1seDVfbWRldl91bmluaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiB2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiYjNDM7aW50IG1seDVfZGJfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiYjNDM7dm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gdm9pZCBtbHg1X3VuaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXG5pbmRleCBiMTg3MWMwODIxZDBiOS4uODNkMGE4M2JiZmJjYWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaFxuQEAgLTU0OCw2ICYjNDM7NTQ4LDcgQEAgc3RydWN0IG1seDVfZGVidWdmc19lbnRyaWVzIHtcbiBcdHN0cnVjdCBkZW50cnkgKmNxX2RlYnVnZnM7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpjbWRpZl9kZWJ1Z2ZzO1xuIFx0c3RydWN0IGRlbnRyeSAqZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnM7XG4mIzQzO1x0c3RydWN0IGRlbnRyeSAqZGJfZG1hX3Bvb2xzX2RlYnVnZnM7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpwYWdlc19kZWJ1Z2ZzO1xuIFx0c3RydWN0IGRlbnRyeSAqbGFnX2RlYnVnZnM7XG4gfTtcbkBAIC01NjksNiAmIzQzOzU3MCw3IEBAIGVudW0gbWx4NV9wYWdlX21ndF9tb2RlIHtcbiB9O1xuIFxuIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHM7XG4mIzQzO3N0cnVjdCBtbHg1X2RtYV9wb29sO1xuIHN0cnVjdCBtbHg1X2Z0X3Bvb2w7XG4gc3RydWN0IG1seDVfcHJpdiB7XG4gXHQvKiBJUlEgdGFibGUgdmFsaWQgb25seSBmb3IgcmVhbCBwY2kgZGV2aWNlcyBQRiBvciBWRiAqL1xuQEAgLTU5OCwxMCAmIzQzOzYwMCw4IEBAIHN0cnVjdCBtbHg1X3ByaXYge1xuIFx0c3RydWN0IG11dGV4ICAgICAgICAgICAgYWxsb2NfbXV0ZXg7XG4gXHRpbnQgICAgICAgICAgICAgICAgICAgICBudW1hX25vZGU7XG4gXG4tXHRzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBwZ2Rpcl9tdXRleDtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBnZGlyX2xpc3Q7XG4tXG4gXHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICoqZnJhZ19idWZfbm9kZV9wb29scztcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqKmRiX25vZGVfcG9vbHM7XG4gXHQvKiBlbmQ6IGFsbG9jIHN0dWZmICovXG4gXG4gXHRzdHJ1Y3QgbWx4NV9hZGV2ICAgICAgICoqYWRldjtcbkBAIC04MDYsNyAmIzQzOzgwNiw3IEBAIHN0cnVjdCBtbHg1X2NvcmVfZGV2IHtcbiBzdHJ1Y3QgbWx4NV9kYiB7XG4gXHRfX2JlMzJcdFx0XHQqZGI7XG4gXHR1bmlvbiB7XG4tXHRcdHN0cnVjdCBtbHg1X2RiX3BnZGlyXHRcdCpwZ2RpcjtcbiYjNDM7XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2VcdCpwb29sX3BhZ2U7XG4gXHRcdHN0cnVjdCBtbHg1X2liX3VzZXJfZGJfcGFnZVx0KnVzZXJfcGFnZTtcbiBcdH1cdFx0XHR1O1xuIFx0ZG1hX2FkZHJfdFx0XHRkbWE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWDVfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21seDVfZGJfcG9vbHNfaW5pdCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX3Bvb2xzX2NsZWFudXAmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlJiMzNDssCiAgICAmIzM0O21seDVfZGJfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ3MDM0NjYwOWEzOWMwM2ZjNzNhYzUzN2ZhYmJhZGY0MTQ4MGJlMDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAxMTozMToyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMKaW5kZXggNGZlOWQ3ZDRmMTQzOGUuLjYwZmY0MTM5OTlmNzU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYwpAQCAtNDgsMTMgJiM0Mzs0OCw2IEBACiAjZGVmaW5lIE1MWDVfRlJBR19CVUZfUE9PTFNfTlVNIFwKIAkoUEFHRV9TSElGVCAtIE1MWDVfRlJBR19CVUZfUE9PTF9NSU5fQkxPQ0tfU0hJRlQgJiM0MzsgMSkKIAotc3RydWN0IG1seDVfZGJfcGdkaXIgewotCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKLQl1bnNpZ25lZCBsb25nCSAgICAgICAqYml0bWFwOwotCV9fYmUzMgkJICAgICAgICpkYl9wYWdlOwotCWRtYV9hZGRyX3QJCWRiX2RtYTsKLX07Ci0KIHN0cnVjdCBtbHg1X2RtYV9wb29sIHsKIAkvKiBQcm90ZWN0cyBwYWdlX2xpc3QgYW5kIHBlci1wYWdlIGFsbG9jYXRpb24gYml0bWFwcy4gKi8KIAlzdHJ1Y3QgbXV0ZXggbG9jazsKQEAgLTQ0NCwxMDYgJiM0Mzs0MzcsMTAzIEBAIHZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpOwogCi1zdGF0aWMgc3RydWN0IG1seDVfZGJfcGdkaXIgKm1seDVfYWxsb2NfZGJfcGdkaXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwKLQkJCQkJCSBpbnQgbm9kZSkKJiM0MztzdGF0aWMgaW50IG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpCiB7Ci0JdTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7Ci0Jc3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyOwomIzQzOwlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS0mZ3Q7cHJpdmF0ZTsKJiM0MzsJaW50IG5vZGU7CiAKLQlwZ2RpciA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKnBnZGlyKSwgR0ZQX0tFUk5FTCwgbm9kZSk7Ci0JaWYgKCFwZ2RpcikKLQkJcmV0dXJuIE5VTEw7CiYjNDM7CW1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKGZpbGUpOwogCi0JcGdkaXItJmd0O2JpdG1hcCA9IGJpdG1hcF96YWxsb2Nfbm9kZShkYl9wZXJfcGFnZSwgR0ZQX0tFUk5FTCwgbm9kZSk7Ci0JaWYgKCFwZ2Rpci0mZ3Q7Yml0bWFwKSB7Ci0JCWtmcmVlKHBnZGlyKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQomIzQzOwlpZiAoIWRldi0mZ3Q7cHJpdi5kYl9ub2RlX3Bvb2xzKQomIzQzOwkJcmV0dXJuIDA7CiAKLQliaXRtYXBfZmlsbChwZ2Rpci0mZ3Q7Yml0bWFwLCBkYl9wZXJfcGFnZSk7CiYjNDM7CWZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkgewomIzQzOwkJc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBkZXYtJmd0O3ByaXYuZGJfbm9kZV9wb29sc1tub2RlXTsKIAotCXBnZGlyLSZndDtkYl9wYWdlID0gbWx4NV9kbWFfemFsbG9jX2NvaGVyZW50X25vZGUoZGV2LCBQQUdFX1NJWkUsCi0JCQkJCQkgICAgICAgJmFtcDtwZ2Rpci0mZ3Q7ZGJfZG1hLCBub2RlKTsKLQlpZiAoIXBnZGlyLSZndDtkYl9wYWdlKSB7Ci0JCWJpdG1hcF9mcmVlKHBnZGlyLSZndDtiaXRtYXApOwotCQlrZnJlZShwZ2Rpcik7Ci0JCXJldHVybiBOVUxMOwomIzQzOwkJaWYgKCFwb29sKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpOwogCX0KIAotCXJldHVybiBwZ2RpcjsKJiM0MzsJcmV0dXJuIDA7CiB9CiYjNDM7REVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnMpOwogCi1zdGF0aWMgaW50IG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXIsCi0JCQkJICAgIHN0cnVjdCBtbHg1X2RiICpkYikKJiM0Mzt2b2lkIG1seDVfZGJfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQogewotCXUzMiBkYl9wZXJfcGFnZSA9IFBBR0VfU0laRSAvIGNhY2hlX2xpbmVfc2l6ZSgpOwotCWludCBvZmZzZXQ7Ci0JaW50IGk7CiYjNDM7CXN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSAmYW1wO2Rldi0mZ3Q7cHJpdjsKJiM0MzsJaW50IG5vZGU7CiYjNDM7CiYjNDM7CWRlYnVnZnNfcmVtb3ZlKHByaXYtJmd0O2RiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyk7CiYjNDM7CXByaXYtJmd0O2RiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyA9IE5VTEw7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkKJiM0MzsJCWlmIChwcml2LSZndDtkYl9ub2RlX3Bvb2xzW25vZGVdKQomIzQzOwkJCW1seDVfZG1hX3Bvb2xfZGVzdHJveShwcml2LSZndDtkYl9ub2RlX3Bvb2xzW25vZGVdKTsKJiM0MzsKJiM0MzsJa2ZyZWUocHJpdi0mZ3Q7ZGJfbm9kZV9wb29scyk7CiYjNDM7CXByaXYtJmd0O2RiX25vZGVfcG9vbHMgPSBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gJmFtcDtkZXYtJmd0O3ByaXY7CiYjNDM7CWludCBub2RlOwogCi0JaSA9IGZpbmRfZmlyc3RfYml0KHBnZGlyLSZndDtiaXRtYXAsIGRiX3Blcl9wYWdlKTsKLQlpZiAoaSAmZ3Q7PSBkYl9wZXJfcGFnZSkKJiM0MzsJcHJpdi0mZ3Q7ZGJfbm9kZV9wb29scyA9IGt6YWxsb2Nfb2JqcygqcHJpdi0mZ3Q7ZGJfbm9kZV9wb29scywgbnJfbm9kZV9pZHMpOwomIzQzOwlpZiAoIXByaXYtJmd0O2RiX25vZGVfcG9vbHMpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JX19jbGVhcl9iaXQoaSwgcGdkaXItJmd0O2JpdG1hcCk7CiYjNDM7CWZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkgewomIzQzOwkJc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7CiAKLQlkYi0mZ3Q7dS5wZ2RpciA9IHBnZGlyOwotCWRiLSZndDtpbmRleCAgID0gaTsKLQlvZmZzZXQgPSBkYi0mZ3Q7aW5kZXggKiBjYWNoZV9saW5lX3NpemUoKTsKLQlkYi0mZ3Q7ZGIgICAgICA9IHBnZGlyLSZndDtkYl9wYWdlICYjNDM7IG9mZnNldCAvIHNpemVvZigqcGdkaXItJmd0O2RiX3BhZ2UpOwotCWRiLSZndDtkbWEgICAgID0gcGdkaXItJmd0O2RiX2RtYSAgJiM0Mzsgb2Zmc2V0OwomIzQzOwkJcG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSwKJiM0MzsJCQkJCSAgICBvcmRlcl9iYXNlXzIoY2FjaGVfbGluZV9zaXplKCkpKTsKJiM0MzsJCWlmICghcG9vbCkgewomIzQzOwkJCW1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpOwomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJfQomIzQzOwkJcHJpdi0mZ3Q7ZGJfbm9kZV9wb29sc1tub2RlXSA9IHBvb2w7CiYjNDM7CX0KIAotCWRiLSZndDtkYlswXSA9IDA7Ci0JZGItJmd0O2RiWzFdID0gMDsKJiM0MzsJcHJpdi0mZ3Q7ZGJnLmRiX2RtYV9wb29sc19kZWJ1Z2ZzID0KJiM0MzsJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtkYl9kbWFfcG9vbHMmIzM0OywgMDQ0NCwgcHJpdi0mZ3Q7ZGJnLmRiZ19yb290LAomIzQzOwkJCQkgICAgZGV2LCAmYW1wO21seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnNfZm9wcyk7CiAKIAlyZXR1cm4gMDsKIH0KIAogaW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKQogewotCXN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcjsKLQlpbnQgcmV0ID0gMDsKLQotCW11dGV4X2xvY2soJmFtcDtkZXYtJmd0O3ByaXYucGdkaXJfbXV0ZXgpOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShwZ2RpciwgJmFtcDtkZXYtJmd0O3ByaXYucGdkaXJfbGlzdCwgbGlzdCkKLQkJaWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSkKLQkJCWdvdG8gb3V0OwotCi0JcGdkaXIgPSBtbHg1X2FsbG9jX2RiX3BnZGlyKGRldiwgbm9kZSk7Ci0JaWYgKCFwZ2RpcikgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDsKLQl9CiYjNDM7CXN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7CiYjNDM7CXN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sOwomIzQzOwl1bnNpZ25lZCBsb25nIGlkeDsKJiM0MzsJaW50IG9mZnNldDsKIAotCWxpc3RfYWRkKCZhbXA7cGdkaXItJmd0O2xpc3QsICZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX2xpc3QpOwomIzQzOwlub2RlID0gbm9kZSA9PSBOVU1BX05PX05PREUgPyBudW1hX21lbV9pZCgpIDogbm9kZTsKIAotCS8qIFRoaXMgc2hvdWxkIG5ldmVyIGZhaWwgLS0gd2UganVzdCBhbGxvY2F0ZWQgYW4gZW1wdHkgcGFnZTogKi8KLQlXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTsKJiM0MzsJcG9vbCA9IGRldi0mZ3Q7cHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdOwomIzQzOwlwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCAmYW1wO2lkeCk7CiYjNDM7CWlmICghcGFnZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX211dGV4KTsKJiM0MzsJb2Zmc2V0ID0gaWR4ICZsdDsmbHQ7IHBvb2wtJmd0O2Jsb2NrX3NoaWZ0OwomIzQzOwlkYi0mZ3Q7dS5wb29sX3BhZ2UgPSBwYWdlOwomIzQzOwlkYi0mZ3Q7aW5kZXggPSBpZHg7CiYjNDM7CWRiLSZndDtkYiA9IChfX2JlMzIgKikoKHU4ICopcGFnZS0mZ3Q7YnVmICYjNDM7IG9mZnNldCk7CiYjNDM7CWRiLSZndDtkbWEgPSBwYWdlLSZndDtkbWEgJiM0Mzsgb2Zmc2V0OwogCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2FsbG9jX25vZGUpOwogCiB2b2lkIG1seDVfZGJfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIpCiB7Ci0JdTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7Ci0KLQltdXRleF9sb2NrKCZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX211dGV4KTsKLQotCV9fc2V0X2JpdChkYi0mZ3Q7aW5kZXgsIGRiLSZndDt1LnBnZGlyLSZndDtiaXRtYXApOwotCi0JaWYgKGJpdG1hcF9mdWxsKGRiLSZndDt1LnBnZGlyLSZndDtiaXRtYXAsIGRiX3Blcl9wYWdlKSkgewotCQlkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsCi0JCQkJICBkYi0mZ3Q7dS5wZ2Rpci0mZ3Q7ZGJfcGFnZSwgZGItJmd0O3UucGdkaXItJmd0O2RiX2RtYSk7Ci0JCWxpc3RfZGVsKCZhbXA7ZGItJmd0O3UucGdkaXItJmd0O2xpc3QpOwotCQliaXRtYXBfZnJlZShkYi0mZ3Q7dS5wZ2Rpci0mZ3Q7Yml0bWFwKTsKLQkJa2ZyZWUoZGItJmd0O3UucGdkaXIpOwotCX0KJiM0MzsJc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSA9IGRiLSZndDt1LnBvb2xfcGFnZTsKJiM0MzsJc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLSZndDtwb29sOwogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX211dGV4KTsKJiM0MzsJbWx4NV9kbWFfcG9vbF9mcmVlKHBvb2wsIHBhZ2UsIGRiLSZndDtpbmRleCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2ZyZWUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwppbmRleCA2NDNiNGFhYzIwMzM2OC4uNWYyOGQ5MDZjMzViNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwpAQCAtMTgxOSw4ICYjNDM7MTgxOSw2IEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpCiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtwcml2LSZndDtiZnJlZ3Mud2NfaGVhZC5saXN0KTsKIAogCW11dGV4X2luaXQoJmFtcDtwcml2LSZndDthbGxvY19tdXRleCk7Ci0JbXV0ZXhfaW5pdCgmYW1wO3ByaXYtJmd0O3BnZGlyX211dGV4KTsKLQlJTklUX0xJU1RfSEVBRCgmYW1wO3ByaXYtJmd0O3BnZGlyX2xpc3QpOwogCiAJcHJpdi0mZ3Q7bnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSk7CiAJcHJpdi0mZ3Q7ZGJnLmRiZ19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGRldi0mZ3Q7ZGV2aWNlKSwKQEAgLTE4MzAsNiAmIzQzOzE4MjgsMTAgQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeCkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9mcmFnX2J1Zl9wb29sc19pbml0OwogCiYjNDM7CWVyciA9IG1seDVfZGJfcG9vbHNfaW5pdChkZXYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfZGJfcG9vbHNfaW5pdDsKJiM0MzsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3ByaXYtJmd0O3RyYXBzKTsKIAogCWVyciA9IG1seDVfY21kX2luaXQoZGV2KTsKQEAgLTE4OTEsMTAgJiM0MzsxODkzLDExIEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpCiBlcnJfdGltZW91dF9pbml0OgogCW1seDVfY21kX2NsZWFudXAoZGV2KTsKIGVycl9jbWRfaW5pdDoKJiM0MzsJbWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7CiYjNDM7ZXJyX2RiX3Bvb2xzX2luaXQ6CiAJbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7CiBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDoKIAlkZWJ1Z2ZzX3JlbW92ZShkZXYtJmd0O3ByaXYuZGJnLmRiZ19yb290KTsKLQltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7cGdkaXJfbXV0ZXgpOwogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDthbGxvY19tdXRleCk7CiAJbXV0ZXhfZGVzdHJveSgmYW1wO3ByaXYtJmd0O2JmcmVncy53Y19oZWFkLmxvY2spOwogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDtiZnJlZ3MucmVnX2hlYWQubG9jayk7CkBAIC0xOTE3LDkgJiM0MzsxOTIwLDkgQEAgdm9pZCBtbHg1X21kZXZfdW5pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpCiAJbWx4NV9oZWFsdGhfY2xlYW51cChkZXYpOwogCW1seDVfdG91dF9jbGVhbnVwKGRldik7CiAJbWx4NV9jbWRfY2xlYW51cChkZXYpOwomIzQzOwltbHg1X2RiX3Bvb2xzX2NsZWFudXAoZGV2KTsKIAltbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTsKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGV2LSZndDtwcml2LmRiZy5kYmdfcm9vdCk7Ci0JbXV0ZXhfZGVzdHJveSgmYW1wO3ByaXYtJmd0O3BnZGlyX211dGV4KTsKIAltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7YWxsb2NfbXV0ZXgpOwogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDtiZnJlZ3Mud2NfaGVhZC5sb2NrKTsKIAltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7YmZyZWdzLnJlZ19oZWFkLmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oCmluZGV4IDA5ZTY2OWY4M2RiYTc2Li5kNjcxM2EyY2U2NzY5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaApAQCAtNDM4LDYgJiM0Mzs0MzgsOCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KTsKIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsKIGludCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7CiB2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsKJiM0MztpbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwomIzQzO3ZvaWQgbWx4NV9kYl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwogaW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7CiBpbnQgbWx4NV9pbml0X29uZV9kZXZsX2xvY2tlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsKIHZvaWQgbWx4NV91bmluaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oCmluZGV4IGIxODcxYzA4MjFkMGI5Li44M2QwYTgzYmJmYmNhYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaApAQCAtNTQ4LDYgJiM0Mzs1NDgsNyBAQCBzdHJ1Y3QgbWx4NV9kZWJ1Z2ZzX2VudHJpZXMgewogCXN0cnVjdCBkZW50cnkgKmNxX2RlYnVnZnM7CiAJc3RydWN0IGRlbnRyeSAqY21kaWZfZGVidWdmczsKIAlzdHJ1Y3QgZGVudHJ5ICpmcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmczsKJiM0MzsJc3RydWN0IGRlbnRyeSAqZGJfZG1hX3Bvb2xzX2RlYnVnZnM7CiAJc3RydWN0IGRlbnRyeSAqcGFnZXNfZGVidWdmczsKIAlzdHJ1Y3QgZGVudHJ5ICpsYWdfZGVidWdmczsKIH07CkBAIC01NjksNiAmIzQzOzU3MCw3IEBAIGVudW0gbWx4NV9wYWdlX21ndF9tb2RlIHsKIH07CiAKIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHM7CiYjNDM7c3RydWN0IG1seDVfZG1hX3Bvb2w7CiBzdHJ1Y3QgbWx4NV9mdF9wb29sOwogc3RydWN0IG1seDVfcHJpdiB7CiAJLyogSVJRIHRhYmxlIHZhbGlkIG9ubHkgZm9yIHJlYWwgcGNpIGRldmljZXMgUEYgb3IgVkYgKi8KQEAgLTU5OCwxMCAmIzQzOzYwMCw4IEBAIHN0cnVjdCBtbHg1X3ByaXYgewogCXN0cnVjdCBtdXRleCAgICAgICAgICAgIGFsbG9jX211dGV4OwogCWludCAgICAgICAgICAgICAgICAgICAgIG51bWFfbm9kZTsKIAotCXN0cnVjdCBtdXRleCAgICAgICAgICAgIHBnZGlyX211dGV4OwotCXN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBnZGlyX2xpc3Q7Ci0KIAlzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICoqZnJhZ19idWZfbm9kZV9wb29sczsKJiM0MzsJc3RydWN0IG1seDVfZG1hX3Bvb2wgKipkYl9ub2RlX3Bvb2xzOwogCS8qIGVuZDogYWxsb2Mgc3R1ZmYgKi8KIAogCXN0cnVjdCBtbHg1X2FkZXYgICAgICAgKiphZGV2OwpAQCAtODA2LDcgJiM0Mzs4MDYsNyBAQCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiB7CiBzdHJ1Y3QgbWx4NV9kYiB7CiAJX19iZTMyCQkJKmRiOwogCXVuaW9uIHsKLQkJc3RydWN0IG1seDVfZGJfcGdkaXIJCSpwZ2RpcjsKJiM0MzsJCXN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UJKnBvb2xfcGFnZTsKIAkJc3RydWN0IG1seDVfaWJfdXNlcl9kYl9wYWdlCSp1c2VyX3BhZ2U7CiAJfQkJCXU7CiAJZG1hX2FkZHJfdAkJZG1hOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgTWVsbGFub3ggQ29ubmVjdFgtNSBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGluIHRoZSBNZWxsYW5veCBDb25uZWN0WC01IChtbHg1KSBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlLCBzd2FwcGluZyBgbWx4NV9kYl9wZ2RpcmAgd2l0aCBgbWx4NV9kbWFfcG9vbGAgZm9yIHRob3NlIGFsbG9jYXRpb25zIGFuZCBhZGRpbmcgaW5pdGlhbGl6YXRpb24vY2xlYW51cCBmdW5jdGlvbnMgZm9yIGRvb3JiZWxsIHBvb2xzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgY29kZSBldmVuICpiZSogcmVhY2hlZCBpbiB0aGUgZW52aXJvbm1lbnRzIHdlIHVzdWFsbHkgdGVzdCwgZXNwZWNpYWxseSB2aXJ0dWFsaXplZCBvbmVzIGxpa2UgR0NFIG9yIFFFTVU/CgpNZWxsYW5veCBtbHg1IGlzIGEgUENJIGRldmljZSBkcml2ZXIsIHJpZ2h0PyBJbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXAsIHlvdSYjMzk7cmUgbm90IGdvaW5nIHRvIHNlZSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSBhcmUgZW11bGF0ZWQgb3IsIGluIHNvbWUgY2FzZXMsIHBhc3NlZCB0aHJvdWdoLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBvdXIgZnV6emluZyBzZXR1cCBldmVuICp0cnkqIHRvIHJlYWNoIHRoaXM/IFN5emthbGxlciBoYXMgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgdmlhIHZoY2kgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBtbHg1IGlzIHR5cGljYWxseSBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLgoKSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciBtbHg1IG9yIGFueSBtZW50aW9ucyBvZiBpdCBiZWluZyByZWFjaGFibGUuIFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZGV2aWNlcyBpZiBpdCBsZXZlcmFnZXMgdGhlIFBDSSBmdXp6aW5nIHN1YnN5c3RlbSwgYnV0IHdlIG9ubHkgZnV6eiB0aGluZ3MgdGhhdCBhcmUgKnJlYWNoYWJsZSosIHNvIHRoaXMgaXMgYSBjcnVjaWFsIHBvaW50LgoKV2FpdCBhIG1pbnV0ZSwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMsICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNvLCBpcyBtbHg1ICplbXVsYXRlZCogaW4gUUVNVT8gTm8sIGRlZmluaXRlbHkgbm90IG5hdGl2ZWx5LiBRRU1VIGVtdWxhdGVzIG90aGVyIG5ldHdvcmsgZGV2aWNlcywgbGlrZSBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgYW5kIHZteG5ldDMsIGJ1dCBub3QgbWx4NS4gSSByZWNhbGwgUUVNVSBoYXZpbmcgc29tZSBzdXBwb3J0IGZvciBSRE1BIGRldmljZXMsIGxpa2UgcHZyZG1hLCBidXQgbm90IG1seDUuCgpBbHJpZ2h0LCBzbyBpZiBub3QgUUVNVSBlbXVsYXRpb24sIHdoYXQgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsPyBJcyB0aGVyZSBhbnl0aGluZz8gTm8uIG1seDUgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNZWxsYW5veCBDb25uZWN0WC00LzUvNi83LiBXYWl0LCB0aGVyZSYjMzk7cyBgbmV0ZGV2c2ltYCwgYnV0IGl0JiMzOTtzIHVucmVsYXRlZCB0byBtbHg1LgoKTXkgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGlmIGBtbHg1YCBpcyBldmVuIHByb2JlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gR2VuZXJhbGx5LCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIHdpdGhvdXQgZW11bGF0aW9uIGFyZSBub3QgcmVhY2hhYmxlLiBUaGUgcHJpbWFyeSB0aGluZyB0byBkbyBub3cgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYG1seDVfZGJfYWxsb2Nfbm9kZWAgY2FuIGJlIHJlYWNoZWQuIEkgaGF2ZSB0byBsb29rIGludG8gdGhpcyBtb3JlIGRlZXBseSB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfZGJfYWxsb2Nfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00Nzk9aW50IG1seDVfZGJfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwNzppbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyOC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mjk6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYz0zNz1pbnQgbWx4NV93cV9jeWNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93cV9wYXJhbSAqcGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzo0NjpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZ3cV9jdHJsLVx1MDAzZWRiLCBwYXJhbS1cdTAwM2VkYl9udW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtNDctXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzo0ODpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTQ5LVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTk5PWludCBtbHg1X3dxX3FwX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTExMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjExMzpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZ3cV9jdHJsLVx1MDAzZWRiLCBwYXJhbS1cdTAwM2VkYl9udW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTE0LVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6MTE1Olx0XHRtbHg1X2NvcmVfd2FybihtZGV2LCBcJiMzNDttbHg1X2RiX2FsbG9jX25vZGUoKSBmYWlsZWQsICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTE2LVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTE1OT1pbnQgbWx4NV9jcXdxX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjE2ODpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZ3cV9jdHJsLVx1MDAzZWRiLCBwYXJhbS1cdTAwM2VkYl9udW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTY5LVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6MTcwOlx0XHRtbHg1X2NvcmVfd2FybihtZGV2LCBcJiMzNDttbHg1X2RiX2FsbG9jX25vZGUoKSBmYWlsZWQsICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTcxLVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTIxMD1pbnQgbWx4NV93cV9sbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1X3dxX3BhcmFtICpwYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0yMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzoyMTk6XHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXHUwMDI2d3FfY3RybC1cdTAwM2VkYiwgcGFyYW0tXHUwMDNlZGJfbnVtYV9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTIyMC1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjIyMTpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTIyMi1cdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM9MTE3MD1zdGF0aWMgaW50IG1seDV2Zl9jcmVhdGVfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTExODMtXHRuY3FlID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5jcWUpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jOjExODQ6XHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXHUwMDI2Y3EtXHUwMDNlZGIsIG1kZXYtXHUwMDNlcHJpdi5udW1hX25vZGUpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTExODUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYz0xMjQxPW1seDV2Zl9jcmVhdGVfcmNfcXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTEyNTYtXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM6MTI1NzpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZxcC1cdTAwM2VkYiwgbWRldi1cdTAwM2Vwcml2Lm51bWFfbm9kZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmMtMTI1OC1cdGlmIChlcnIpXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTEwNzA9aW50IG1seDVfY29yZV9hY2Nlc3NfcmVnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmRhdGFfaW4sXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTEwNzMtXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTA3NDppbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYixcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMDc1LVx0XHQgICAgICAgaW50IG5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMDc3PXN0YXRpYyBpbmxpbmUgaW50IG1seDVfZGJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiKVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTEwNzgte1xuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjEwNzk6XHRyZXR1cm4gbWx4NV9kYl9hbGxvY19ub2RlKGRldiwgZGIsIGRldi1cdTAwM2Vwcml2Lm51bWFfbm9kZSk7XG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTA4MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxMQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIG1seDUgRW11bGF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYG1seDVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVycyDigJMgdGhlIDQsIDUsIDYsIGFuZCA3IHNlcmllcy4gVGhlc2UgYXJlIGNvbXBsZXggcGllY2VzIG9mIGhhcmR3YXJlLCBhbmQgbXkgY3VycmVudCB0YXNrIGhhcyBtZSB3b25kZXJpbmcgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXM6IGRvZXMgYSB2aXJ0dWFsIGhhcmR3YXJlIGNvbnN0cnVjdCBvciBlbXVsYXRpb24gZXhpc3QgZm9yIHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBzb21ldGhpbmcgbGlrZSBhIGB2aGNpYCBlcXVpdmFsZW50IG9yIGEgc2ltaWxhciBhcHByb2FjaCBhdmFpbGFibGUgZm9yIHRlc3Rpbmcgb3IgZGV2ZWxvcG1lbnQgc2NlbmFyaW9zIHdoZXJlIHRoZSBhY3R1YWwgaGFyZHdhcmUgaXNuJiMzOTt0IGFjY2Vzc2libGUuIEkmIzM5O2xsIG5lZWQgdG8gcmVzZWFyY2ggdG8gZGlzY292ZXIgYW55IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2NvcmVfZGV2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNDAxNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0yND1zdHJ1Y3QgbWx4NWN0bF9kZXYge1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0yNS1cdHN0cnVjdCBmd2N0bF9kZXZpY2UgZndjdGw7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jOjI2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI3LX07XG4tLVxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0xMTY9c3RhdGljIHZvaWQgbWx4NWN0bF9yZWxlYXNlX3VpZChzdHJ1Y3QgbWx4NWN0bF9kZXYgKm1jZGV2LCB1MTYgdWlkKVxuLS1cbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMTE4LVx0dTMyIGluW01MWDVfU1RfU1pfRFcoZGVzdHJveV91Y3R4X2luKV0gPSB7fTtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6MTE5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtY2Rldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0xMjAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MzcwPXN0YXRpYyBpbnQgbWx4NWN0bF9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTM3NC1cdHN0cnVjdCBtbHg1X2FkZXYgKm1hZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzozNzU6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IG1hZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTM3Ni1cdHN0cnVjdCBtbHg1Y3RsX2RldiAqbWNkZXYgX19mcmVlKG1seDVjdGwpID0gZndjdGxfYWxsb2NfZGV2aWNlKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jPTg9aW50IG1seDVyX2NtZF9xdWVyeV9zcGVjaWFsX21rZXlzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTQ0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NDU6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNDYtXHRcdFx0ICAgICAgIHZvaWQgKm91dClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjU3OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpcm4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01OC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNjYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo2Nzp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNjgte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTc2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6Nzc6aW50IG1seDVfY21kX2Rlc3Ryb3lfcnF0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBycXRuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNzgte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6ODc6aW50IG1seDVfY21kX2FsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy04OC1cdFx0XHRcdCAgICB1MTYgdWlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEwNS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEwNjp2b2lkIG1seDVfY21kX2RlYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGRuLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTA3LVx0XHRcdFx0ICAgICAgIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTE3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTE4OmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTkte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEyODppbnQgbWx4NV9jbWRfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMjktXHRcdFx0dTMyIHFwbiwgdTE2IHVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNDI6aW50IG1seDVfY21kX2RldGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTQzLVx0XHRcdHUzMiBxcG4sIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTU1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTU2OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTcte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE2OS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE3MDppbnQgbWx4NV9jbWRfeHJjZF9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB4cmNkbiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE3MS17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM9MTgwPWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjIyLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MjIzOmludCBtbHg1X2NtZF91YXJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp1YXJuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjI0LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMzgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyMzk6aW50IG1seDVfY21kX3Vhcl9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB1YXJuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjQwLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNDgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyNDk6aW50IG1seDVfY21kX3F1ZXJ5X3Z1aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCBkYXRhX2RpcmVjdCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI1MC1cdFx0XHRjaGFyICpvdXRfdnVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaD00MD1pbnQgbWx4NXJfY21kX3F1ZXJ5X3NwZWNpYWxfbWtleXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDE6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNDItXHRcdFx0ICAgICAgIHZvaWQgKm91dCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0MzppbnQgbWx4NV9jbWRfZGVhbGxvY19wZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcGRuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ0OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpcm4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDU6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlzbiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NjppbnQgbWx4NV9jbWRfZGVzdHJveV9ycXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHJxdG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDc6aW50IG1seDVfY21kX2FsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC00OC1cdFx0XHRcdCAgICB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ5OnZvaWQgbWx4NV9jbWRfZGVhbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01MC1cdFx0XHRcdCAgICAgICB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjUxOmludCBtbHg1X2NtZF9hdHRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTUyLVx0XHRcdHUzMiBxcG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTM6aW50IG1seDVfY21kX2RldGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTQtXHRcdFx0dTMyIHFwbiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1NTppbnQgbWx4NV9jbWRfeHJjZF9hbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnhyY2RuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU2OmludCBtbHg1X2NtZF94cmNkX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHhyY2RuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU3LWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01OC1cdFx0ICAgICB1MTYgb3Btb2QsIHU4IHBvcnQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTk6aW50IG1seDVfY21kX3Vhcl9hbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnVhcm4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NjA6aW50IG1seDVfY21kX3Vhcl9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB1YXJuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjYxOmludCBtbHg1X2NtZF9xdWVyeV92dWlkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGJvb2wgZGF0YV9kaXJlY3QsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC02Mi1cdFx0XHRjaGFyICpvdXRfdnVpZCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTI5Mj1zdGF0aWMgaW50IG1seDVfaWJfZ2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0yOTktXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzozMDA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMDEtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTMyOT1zdGF0aWMgaW50IG1seDVfaWJfc2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMzUtXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzozMzY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMzctXHR1MzIgYXR0cl9tYXNrID0gMDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9NDM0PXZvaWQgbWx4NV9pYl9pbml0X2NvbmdfZGVidWdmcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy00MzYtXHRzdHJ1Y3QgbWx4NV9pYl9kYmdfY2NfcGFyYW1zICpkYmdfY2NfcGFyYW1zO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjQzNzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzOC1cdGludCBpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mjg4PW1seDVfaWJfYWxsb2NfaHdfcG9ydF9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnRfbnVtKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMjk1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzoyOTY6c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3FfY291bnRlcnMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTI5Ny1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbWx4NV9pYl9jb3VudGVycyAqY250cyxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jPTM1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVyc192cG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM1Ny1cdHUzMiBpbltNTFg1X1NUX1NaX0RXKHF1ZXJ5X3FfY291bnRlcl9pbildID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjM1ODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zNTktXHRfX2JlMzIgdmFsO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mzg3PXN0YXRpYyBpbnQgZG9fZ2V0X2h3X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzkyLVx0Y29uc3Qgc3RydWN0IG1seDVfaWJfY291bnRlcnMgKmNudHMgPSBnZXRfY291bnRlcnMoZGV2LCBwb3J0X251bSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjM5MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTQtXHRpbnQgcmV0LCBudW1fY291bnRlcnM7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02MTE9aW50IG1seDVfaWJfcG9sbF9jcShzdHJ1Y3QgaWJfY3EgKmliY3EsIGludCBudW1fZW50cmllcywgc3RydWN0IGliX3djICp3Yylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihjcS1cdTAwM2VpYmNxLmRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jOjYxNjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNy1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02NDg9aW50IG1seDVfaWJfYXJtX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgZW51bSBpYl9jcV9ub3RpZnlfZmxhZ3MgZmxhZ3MpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTY0OS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jOjY1MDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmNxLVx1MDAzZWRldmljZSktXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjUxLVx0c3RydWN0IG1seDVfaWJfY3EgKmNxID0gdG9fbWNxKGliY3EpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0xMDc9c3RydWN0IGRldnhfdW1lbSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTA4Olx0c3RydWN0IG1seDVfY29yZV9kZXZcdFx0Km1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTA5LVx0c3RydWN0IGliX3VtZW1cdFx0XHQqdW1lbTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjAwNT1zdGF0aWMgYm9vbCBpc192YWxpZF9ldmVudHNfbGVnYWN5KGludCBudW1fZXZlbnRzLCB1MTYgKmV2ZW50X3R5cGVfbnVtX2xpc3QsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjMtI2RlZmluZSBNQVhfU1VQUF9FVkVOVF9OVU0gMjU1XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MjAyNDpzdGF0aWMgYm9vbCBpc192YWxpZF9ldmVudHMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMDI1LVx0XHRcdCAgICBpbnQgbnVtX2V2ZW50cywgdTE2ICpldmVudF90eXBlX251bV9saXN0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yNDUxPXN0YXRpYyBpbnQgZGV2eF91bWVtX2NsZWFudXAoc3RydWN0IGliX3VvYmplY3QgKnVvYmplY3QsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MjQ2ODpzdGF0aWMgYm9vbCBpc191bmFmZmlsaWF0ZWRfZXZlbnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yNDY5LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIGV2ZW50X3R5cGUpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMj1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgKmFkZHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xNC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjE1Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVx1MDAzZWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTYtXHR1NjQgbnVtX21lbWljX2h3X3BhZ2VzID0gTUxYNV9DQVBfREVWX01FTShkZXYsIG1lbWljX2Jhcl9zaXplKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9ODc9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTg5LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6OTA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy05MS1cdHU2NCBod19zdGFydF9hZGRyID0gTUxYNV9DQVA2NF9ERVZfTUVNKGRldiwgbWVtaWNfYmFyX3N0YXJ0X2FkZHIpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MTE0PXZvaWQgbWx4NV9jbWRfZGVhbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMTctXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMTg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMTktXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMjg9c3RhdGljIGludCBtbHg1X2NtZF9hbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMzItXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMzM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMzQtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MzUyPXN0YXRpYyBzdHJ1Y3QgaWJfZG0gKmhhbmRsZV9hbGxvY19kbV9zd19pY20oc3RydWN0IGliX3Vjb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0zNTYte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzozNTc6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gdG9fbWRldihjdHgtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0zNTgtXHRlbnVtIG1seDVfc3dfaWNtX3R5cGUgaWNtX3R5cGU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz00NzA9c3RhdGljIGludCBtbHg1X2RtX2ljbV9kZWFsbG9jKHN0cnVjdCBtbHg1X2liX3Vjb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy00NzMtXHRlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSA9IGdldF9pY21fdHlwZShkbS1cdTAwM2ViYXNlLnR5cGUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo0NzQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gdG9fbWRldihkbS1cdTAwM2ViYXNlLmliZG0uZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy00NzUtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0xMz1zdGF0aWMgaW50IG1seDVfaWJfYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6MTY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHRvX21kZXYoaWJkbWFoLVx1MDAzZWRldmljZSktXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNy1cdHN0cnVjdCBtbHg1X2liX2RtYWggKmRtYWggPSB0b19tZG1haChpYmRtYWgpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0zOT1zdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQyLVx0c3RydWN0IG1seDVfaWJfZG1haCAqZG1haCA9IHRvX21kbWFoKGliZG1haCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHRvX21kZXYoaWJkbWFoLVx1MDAzZWRldmljZSktXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE0OT1pbnQgcGFyc2VfZmxvd19mbG93X2FjdGlvbihzdHJ1Y3QgbWx4NV9pYl9mbG93X2FjdGlvbiAqbWFjdGlvbixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg5OnN0YXRpYyBpbnQgcGFyc2VfZmxvd19hdHRyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xOTAtXHRcdFx0ICAgc3RydWN0IG1seDVfZmxvd19zcGVjICpzcGVjLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9NTQ3PXN0YXRpYyBib29sIGZsb3dfaXNfbXVsdGljYXN0X29ubHkoY29uc3Qgc3RydWN0IGliX2Zsb3dfYXR0ciAqaWJfYXR0cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTU3Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NTc3OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V0aGVydHlwZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNTc4LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICpmbG93X2F0dHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjYyNjpzdGF0aWMgYm9vbCBpc192YWxpZF9hdHRyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjctXHRcdFx0ICBjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICpmbG93X2F0dHIpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xODcyPXN0YXRpYyBpbnQgbWx4NV9pYl9maWxsX3RyYW5zcG9ydF9uc19pbmZvKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3NS1cdFx0XHRcdFx0ICB1MTYgKnZwb3J0LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODc2Olx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICoqZnRfbWRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3Ny1cdFx0XHRcdFx0ICB1MzIgaWJfcG9ydCwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3OC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjE4Nzk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZXN3X21kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4ODAtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xOTA4PV9nZXRfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTE2IHVzZXJfcHJpb3JpdHksXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xOTExLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTkxMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpmdF9tZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTMtXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlX2F0dHIgZnRfYXR0ciA9IHt9O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTExPXN0YXRpYyBpbnRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyOm1seDVfaWJfc2V0X3Zwb3J0X3JlcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTM6XHRcdCAgICAgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpyZXBfZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTQtXHRcdCAgICAgIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo0MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00My1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQ0OnN0YXRpYyB2b2lkIG1seDVfaWJfbnVtX3BvcnRzX3VwZGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKm51bV9wb3J0cylcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQ1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQ2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy01OS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjYwOnN0YXRpYyBpbnQgbWx4NV9pYl9zZXRfb3duZXJfdHJhbnNwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpjdXJfb3duZXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo2MTpcdFx0XHRcdFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm5ld19vd25lcilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTYyLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy04OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjg5OnN0YXRpYyB2b2lkIG1seDVfaWJfcmVsZWFzZV90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTkwLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjkxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTItXHRpbnQgaSwgcmV0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTk5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTAwOnN0YXRpYyBpbnQgbWx4NV9pYl90YWtlX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAxLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEwMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX2RldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEwMy1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE3PXN0YXRpYyBpbnRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjExODptbHg1X2liX3Zwb3J0X3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMTkte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTIwLVx0dTMyIG51bV9wb3J0cyA9IG1seDVfZXN3aXRjaF9nZXRfdG90YWxfdnBvcnRzKGRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbGFnX21hc3RlciA9IGRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyMi1cdGNvbnN0IHN0cnVjdCBtbHg1X2liX3Byb2ZpbGUgKnByb2ZpbGU7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjQtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTIyMT1tbHg1X2liX3Zwb3J0X3JlcF91bmxvYWQoc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTIyMi17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyMjM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IG1seDVfZXN3aXRjaF9nZXRfY29yZV9kZXYocmVwLVx1MDAzZWVzdyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yMjQtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IG1seDVfaWJfcmVwX3RvX2RldihyZXApO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI2MS1cdFx0aWYgKG1seDVfbGFnX2lzX3NoYXJlZF9mZGIobWRldikpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI2MjpcdFx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjYzLVx0XHRcdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0yNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwX29wcyByZXBfb3BzID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4My17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyODQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjg1LVx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTMxOT1zdGF0aWMgaW50IG1seDVyX3JlcF9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjItXHRzdHJ1Y3QgbWx4NV9hZGV2ICppZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MzIzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjQtXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzMxPXN0YXRpYyB2b2lkIG1seDVyX3JlcF9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzMzLVx0c3RydWN0IG1seDVfYWRldiAqaWRldiA9IGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgbWx4NV9hZGV2LCBhZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjMzNDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gaWRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzM1LVx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz01MD1pbnQgbWx4NV9pYl9nZXRfdmZfY29uZmlnKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtNTMtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzo1NDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtNTUtXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz05Mj1pbnQgbWx4NV9pYl9zZXRfdmZfbGlua19zdGF0ZShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2Zixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTUtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzo5NjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTctXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTEyMD1pbnQgbWx4NV9pYl9nZXRfdmZfc3RhdHMoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTEyMy1cdGludCBvdXRfc3ogPSBNTFg1X1NUX1NaX0JZVEVTKHF1ZXJ5X3Zwb3J0X2NvdW50ZXJfb3V0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxMjQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xMjUtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTUxPXN0YXRpYyBpbnQgc2V0X3ZmX25vZGVfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE1NC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjE1NTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU2LVx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKmluO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNzU9c3RhdGljIGludCBzZXRfdmZfcG9ydF9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTc4LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MTc5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xODAtXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTIxMD1pbnQgbWx4NV9pYl9nZXRfdmZfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTIxNC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjIxNTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMjE2LVx0c3RydWN0IG1seDVfdmZfY29udGV4dCAqdmZzX2N0eCA9IG1kZXYtXHUwMDNlcHJpdi5zcmlvdi52ZnNfY3R4O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jPTE1MD1zdGF0aWMgdm9pZCBwbWFfY250X2V4dF9hc3NpZ25fcHBjbnQoc3RydWN0IGliX3BtYV9wb3J0Y291bnRlcnNfZXh0ICpjbnRfZXh0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjE4MTpzdGF0aWMgaW50IHF1ZXJ5X2liX3BwY250KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU4IHBvcnRfbnVtLCB1OCBwbGFuZV9udW0sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0xODItXHRcdFx0ICB2b2lkICpvdXQsIHNpemVfdCBzeiwgYm9vbCBleHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9MjA5PXN0YXRpYyBpbnQgcHJvY2Vzc19wbWFfY21kKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjExLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjIxMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjEzLVx0Ym9vbCBuYXRpdmVfcG9ydCA9IHRydWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9NTk3PWludCBtbHg1X3F1ZXJ5X21hZF9pZmNfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtNjAwLVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjYwMTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDItXHRzdHJ1Y3QgaWJfc21wICppbl9tYWQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTIwNT1zdGF0aWMgaW50IG1seDVfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjExLVx0c3RydWN0IG5ldF9kZXZpY2UgKmliX25kZXYgPSBOVUxMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIxMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIxMy1cdHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXY7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMTI6c3RydWN0IG1seDVfY29yZV9kZXYgKm1seDVfaWJfZ2V0X25hdGl2ZV9wb3J0X21kZXYoc3RydWN0IG1seDVfaWJfZGV2ICppYmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTMtXHRcdFx0XHRcdFx0ICAgdTMyIGliX3BvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTctXHRcdFx0XHRcdFx0XHQgIGliX3BvcnRfbnVtKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMTg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzE5LVx0c3RydWN0IG1seDVfaWJfbXVsdGlwb3J0X2luZm8gKm1waTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTM2PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9wb3J0X3JvY2Uoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTU0MC1cdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhwdHlzX3JlZyldID0gezB9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjU0MTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTU0Mi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCAqdXBwZXI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTc3Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfc3lzdGVtX2ltYWdlX2d1aWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTc3NS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6Nzc2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy03NzctXHR1NjQgdG1wO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz04MDQ9c3RhdGljIGludCBtbHg1X3F1ZXJ5X21heF9wa2V5cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA3LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo4MDg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTgwOS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9ODc1PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9ub2RlX2Rlc2Moc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNoYXIgKm5vZGVfZGVzYylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODg4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjg4OTpzdGF0aWMgdm9pZCBmaWxsX2Vzd19tZ3JfcmVnX2MwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTg5MC1cdFx0XHRcdHN0cnVjdCBtbHg1X2liX3F1ZXJ5X2RldmljZV9yZXNwICpyZXNwKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz05Mjk9c3RhdGljIHUzMiBtbHg1X2liX2NhbGNfbWF4X3FwX3dyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTkzMC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTMxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05MzItXHR1MzIgbWF4X3dxZV9iYl91bml0cyA9IDEgXHUwMDNjXHUwMDNjIE1MWDVfQ0FQX0dFTihtZGV2LCBsb2dfbWF4X3FwX3N6KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9OTQ1PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTk1MC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTUxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05NTItXHRpbnQgZXJyID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTQ2Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfaGNhX3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNDY1LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNDY2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNDY3LVx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKnJlcDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTU0Mj1pbnQgbWx4NV9pYl9xdWVyeV9wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTU2Ni1cdFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNTY3Olx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNTY4LVx0XHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTYwMz1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3BvcnQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTYyNzpzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3Zwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjgtXHRcdFx0XHRcdCAgICAgICB1OCBvcF9tb2QsIHUxNiB2cG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX2JvbmQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2NTM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTQtXHR1MzIgYm9uZF9zcGVlZDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY3OT1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9yZXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY4Mi1cdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXA7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTY4MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2ODQtXHR1MTYgb3BfbW9kO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNzI2PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9naWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LCBpbnQgaW5kZXgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3MjktXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE3MzA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3MzEtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE3NDU9c3RhdGljIGludCBtbHg1X3F1ZXJ5X2hjYV9uaWNfcGtleShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3NDgtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE3NDk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNzUwLVx0Ym9vbCBwdXRfbWRldiA9IHRydWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE4MTY9c3RhdGljIGludCBzZXRfcG9ydF9jYXBzX2F0b21pYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLCB1MzIgbWFzayxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTgxOS1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0IGN0eCA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE4MjA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODIxLVx0dTMyIG1kZXZfcG9ydF9udW07XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE5NzM9c3RhdGljIHZvaWQgZGVhbGxvY2F0ZV91YXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xOTg2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE5ODc6c3RhdGljIGludCBtbHg1X2liX2VuYWJsZV9sYl9tcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWFzdGVyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE5ODg6XHRcdFx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqc2xhdmUsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTk4OS1cdFx0XHRcdHN0cnVjdCBtbHg1X2liX2xiX3N0YXRlICpsYl9zdGF0ZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjAwOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoyMDA5OnN0YXRpYyB2b2lkIG1seDVfaWJfZGlzYWJsZV9sYl9tcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWFzdGVyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMTA6XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMDExLVx0XHRcdFx0ICBzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0ZSAqbGJfc3RhdGUpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTMyNTE9c3RhdGljIHZvaWQgbWx4NV9pYl9zdGFnZV9zeXNfZXJyb3Jfbm90aWZpZXJfY2xlYW51cChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1NS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMjU2OnN0YXRpYyBpbnQgbWx4NV9pYl9nZXRfcGxhbmVfbnVtKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCAqbnVtX3BsYW5lKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMyNTcte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNDc3PW1seDVfaWJfY3JlYXRlX2RhdGFfZGlyZWN0X3Jlc291cmNlcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ3OS1cdGludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX21rZXlfaW4pO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM0ODA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM0ODEtXHRib29sIHJvX3N1cHAgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzY1Nz1zdGF0aWMgaW50IGxhZ19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNjYwLVx0XHRcdFx0XHQgICAgICAgbGFnX2V2ZW50cyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzY2MTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzY2Mi1cdHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZWliX2Rldjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzcxOD1zdGF0aWMgaW50IG1seDVfZXRoX2xhZ19pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNzIwLVx0c3RydWN0IG1seDVfZmxvd190YWJsZV9hdHRyIGZ0X2F0dHIgPSB7fTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozNzIxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNzIyLVx0c3RydWN0IG1seDVfZmxvd19uYW1lc3BhY2UgKm5zO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNzUxPXN0YXRpYyB2b2lkIG1seDVfZXRoX2xhZ19jbGVhbnVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3NTIte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4OTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgdGhlIGBtbHg1YCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgbWx4NWAgZHJpdmVyIGlzIGZ1bmRhbWVudGFsbHkgYSBQQ0kgZHJpdmVyLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgc3l6a2FsbGVyIG9jY2FzaW9uYWxseSBhdHRlbXB0cyB0byBmdXp6IGBtbHg1YCwgYnV0IGl0JiMzOTtzIHR5cGljYWxseSBvbmx5IGFjaGlldmFibGUgdW5kZXIgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoZSBwcm9tcHQgZW1waGFzaXplcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIGBtbHg1YCBldmVuICpwcmVzZW50KiBpbiB0aG9zZSBlbnZpcm9ubWVudHM/CgpHQ0Ugb2ZmZXJzIHNvbWUgdmlydHVhbGl6ZWQgaGFyZHdhcmUsIGJ1dCBJJiMzOTttIGNlcnRhaW4gaXQgZG9lc24mIzM5O3QgcHJlc2VudCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZS4gSXQmIzM5O3MgdmlydGlvLW5ldCBvciBnVk5JQywgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gSSYjMzk7bSByZWNhbGxpbmcgaWYgc3l6a2FsbGVyIGhhcyBhIG1vdW50LWltYWdlLWxpa2Ugc3lzY2FsbCBidXQgSSBkb3VidCB0aGF0JiMzOTtzIHJlbGV2YW50IGhlcmUuCgpTeXprYWxsZXIgZG9lcyBmdXp6IHNvbWUgUkRNQSBkcml2ZXJzLCBsZXZlcmFnaW5nIHRoZSBgcmRtYWAgc3Vic3lzdGVtLCBidXQgYG1seDVgIGlzIGEgdmVyeSBzcGVjaWZpYyAqaGFyZHdhcmUqIGRyaXZlci4gTGV0JiMzOTtzIG5vdCBmb3JnZXQgdGhlcmUmIzM5O3MgYSBgbWx4NV9jb3JlYCBkcml2ZXI7IHRoZSBxdWVzdGlvbiBpcywgZG9lcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGV4aXN0IGZvciBpdD8KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHdoZXRoZXIgYG5ldGRldnNpbWAsIGB2ZHBhYCwgb3Igc2ltaWxhciB0ZWNobm9sb2dpZXMgaW50ZXJmYWNlIHdpdGggYG1seDVgLiAqQWhhISogYGRyaXZlcnMvdmRwYS9tbHg1L2AgZXhpc3RzLCBidXQgbXkgZ3V0IGZlZWxpbmcsIGFuZCBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYG1seDVfdmRwYWAgbmVjZXNzaXRhdGVzIGEgcmVhbCBgbWx4NWAgUENJIGRldmljZS4gU28gdGhhdCYjMzk7cyBwcm9iYWJseSBhIGRlYWQgZW5kLgoKV2hhdCBhYm91dCBvdGhlciBhbHRlcm5hdGl2ZXM/IExvb2tpbmcgYXQgYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9gLCBJIGtub3cgdGhhdCBgcnhlYCBhbmQgYHNpd2AgYXJlIHNvZnR3YXJlIFJETUEgaW1wbGVtZW50YXRpb25zLCBidXQgYG1seDVgIGlzIGV4cGxpY2l0bHkgaGFyZHdhcmUtYmFzZWQuCgpUaGUgdWx0aW1hdGUgcXVlc3Rpb24gaXM6IElzIHRoZXJlICphbnkqIHdheSB0byByZWFjaCBgbWx4NWAgY29kZSBwYXRocyB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZT8gTGV0IG1lIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBtbHg1LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGF2ZW51ZSB0byBleHBsb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6Xy4qbWx4NSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgYG1seDVgIHdpdGggU3l6a2FsbGVyOiBBIFRob3VnaHQgUHJvY2VzcyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSBwcm9tcHQgY2xlYXJseSBzdGF0ZXMgSSBjYW4mIzM5O3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6a2FsbGVyYCBwc2V1ZG8tc3lzY2FsbHMgbGlrZSBgc3l6X2AsIHNvIEkgbmVlZCB0byB1c2UgYGNvZGVzZWFyY2gtZGlyLWluZGV4YCBvciBqdXN0IHJlbHkgb24gbXkgdW5kZXJzdGFuZGluZyB0aGF0IGBtbHg1YCBpcyBhIGhhcmR3YXJlIGRyaXZlci4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBgbWx4NWAgaXMgZXZlbiAqcmVhY2hhYmxlKiBieSBTeXprYWxsZXIuIEhtbSwgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSB2aXJ0dWFsIGBtbHg1YCBkZXZpY2UgYnkgZGVmYXVsdC4gQnV0IHdhaXQsIHdoYXQgaWYgdGhlIGtlcm5lbCBpcyBjb21waWxlZCB3aXRoIGBDT05GSUdfTUxYNV9DT1JFPXlgIGFuZCB3ZSBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzPwoKQWgsIHJpZ2h0ISBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZWAgd2hpY2ggc3VnZ2VzdHMgaXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBgdmhjaWAgb3IgYHZmaW9gLiBXYWl0LCBubywgdGhlIFBDSSBmdXp6ZXIgZW11bGF0ZXMgUENJIGRldmljZXMuIFRoYXQmIzM5O3MgaXQhIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIGFuZCBpdCBpbnRlcmNlcHRzIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8vUElPIGFjY2Vzc2VzLgoKTGV0JiMzOTtzIHNlZSwgZG9lcyB0aGF0IHF1YWxpZnkgYXMgJiMzNDtzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7PyBZZXMsIHRoZSBwcm9tcHQgZXhwbGljaXRseSBtZW50aW9ucyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYC4gU28gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuCgpPa2F5LCB0aGlzIG1lYW5zIHRoYXQgKmFueSogUENJIGRyaXZlciBzaG91bGQgYmUgcmVhY2hhYmxlIGlmIHRoZSBQQ0kgZnV6emVyIGlzIGVuYWJsZWQsIGJlY2F1c2UgdGhlIHByb21wdCBzYXlzIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIHNob3VsZG4mIzM5O3QgYmUgdG91Y2hlZC4KCk5vdywgSSBzaG91bGQgY2hlY2sgd2hldGhlciBTeXprYWxsZXIgaXMgYWN0dWFsbHkgZnV6emluZyBQQ0kgZHJpdmVycyB3aXRoIHRoZSBgZHVtbXlgIFBDSSBkZXZpY2Ugb3IgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRgLiBBbmQgbGV0JiMzOTtzIG5vdCBmb3JnZXQgdG8gY2hlY2sgdGhlIGZpbGUgYHN5cy9saW51eC9kZXZfcGNpLnR4dGAgYXMgaXQgZGVzY3JpYmVzIFBDSSBkZXZpY2VzLgoKT2theSwgaXMgZnV6emluZyBgbWx4NWAgd29ydGggaXQ/IFRoZSBwYXRjaCBtb2RpZmllcyBgbWx4NV9kYl9hbGxvY19ub2RlYCBhbmQgYG1seDVfZGJfZnJlZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jYCwgdGhhdCYjMzk7cyBjb3JlIGxvZ2ljIGZvciBNZWxsYW5veCBDb25uZWN0WC01LCBzbyBpdCYjMzk7cyBwcm9iYWJseSBpbnRlcmVzdGluZyB0byBmdXp6LgoKU2luY2UgUENJIGZ1enppbmcgaXMgc3VwcG9ydGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGlzIGBtbHg1X2RiX2FsbG9jX25vZGVgIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZT8gSXQmIzM5O3MgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gKGBtbHg1X21kZXZfaW5pdGApLCBxdWV1ZSBwYWlyIGNyZWF0aW9uIChgbWx4NV93cV9xcF9jcmVhdGVgLCBgbWx4NV9jcXdxX2NyZWF0ZWAsIGV0Yy4pLgoKUXVldWUgcGFpcnMgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIFJETUEgKGUuZy4sIGBpYnZfY3JlYXRlX3FwYCksIHdoaWNoIGNhbGxzIGBtbHg1X2liX2NyZWF0ZV9xcGAuIFNvLCBpZiBJIHRyYWNlIGBtbHg1X2liX2NyZWF0ZV9xcGAgLSZndDsgYGNyZWF0ZV9xcF9jb21tb25gIC0mZ3Q7IGBtbHg1X2RiX2FsbG9jX25vZGVgLCBJIHNob3VsZCBoYXZlIGEgY2xlYXIgcGF0aCB0byBmb2xsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfaWJfY3JlYXRlX3FwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NDcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfZGVmc1tdID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NDc4LVx0VUFQSV9ERUZfQ0hBSU4obWx4NV9pYl9jcmVhdGVfY3FfZGVmcyksXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDQ3OTpcdFVBUElfREVGX0NIQUlOKG1seDVfaWJfY3JlYXRlX3FwX2RlZnMpLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ0ODAtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQ1ODA9c3RhdGljIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG1seDVfaWJfZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU5NS1cdC5jcmVhdGVfdXNlcl9jcSA9IG1seDVfaWJfY3JlYXRlX3VzZXJfY3EsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU5NjpcdC5jcmVhdGVfcXAgPSBtbHg1X2liX2NyZWF0ZV9xcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTk3LVx0LmNyZWF0ZV9zcnEgPSBtbHg1X2liX2NyZWF0ZV9zcnEsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oPTEyOTA9dm9pZCBtbHg1X2liX2Rpc2FibGVfbGIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGJvb2wgdGQsIGJvb2wgcXApO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjEyOTE6aW50IG1seDVfaWJfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqcXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaC0xMjkyLVx0XHQgICAgICBzdHJ1Y3QgaWJfdWRhdGEgKnVkYXRhKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTUxOD1leHRlcm4gY29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9jcV9kZWZzW107XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTUxOTpleHRlcm4gY29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9xcF9kZWZzW107XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTUyMC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTU1MT1zdGF0aWMgaW5saW5lIGludCBnZXRfcXBfdXNlcl9pbmRleChzdHJ1Y3QgbWx4NV9pYl91Y29udGV4dCAqdWNvbnRleHQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTU1MjpcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTU1My1cdFx0XHRcdCAgICBpbnQgaW5sZW4sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz00NDM9c3RhdGljIGludCBzZXRfcnFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzo0NDQ6XHRcdCAgICAgICBpbnQgaGFzX3JxLCBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNDQ1LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTY0Mz1zdGF0aWMgaW50IHNldF91c2VyX2J1Zl9zaXplKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy02NDQtXHRcdFx0ICAgIHN0cnVjdCBtbHg1X2liX3FwICpxcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6NjQ1Olx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTY0Ni1cdFx0XHQgICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTk1Mj1zdGF0aWMgaW50IF9jcmVhdGVfdXNlcl9xcChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTk1NS1cdFx0XHQgICBzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyLCB1MzIgKippbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6OTU2Olx0XHRcdCAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yZXNwICpyZXNwLCBpbnQgKmlubGVuLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTctXHRcdFx0ICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6OTU4Olx0XHRcdCAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtOTU5LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTE1ODc9c3RhdGljIGludCBjcmVhdGVfcmF3X3BhY2tldF9xcChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IG1seDVfaWJfcXAgKnFwLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTU5MC1cdFx0XHRcdHN0cnVjdCB1dmVyYnNfYXR0cl9idW5kbGUgKmF0dHJzLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoxNTkxOlx0XHRcdFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgKnJlc3AsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTE1OTItXHRcdFx0XHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0xNzI3PXN0cnVjdCBtbHg1X2NyZWF0ZV9xcF9wYXJhbXMge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTczNi1cdHUzMiB1aWR4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoxNzM3Olx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgcmVzcDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTczOC19O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MTc0MD1zdGF0aWMgaW50IGNyZWF0ZV9yc3NfcmF3X3FwX3RpcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTE3NDQtXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXHUwMDNlYXR0cjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MTc0NTpcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MgKnVjbWQgPSBwYXJhbXMtXHUwMDNldWNtZDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTc0Ni1cdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXHUwMDNldWRhdGE7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yMDk3PXN0YXRpYyBpbnQgY3JlYXRlX2RjaShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIxMDEtXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXHUwMDNlYXR0cjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjEwMjpcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCA9IHBhcmFtcy1cdTAwM2V1Y21kO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0yMTAzLVx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKGNyZWF0ZV9xcF9vdXQpXSA9IHt9O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MjI1OD1zdGF0aWMgaW50IGNyZWF0ZV91c2VyX3FwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgaWJfcGQgKnBkLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjI2Mi1cdHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0ciA9IHBhcmFtcy1cdTAwM2VhdHRyO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoyMjYzOlx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwICp1Y21kID0gcGFyYW1zLVx1MDAzZXVjbWQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIyNjQtXHR1MzIgb3V0W01MWDVfU1RfU1pfRFcoY3JlYXRlX3FwX291dCldID0ge307XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yNzYzPXN0YXRpYyBpbnQgY3JlYXRlX2RjdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI3NjctXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyID0gcGFyYW1zLVx1MDAzZWF0dHI7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjI3Njg6XHRzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQgPSBwYXJhbXMtXHUwMDNldWNtZDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjc2OS1cdHUzMiB1aWR4ID0gcGFyYW1zLVx1MDAzZXVpZHg7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yOTI5PXN0YXRpYyBpbnQgcHJvY2Vzc192ZW5kb3JfZmxhZ3Moc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2liX3FwICpxcCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI5MzYtXHRpZiAoYXR0ci1cdTAwM2Vyd3FfaW5kX3RibClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzNzpcdFx0ZmxhZ3MgPSAoKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MgKil1Y21kKS1cdTAwM2VmbGFncztcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjkzOC1cdGVsc2VcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzOTpcdFx0ZmxhZ3MgPSAoKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqKXVjbWQpLVx1MDAzZWZsYWdzO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0yOTQwLVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MzA5MD1zdGF0aWMgaW50IHByb2Nlc3NfdWRhdGFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMwOTIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMDkzOlx0c2l6ZV90IHVjbWQgPSBzaXplb2Yoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzA5NC1cdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXHUwMDNldWRhdGE7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMDk4Olx0cGFyYW1zLVx1MDAzZW91dGxlbiA9IG1pbihvdXRsZW4sIHNpemVvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCkpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk5LVx0cGFyYW1zLVx1MDAzZXVjbWRfc2l6ZSA9IHVjbWQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTAyLVx0XHRzaXplX3QgbWluX2lubGVuID1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzEwMzpcdFx0XHRvZmZzZXRvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAsIGVjZV9vcHRpb25zKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzEwNC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTMtXHQvKiBSU1MgUkFXIFFQICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjMxMTQ6XHRpZiAoaW5sZW4gXHUwMDNjIG9mZnNldG9mZW5kKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MsIGZsYWdzKSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzExNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjMxMTc6XHRpZiAob3V0bGVuIFx1MDAzYyBvZmZzZXRvZmVuZChzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCwgYmZyZWdfaW5kZXgpKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTE4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzExOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzEyMDpcdHVjbWQgPSBzaXplb2Yoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jzcyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMjEtXHRwYXJhbXMtXHUwMDNldWNtZF9zaXplID0gdWNtZDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTMyMjI9c3RhdGljIGludCBnZXRfcXBfdWlkeChzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjI0LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzIyNTpcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCA9IHBhcmFtcy1cdTAwM2V1Y21kO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjI2LVx0c3RydWN0IGliX3VkYXRhICp1ZGF0YSA9IHBhcmFtcy1cdTAwM2V1ZGF0YTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTMyNTQ9c3RhdGljIGludCBjaGVja191Y21kX2RhdGEoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjY1LVx0XHQgKi9cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI2NjpcdFx0bGFzdCA9IHNpemVvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcnNzKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzI2Ny1cdGVsc2VcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI2ODpcdFx0bGFzdCA9IG9mZnNldG9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCwgcmVzZXJ2ZWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjY5LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzI4Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI4ODppbnQgbWx4NV9pYl9jcmVhdGVfcXAoc3RydWN0IGliX3FwICppYnFwLCBzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjg5LVx0XHQgICAgICBzdHJ1Y3QgaWJfdWRhdGEgKnVkYXRhKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9NTk5Mj1BRERfVVZFUkJTX0FUVFJJQlVURVNfU0lNUExFKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNTk5OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6NTk5OTpjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfY3JlYXRlX3FwX2RlZnNbXSA9IHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNjAwMC1cdFVBUElfREVGX0NIQUlOX09CSl9UUkVFKFVWRVJCU19PQkpFQ1RfUVAsIFx1MDAyNm1seDVfaWJfcXBfY3JlYXRlKSxcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oPTMyMj1zdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfc3JxX3Jlc3Age1xuLS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzI2LVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozMjc6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX2RjaV9zdHJlYW1zIHtcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzI4LVx0X191OCBsb2dfbnVtX2NvbmN1cmVudDtcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMzMS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6MzMyOnN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCB7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMzMy1cdF9fYWxpZ25lZF91NjQgYnVmX2FkZHI7XG4tLVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNDUtXHRfX3UzMiAgZWNlX29wdGlvbnM7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oOjM0NjpcdHN0cnVjdCAgbWx4NV9pYl9jcmVhdGVfcXBfZGNpX3N0cmVhbXMgZGNpX3N0cmVhbXM7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM0Ny1cdF9fdTE2IHJlc2VydmVkO1xuLS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg9MzYzPWVudW0gbWx4NV9yeF9oYXNoX2ZpZWxkcyB7XG4tLVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNzYtXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oOjM3NzpzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcnNzIHtcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzc4LVx0X19hbGlnbmVkX3U2NCByeF9oYXNoX2ZpZWxkc19tYXNrOyAvKiBlbnVtIG1seDVfcnhfaGFzaF9maWVsZHMgKi9cbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM4Ni1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6Mzg3OmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfcmVzcF9tYXNrIHtcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzg4LVx0TUxYNV9JQl9DUkVBVEVfUVBfUkVTUF9NQVNLX1RJUk4gPSAxVUwgXHUwMDNjXHUwMDNjIDAsXG4tLVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zOTQtXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oOjM5NTpzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCB7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM5Ni1cdF9fdTMyXHRiZnJlZ19pbmRleDtcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1X3VzZXJfaW9jdGxfY21kcy5oPTI3NT1lbnVtIG1seDVfaWJfY3JlYXRlX2NxX2F0dHJzIHtcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1X3VzZXJfaW9jdGxfY21kcy5oLTI3OS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmg6MjgwOmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfYXR0cnMge1xuaW5jbHVkZS91YXBpL3JkbWEvbWx4NV91c2VyX2lvY3RsX2NtZHMuaC0yODEtXHRNTFg1X0lCX0FUVFJfQ1JFQVRFX1FQX0RCUl9CVUZfVU1FTSA9IFVWRVJCU19JRF9EUklWRVJfTlNfV0lUSF9VSFcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTUyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIGBtbHg1X2liX2NyZWF0ZV9xcGAgaW4gYSBGdXp6aW5nIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBtbHg1X2liX2NyZWF0ZV9xcGAgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIFJETUEgdXZlcmJzLCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IGEgcmVhbCBNZWxsYW5veCAobWx4NSkgUENJIGRldmljZT8gVGhhdCYjMzk7cyB0aGUgcmVhbCBjaGFsbGVuZ2UuIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBpcyBwcm9taXNpbmcsIGJ1dCBpdCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIG1seDUgaGFyZHdhcmUuIEl0IGp1c3QgYmxhc3RzIHRoZSBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPL1BJTyBhY2Nlc3NlcyB3aXRoIHJhbmRvbSBkYXRhLCB3aGljaCBpcyB1c2VmdWwsIGJ1dCBwZXJoYXBzIG5vdCB0YXJnZXRlZCBlbm91Z2guCgpJZiB0aGUgUENJIGZ1enplciBoaXRzIHRoZSByaWdodCBzdHVmZiwgaXQgc2hvdWxkIHRyaWdnZXIgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdCB0byBpbml0aWFsaXplLiBEdXJpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgYG1seDVfbWRldl9pbml0YCBnZXRzIGNhbGxlZCwgd2hpY2gsIGluIHR1cm4sIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLiBUaGlzIGNvdWxkIHRoZW4gbGVhZCB0byBhdHRlbXB0cyB0byBhbGxvY2F0ZSBkYiBub2Rlcy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyB0aGlzIGEgd29ydGh3aGlsZSBwYXRoIHRvIGZ1eno/CgpUaGUgcHJvbXB0IHN0YXRlczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBTbywgaWYgdGhlIFBDSSBmdXp6ZXIgKmNhbiogcmVhY2ggaXQsIHRoZW4gaXQgKmlzKiByZWFjaGFibGUsIGFuZCB0aGVyZWZvcmUsIGludGVyZXN0aW5nIQoKVGhlIGtleSBxdWVzdGlvbiBub3cgaXMgdGhpczogRG9lcyB0aGUgUENJIGZ1enplciBhY3R1YWxseSByZWFjaCBgbWx4NV9tZGV2X2luaXRgPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIExldCBtZSBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCB0byBzZWUgd2hlcmUgYG1seDVfbWRldl9pbml0YCBpcyBjYWxsZWQgYW5kIGhvdyB0aGUgUENJIGZ1enplciBtYXkgb3IgbWF5IG5vdCByZWFjaCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9tZGV2X2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xNzk2PXN0YXRpYyB2b2lkIG1seDVfbm90aWZpZXJzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE4MDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE4MDQ6aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgwNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xOTM1PXN0YXRpYyBpbnQgcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xOTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoxOTYwOlx0ZXJyID0gbWx4NV9tZGV2X2luaXQoZGV2LCBwcm9mX3NlbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NjEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD00MzI9bWx4NV9zZl9jb3JlZGV2X3RvX2FkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDo0Mzc6aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDM4LXZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jPTI1PXN0YXRpYyBpbnQgbWx4NV9zZl9kZXZfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo0OTpcdGVyciA9IG1seDVfbWRldl9pbml0KG1kZXYsIE1MWDVfU0ZfUFJPRik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTUwLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo1MTpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9tZGV2X2luaXQgb24gZXJyPSVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy01Mi1cdFx0Z290byBtZGV2X2VycjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwMTYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIE1lbGxhbm94IERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBgcHJvYmVfb25lYCwgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIGlzIGJlaW5nIHRyaWdnZXJlZCBieSBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpY2ggaXMgdXNpbmcgYSBkZXZpY2Ugd2l0aCBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4gVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgYHByb2JlX29uZWAgaXMgY2FsbGluZyBgbWx4NV9tZGV2X2luaXRgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBhbmQgZnJvbSB0aGVyZSwgYXR0ZW1wdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uLgoKVGhlIHJ1YiBpcyB0aGUgZnV6emVyIHByb3ZpZGVzIHJhbmRvbSBNTUlPIHJlc3BvbnNlcywgd2hpY2ggaXMgYSBwcm9ibGVtIGJlY2F1c2UgdGhpcyBkcml2ZXIsIGxpa2UgbW9zdCwgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHJlc3BvbnNlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHBhcnRpY3VsYXJseSBmb3IgZmlybXdhcmUgY29tbWFuZHMgYW5kIHNwZWNpZmljIHJlZ2lzdGVyIHZhbHVlcy4gVGhpcyBtZWFucyBpdCYjMzk7cyBsaWtlbHkgdG8gZmFpbCBwcmV0dHkgZWFybHksIGJ1dCAqd2hlcmUqIGV4YWN0bHk/CgpJJiMzOTttIHdvbmRlcmluZyBpZiBpdCB3aWxsIG1ha2UgaXQgYXMgZmFyIGFzIGBtbHg1X2RiX2FsbG9jX25vZGVgLiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkLiBSaWdodCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG1seDVfd3FfY3ljX2NyZWF0ZWAsIGBtbHg1X3dxX3FwX2NyZWF0ZWAsIGBtbHg1X2Nxd3FfY3JlYXRlYCwgYG1seDVfd3FfbGxfY3JlYXRlYCwgYG1seDV2Zl9jcmVhdGVfY3FgLCBhbmQgYG1seDV2Zl9jcmVhdGVfcmNfcXBgLiBTbywgdGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIHF1ZXVlIGNyZWF0aW9uLgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgYXJlIGFueSBxdWV1ZXMgYmVpbmcgY3JlYXRlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHRoYXQgaGFwcGVucyB3aXRoaW4gYHByb2JlX29uZWA/IExldCBtZSB0cmFjZSB0aGlzIG91dDogYHByb2JlX29uZWAgY2FsbHMgYG1seDVfaW5pdF9vbmVgLCBhbmQgdGhlbiBgbWx4NV9sb2FkX29uZWAsIGJ1dCBkb2VzIGl0IGxlYWQgdG8gYW55IHF1ZXVlIGNyZWF0aW9uIG9yIGBtbHg1X2RiX2FsbG9jX25vZGVgPyBQZXJoYXBzIGBtbHg1X2FsbG9jX2JmcmVnYCBpcyB0aGUga2V5PyBJIG5lZWQgdG8gZm9sbG93IHRoZSBleGVjdXRpb24gcGF0aCBjbG9zZWx5IHdpdGhpbiB0aGF0IGRyaXZlciwgY2hlY2tpbmcgdGhlIGNhbGxzIGZyb20gYHByb2JlX29uZWAgYWxsIHRoZSB3YXkgZG93bi4gSSB0aGluayB0aGlzIG5lZWRzIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV93cV9jeWNfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz0zMjY9c3RhdGljIGludCBtbHg1ZV9wdHBfYWxsb2NfdHhxc3Eoc3RydWN0IG1seDVlX3B0cCAqYywgaW50IHR4cV9peCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtMzU3LVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gbm9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYzozNTg6XHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXHUwMDI2cGFyYW0tXHUwMDNld3EsIHNxY193cSwgd3EsIFx1MDAyNnNxLVx1MDAzZXdxX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTM1OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz04OTU9c3RhdGljIGludCBtbHg1ZV9hbGxvY19ycShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy05NzktXHRkZWZhdWx0OiAvKiBNTFg1X1dRX1RZUEVfQ1lDTElDICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjk4MDpcdFx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnJxX3BhcmFtLVx1MDAzZXdxLCBycWNfd3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTk4MS1cdFx0XHRcdFx0IFx1MDAyNnJxLVx1MDAzZXdxZS53cSwgXHUwMDI2cnEtXHUwMDNld3FfY3RybCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0xNTM4PXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfeGRwc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNTY3LVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy1cdTAwM2VjcHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxNTY4Olx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLVx1MDAzZXdxLCBzcWNfd3EsIHdxLCBcdTAwMjZzcS1cdTAwM2V3cV9jdHJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTU2OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0xNjI3PXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfaWNvc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNjQxLVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy1cdTAwM2VjcHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxNjQyOlx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLVx1MDAzZXdxLCBzcWNfd3EsIHdxLCBcdTAwMjZzcS1cdTAwM2V3cV9jdHJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTY0My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0xNzAyPXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfdHhxc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNzM1LVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy1cdTAwM2VjcHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxNzM2Olx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLVx1MDAzZXdxLCBzcWNfd3EsIHdxLCBcdTAwMjZzcS1cdTAwM2V3cV9jdHJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTczNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0zNjM5PXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfZHJvcF9ycShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTM2NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjM2NDg6XHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXHUwMDI2cnFfcGFyYW0tXHUwMDNld3EsIHJxY193cSwgXHUwMDI2cnEtXHUwMDNld3FlLndxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0zNjQ5LVx0XHRcdFx0IFx1MDAyNnJxLVx1MDAzZXdxX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvYXNvLmM9MTU4PXN0YXRpYyBpbnQgbWx4NV9hc29fYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGludCBudW1hX25vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYy0xNjktXHRwYXJhbS5idWZfbnVtYV9ub2RlID0gbnVtYV9ub2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYzoxNzA6XHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXHUwMDI2cGFyYW0sIHNxY193cSwgd3EsIFx1MDAyNnNxLVx1MDAzZXdxX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYy0xNzEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3Mvc2VuZC5jPTY4MT1zdGF0aWMgaW50IGh3c19zZW5kX3JpbmdfYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9zZW5kLmMtNjk3LVx0cGFyYW0uYnVmX251bWFfbm9kZSA9IG51bWFfbm9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3Mvc2VuZC5jOjY5ODpcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcdTAwMjZwYXJhbSwgc3FjX3dxLCB3cSwgXHUwMDI2c3EtXHUwMDNld3FfY3RybCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYy02OTktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93Yy5jPTIyMT1zdGF0aWMgaW50IG1seDVfd2NfY3JlYXRlX3NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93Y19zcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmMtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmM6MjM2Olx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLCB3cSwgXHUwMDI2c3EtXHUwMDNld3EsIFx1MDAyNnNxLVx1MDAzZXdxX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmMtMjM3LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6Mzc6aW50IG1seDVfd3FfY3ljX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMzgtXHRcdCAgICAgICB2b2lkICp3cWMsIHN0cnVjdCBtbHg1X3dxX2N5YyAqd3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmg9NzA9c3RydWN0IG1seDVfd3FfbGwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oLTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmg6Nzk6aW50IG1seDVfd3FfY3ljX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmgtODAtXHRcdCAgICAgICB2b2lkICp3cWMsIHN0cnVjdCBtbHg1X3dxX2N5YyAqd3EsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODQ2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBTeXprYWxsZXIgb24gdGhlIG1seDVlIERyaXZlcioqCgpPa2F5LCBzbyBgbWx4NWVfYWxsb2NfcnFgIGlzIGRlZmluaXRlbHkgY2FsbGVkIHdpdGhpbiBgbWx4NWVfb3BlbmAgd2hlbiB0aGUgbmV0d29yayBkZXZpY2Ugb3BlbnMuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGNhbiBTeXprYWxsZXIgdHJpZ2dlciB0aGUgb3BlbmluZyBvZiB0aGlzIG5ldGRldj8gVGhlIGFuc3dlciBpcyB5ZXMsIGlmIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGEgbmV0d29yayBkZXZpY2UuIEkga25vdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhIG5ldGRldjsgaXQmIzM5O3MgcGFydCBvZiB0aGUgYG1seDVlX3Byb2JlYCBmdW5jdGlvbiBhcyBhbiBhdXhpbGlhcnkgcHJvYmUuIFRoaXMgbWVhbnMgdGhhdCBpZiBgbWx4NWVfcHJvYmVgIGlzIGNhbGxlZCwgaXQgd2lsbCByZWdpc3RlciB0aGUgbmV0ZGV2LiBCdXQsIGEgc3VjY2Vzc2Z1bCBuZXRkZXYgcmVnaXN0cmF0aW9uIHJlcXVpcmVzIHN1Y2Nlc3NmdWwgZGV2aWNlIGluaXRpYWxpemF0aW9uLgoKTm93LCB3aWxsIGBtbHg1X21kZXZfaW5pdGAgd29yayB3aXRoIHRoZSBraW5kIG9mIHJhbmRvbSBQQ0kgTU1JTyByZXNwb25zZXMgdGhhdCBhIGZ1enplciBtaWdodCBnZW5lcmF0ZT8gUHJvYmFibHkgbm90LiBIYXJkd2FyZSBkcml2ZXJzIGFyZSB0eXBpY2FsbHkgdmVyeSBwaWNreSBhYm91dCB0aGVpciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSBhbmQgY29tbWFuZCBpbnRlcmZhY2VzLCBhbmQgcmFuZG9tIGRhdGEgaXMgYSByZWNpcGUgZm9yIGZhaWx1cmUuIE1lbGxhbm94IGRyaXZlcnMsIHNwZWNpZmljYWxseSwgdXNlIGEgY29tbWFuZCBpbnRlcmZhY2UgKENNRElGKSB3aGljaCBpbnZvbHZlcyB3cml0aW5nIHRvIGEgZG9vcmJlbGwgYW5kIHRoZW4gd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0IG9yIHBvbGxpbmcgYSBzdGF0dXMgcmVnaXN0ZXIuIFJhbmRvbSBkYXRhIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBjYXVzZSBhIHRpbWVvdXQgb3IgZmFpbHVyZSBpbiB0aGUgY29tbWFuZCwgd2hpY2ggbWVhbnMgYG1seDVfbWRldl9pbml0YCB3aWxsIGxpa2VseSBmYWlsLgoKSG93ZXZlciwgU3l6a2FsbGVyIGlzIGZvY3VzZWQgb24gZnV6emluZyBwcm9iZSBwYXRocyBhbmQgcmVhY2hpbmcgYXMgbWFueSBmdW5jdGlvbnMgYXMgcG9zc2libGUuIEV2ZW4gaWYgYG1seDVfbWRldl9pbml0YCBmYWlscyBlYXJseSwgaXTigJlzIHN0aWxsIGxpa2VseSB0byBleGVjdXRlIHNvbWUgb2YgaXRzIGNvZGUuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQhIEl0ICp3aWxsKiBleGVjdXRlIGBtbHg1X21kZXZfaW5pdGAgYW5kIHRoZXJlZm9yZSBgbWx4NV9kYl9wb29sc19pbml0YC4gSXQgY291bGQgYWxzbyByZWFjaCBgbWx4NV9kYl9hbGxvY19ub2RlYCBpZiBpdCBnZXRzIGZhciBlbm91Z2ggdG8gc3RhcnQgcXVldWUgY3JlYXRpb24gYmVmb3JlIGZhaWxpbmcuCgpUaGlua2luZyBtb3JlIGRlZXBseSwgYG1seDVfY21kX2luaXRgIGlzIGNhbGxlZCBpbiBgbWx4NV9tZGV2X2luaXRgICphZnRlciogYG1seDVfZGJfcG9vbHNfaW5pdGAuIElmIGBtbHg1X2NtZF9pbml0YCBmYWlscywgaXQganVtcHMgdG8gYGVycl9jbWRfaW5pdGAgd2hpY2ggdGhlbiBjYWxscyBgbWx4NV9kYl9wb29sc19jbGVhbnVwYC4gU28sIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgZXZlbiBpZiB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IGluaXRpYWxpemUgc3VjY2Vzc2Z1bGx5LiBOb3csIGFyZSBgbWx4NV9kYl9hbGxvY19ub2RlYCBhbmQgYG1seDVfZGJfZnJlZWAgYWxzbyByZWFjaGFibGU/IFRvIHVuZGVyc3RhbmQgdGhhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYG1seDVfY21kX2luaXRgIGFjdHVhbGx5IGFsbG9jYXRlcyBhbnkgcXVldWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2NtZF9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0xNzYwPXN0YXRpYyBpbnQgVVZFUkJTX0hBTkRMRVIoTUxYNV9JQl9NRVRIT0RfREVWWF9BU1lOQ19DTURfRkRfQUxMT0MpKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xNzcxLVx0ZGV2eF9pbml0X2V2ZW50X3F1ZXVlKFx1MDAyNmV2X2ZpbGUtXHUwMDNlZXZfcXVldWUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjE3NzI6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LVx1MDAzZW1kZXYsIFx1MDAyNmV2X2ZpbGUtXHUwMDNlYXN5bmNfY3R4KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xNzczLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQ1MDE9c3RhdGljIGludCBtbHg1X2liX3N0YWdlX2luaXRfaW5pdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo0NTYzOlx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobWRldiwgXHUwMDI2ZGV2LVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjE2Mj1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2V4ZWNfcG9sbGluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTY1LVx0XHRcdCAgICAgc3RydWN0IG1seDVfYXN5bmNfY3R4ICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxNzI6RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9pbml0X2FzeW5jX2N0eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE3My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjQyOD1zdGF0aWMgdTE2IGNtZGlmX3JldihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MzM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwva3Rsc190eC5jPTE0Mz1zdGF0aWMgc3RydWN0IG1seDVlX2J1bGtfYXN5bmNfY3R4ICptbHg1ZV9idWxrX2FzeW5jX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGludCBuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYzoxNTQ6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcdTAwMjZidWxrX2FzeW5jLVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwva3Rsc190eC5jLTE1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYz0xNDI9aW50IG1seDVfcXVlcnlfaGNhX2NhcHMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYzozMTI6aW50IG1seDVfY21kX2luaXRfaGNhKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqc3dfb3duZXJfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTE4MT1zdGF0aWMgaW50IG1seDVfZnVuY3Rpb25fb3BlbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTIwMzpcdGVyciA9IG1seDVfY21kX2luaXRfaGNhKGRldiwgc3dfb3duZXJfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMjA0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTgwND1pbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgzNzpcdGVyciA9IG1seDVfY21kX2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgzOC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjIyPWludCBtbHg1X3F1ZXJ5X21vZHVsZV9udW0oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50ICptb2R1bGVfbnVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMjI0LXZvaWQgbWx4NV9jbWRfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjI3PXZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMjI4LVx0XHRcdGVudW0gbWx4NV9jbWRpZl9zdGF0ZSBjbWRpZl9zdGF0ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6MjI5OmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0yMzAtaW50IG1seDVfY21kX3RlYXJkb3duX2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgzMD1zdGF0aWMgaW50IG1seDVfdmRwYV9kZXZfYWRkKHN0cnVjdCB2ZHBhX21nbXRfZGV2ICp2X21kZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM5MDItXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzkwMzpcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFx1MDAyNm12ZGV2LVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzkwNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTYyNz1tbHg1dmZfcGNpX3NhdmVfZGV2aWNlX2RhdGEoc3RydWN0IG1seDV2Zl9wY2lfY29yZV9kZXZpY2UgKm12ZGV2LCBib29sIHRyYWNrKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtNjU3LVx0Y29tcGxldGUoXHUwMDI2bWlnZi1cdTAwM2VzYXZlX2NvbXApO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzo2NTg6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtdmRldi1cdTAwM2VtZGV2LCBcdTAwMjZtaWdmLVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1OS1cdElOSVRfV09SSyhcdTAwMjZtaWdmLVx1MDAzZWFzeW5jX2RhdGEud29yaywgbWx4NXZmX21pZ19maWxlX2NsZWFudXBfY2IpO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD05ODM9c3RydWN0IG1seDVfYXN5bmNfd29yayB7XG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTk5Mi1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDo5OTM6dm9pZCBtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTk5NC1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwMTMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUXVldWUgQWxsb2NhdGlvbiBpbiBtbHg1IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgYG1seDVgIGRyaXZlciBpbml0aWFsaXplcyBpdHMgcXVldWVzLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdXNlcyBvZiBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSXQgc2VlbXMgbGlrZSBgbWx4NV9jbWRfaW5pdGAgaXRzZWxmIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGNhbGwgYG1seDVfZGJfYWxsb2Nfbm9kZWAgdG8gYWxsb2NhdGUgYW55IHF1ZXVlcy4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bmV4cGVjdGVkLgoKSG9sZCBvbiwgSSBuZWVkIHRvIGJhY2t0cmFjayBhbmQgY29uc2lkZXIgdGhlIGJpZ2dlciBwaWN0dXJlLiBXaGF0IGFib3V0IGBtbHg1X2NtZF9pbml0X2hjYWA/IFRoYXQmIzM5O3MgYW5vdGhlciBwb3RlbnRpYWwgY2FuZGlkYXRlIGZvciBxdWV1ZSBhbGxvY2F0aW9uLiBBaCwgcmlnaHQsIEkgcmVtZW1iZXIgbm93LCBgbWx4NV9jbWRfaW5pdF9oY2FgIGlzIGFjdHVhbGx5IGNhbGxlZCBkdXJpbmcgdGhlIGBtbHg1X2Z1bmN0aW9uX29wZW5gIHJvdXRpbmUsIG5vdCBkaXJlY3RseSBieSBgbWx4NV9jbWRfaW5pdGAuIFNvLCBpcyBgbWx4NV9jbWRfaW5pdGAgYWN0dWFsbHkgZG9pbmcgYW55dGhpbmcgdXNlZnVsIHRoZW4/IEkgbmVlZCB0byBnbyBkZWVwZXIuCgpMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGBtbHg1X2NtZF9pbml0YCBpdHNlbGYuIFRpbWUgdG8gY29uc3VsdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jYCBhbmQgY29uZmlybSBleGFjdGx5IHdoYXQgdGhpcyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGRvaW5nLiBUaGlzIHdpbGwgY2xhcmlmeSBleGFjdGx5IHdoYXQgcm9sZXMgZWFjaCBmdW5jdGlvbiBpcyBwbGF5aW5nIGluIHRoZSBlbnRpcmUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jbWRfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MTc2MD1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0RFVlhfQVNZTkNfQ01EX0ZEX0FMTE9DKShcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3MS1cdGRldnhfaW5pdF9ldmVudF9xdWV1ZShcdTAwMjZldl9maWxlLVx1MDAzZWV2X3F1ZXVlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoxNzcyOlx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobWRldi1cdTAwM2VtZGV2LCBcdTAwMjZldl9maWxlLVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3My1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1NjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU2MzpcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFx1MDAyNmRldi1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1NjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE2NDp2b2lkIG1seDVfY21kX2luaXRfYXN5bmNfY3R4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTcxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTcyOkVYUE9SVF9TWU1CT0wobWx4NV9jbWRfaW5pdF9hc3luY19jdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI0Mjg9c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDMzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYz0xNDM9c3RhdGljIHN0cnVjdCBtbHg1ZV9idWxrX2FzeW5jX2N0eCAqbWx4NWVfYnVsa19hc3luY19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwva3Rsc190eC5jLTE1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmM6MTU0Olx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobWRldiwgXHUwMDI2YnVsa19hc3luYy1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM9MTQyPWludCBtbHg1X3F1ZXJ5X2hjYV9jYXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM6MzEyOmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmMtMzEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTExODE9c3RhdGljIGludCBtbHg1X2Z1bmN0aW9uX29wZW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTEyMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEyMDM6XHRlcnIgPSBtbHg1X2NtZF9pbml0X2hjYShkZXYsIHN3X293bmVyX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwNC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE4MDQ9aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE4MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE4Mzc6XHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE4MzgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTIyMj1pbnQgbWx4NV9xdWVyeV9tb2R1bGVfbnVtKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCAqbW9kdWxlX251bSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6MjIzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyNC12b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTIyNz12b2lkIG1seDVfY21kX3NldF9zdGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyOC1cdFx0XHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjIyOTppbnQgbWx4NV9jbWRfaW5pdF9oY2Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICpzd19vd25lcl9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMjMwLWludCBtbHg1X2NtZF90ZWFyZG93bl9oY2Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM4MzA9c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zOTAyLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM5MDM6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcdTAwMjZtdmRldi1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM5MDQtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz02Mjc9bWx4NXZmX3BjaV9zYXZlX2RldmljZV9kYXRhKHN0cnVjdCBtbHg1dmZfcGNpX2NvcmVfZGV2aWNlICptdmRldiwgYm9vbCB0cmFjaylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1Ny1cdGNvbXBsZXRlKFx1MDAyNm1pZ2YtXHUwMDNlc2F2ZV9jb21wKTtcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6NjU4Olx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobXZkZXYtXHUwMDNlbWRldiwgXHUwMDI2bWlnZi1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy02NTktXHRJTklUX1dPUksoXHUwMDI2bWlnZi1cdTAwM2Vhc3luY19kYXRhLndvcmssIG1seDV2Zl9taWdfZmlsZV9jbGVhbnVwX2NiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9OTgzPXN0cnVjdCBtbHg1X2FzeW5jX3dvcmsge1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTItXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6OTkzOnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTQtXHRcdFx0ICAgICBzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NjEwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgbWx4NV9jbWRfaW5pdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBtbHg1X2NtZF9pbml0YCBmdW5jdGlvbiBpbiB0aGUgTWVsbGFub3ggZHJpdmVyJiMzOTtzIGNvbW1hbmQgcXVldWUgY29kZS4gSW5pdGlhbGx5LCBpdCBsb29rZWQgbGlrZSBpdCB3YXNuJiMzOTt0IGhhbmRsaW5nIHF1ZXVlIGFsbG9jYXRpb24sIHdoaWNoIGlzIGEgYml0IG9kZCBjb25zaWRlcmluZyBpdHMgbmFtZSBhbmQgcHVycG9zZS4gQnV0IGhvbGQgb24sIEkganVtcGVkIHRoZSBndW4hIExldCBtZSByZS1ldmFsdWF0ZTsgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBhbmQgYSBjbG9zZXIgbG9vayBpcyB3YXJyYW50ZWQuIE5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jYCBhbmQgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gYG1seDVfY21kX2luaXRgLiBUaW1lIHRvIGRpc3NlY3QgdGhpcyBjb2RlIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0MzM6XHRpbnQgbWx4NV9jbWRfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuMjQzNDpcdHtcbjI0MzU6XHRcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXHUwMDI2ZGV2LVx1MDAzZWNtZDtcbjI0MzY6XHRcbjI0Mzc6XHRcdGNtZC1cdTAwM2VjaGVja3N1bV9kaXNhYmxlZCA9IDE7XG4yNDM4Olx0XG4yNDM5Olx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjbWQtXHUwMDNlYWxsb2NfbG9jayk7XG4yNDQwOlx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjbWQtXHUwMDNldG9rZW5fbG9jayk7XG4yNDQxOlx0XG4yNDQyOlx0XHRzZXRfd3FuYW1lKGRldik7XG4yNDQzOlx0XHRjbWQtXHUwMDNld3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShjbWQtXHUwMDNld3FfbmFtZSk7XG4yNDQ0Olx0XHRpZiAoIWNtZC1cdTAwM2V3cSkge1xuMjQ0NTpcdFx0XHRtbHg1X2NvcmVfZXJyKGRldiwgXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBjb21tYW5kIHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4yNDQ2Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjQ0NzpcdFx0fVxuMjQ0ODpcdFxuMjQ0OTpcdFx0bWx4NV9jbWRpZl9kZWJ1Z2ZzX2luaXQoZGV2KTtcbjI0NTA6XHRcbjI0NTE6XHRcdHJldHVybiAwO1xuMjQ1MjpcdH1cbjI0NTM6XHRcbjI0NTQ6XHR2b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbjI0NTU6XHR7XG4yNDU2Olx0XHRzdHJ1Y3QgbWx4NV9jbWQgKmNtZCA9IFx1MDAyNmRldi1cdTAwM2VjbWQ7XG4yNDU3Olx0XG4yNDU4Olx0XHRtbHg1X2NtZGlmX2RlYnVnZnNfY2xlYW51cChkZXYpO1xuMjQ1OTpcdFx0ZGVzdHJveV93b3JrcXVldWUoY21kLVx1MDAzZXdxKTtcbjI0NjA6XHR9XG4yNDYxOlx0XG4yNDYyOlx0aW50IG1seDVfY21kX2VuYWJsZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuMjQ2MzpcdHtcbjI0NjQ6XHRcdGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrKTtcbjI0NjU6XHRcdGludCBhbGlnbiA9IHJvdW5kdXBfcG93X29mX3R3byhzaXplKTtcbjI0NjY6XHRcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXHUwMDI2ZGV2LVx1MDAzZWNtZDtcbjI0Njc6XHRcdHUzMiBjbWRfaCwgY21kX2w7XG4yNDY4Olx0XHRpbnQgZXJyO1xuMjQ2OTpcdFxuMjQ3MDpcdFx0bWVtc2V0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLCAwLCBzaXplb2YoY21kLVx1MDAzZXZhcnMpKTtcbjI0NzE6XHRcdGNtZC1cdTAwM2V2YXJzLmNtZGlmX3JldiA9IGNtZGlmX3JldihkZXYpO1xuMjQ3MjpcdFx0aWYgKGNtZC1cdTAwM2V2YXJzLmNtZGlmX3JldiAhPSBDTURfSUZfUkVWKSB7XG4yNDczOlx0XHRcdG1seDVfY29yZV9lcnIoZGV2LFxuMjQ3NDpcdFx0XHRcdCAgICAgIFwmIzM0O0RyaXZlciBjbWRpZiByZXYoJWQpIGRpZmZlcnMgZnJvbSBmaXJtd2FyZSYjMzk7cyglZClcXG5cJiMzNDssXG4yNDc1Olx0XHRcdFx0ICAgICAgQ01EX0lGX1JFViwgY21kLVx1MDAzZXZhcnMuY21kaWZfcmV2KTtcbjI0NzY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNDc3Olx0XHR9XG4yNDc4Olx0XG4yNDc5Olx0XHRjbWRfbCA9IGlvcmVhZDMyYmUoXHUwMDI2ZGV2LVx1MDAzZWlzZWctXHUwMDNlY21kcV9hZGRyX2xfc3opIFx1MDAyNiAweGZmO1xuMjQ4MDpcdFx0Y21kLVx1MDAzZXZhcnMubG9nX3N6ID0gY21kX2wgXHUwMDNlXHUwMDNlIDQgXHUwMDI2IDB4ZjtcbjI0ODE6XHRcdGNtZC1cdTAwM2V2YXJzLmxvZ19zdHJpZGUgPSBjbWRfbCBcdTAwMjYgMHhmO1xuMjQ4MjpcdFx0aWYgKDEgXHUwMDNjXHUwMDNjIGNtZC1cdTAwM2V2YXJzLmxvZ19zeiBcdTAwM2UgTUxYNV9NQVhfQ09NTUFORFMpIHtcbjI0ODM6XHRcdFx0bWx4NV9jb3JlX2VycihkZXYsIFwmIzM0O2Zpcm13YXJlIHJlcG9ydHMgdG9vIG1hbnkgb3V0c3RhbmRpbmcgY29tbWFuZHMgJWRcXG5cJiMzNDssXG4yNDg0Olx0XHRcdFx0ICAgICAgMSBcdTAwM2NcdTAwM2MgY21kLVx1MDAzZXZhcnMubG9nX3N6KTtcbjI0ODU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNDg2Olx0XHR9XG4yNDg3Olx0XG4yNDg4Olx0XHRpZiAoY21kLVx1MDAzZXZhcnMubG9nX3N6ICYjNDM7IGNtZC1cdTAwM2V2YXJzLmxvZ19zdHJpZGUgXHUwMDNlIE1MWDVfQURBUFRFUl9QQUdFX1NISUZUKSB7XG4yNDg5Olx0XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDtjb21tYW5kIHF1ZXVlIHNpemUgb3ZlcmZsb3dcXG5cJiMzNDspO1xuMjQ5MDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjI0OTE6XHRcdH1cbjI0OTI6XHRcbjI0OTM6XHRcdGNtZC1cdTAwM2VzdGF0ZSA9IE1MWDVfQ01ESUZfU1RBVEVfRE9XTjtcbjI0OTQ6XHRcdGNtZC1cdTAwM2V2YXJzLm1heF9yZWdfY21kcyA9ICgxIFx1MDAzY1x1MDAzYyBjbWQtXHUwMDNldmFycy5sb2dfc3opIC0gMTtcbjI0OTU6XHRcdGNtZC1cdTAwM2V2YXJzLmJpdG1hc2sgPSBNTFg1X0NNRF9NQVNLO1xuMjQ5NjpcdFxuMjQ5NzpcdFx0c2VtYV9pbml0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLnNlbSwgY21kLVx1MDAzZXZhcnMubWF4X3JlZ19jbWRzKTtcbjI0OTg6XHRcdHNlbWFfaW5pdChcdTAwMjZjbWQtXHUwMDNldmFycy5wYWdlc19zZW0sIDEpO1xuMjQ5OTpcdFx0c2VtYV9pbml0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLnRocm90dGxlX3NlbSwgRElWX1JPVU5EX1VQKGNtZC1cdTAwM2V2YXJzLm1heF9yZWdfY21kcywgMikpO1xuMjUwMDpcdFx0c2VtYV9pbml0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLnVucHJpdmlsZWdlZF9zZW0sXG4yNTAxOlx0XHRcdCAgRElWX1JPVU5EX1VQKGNtZC1cdTAwM2V2YXJzLm1heF9yZWdfY21kcywgMikpO1xuMjUwMjpcdFxuMjUwMzpcdFx0eGFfaW5pdChcdTAwMjZjbWQtXHUwMDNldmFycy5wcml2aWxlZ2VkX3VpZHMpO1xuMjUwNDpcdFxuMjUwNTpcdFx0Y21kLVx1MDAzZXBvb2wgPSBkbWFfcG9vbF9jcmVhdGUoXCYjMzQ7bWx4NV9jbWRcJiMzNDssIG1seDVfY29yZV9kbWFfZGV2KGRldiksIHNpemUsIGFsaWduLCAwKTtcbjI1MDY6XHRcdGlmICghY21kLVx1MDAzZXBvb2wpIHtcbjI1MDc6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjI1MDg6XHRcdFx0Z290byBlcnJfZGVzdHJveV94YTtcbjI1MDk6XHRcdH1cbjI1MTA6XHRcbjI1MTE6XHRcdGVyciA9IGFsbG9jX2NtZF9wYWdlKGRldiwgY21kKTtcbjI1MTI6XHRcdGlmIChlcnIpXG4yNTEzOlx0XHRcdGdvdG8gZXJyX2ZyZWVfcG9vbDtcbjI1MTQ6XHRcbjI1MTU6XHRcdGNtZF9oID0gKHUzMikoKHU2NCkoY21kLVx1MDAzZWRtYSkgXHUwMDNlXHUwMDNlIDMyKTtcbjI1MTY6XHRcdGNtZF9sID0gKHUzMikoY21kLVx1MDAzZWRtYSk7XG4yNTE3Olx0XHRpZiAoY21kX2wgXHUwMDI2IDB4ZmZmKSB7XG4yNTE4Olx0XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDtpbnZhbGlkIGNvbW1hbmQgcXVldWUgYWRkcmVzc1xcblwmIzM0Oyk7XG4yNTE5Olx0XHRcdGVyciA9IC1FTk9NRU07XG4yNTIwOlx0XHRcdGdvdG8gZXJyX2NtZF9wYWdlO1xuMjUyMTpcdFx0fVxuMjUyMjpcdFxuMjUyMzpcdFx0aW93cml0ZTMyYmUoY21kX2gsIFx1MDAyNmRldi1cdTAwM2Vpc2VnLVx1MDAzZWNtZHFfYWRkcl9oKTtcbjI1MjQ6XHRcdGlvd3JpdGUzMmJlKGNtZF9sLCBcdTAwMjZkZXYtXHUwMDNlaXNlZy1cdTAwM2VjbWRxX2FkZHJfbF9zeik7XG4yNTI1Olx0XG4yNTI2Olx0XHQvKiBNYWtlIHN1cmUgZmlybXdhcmUgc2VlcyB0aGUgY29tcGxldGUgYWRkcmVzcyBiZWZvcmUgd2UgcHJvY2VlZCAqL1xuMjUyNzpcdFx0d21iKCk7XG4yNTI4Olx0XG4yNTI5Olx0XHRtbHg1X2NvcmVfZGJnKGRldiwgXCYjMzQ7ZGVzY3JpcHRvciBhdCBkbWEgMHglbGx4XFxuXCYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKShjbWQtXHUwMDNlZG1hKSk7XG4yNTMwOlx0XG4yNTMxOlx0XHRjbWQtXHUwMDNlbW9kZSA9IENNRF9NT0RFX1BPTExJTkc7XG4yNTMyOlx0XHRjbWQtXHUwMDNlYWxsb3dlZF9vcGNvZGUgPSBDTURfQUxMT1dFRF9PUENPREVfQUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTYzOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDYzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbWx4NV9kYl9hbGxvY19ub2RlYCB3aXRoIHRoZSBQQ0kgRnV6emVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbHg1X2NtZF9pbml0YCBmdW5jdGlvbiwgYW5kIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZGlyZWN0bHkgY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gVGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYG1seDVfZGJfYWxsb2Nfbm9kZWAgYW5kIGl0cyBjb21wYW5pb24sIGBtbHg1X2RiX2ZyZWVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzIHRoYXQgaWYgdGhlIFBDSSBmdXp6ZXIgZmFpbHMgZWFybHkgaW4gYHByb2JlX29uZWAsIG1heWJlIGR1ZSB0byBhIGBjbWRpZl9yZXZgIGNoZWNrIG9yIGEgZmFpbHVyZSBkdXJpbmcgYG1seDVfY21kX2luaXRfaGNhYCwgd2Ugd291bGRuJiMzOTt0IGV2ZW4gZ2V0IHRvIHRoZSBxdWV1ZSBjcmVhdGlvbiBzdGFnZSwgdGh1cyBhdm9pZGluZyB0aGUgY2FsbCB0byBgbWx4NV9kYl9hbGxvY19ub2RlYC4KCkJ1dCB0aGVuLCBJIHJlbWVtYmVyZWQgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgISBUaG9zZSBhcmUgY2FsbGVkIHdpdGhpbiBgbWx4NV9tZGV2X2luaXRgIGFuZCBgbWx4NV9tZGV2X3VuaW5pdGAgcmVzcGVjdGl2ZWx5LiBBbmQgeWVzLCB0aG9zZSBwYXRocyAqYXJlKiBkZWZpbml0ZWx5IHJlYWNoYWJsZSBieSB0aGUgUENJIGZ1enplci4gU28sIEkgbmVlZCB0byBhZGp1c3QgbXkgdGhpbmtpbmc7IGlzIHRoZXJlIHN0aWxsIGEgZnV6emluZyBvcHBvcnR1bml0eSBoZXJlPyBUaGlzIHBhdGNoIGNoYW5nZXMgaG93IHdlIGFsbG9jYXRlIGRvb3JiZWxsIHBhZ2VzLCBtb3ZpbmcgdG8gYSBETUEgcG9vbCBpbnN0ZWFkIG9mIGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IGFsbG9jYXRpb24uCgpFdmVuIGlmIGBtbHg1X2RiX2FsbG9jX25vZGVgIGlzbiYjMzk7dCByZWFjaGVkLCBgbWx4NV9kYl9wb29sc19pbml0YCBhbmQgYG1seDVfZGJfcG9vbHNfY2xlYW51cGAgYXJlLCB3aGljaCBhcmUgaW1wb3J0YW50LiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBgbWx4NV9kYl9hbGxvY19ub2RlYCBpdHNlbGYgaXMgcmVhY2hhYmxlLiBJZiB0aGUgUENJIGZ1enplciBjYW4gYmUgY2xldmVyIGVub3VnaCB0byBmYWtlIGZpcm13YXJlIHJlc3BvbnNlcywgaXQgKm1pZ2h0KiBnZXQgZnVydGhlci4gSSBrbm93IFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGlzbiYjMzk7dCBqdXN0IHNwaXR0aW5nIG91dCByYW5kb20gZGF0YTsgaXQmIzM5O3MgdXNpbmcgZnV6emluZyB0byBleHBsb3JlIHRoZSBzdGF0ZSBzcGFjZS4gSXQgY291bGQgcG90ZW50aWFsbHkgYnlwYXNzIHNvbWUgY2hlY2tzIGlmIHRoZSBmdXp6ZXIgZmluZHMgdGhlIHJpZ2h0IHZhbHVlcy4gQWxzbywgdGhlcmUmIzM5O3MgYHN5el9wY2lfZGV2aWNlYCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBvbmx5IHJvdXRlLgoKV2FpdCwgd2hhdCBhYm91dCB0aGUgcG9zc2liaWxpdHkgb2YgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlPyBUaGUgcHJvbXB0IGlzIGZvY3VzZWQgb24gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSWYgbWx4NSBpcyBhICpyZWFsKiBoYXJkd2FyZSBkcml2ZXIgd2l0aCBubyBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLCBpdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHRob3NlIGVudmlyb25tZW50cyAqdW5sZXNzKiB5b3UgdXNlIHRoZSBQQ0kgZnV6emVyLiBCdXQgZG9lcyB0aGUgUENJIGZ1enplciBjb3VudCBhcyAmIzM0O3NvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDs/IFllcywgaXQgZG9lcy4gU28sIHdlJiMzOTtyZSBiYWNrIHRvIHJlbHlpbmcgb24gdGhlIGZ1enplciB0byBnaXZlIHVzIG1vcmUgY29kZSBjb3ZlcmFnZS4KCkJ1dCwgaXMgaXQgKnByYWN0aWNhbGx5KiByZWFjaGFibGUgdG8gdGhlIHBvaW50IG9mIGdldHRpbmcgdG8gUkRNQSBxdWV1ZSBjcmVhdGlvbj8gUHJvYmFibHkgbm90LiBDb21wbGV4IGRldmljZXMgbGlrZSBtbHg1IGhhdmUgY29tcGxleCBmaXJtd2FyZSBpbnRlcmZhY2VzIChDTURJRikgYW5kIEkgdGhpbmsgdGhlIGZ1enplciB3b3VsZCBoYXZlIGEgaGFyZCB0aW1lIGdldHRpbmcgcGFzdCB0aGUgcHJvYmUgY2hlY2tzLiBIb3dldmVyLCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiB0aGF0IGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzIGNhbGxlZCAqYmVmb3JlKiBib3RoIGBtbHg1X2NtZF9pbml0X2hjYWAgKmFuZCogYG1seDVfY21kX2VuYWJsZWAuIFNvLCBJIG5lZWQgdG8gcmV2aXNpdCBgbWx4NV9tZGV2X2luaXRgIGFnYWluLCBjYXJlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4MDQ6XHRpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuMTgwNTpcdHtcbjE4MDY6XHRcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcHJpdjtcbjE4MDc6XHRcdGludCBlcnI7XG4xODA4Olx0XG4xODA5Olx0XHRtZW1jcHkoXHUwMDI2ZGV2LVx1MDAzZXByb2ZpbGUsIFx1MDAyNnByb2ZpbGVbcHJvZmlsZV9pZHhdLCBzaXplb2YoZGV2LVx1MDAzZXByb2ZpbGUpKTtcbjE4MTA6XHRcdGxvY2tkZXBfcmVnaXN0ZXJfa2V5KFx1MDAyNmRldi1cdTAwM2Vsb2NrX2tleSk7XG4xODExOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VpbnRmX3N0YXRlX211dGV4KTtcbjE4MTI6XHRcdGxvY2tkZXBfc2V0X2NsYXNzKFx1MDAyNmRldi1cdTAwM2VpbnRmX3N0YXRlX211dGV4LCBcdTAwMjZkZXYtXHUwMDNlbG9ja19rZXkpO1xuMTgxMzpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlbWx4NWVfcmVzLnVwbGlua19uZXRkZXZfbG9jayk7XG4xODE0Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V3Y19zdGF0ZV9sb2NrKTtcbjE4MTU6XHRcbjE4MTY6XHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2ViZnJlZ3MucmVnX2hlYWQubG9jayk7XG4xODE3Olx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubG9jayk7XG4xODE4Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5saXN0KTtcbjE4MTk6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XG4xODIwOlx0XG4xODIxOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuMTgyMjpcdFxuMTgyMzpcdFx0cHJpdi1cdTAwM2VudW1hX25vZGUgPSBkZXZfdG9fbm9kZShtbHg1X2NvcmVfZG1hX2RldihkZXYpKTtcbjE4MjQ6XHRcdHByaXYtXHUwMDNlZGJnLmRiZ19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGRldi1cdTAwM2VkZXZpY2UpLFxuMTgyNTpcdFx0XHRcdFx0XHRcdG1seDVfZGVidWdmc19yb290KTtcbjE4MjY6XHRcbjE4Mjc6XHRcdGVyciA9IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChkZXYpO1xuMTgyODpcdFx0aWYgKGVycilcbjE4Mjk6XHRcdFx0Z290byBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDtcbjE4MzA6XHRcbjE4MzE6XHRcdGVyciA9IG1seDVfZGJfcG9vbHNfaW5pdChkZXYpO1xuMTgzMjpcdFx0aWYgKGVycilcbjE4MzM6XHRcdFx0Z290byBlcnJfZGJfcG9vbHNfaW5pdDtcbjE4MzQ6XHRcbjE4MzU6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNldHJhcHMpO1xuMTgzNjpcdFxuMTgzNzpcdFx0ZXJyID0gbWx4NV9jbWRfaW5pdChkZXYpO1xuMTgzODpcdFx0aWYgKGVycikge1xuMTgzOTpcdFx0XHRtbHg1X2NvcmVfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIGluaXRpYWxpemluZyBjbWRpZiBTVyBzdHJ1Y3RzLCBhYm9ydGluZ1xcblwmIzM0Oyk7XG4xODQwOlx0XHRcdGdvdG8gZXJyX2NtZF9pbml0O1xuMTg0MTpcdFx0fVxuMTg0MjpcdFxuMTg0MzpcdFx0ZXJyID0gbWx4NV90b3V0X2luaXQoZGV2KTtcbjE4NDQ6XHRcdGlmIChlcnIpIHtcbjE4NDU6XHRcdFx0bWx4NV9jb3JlX2VycihkZXYsIFwmIzM0O0ZhaWxlZCBpbml0aWFsaXppbmcgdGltZW91dHMsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbjE4NDY6XHRcdFx0Z290byBlcnJfdGltZW91dF9pbml0O1xuMTg0NzpcdFx0fVxuMTg0ODpcdFxuMTg0OTpcdFx0ZXJyID0gbWx4NV9oZWFsdGhfaW5pdChkZXYpO1xuMTg1MDpcdFx0aWYgKGVycilcbjE4NTE6XHRcdFx0Z290byBlcnJfaGVhbHRoX2luaXQ7XG4xODUyOlx0XG4xODUzOlx0XHRlcnIgPSBtbHg1X3BhZ2VhbGxvY19pbml0KGRldik7XG4xODU0Olx0XHRpZiAoZXJyKVxuMTg1NTpcdFx0XHRnb3RvIGVycl9wYWdlYWxsb2NfaW5pdDtcbjE4NTY6XHRcbjE4NTc6XHRcdGVyciA9IG1seDVfYWRldl9pbml0KGRldik7XG4xODU4Olx0XHRpZiAoZXJyKVxuMTg1OTpcdFx0XHRnb3RvIGVycl9hZGV2X2luaXQ7XG4xODYwOlx0XG4xODYxOlx0XHRlcnIgPSBtbHg1X2hjYV9jYXBzX2FsbG9jKGRldik7XG4xODYyOlx0XHRpZiAoZXJyKVxuMTg2MzpcdFx0XHRnb3RvIGVycl9oY2FfY2FwcztcbjE4NjQ6XHRcbjE4NjU6XHRcdGVyciA9IG1seDVfbm90aWZpZXJzX2luaXQoZGV2KTtcbjE4NjY6XHRcdGlmIChlcnIpXG4xODY3Olx0XHRcdGdvdG8gZXJyX25vdGlmaWVyc19pbml0O1xuMTg2ODpcdFxuMTg2OTpcdFx0LyogVGhlIGNvbmp1bmN0aW9uIG9mIHN3X3ZoY2FfaWQgd2l0aCBzd19vd25lcl9pZCB3aWxsIGJlIGEgZ2xvYmFsXG4xODcwOlx0XHQgKiB1bmlxdWUgaWQgcGVyIGZ1bmN0aW9uIHdoaWNoIHVzZXMgbWx4NV9jb3JlLlxuMTg3MTpcdFx0ICogVGhvc2UgdmFsdWVzIGFyZSBzdXBwbGllZCB0byBGVyBhcyBwYXJ0IG9mIHRoZSBpbml0IEhDQSBjb21tYW5kIHRvXG4xODcyOlx0XHQgKiBiZSB1c2VkIGJ5IGJvdGggZHJpdmVyIGFuZCBGVyB3aGVuIGl0JiMzOTtzIGFwcGxpY2FibGUuXG4xODczOlx0XHQgKi9cbjE4NzQ6XHRcdGRldi1cdTAwM2Vwcml2LnN3X3ZoY2FfaWQgPSBpZGFfYWxsb2NfcmFuZ2UoXHUwMDI2c3dfdmhjYV9pZGEsIDEsXG4xODc1Olx0XHRcdFx0XHRcdCAgICAgICBNQVhfU1dfVkhDQV9JRCxcbjE4NzY6XHRcdFx0XHRcdFx0ICAgICAgIEdGUF9LRVJORUwpO1xuMTg3NzpcdFx0aWYgKGRldi1cdTAwM2Vwcml2LnN3X3ZoY2FfaWQgXHUwMDNjIDApXG4xODc4Olx0XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc3dfdmhjYV9pZCwgZXJyPSVkXFxuXCYjMzQ7LFxuMTg3OTpcdFx0XHRcdCAgICAgIGRldi1cdTAwM2Vwcml2LnN3X3ZoY2FfaWQpO1xuMTg4MDpcdFxuMTg4MTpcdFx0cmV0dXJuIDA7XG4xODgyOlx0XG4xODgzOlx0ZXJyX25vdGlmaWVyc19pbml0OlxuMTg4NDpcdFx0bWx4NV9oY2FfY2Fwc19mcmVlKGRldik7XG4xODg1Olx0ZXJyX2hjYV9jYXBzOlxuMTg4NjpcdFx0bWx4NV9hZGV2X2NsZWFudXAoZGV2KTtcbjE4ODc6XHRlcnJfYWRldl9pbml0OlxuMTg4ODpcdFx0bWx4NV9wYWdlYWxsb2NfY2xlYW51cChkZXYpO1xuMTg4OTpcdGVycl9wYWdlYWxsb2NfaW5pdDpcbjE4OTA6XHRcdG1seDVfaGVhbHRoX2NsZWFudXAoZGV2KTtcbjE4OTE6XHRlcnJfaGVhbHRoX2luaXQ6XG4xODkyOlx0XHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xuMTg5MzpcdGVycl90aW1lb3V0X2luaXQ6XG4xODk0Olx0XHRtbHg1X2NtZF9jbGVhbnVwKGRldik7XG4xODk1Olx0ZXJyX2NtZF9pbml0OlxuMTg5NjpcdFx0bWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7XG4xODk3Olx0ZXJyX2RiX3Bvb2xzX2luaXQ6XG4xODk4Olx0XHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcbjE4OTk6XHRlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDpcbjE5MDA6XHRcdGRlYnVnZnNfcmVtb3ZlKGRldi1cdTAwM2Vwcml2LmRiZy5kYmdfcm9vdCk7XG4xOTAxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuMTkwMjpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuMTkwMzpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MjYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gYG1seDVfZGJfcG9vbHNfaW5pdGAgaXMgY2FsbGVkIHZlcnkgZWFybHkgZHVyaW5nIGBtbHg1X21kZXZfaW5pdGAuIEkga25vdyB0aGF0IGJlY2F1c2Ugb2YgaG93IHRoZSBkcml2ZXIgaW5pdGlhbGl6ZXMuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY3JlYXRlcyBkZWJ1Z2ZzIGVudHJpZXMsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIEkga25vdyB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFBDSSBmdXp6ZXIsIHdoaWNoIGlzIHRoZSBrZXkgaGVyZS4gVGhlIGZ1enplciB0cmlnZ2VycyBgcHJvYmVfb25lYCwgd2hpY2ggdWx0aW1hdGVseSBjYWxscyBgbWx4NV9tZGV2X2luaXRgLCB0aHVzIGV4ZWN1dGluZyBgbWx4NV9kYl9wb29sc19pbml0YC4KClRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBgbWx4NV9kYl9hbGxvY19ub2RlYCByZWFjaGFibGU/IEl0JiMzOTtzIGxpa2VseSB0aGF0IGlmIHRoZSBQQ0kgZnV6emVyIGNhbiBwYXNzIHRoZSBpbml0aWFsIGNoZWNrcywgaXQgKmNvdWxkKiByZWFjaCB0aGF0IGZ1bmN0aW9uLiBFdmVuIGlmIGl0IGRvZXNuJiMzOTt0LCBgbWx4NV9kYl9wb29sc19pbml0YCBhbmQgaXRzIGNsZWFudXAgY291bnRlcnBhcnQgc3RpbGwgcmVwcmVzZW50IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBvZiB0aGUgbWVtb3J5IHBvb2wgYWxsb2NhdGlvbiBhbmQgZGVidWdmcyBjcmVhdGlvbi4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGNvbnNpZGVyYXRpb24uCgpOb3csIHdhaXQgYSBtaW51dGUsIGxldCBtZSByZWNhbGwgdGhlIHByb21wdCBjb25zdHJhaW50cy4gSXQgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMmIzM0OyBzcGVjaWZpYyB0eXBlcyBvZiBjaGFuZ2VzLiBJdCBsaXN0cyBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgY2hhbmdlIGZsb3csIGFuZCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkhtbSwgb2theS4gSXMgYG1seDVgIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgaXQgaXMuIFRoZSBQQ0kgZnV6emVyIGlzIHRoZSBhdmVudWUgaGVyZS4gQnV0LCBpcyB0aGUgUENJIGZ1enplciBjb25zaWRlcmVkICYjMzQ7c29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oz8gSSB0aGluayBpdCBpczsgaXQgZW11bGF0ZXMgUENJIGRldmljZXMgaW4gc29mdHdhcmUuIFNvLCB5ZXMsIGBtbHg1YCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGBDT05GSUdfTUxYNV9DT1JFYCwgcGVyaGFwcz8pIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGJlIHJlbGV2YW50LiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgaW4gbXkgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWDVfQ09SRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Njpjb25maWcgTUxYNV9DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBjb3JlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTE5PWNvbmZpZyBNTFg1X0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjI5OmNvbmZpZyBNTFg1X0NPUkVfRU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xMTI9Y29uZmlnIE1MWDVfVENfU0FNUExFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MTI1OmNvbmZpZyBNTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjYtXHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMzc6Y29uZmlnIE1MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM4LVx0Ym9vbCBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChjb25uZWN0WCBzZXJpZXMpIElQb0lCIG9mZmxvYWRzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5MjIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbGxhbm94IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoYW5nZSwgYW5kIGl0IHNlZW1zIHRoZSBrZXkgY29uZmlnIHZhcmlhYmxlIGludm9sdmVkIGlzIGBDT05GSUdfTUxYNV9DT1JFYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgbmVlZCB0byBrbm93IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIGF0IHBsYXkgaGVyZS4gVGhpcyBraW5kIG9mIGtlcm5lbCBjb2RlIGNhbiBiZSBjb21wbGV4LCBhbmQgdGhlcmUgYXJlIG9mdGVuIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGFueSBvZiB0aGUgcmVsYXRlZCBmaWxlcy4KClRoZSBzcGVjaWZpYyBmaWxlIG1vZGlmaWVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY2AuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgdGhlIE1ha2VmaWxlIGFzc29jaWF0ZWQgd2l0aCBgYWxsb2MuY2AuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmlsZSBpcyBidWlsdCBhbmQgbGlua2VkIGlzIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIE1lbGxhbm94IGRyaXZlci4gR290dGEgZmluZCB0aG9zZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGxvY1xcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgJiM0Mzs9IG1seDVfY29yZS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEzLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDptbHg1X2NvcmUteSA6PVx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNTpcdFx0aGVhbHRoLm8gbWNnLm8gY3EubyBhbGxvYy5vIHBvcnQubyBtci5vIHBkLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNi1cdFx0dHJhbnNvYmoubyB2cG9ydC5vIHNyaW92Lm8gZnNfY21kLm8gZnNfY29yZS5vIHBjaV9pcnEubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQyOAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyBhIE1lbGxhbm94IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGFsbG9jLm9gLCB3aGljaCBpcyBhbHdheXMgYnVpbHQgd2hlbiBgQ09ORklHX01MWDVfQ09SRWAgaXMgZW5hYmxlZC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCwgYG1seDVfZGJfYWxsb2Nfbm9kZWAsIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFzb25hYmx5IGZ1enogdGhlc2U/CgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgdGhlIFBDSSBmdXp6ZXIgY2FuIGhpdCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSWYgdGhlIFBDSSBmdXp6ZXIgZmFpbHMgYmVmb3JlIGBtbHg1X2NtZF9pbml0X2hjYWAsIHRoZW4gYG1seDVfZGJfYWxsb2Nfbm9kZWAgaXMgdW5yZWFjaGFibGUuIEkgaGFkIHRvIGNvbnNpZGVyLCBjb3VsZCBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlYCBmdW5jdGlvbiBkbyB0aGlzLCBtYXliZSB3aXRoIGEgc3BlY2lmaWMgZGVzY3JpcHRpb24gZm9yIG1seDU/IEkgZGlkIGEgc2VhcmNoIGZvciBgc3l6Xy4qbWx4NWAgYW5kIGRpZG4mIzM5O3QgZmluZCBhbnl0aGluZywgYnV0IHN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyBnZW5lcmFsbHkuIFNvIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgdmlhIGdlbmVyaWMgUENJIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBmdXp6aW5nIHRhcmdldHMsIEkmIzM5O2xsIGxpc3QgYG1seDVfZGJfcG9vbHNfaW5pdGAsIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLCBgbWx4NV9kYl9hbGxvY19ub2RlYCwgYW5kIGBtbHg1X2RiX2ZyZWVgIGFzIHRoZSBgRm9jdXNTeW1ib2xzYC4gQW5kIEkmIzM5O2xsIG5lZWQgYEVuYWJsZUNvbmZpZ3NgOiBgTUxYNV9DT1JFYC4KCldhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZyBpbnZvbHZlZD8gTm8sIGBNTFg1X0NPUkVgIGlzIHN1ZmZpY2llbnQuCgpOb3csIGNvdWxkIEkgcG90ZW50aWFsbHkgcmVhY2ggYG1seDVfZGJfYWxsb2Nfbm9kZWAgZnJvbSB1c2Vyc3BhY2UgdmlhIFJETUE/IElmIGBDT05GSUdfTUxYNV9JTkZJTklCQU5EYCBpcyBlbmFibGVkLCB0aGVuIHVzZXJzcGFjZSBjYW4gY2FsbCBgbWx4NV9pYl9jcmVhdGVfcXBgLCB3aGljaCAqZG9lcyogY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSG93ZXZlciwgdGhpcyByZXF1aXJlcyBhIHJlYWwgbWx4NSBkZXZpY2UsIG9yLCBtb3JlIHJlYWxpc3RpY2FsbHksIHRoZSBQQ0kgZnV6emVyIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIHRoZSBkZXZpY2UgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBSRE1BIGRldmljZSByZWdpc3RlcnMuIFRoYXQgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gYG1seDVfaWJfcHJvYmVgICh0aGUgYXV4aWxpYXJ5IGRyaXZlciBwcm9iZSkuIFRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBtbHg1X21kZXZfaW5pdGAgdG8gc3VjY2VlZCwgYW5kIHRoZW4gdGhlIGF1eGlsaWFyeSBkZXZpY2UgdG8gYmUgYWRkZWQuIEl0JiMzOTtzIHVubGlrZWx5IHRoZSBQQ0kgZnV6emVyIGNhbiBmYWtlIHRoYXQgKmVudGlyZSogaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgdG8gZ2V0IHRoZSBSRE1BIGRldmljZSB0byByZWdpc3Rlci4gSG93ZXZlciwgYG1seDVfZGJfcG9vbHNfaW5pdGAgKmlzKiBjYWxsZWQgZWFybHkgaW4gYG1seDVfbWRldl9pbml0YCwgYW5kIHRoYXQgKmlzKiByZWFjaGFibGUuIFNvIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYmVjYXVzZSBpdCB0b3VjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIGEgUENJIGRyaXZlciwgd2hpY2ggaXMgZnV6emFibGUgdmlhIFBDSSBmdXp6aW5nLgoKTGV0IG1lIGp1c3QgcXVpY2tseSByZWNhcCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyByZW1vdmluZyBgbWx4NV9kYl9wZ2RpcmAgYW5kIHVzaW5nIGBtbHg1X2RtYV9wb29sYCBpbnN0ZWFkLiBJdCBhZGRzIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYC4gQW5kIGl0IG1vZGlmaWVzIGBtbHg1X2RiX2FsbG9jX25vZGVgIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0IGlzIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBjb3JlIGRyaXZlciwgd2hpY2ggaW1wYWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLCBhbmQgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaXMsIGluIGZhY3QsIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcuCgpPbmUgZmluYWwgY2hlY2ssIEkgbmVlZCB0byBtYWtlIHN1cmUgYG1seDVfZG1hX3Bvb2xgIGlzIGRlZmluZWQgaW4gYGFsbG9jLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2RtYV9wb29sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MTpzdHJ1Y3QgbWx4NV9kbWFfcG9vbCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01Mi1cdC8qIFByb3RlY3RzIHBhZ2VfbGlzdCBhbmQgcGVyLXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXBzLiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjA6c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2MTpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjItXHRzdHJ1Y3QgbGlzdF9oZWFkIHBvb2xfbGluaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz02OD1zdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY5Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2xzW01MWDVfRlJBR19CVUZfUE9PTFNfTlVNXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTcwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy03MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjcyOnN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTczLVx0aW50IG5vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9ODM9c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTAyOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVzdHJveShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEwMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqbWx4NV9kbWFfcG9vbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEwOS1cdFx0XHRcdFx0XHQgIGludCBub2RlLCB1OCBibG9ja19zaGlmdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMTE6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMjU6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTI2Om1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEyNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMjgtXHRpbnQgYmxvY2tzX3Blcl9wYWdlID0gQklUKFBBR0VfU0hJRlQgLSBwb29sLVx1MDAzZWJsb2NrX3NoaWZ0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEyOTpcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTU2OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfcGFnZV9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNTc6XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTY1OnN0YXRpYyBpbnQgbWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2Uoc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjY6XHRcdFx0XHRcdCBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY3LVx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyAqaWR4X291dClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxODM6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTg0Om1seDVfZG1hX3Bvb2xfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTg2Olx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE4Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTAtXHRwYWdlID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNnBvb2wtXHUwMDNlcGFnZV9saXN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkxOlx0XHRcdFx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlLCBwb29sX2xpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkyOlx0aWYgKHBhZ2UgXHUwMDI2XHUwMDI2ICFtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5My1cdFx0Z290byB1bmxvY2s7IC8qIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgZnJvbSBleGlzdGluZyBwYWdlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxOTU6XHRwYWdlID0gbWx4NV9kbWFfcG9vbF9wYWdlX2FsbG9jKHBvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTk2LVx0aWYgKCFwYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5OS1cdGxpc3RfYWRkKFx1MDAyNnBhZ2UtXHUwMDNlcG9vbF9saW5rLCBcdTAwMjZwb29sLVx1MDAzZXBhZ2VfbGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMDA6XHRtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMDc6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9mcmVlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA4Olx0XHRcdCAgICAgICBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjA5LVx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMTktXHRcdGxpc3RfZGVsKFx1MDAyNnBhZ2UtXHUwMDNlcG9vbF9saW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIyMDpcdFx0bWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUocG9vbC1cdTAwM2VkZXYsIHBhZ2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjIxLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzA6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX2dldF9zdGF0cyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzMTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzICpzdGF0cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIzMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzMtXHRpbnQgYmxvY2tzX3Blcl9wYWdlID0gQklUKFBBR0VfU0hJRlQgLSBwb29sLVx1MDAzZWJsb2NrX3NoaWZ0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzNDpcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzUtXHRzaXplX3QgZnJlZV9ibG9ja3MgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI1MTpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoc3RydWN0IHNlcV9maWxlICpmaWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjUyOlx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTQ6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9zdGF0cyBzdGF0cyA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjU2Olx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX2dldF9zdGF0cyhwb29sLCBcdTAwMjZzdGF0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNTctXHRzZXFfcHJpbnRmKGZpbGUsIFwmIzM0OyU0ZCAgICAgICAlNXp1ICAgICAgJTd6dSAgICAgICAgICAgJTd6dVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNjI6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoc3RydWN0IHNlcV9maWxlICpmaWxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0yNjg9bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3koc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNzEtXHRcdGlmIChub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjcyOlx0XHRcdG1seDVfZG1hX3Bvb2xfZGVzdHJveShub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3My1cdGtmcmVlKG5vZGVfcG9vbHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTI3Nz1tbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4ODpcdFx0bm9kZV9wb29scy1cdTAwM2Vwb29sc1tpXSA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4OS1cdFx0XHRcdFx0XHRcdCAgICBibG9ja19zaGlmdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzAwPW1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA1Olx0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzE3LVx0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgTUxYNV9GUkFHX0JVRl9QT09MU19OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XHRcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMyMzpcdFx0XHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjQtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zODE9aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mzg0Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODUtXHRpbnQgcG9vbF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDAyLVx0XHRzdHJ1Y3QgbWx4NV9idWZfbGlzdCAqZnJhZyA9IFx1MDAyNmJ1Zi1cdTAwM2VmcmFnc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQwMzpcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQwNC1cdFx0dW5zaWduZWQgbG9uZyBpZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MDY6XHRcdHBhZ2UgPSBtbHg1X2RtYV9wb29sX2FsbG9jKHBvb2wsIFx1MDAyNmlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MDctXHRcdGlmICghcGFnZSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQyMD12b2lkIG1seDVfZnJhZ19idWZfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyMy1cdFx0c3RydWN0IG1seDVfYnVmX2xpc3QgKmZyYWcgPSBcdTAwMjZidWYtXHUwMDNlZnJhZ3NbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjQ6XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjU6XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVx0XHR1bnNpZ25lZCBsb25nIGlkeDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzMtXHRcdGlkeCA9IChmcmFnLVx1MDAzZW1hcCAtIHBhZ2UtXHUwMDNlZG1hKSBcdTAwM2VcdTAwM2UgcG9vbC1cdTAwM2VibG9ja19zaGlmdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzNDpcdFx0bWx4NV9kbWFfcG9vbF9mcmVlKHBvb2wsIHBhZ2UsIGlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzUtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDQwPXN0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDU6XHRtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihmaWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NTAtXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1MTpcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBkZXYtXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1NjpcdFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDU3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ2Mz12b2lkIG1seDVfZGJfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3Mi1cdFx0aWYgKHByaXYtXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ3MzpcdFx0XHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00Nzk9aW50IG1seDVfZGJfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ4OC1cdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDg5Olx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ5MTpcdFx0cG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ5Mi1cdFx0XHRcdFx0ICAgIG9yZGVyX2Jhc2VfMihjYWNoZV9saW5lX3NpemUoKSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTUwNz1pbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTA5Olx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxMDpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTExLVx0dW5zaWduZWQgbG9uZyBpZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTE2LVx0cG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MTc6XHRwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCBcdTAwMjZpZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTE4LVx0aWYgKCFwYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTUzMT12b2lkIG1seDVfZGJfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMzOlx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSA9IGRiLVx1MDAzZXUucG9vbF9wYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTM0Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLVx1MDAzZXBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MzY6XHRtbHg1X2RtYV9wb29sX2ZyZWUocG9vbCwgcGFnZSwgZGItXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTM3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1NzEKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEp1c3RpZmljYXRpb24qKgoKT2theSwgYWZ0ZXIgZXhhbWluaW5nIHRoaXMgcGF0Y2gsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgaXQmIzM5O3MgZnVuY3Rpb25hbCBhbmQgd2UgY2FuIHJlYWNoIGl0IHdpdGggUENJIGZ1enppbmcuIFRoYXQgc2V0dGxlcyBpdDsgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgaGVyZSBhcmUgYG1seDVfZGJfcG9vbHNfaW5pdGAsIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLCBgbWx4NV9kYl9hbGxvY19ub2RlYCwgYW5kIGBtbHg1X2RiX2ZyZWVgLiBUaGVzZSBhcmUgZ29pbmcgdG8gYmUgbXkgYEZvY3VzU3ltYm9sc2AuCgpJJiMzOTtsbCBlbmFibGUgdGhlIGBNTFg1X0NPUkVgIGNvbmZpZzsgdGhhdCYjMzk7cyB0aGUgcmVsZXZhbnQgb25lIGZvciB0aGlzLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgbWx4NSBjb3JlIGRyaXZlci4gSXQmIzM5O3Mgc3dhcHBpbmcgb3V0IGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5IGZvciBhIERNQSBwb29sLCBhbmQgdGhhdCYjMzk7cyBnb2luZyB0byBpbXBhY3QgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBob3cgcXVldWVzIGFyZSBjcmVhdGVkLiBDcnVjaWFsbHksIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoICppcyogcmVhY2hhYmxlIHRocm91Z2ggUENJIGZ1enppbmcsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciB0aG9yb3VnaCB0ZXN0aW5nLiBUaGlzIGNoYW5nZSBoYXMgZW5vdWdoIGxvdy1sZXZlbCBpbXBhY3QgdGhhdCBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4NV9kYl9wb29sc19pbml0JiMzNDssCiAgICAmIzM0O21seDVfZGJfcG9vbHNfY2xlYW51cCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX2FsbG9jX25vZGUmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIG1seDUgY29yZSBkcml2ZXIsIHJlcGxhY2luZyBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeSB3aXRoIGEgRE1BIHBvb2wuIFRoaXMgYWZmZWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLiBUaGUgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4NV9kYl9wb29sc19pbml0JiMzNDssCiAgICAmIzM0O21seDVfZGJfcG9vbHNfY2xlYW51cCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX2FsbG9jX25vZGUmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIG1seDUgY29yZSBkcml2ZXIsIHJlcGxhY2luZyBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeSB3aXRoIGEgRE1BIHBvb2wuIFRoaXMgYWZmZWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLiBUaGUgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjI0LjA2Nzk0Nzc4MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDcyODM2OTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNTFg1X0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHg1X2RiX3Bvb2xzX2luaXRcIixcbiAgICBcIm1seDVfZGJfcG9vbHNfY2xlYW51cFwiLFxuICAgIFwibWx4NV9kYl9hbGxvY19ub2RlXCIsXG4gICAgXCJtbHg1X2RiX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjI0LjA2Nzk1NDk5MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0OTcxMTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDcwMzQ2NjA5YTM5YzAzZmM3M2FjNTM3ZmFiYmFkZjQxNDgwYmUwN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMTozMToyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXFxuaW5kZXggNGZlOWQ3ZDRmMTQzOGUuLjYwZmY0MTM5OTlmNzU1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcXG5AQCAtNDgsMTMgKzQ4LDYgQEBcXG4gI2RlZmluZSBNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTSBcXFxcXFxuIFxcdChQQUdFX1NISUZUIC0gTUxYNV9GUkFHX0JVRl9QT09MX01JTl9CTE9DS19TSElGVCArIDEpXFxuIFxcbi1zdHJ1Y3QgbWx4NV9kYl9wZ2RpciB7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWRcXHRsaXN0O1xcbi1cXHR1bnNpZ25lZCBsb25nXFx0ICAgICAgICpiaXRtYXA7XFxuLVxcdF9fYmUzMlxcdFxcdCAgICAgICAqZGJfcGFnZTtcXG4tXFx0ZG1hX2FkZHJfdFxcdFxcdGRiX2RtYTtcXG4tfTtcXG4tXFxuIHN0cnVjdCBtbHg1X2RtYV9wb29sIHtcXG4gXFx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXFxuIFxcdHN0cnVjdCBtdXRleCBsb2NrO1xcbkBAIC00NDQsMTA2ICs0MzcsMTAzIEBAIHZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9mcmFnX2J1Zl9mcmVlKTtcXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqbWx4NV9hbGxvY19kYl9wZ2RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgaW50IG5vZGUpXFxuK3N0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcXG4ge1xcbi1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG4tXFx0c3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyO1xcbitcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG4rXFx0aW50IG5vZGU7XFxuIFxcbi1cXHRwZ2RpciA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKnBnZGlyKSwgR0ZQX0tFUk5FTCwgbm9kZSk7XFxuLVxcdGlmICghcGdkaXIpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihmaWxlKTtcXG4gXFxuLVxcdHBnZGlyLVxcdTAwM2ViaXRtYXAgPSBiaXRtYXBfemFsbG9jX25vZGUoZGJfcGVyX3BhZ2UsIEdGUF9LRVJORUwsIG5vZGUpO1xcbi1cXHRpZiAoIXBnZGlyLVxcdTAwM2ViaXRtYXApIHtcXG4tXFx0XFx0a2ZyZWUocGdkaXIpO1xcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFx0fVxcbitcXHRpZiAoIWRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGJpdG1hcF9maWxsKHBnZGlyLVxcdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKTtcXG4rXFx0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XFxuK1xcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sID0gZGV2LVxcdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XFxuIFxcbi1cXHRwZ2Rpci1cXHUwMDNlZGJfcGFnZSA9IG1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKGRldiwgUEFHRV9TSVpFLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnBnZGlyLVxcdTAwM2VkYl9kbWEsIG5vZGUpO1xcbi1cXHRpZiAoIXBnZGlyLVxcdTAwM2VkYl9wYWdlKSB7XFxuLVxcdFxcdGJpdG1hcF9mcmVlKHBnZGlyLVxcdTAwM2ViaXRtYXApO1xcbi1cXHRcXHRrZnJlZShwZ2Rpcik7XFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRpZiAoIXBvb2wpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gcGdkaXI7XFxuK1xcdHJldHVybiAwO1xcbiB9XFxuK0RFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzKTtcXG4gXFxuLXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcixcXG4tXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RiICpkYilcXG4rdm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4ge1xcbi1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG4tXFx0aW50IG9mZnNldDtcXG4tXFx0aW50IGk7XFxuK1xcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgbm9kZTtcXG4rXFxuK1xcdGRlYnVnZnNfcmVtb3ZlKHByaXYtXFx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyk7XFxuK1xcdHByaXYtXFx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyA9IE5VTEw7XFxuK1xcbitcXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpXFxuK1xcdFxcdGlmIChwcml2LVxcdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKVxcbitcXHRcXHRcXHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kocHJpdi1cXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSk7XFxuK1xcbitcXHRrZnJlZShwcml2LVxcdTAwM2VkYl9ub2RlX3Bvb2xzKTtcXG4rXFx0cHJpdi1cXHUwMDNlZGJfbm9kZV9wb29scyA9IE5VTEw7XFxuK31cXG4rXFxuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXFx1MDAyNmRldi1cXHUwMDNlcHJpdjtcXG4rXFx0aW50IG5vZGU7XFxuIFxcbi1cXHRpID0gZmluZF9maXJzdF9iaXQocGdkaXItXFx1MDAzZWJpdG1hcCwgZGJfcGVyX3BhZ2UpO1xcbi1cXHRpZiAoaSBcXHUwMDNlPSBkYl9wZXJfcGFnZSlcXG4rXFx0cHJpdi1cXHUwMDNlZGJfbm9kZV9wb29scyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cXHUwMDNlZGJfbm9kZV9wb29scywgbnJfbm9kZV9pZHMpO1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWRiX25vZGVfcG9vbHMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0X19jbGVhcl9iaXQoaSwgcGdkaXItXFx1MDAzZWJpdG1hcCk7XFxuK1xcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xcbitcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG4gXFxuLVxcdGRiLVxcdTAwM2V1LnBnZGlyID0gcGdkaXI7XFxuLVxcdGRiLVxcdTAwM2VpbmRleCAgID0gaTtcXG4tXFx0b2Zmc2V0ID0gZGItXFx1MDAzZWluZGV4ICogY2FjaGVfbGluZV9zaXplKCk7XFxuLVxcdGRiLVxcdTAwM2VkYiAgICAgID0gcGdkaXItXFx1MDAzZWRiX3BhZ2UgKyBvZmZzZXQgLyBzaXplb2YoKnBnZGlyLVxcdTAwM2VkYl9wYWdlKTtcXG4tXFx0ZGItXFx1MDAzZWRtYSAgICAgPSBwZ2Rpci1cXHUwMDNlZGJfZG1hICArIG9mZnNldDtcXG4rXFx0XFx0cG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG9yZGVyX2Jhc2VfMihjYWNoZV9saW5lX3NpemUoKSkpO1xcbitcXHRcXHRpZiAoIXBvb2wpIHtcXG4rXFx0XFx0XFx0bWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7XFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHR9XFxuK1xcdFxcdHByaXYtXFx1MDAzZWRiX25vZGVfcG9vbHNbbm9kZV0gPSBwb29sO1xcbitcXHR9XFxuIFxcbi1cXHRkYi1cXHUwMDNlZGJbMF0gPSAwO1xcbi1cXHRkYi1cXHUwMDNlZGJbMV0gPSAwO1xcbitcXHRwcml2LVxcdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPVxcbitcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkYl9kbWFfcG9vbHNcXFwiLCAwNDQ0LCBwcml2LVxcdTAwM2VkYmcuZGJnX3Jvb3QsXFxuK1xcdFxcdFxcdFxcdCAgICBkZXYsIFxcdTAwMjZtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzX2ZvcHMpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG4ge1xcbi1cXHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XFxuLVxcdGludCByZXQgPSAwO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2LnBnZGlyX211dGV4KTtcXG4tXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkocGdkaXIsIFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbGlzdCwgbGlzdClcXG4tXFx0XFx0aWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSlcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRwZ2RpciA9IG1seDVfYWxsb2NfZGJfcGdkaXIoZGV2LCBub2RlKTtcXG4tXFx0aWYgKCFwZ2Rpcikge1xcbi1cXHRcXHRyZXQgPSAtRU5PTUVNO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG4rXFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuK1xcdGludCBvZmZzZXQ7XFxuIFxcbi1cXHRsaXN0X2FkZChcXHUwMDI2cGdkaXItXFx1MDAzZWxpc3QsIFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbGlzdCk7XFxuK1xcdG5vZGUgPSBub2RlID09IE5VTUFfTk9fTk9ERSA/IG51bWFfbWVtX2lkKCkgOiBub2RlO1xcbiBcXG4tXFx0LyogVGhpcyBzaG91bGQgbmV2ZXIgZmFpbCAtLSB3ZSBqdXN0IGFsbG9jYXRlZCBhbiBlbXB0eSBwYWdlOiAqL1xcbi1cXHRXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTtcXG4rXFx0cG9vbCA9IGRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xcbitcXHRwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCBcXHUwMDI2aWR4KTtcXG4rXFx0aWYgKCFwYWdlKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuLW91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xcbitcXHRvZmZzZXQgPSBpZHggXFx1MDAzY1xcdTAwM2MgcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQ7XFxuK1xcdGRiLVxcdTAwM2V1LnBvb2xfcGFnZSA9IHBhZ2U7XFxuK1xcdGRiLVxcdTAwM2VpbmRleCA9IGlkeDtcXG4rXFx0ZGItXFx1MDAzZWRiID0gKF9fYmUzMiAqKSgodTggKilwYWdlLVxcdTAwM2VidWYgKyBvZmZzZXQpO1xcbitcXHRkYi1cXHUwMDNlZG1hID0gcGFnZS1cXHUwMDNlZG1hICsgb2Zmc2V0O1xcbiBcXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG4gXFxuIHZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG4ge1xcbi1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlcHJpdi5wZ2Rpcl9tdXRleCk7XFxuLVxcbi1cXHRfX3NldF9iaXQoZGItXFx1MDAzZWluZGV4LCBkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlYml0bWFwKTtcXG4tXFxuLVxcdGlmIChiaXRtYXBfZnVsbChkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSkpIHtcXG4tXFx0XFx0ZG1hX2ZyZWVfY29oZXJlbnQobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSwgUEFHRV9TSVpFLFxcbi1cXHRcXHRcXHRcXHQgIGRiLVxcdTAwM2V1LnBnZGlyLVxcdTAwM2VkYl9wYWdlLCBkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlZGJfZG1hKTtcXG4tXFx0XFx0bGlzdF9kZWwoXFx1MDAyNmRiLVxcdTAwM2V1LnBnZGlyLVxcdTAwM2VsaXN0KTtcXG4tXFx0XFx0Yml0bWFwX2ZyZWUoZGItXFx1MDAzZXUucGdkaXItXFx1MDAzZWJpdG1hcCk7XFxuLVxcdFxcdGtmcmVlKGRiLVxcdTAwM2V1LnBnZGlyKTtcXG4tXFx0fVxcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlID0gZGItXFx1MDAzZXUucG9vbF9wYWdlO1xcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IHBhZ2UtXFx1MDAzZXBvb2w7XFxuIFxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlcHJpdi5wZ2Rpcl9tdXRleCk7XFxuK1xcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBkYi1cXHUwMDNlaW5kZXgpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfZnJlZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xcbmluZGV4IDY0M2I0YWFjMjAzMzY4Li41ZjI4ZDkwNmMzNWI2MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xcbkBAIC0xODE5LDggKzE4MTksNiBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VhbGxvY19tdXRleCk7XFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXBnZGlyX211dGV4KTtcXG4tXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnByaXYtXFx1MDAzZXBnZGlyX2xpc3QpO1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNlbnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSk7XFxuIFxcdHByaXYtXFx1MDAzZWRiZy5kYmdfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShkZXYtXFx1MDAzZWRldmljZSksXFxuQEAgLTE4MzAsNiArMTgyOCwxMCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycl9mcmFnX2J1Zl9wb29sc19pbml0O1xcbiBcXG4rXFx0ZXJyID0gbWx4NV9kYl9wb29sc19pbml0KGRldik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdGdvdG8gZXJyX2RiX3Bvb2xzX2luaXQ7XFxuK1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNldHJhcHMpO1xcbiBcXG4gXFx0ZXJyID0gbWx4NV9jbWRfaW5pdChkZXYpO1xcbkBAIC0xODkxLDEwICsxODkzLDExIEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpXFxuIGVycl90aW1lb3V0X2luaXQ6XFxuIFxcdG1seDVfY21kX2NsZWFudXAoZGV2KTtcXG4gZXJyX2NtZF9pbml0OlxcbitcXHRtbHg1X2RiX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG4rZXJyX2RiX3Bvb2xzX2luaXQ6XFxuIFxcdG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChkZXYpO1xcbiBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDpcXG4gXFx0ZGVidWdmc19yZW1vdmUoZGV2LVxcdTAwM2Vwcml2LmRiZy5kYmdfcm9vdCk7XFxuLVxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXBnZGlyX211dGV4KTtcXG4gXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlYWxsb2NfbXV0ZXgpO1xcbiBcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3Mud2NfaGVhZC5sb2NrKTtcXG4gXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLnJlZ19oZWFkLmxvY2spO1xcbkBAIC0xOTE3LDkgKzE5MjAsOSBAQCB2b2lkIG1seDVfbWRldl91bmluaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4gXFx0bWx4NV9oZWFsdGhfY2xlYW51cChkZXYpO1xcbiBcXHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xcbiBcXHRtbHg1X2NtZF9jbGVhbnVwKGRldik7XFxuK1xcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xcbiBcXHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG4gXFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGRldi1cXHUwMDNlcHJpdi5kYmcuZGJnX3Jvb3QpO1xcbi1cXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2VwZ2Rpcl9tdXRleCk7XFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZWFsbG9jX211dGV4KTtcXG4gXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLndjX2hlYWQubG9jayk7XFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oXFxuaW5kZXggMDllNjY5ZjgzZGJhNzYuLmQ2NzEzYTJjZTY3Njk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxcbkBAIC00MzgsNiArNDM4LDggQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeCk7XFxuIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4gaW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4gdm9pZCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuK3ZvaWQgbWx4NV9kYl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbiBpbnQgbWx4NV9pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4gaW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuIHZvaWQgbWx4NV91bmluaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmggYi9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmhcXG5pbmRleCBiMTg3MWMwODIxZDBiOS4uODNkMGE4M2JiZmJjYWMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXFxuQEAgLTU0OCw2ICs1NDgsNyBAQCBzdHJ1Y3QgbWx4NV9kZWJ1Z2ZzX2VudHJpZXMge1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpjcV9kZWJ1Z2ZzO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpjbWRpZl9kZWJ1Z2ZzO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpmcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmcztcXG4rXFx0c3RydWN0IGRlbnRyeSAqZGJfZG1hX3Bvb2xzX2RlYnVnZnM7XFxuIFxcdHN0cnVjdCBkZW50cnkgKnBhZ2VzX2RlYnVnZnM7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmxhZ19kZWJ1Z2ZzO1xcbiB9O1xcbkBAIC01NjksNiArNTcwLDcgQEAgZW51bSBtbHg1X3BhZ2VfbWd0X21vZGUge1xcbiB9O1xcbiBcXG4gc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scztcXG4rc3RydWN0IG1seDVfZG1hX3Bvb2w7XFxuIHN0cnVjdCBtbHg1X2Z0X3Bvb2w7XFxuIHN0cnVjdCBtbHg1X3ByaXYge1xcbiBcXHQvKiBJUlEgdGFibGUgdmFsaWQgb25seSBmb3IgcmVhbCBwY2kgZGV2aWNlcyBQRiBvciBWRiAqL1xcbkBAIC01OTgsMTAgKzYwMCw4IEBAIHN0cnVjdCBtbHg1X3ByaXYge1xcbiBcXHRzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBhbGxvY19tdXRleDtcXG4gXFx0aW50ICAgICAgICAgICAgICAgICAgICAgbnVtYV9ub2RlO1xcbiBcXG4tXFx0c3RydWN0IG11dGV4ICAgICAgICAgICAgcGdkaXJfbXV0ZXg7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBnZGlyX2xpc3Q7XFxuLVxcbiBcXHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICoqZnJhZ19idWZfbm9kZV9wb29scztcXG4rXFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKipkYl9ub2RlX3Bvb2xzO1xcbiBcXHQvKiBlbmQ6IGFsbG9jIHN0dWZmICovXFxuIFxcbiBcXHRzdHJ1Y3QgbWx4NV9hZGV2ICAgICAgICoqYWRldjtcXG5AQCAtODA2LDcgKzgwNiw3IEBAIHN0cnVjdCBtbHg1X2NvcmVfZGV2IHtcXG4gc3RydWN0IG1seDVfZGIge1xcbiBcXHRfX2JlMzJcXHRcXHRcXHQqZGI7XFxuIFxcdHVuaW9uIHtcXG4tXFx0XFx0c3RydWN0IG1seDVfZGJfcGdkaXJcXHRcXHQqcGdkaXI7XFxuK1xcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2VcXHQqcG9vbF9wYWdlO1xcbiBcXHRcXHRzdHJ1Y3QgbWx4NV9pYl91c2VyX2RiX3BhZ2VcXHQqdXNlcl9wYWdlO1xcbiBcXHR9XFx0XFx0XFx0dTtcXG4gXFx0ZG1hX2FkZHJfdFxcdFxcdGRtYTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzE6MjQuNTAzNjI1ODQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI0MjkyNjgyNjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1MWDVfQ09SRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1seDVfZGJfcG9vbHNfaW5pdFwiLFxuICAgIFwibWx4NV9kYl9wb29sc19jbGVhbnVwXCIsXG4gICAgXCJtbHg1X2RiX2FsbG9jX25vZGVcIixcbiAgICBcIm1seDVfZGJfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIG1seDUgY29yZSBkcml2ZXIsIHJlcGxhY2luZyBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeSB3aXRoIGEgRE1BIHBvb2wuIFRoaXMgYWZmZWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLiBUaGUgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNzAzNDY2MDlhMzljMDNmYzczYWM1MzdmYWJiYWRmNDE0ODBiZTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTE6MzE6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXG5pbmRleCA0ZmU5ZDdkNGYxNDM4ZS4uNjBmZjQxMzk5OWY3NTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcbkBAIC00OCwxMyArNDgsNiBAQFxuICNkZWZpbmUgTUxYNV9GUkFHX0JVRl9QT09MU19OVU0gXFxcbiBcdChQQUdFX1NISUZUIC0gTUxYNV9GUkFHX0JVRl9QT09MX01JTl9CTE9DS19TSElGVCArIDEpXG4gXG4tc3RydWN0IG1seDVfZGJfcGdkaXIge1xuLVx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbi1cdHVuc2lnbmVkIGxvbmdcdCAgICAgICAqYml0bWFwO1xuLVx0X19iZTMyXHRcdCAgICAgICAqZGJfcGFnZTtcbi1cdGRtYV9hZGRyX3RcdFx0ZGJfZG1hO1xuLX07XG4tXG4gc3RydWN0IG1seDVfZG1hX3Bvb2wge1xuIFx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXG4gXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbkBAIC00NDQsMTA2ICs0MzcsMTAzIEBAIHZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZnJhZ19idWZfZnJlZSk7XG4gXG4tc3RhdGljIHN0cnVjdCBtbHg1X2RiX3BnZGlyICptbHg1X2FsbG9jX2RiX3BnZGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG4tXHRcdFx0XHRcdFx0IGludCBub2RlKVxuK3N0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcbiB7XG4tXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcbi1cdHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcjtcbitcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG4rXHRpbnQgbm9kZTtcbiBcbi1cdHBnZGlyID0ga3phbGxvY19ub2RlKHNpemVvZigqcGdkaXIpLCBHRlBfS0VSTkVMLCBub2RlKTtcbi1cdGlmICghcGdkaXIpXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XG4gXG4tXHRwZ2Rpci1cdTAwM2ViaXRtYXAgPSBiaXRtYXBfemFsbG9jX25vZGUoZGJfcGVyX3BhZ2UsIEdGUF9LRVJORUwsIG5vZGUpO1xuLVx0aWYgKCFwZ2Rpci1cdTAwM2ViaXRtYXApIHtcbi1cdFx0a2ZyZWUocGdkaXIpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdH1cbitcdGlmICghZGV2LVx1MDAzZXByaXYuZGJfbm9kZV9wb29scylcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHRiaXRtYXBfZmlsbChwZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKTtcbitcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuK1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG4gXG4tXHRwZ2Rpci1cdTAwM2VkYl9wYWdlID0gbWx4NV9kbWFfemFsbG9jX2NvaGVyZW50X25vZGUoZGV2LCBQQUdFX1NJWkUsXG4tXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBnZGlyLVx1MDAzZWRiX2RtYSwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyLVx1MDAzZWRiX3BhZ2UpIHtcbi1cdFx0Yml0bWFwX2ZyZWUocGdkaXItXHUwMDNlYml0bWFwKTtcbi1cdFx0a2ZyZWUocGdkaXIpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0aWYgKCFwb29sKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XG4gXHR9XG4gXG4tXHRyZXR1cm4gcGdkaXI7XG4rXHRyZXR1cm4gMDtcbiB9XG4rREVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnMpO1xuIFxuLXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2Rpcixcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG4rdm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbiB7XG4tXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcbi1cdGludCBvZmZzZXQ7XG4tXHRpbnQgaTtcbitcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcHJpdjtcbitcdGludCBub2RlO1xuK1xuK1x0ZGVidWdmc19yZW1vdmUocHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMpO1xuK1x0cHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPSBOVUxMO1xuK1xuK1x0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKVxuK1x0XHRpZiAocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKVxuK1x0XHRcdG1seDVfZG1hX3Bvb2xfZGVzdHJveShwcml2LVx1MDAzZWRiX25vZGVfcG9vbHNbbm9kZV0pO1xuK1xuK1x0a2ZyZWUocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzKTtcbitcdHByaXYtXHUwMDNlZGJfbm9kZV9wb29scyA9IE5VTEw7XG4rfVxuK1xuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbit7XG4rXHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG4rXHRpbnQgbm9kZTtcbiBcbi1cdGkgPSBmaW5kX2ZpcnN0X2JpdChwZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKTtcbi1cdGlmIChpIFx1MDAzZT0gZGJfcGVyX3BhZ2UpXG4rXHRwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMgPSBremFsbG9jX29ianMoKnByaXYtXHUwMDNlZGJfbm9kZV9wb29scywgbnJfbm9kZV9pZHMpO1xuK1x0aWYgKCFwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0X19jbGVhcl9iaXQoaSwgcGdkaXItXHUwMDNlYml0bWFwKTtcbitcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuK1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbiBcbi1cdGRiLVx1MDAzZXUucGdkaXIgPSBwZ2Rpcjtcbi1cdGRiLVx1MDAzZWluZGV4ICAgPSBpO1xuLVx0b2Zmc2V0ID0gZGItXHUwMDNlaW5kZXggKiBjYWNoZV9saW5lX3NpemUoKTtcbi1cdGRiLVx1MDAzZWRiICAgICAgPSBwZ2Rpci1cdTAwM2VkYl9wYWdlICsgb2Zmc2V0IC8gc2l6ZW9mKCpwZ2Rpci1cdTAwM2VkYl9wYWdlKTtcbi1cdGRiLVx1MDAzZWRtYSAgICAgPSBwZ2Rpci1cdTAwM2VkYl9kbWEgICsgb2Zmc2V0O1xuK1x0XHRwb29sID0gbWx4NV9kbWFfcG9vbF9jcmVhdGUoZGV2LCBub2RlLFxuK1x0XHRcdFx0XHQgICAgb3JkZXJfYmFzZV8yKGNhY2hlX2xpbmVfc2l6ZSgpKSk7XG4rXHRcdGlmICghcG9vbCkge1xuK1x0XHRcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHR9XG4rXHRcdHByaXYtXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSA9IHBvb2w7XG4rXHR9XG4gXG4tXHRkYi1cdTAwM2VkYlswXSA9IDA7XG4tXHRkYi1cdTAwM2VkYlsxXSA9IDA7XG4rXHRwcml2LVx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyA9XG4rXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkYl9kbWFfcG9vbHNcIiwgMDQ0NCwgcHJpdi1cdTAwM2VkYmcuZGJnX3Jvb3QsXG4rXHRcdFx0XHQgICAgZGV2LCBcdTAwMjZtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzX2ZvcHMpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcbiB7XG4tXHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XG4tXHRpbnQgcmV0ID0gMDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuLVxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShwZ2RpciwgXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbGlzdCwgbGlzdClcbi1cdFx0aWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSlcbi1cdFx0XHRnb3RvIG91dDtcbi1cbi1cdHBnZGlyID0gbWx4NV9hbGxvY19kYl9wZ2RpcihkZXYsIG5vZGUpO1xuLVx0aWYgKCFwZ2Rpcikge1xuLVx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbitcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG4rXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbitcdHVuc2lnbmVkIGxvbmcgaWR4O1xuK1x0aW50IG9mZnNldDtcbiBcbi1cdGxpc3RfYWRkKFx1MDAyNnBnZGlyLVx1MDAzZWxpc3QsIFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX2xpc3QpO1xuK1x0bm9kZSA9IG5vZGUgPT0gTlVNQV9OT19OT0RFID8gbnVtYV9tZW1faWQoKSA6IG5vZGU7XG4gXG4tXHQvKiBUaGlzIHNob3VsZCBuZXZlciBmYWlsIC0tIHdlIGp1c3QgYWxsb2NhdGVkIGFuIGVtcHR5IHBhZ2U6ICovXG4tXHRXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTtcbitcdHBvb2wgPSBkZXYtXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xuK1x0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXHUwMDI2aWR4KTtcbitcdGlmICghcGFnZSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX211dGV4KTtcbitcdG9mZnNldCA9IGlkeCBcdTAwM2NcdTAwM2MgcG9vbC1cdTAwM2VibG9ja19zaGlmdDtcbitcdGRiLVx1MDAzZXUucG9vbF9wYWdlID0gcGFnZTtcbitcdGRiLVx1MDAzZWluZGV4ID0gaWR4O1xuK1x0ZGItXHUwMDNlZGIgPSAoX19iZTMyICopKCh1OCAqKXBhZ2UtXHUwMDNlYnVmICsgb2Zmc2V0KTtcbitcdGRiLVx1MDAzZWRtYSA9IHBhZ2UtXHUwMDNlZG1hICsgb2Zmc2V0O1xuIFxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiAwO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2FsbG9jX25vZGUpO1xuIFxuIHZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcbiB7XG4tXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuLVxuLVx0X19zZXRfYml0KGRiLVx1MDAzZWluZGV4LCBkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWJpdG1hcCk7XG4tXG4tXHRpZiAoYml0bWFwX2Z1bGwoZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKSkge1xuLVx0XHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsXG4tXHRcdFx0XHQgIGRiLVx1MDAzZXUucGdkaXItXHUwMDNlZGJfcGFnZSwgZGItXHUwMDNldS5wZ2Rpci1cdTAwM2VkYl9kbWEpO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWxpc3QpO1xuLVx0XHRiaXRtYXBfZnJlZShkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWJpdG1hcCk7XG4tXHRcdGtmcmVlKGRiLVx1MDAzZXUucGdkaXIpO1xuLVx0fVxuK1x0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSA9IGRiLVx1MDAzZXUucG9vbF9wYWdlO1xuK1x0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLVx1MDAzZXBvb2w7XG4gXG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuK1x0bWx4NV9kbWFfcG9vbF9mcmVlKHBvb2wsIHBhZ2UsIGRiLVx1MDAzZWluZGV4KTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9mcmVlKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xuaW5kZXggNjQzYjRhYWMyMDMzNjguLjVmMjhkOTA2YzM1YjYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xuQEAgLTE4MTksOCArMTgxOSw2IEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxpc3QpO1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWFsbG9jX211dGV4KTtcbi1cdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4tXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZXBnZGlyX2xpc3QpO1xuIFxuIFx0cHJpdi1cdTAwM2VudW1hX25vZGUgPSBkZXZfdG9fbm9kZShtbHg1X2NvcmVfZG1hX2RldihkZXYpKTtcbiBcdHByaXYtXHUwMDNlZGJnLmRiZ19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGRldi1cdTAwM2VkZXZpY2UpLFxuQEAgLTE4MzAsNiArMTgyOCwxMCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDtcbiBcbitcdGVyciA9IG1seDVfZGJfcG9vbHNfaW5pdChkZXYpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfZGJfcG9vbHNfaW5pdDtcbitcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNldHJhcHMpO1xuIFxuIFx0ZXJyID0gbWx4NV9jbWRfaW5pdChkZXYpO1xuQEAgLTE4OTEsMTAgKzE4OTMsMTEgQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbiBlcnJfdGltZW91dF9pbml0OlxuIFx0bWx4NV9jbWRfY2xlYW51cChkZXYpO1xuIGVycl9jbWRfaW5pdDpcbitcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuK2Vycl9kYl9wb29sc19pbml0OlxuIFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG4gZXJyX2ZyYWdfYnVmX3Bvb2xzX2luaXQ6XG4gXHRkZWJ1Z2ZzX3JlbW92ZShkZXYtXHUwMDNlcHJpdi5kYmcuZGJnX3Jvb3QpO1xuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZXBnZGlyX211dGV4KTtcbiBcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VhbGxvY19tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLnJlZ19oZWFkLmxvY2spO1xuQEAgLTE5MTcsOSArMTkyMCw5IEBAIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuIFx0bWx4NV9oZWFsdGhfY2xlYW51cChkZXYpO1xuIFx0bWx4NV90b3V0X2NsZWFudXAoZGV2KTtcbiBcdG1seDVfY21kX2NsZWFudXAoZGV2KTtcbitcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuIFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGV2LVx1MDAzZXByaXYuZGJnLmRiZ19yb290KTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmhcbmluZGV4IDA5ZTY2OWY4M2RiYTc2Li5kNjcxM2EyY2U2NzY5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oXG5AQCAtNDM4LDYgKzQzOCw4IEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpO1xuIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiBpbnQgbWx4NV9mcmFnX2J1Zl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuIHZvaWQgbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4rdm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gdm9pZCBtbHg1X3VuaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXG5pbmRleCBiMTg3MWMwODIxZDBiOS4uODNkMGE4M2JiZmJjYWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaFxuQEAgLTU0OCw2ICs1NDgsNyBAQCBzdHJ1Y3QgbWx4NV9kZWJ1Z2ZzX2VudHJpZXMge1xuIFx0c3RydWN0IGRlbnRyeSAqY3FfZGVidWdmcztcbiBcdHN0cnVjdCBkZW50cnkgKmNtZGlmX2RlYnVnZnM7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpmcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmcztcbitcdHN0cnVjdCBkZW50cnkgKmRiX2RtYV9wb29sc19kZWJ1Z2ZzO1xuIFx0c3RydWN0IGRlbnRyeSAqcGFnZXNfZGVidWdmcztcbiBcdHN0cnVjdCBkZW50cnkgKmxhZ19kZWJ1Z2ZzO1xuIH07XG5AQCAtNTY5LDYgKzU3MCw3IEBAIGVudW0gbWx4NV9wYWdlX21ndF9tb2RlIHtcbiB9O1xuIFxuIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHM7XG4rc3RydWN0IG1seDVfZG1hX3Bvb2w7XG4gc3RydWN0IG1seDVfZnRfcG9vbDtcbiBzdHJ1Y3QgbWx4NV9wcml2IHtcbiBcdC8qIElSUSB0YWJsZSB2YWxpZCBvbmx5IGZvciByZWFsIHBjaSBkZXZpY2VzIFBGIG9yIFZGICovXG5AQCAtNTk4LDEwICs2MDAsOCBAQCBzdHJ1Y3QgbWx4NV9wcml2IHtcbiBcdHN0cnVjdCBtdXRleCAgICAgICAgICAgIGFsbG9jX211dGV4O1xuIFx0aW50ICAgICAgICAgICAgICAgICAgICAgbnVtYV9ub2RlO1xuIFxuLVx0c3RydWN0IG11dGV4ICAgICAgICAgICAgcGdkaXJfbXV0ZXg7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBwZ2Rpcl9saXN0O1xuLVxuIFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqKmZyYWdfYnVmX25vZGVfcG9vbHM7XG4rXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqKmRiX25vZGVfcG9vbHM7XG4gXHQvKiBlbmQ6IGFsbG9jIHN0dWZmICovXG4gXG4gXHRzdHJ1Y3QgbWx4NV9hZGV2ICAgICAgICoqYWRldjtcbkBAIC04MDYsNyArODA2LDcgQEAgc3RydWN0IG1seDVfY29yZV9kZXYge1xuIHN0cnVjdCBtbHg1X2RiIHtcbiBcdF9fYmUzMlx0XHRcdCpkYjtcbiBcdHVuaW9uIHtcbi1cdFx0c3RydWN0IG1seDVfZGJfcGdkaXJcdFx0KnBnZGlyO1xuK1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlXHQqcG9vbF9wYWdlO1xuIFx0XHRzdHJ1Y3QgbWx4NV9pYl91c2VyX2RiX3BhZ2VcdCp1c2VyX3BhZ2U7XG4gXHR9XHRcdFx0dTtcbiBcdGRtYV9hZGRyX3RcdFx0ZG1hO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzE6MjQuNTAzNjI3Mjg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU0Mzc3MjE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE1lbGxhbm94IENvbm5lY3RYLTUgRHJpdmVyIFBhdGNoIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gaW4gdGhlIE1lbGxhbm94IENvbm5lY3RYLTUgKG1seDUpIGRyaXZlci4gSXQgc2VlbXMgbGlrZSBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UsIHN3YXBwaW5nIGBtbHg1X2RiX3BnZGlyYCB3aXRoIGBtbHg1X2RtYV9wb29sYCBmb3IgdGhvc2UgYWxsb2NhdGlvbnMgYW5kIGFkZGluZyBpbml0aWFsaXphdGlvbi9jbGVhbnVwIGZ1bmN0aW9ucyBmb3IgZG9vcmJlbGwgcG9vbHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiByZWFjaGVkIGluIHRoZSBlbnZpcm9ubWVudHMgd2UgdXN1YWxseSB0ZXN0LCBlc3BlY2lhbGx5IHZpcnR1YWxpemVkIG9uZXMgbGlrZSBHQ0Ugb3IgUUVNVT9cblxuTWVsbGFub3ggbWx4NSBpcyBhIFBDSSBkZXZpY2UgZHJpdmVyLCByaWdodD8gSW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIHNldHVwLCB5b3UncmUgbm90IGdvaW5nIHRvIHNlZSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSBhcmUgZW11bGF0ZWQgb3IsIGluIHNvbWUgY2FzZXMsIHBhc3NlZCB0aHJvdWdoLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBvdXIgZnV6emluZyBzZXR1cCBldmVuICp0cnkqIHRvIHJlYWNoIHRoaXM/IFN5emthbGxlciBoYXMgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgdmlhIHZoY2kgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBtbHg1IGlzIHR5cGljYWxseSBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLlxuXG5JIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIG1seDUgb3IgYW55IG1lbnRpb25zIG9mIGl0IGJlaW5nIHJlYWNoYWJsZS4gU3l6a2FsbGVyIGNhbiBmdXp6IFBDSSBkZXZpY2VzIGlmIGl0IGxldmVyYWdlcyB0aGUgUENJIGZ1enppbmcgc3Vic3lzdGVtLCBidXQgd2Ugb25seSBmdXp6IHRoaW5ncyB0aGF0IGFyZSAqcmVhY2hhYmxlKiwgc28gdGhpcyBpcyBhIGNydWNpYWwgcG9pbnQuXG5cbldhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zLCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBTbywgaXMgbWx4NSAqZW11bGF0ZWQqIGluIFFFTVU/IE5vLCBkZWZpbml0ZWx5IG5vdCBuYXRpdmVseS4gUUVNVSBlbXVsYXRlcyBvdGhlciBuZXR3b3JrIGRldmljZXMsIGxpa2UgZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQsIGFuZCB2bXhuZXQzLCBidXQgbm90IG1seDUuIEkgcmVjYWxsIFFFTVUgaGF2aW5nIHNvbWUgc3VwcG9ydCBmb3IgUkRNQSBkZXZpY2VzLCBsaWtlIHB2cmRtYSwgYnV0IG5vdCBtbHg1LlxuXG5BbHJpZ2h0LCBzbyBpZiBub3QgUUVNVSBlbXVsYXRpb24sIHdoYXQgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsPyBJcyB0aGVyZSBhbnl0aGluZz8gTm8uIG1seDUgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNZWxsYW5veCBDb25uZWN0WC00LzUvNi83LiBXYWl0LCB0aGVyZSdzIGBuZXRkZXZzaW1gLCBidXQgaXQncyB1bnJlbGF0ZWQgdG8gbWx4NS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGlmIGBtbHg1YCBpcyBldmVuIHByb2JlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gR2VuZXJhbGx5LCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIHdpdGhvdXQgZW11bGF0aW9uIGFyZSBub3QgcmVhY2hhYmxlLiBUaGUgcHJpbWFyeSB0aGluZyB0byBkbyBub3cgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYG1seDVfZGJfYWxsb2Nfbm9kZWAgY2FuIGJlIHJlYWNoZWQuIEkgaGF2ZSB0byBsb29rIGludG8gdGhpcyBtb3JlIGRlZXBseSB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzE6MzQuMDQ3NDAyMjAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTc3MjI4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9kYl9hbGxvY19ub2RlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ3OT1pbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTA3OmludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTI4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mjk6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYz0zNz1pbnQgbWx4NV93cV9jeWNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93cV9wYXJhbSAqcGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzo0NjpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNndxX2N0cmwtXFx1MDAzZWRiLCBwYXJhbS1cXHUwMDNlZGJfbnVtYV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy00Ny1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6NDg6XFx0XFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXFxcIm1seDVfZGJfYWxsb2Nfbm9kZSgpIGZhaWxlZCwgJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtNDktXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTk5PWludCBtbHg1X3dxX3FwX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjExMzpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNndxX2N0cmwtXFx1MDAzZWRiLCBwYXJhbS1cXHUwMDNlZGJfbnVtYV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xMTQtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjExNTpcXHRcXHRtbHg1X2NvcmVfd2FybihtZGV2LCBcXFwibWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xMTYtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTE1OT1pbnQgbWx4NV9jcXdxX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjE2ODpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNndxX2N0cmwtXFx1MDAzZWRiLCBwYXJhbS1cXHUwMDNlZGJfbnVtYV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xNjktXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjE3MDpcXHRcXHRtbHg1X2NvcmVfd2FybihtZGV2LCBcXFwibWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xNzEtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTIxMD1pbnQgbWx4NV93cV9sbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1X3dxX3BhcmFtICpwYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzoyMTk6XFx0ZXJyID0gbWx4NV9kYl9hbGxvY19ub2RlKG1kZXYsIFxcdTAwMjZ3cV9jdHJsLVxcdTAwM2VkYiwgcGFyYW0tXFx1MDAzZWRiX251bWFfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMjIwLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzoyMjE6XFx0XFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXFxcIm1seDVfZGJfYWxsb2Nfbm9kZSgpIGZhaWxlZCwgJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMjIyLVxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM9MTE3MD1zdGF0aWMgaW50IG1seDV2Zl9jcmVhdGVfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmMtMTE4My1cXHRuY3FlID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5jcWUpO1xcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYzoxMTg0OlxcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcXHUwMDI2Y3EtXFx1MDAzZWRiLCBtZGV2LVxcdTAwM2Vwcml2Lm51bWFfbm9kZSk7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTExODUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYz0xMjQxPW1seDV2Zl9jcmVhdGVfcmNfcXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmMtMTI1Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM6MTI1NzpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNnFwLVxcdTAwM2VkYiwgbWRldi1cXHUwMDNlcHJpdi5udW1hX25vZGUpO1xcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYy0xMjU4LVxcdGlmIChlcnIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTA3MD1pbnQgbWx4NV9jb3JlX2FjY2Vzc19yZWcoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqZGF0YV9pbixcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMDczLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMDc0OmludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMDc1LVxcdFxcdCAgICAgICBpbnQgbm9kZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTA3Nz1zdGF0aWMgaW5saW5lIGludCBtbHg1X2RiX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTA3OC17XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjEwNzk6XFx0cmV0dXJuIG1seDVfZGJfYWxsb2Nfbm9kZShkZXYsIGRiLCBkZXYtXFx1MDAzZXByaXYubnVtYV9ub2RlKTtcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTA4MC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjM2LjA2NTEzMTYxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTM4OTkwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgbWx4NSBFbXVsYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYG1seDVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVycyDigJMgdGhlIDQsIDUsIDYsIGFuZCA3IHNlcmllcy4gVGhlc2UgYXJlIGNvbXBsZXggcGllY2VzIG9mIGhhcmR3YXJlLCBhbmQgbXkgY3VycmVudCB0YXNrIGhhcyBtZSB3b25kZXJpbmcgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXM6IGRvZXMgYSB2aXJ0dWFsIGhhcmR3YXJlIGNvbnN0cnVjdCBvciBlbXVsYXRpb24gZXhpc3QgZm9yIHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSdzIHNvbWV0aGluZyBsaWtlIGEgYHZoY2lgIGVxdWl2YWxlbnQgb3IgYSBzaW1pbGFyIGFwcHJvYWNoIGF2YWlsYWJsZSBmb3IgdGVzdGluZyBvciBkZXZlbG9wbWVudCBzY2VuYXJpb3Mgd2hlcmUgdGhlIGFjdHVhbCBoYXJkd2FyZSBpc24ndCBhY2Nlc3NpYmxlLiBJJ2xsIG5lZWQgdG8gcmVzZWFyY2ggdG8gZGlzY292ZXIgYW55IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgxMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjM5LjQ3OTAzMjc2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTEyODU4MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY29yZV9kZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNDAxNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0yND1zdHJ1Y3QgbWx4NWN0bF9kZXYge1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMjUtXFx0c3RydWN0IGZ3Y3RsX2RldmljZSBmd2N0bDtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jOjI2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMjctfTtcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MTE2PXN0YXRpYyB2b2lkIG1seDVjdGxfcmVsZWFzZV91aWQoc3RydWN0IG1seDVjdGxfZGV2ICptY2RldiwgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMTE4LVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKGRlc3Ryb3lfdWN0eF9pbildID0ge307XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzoxMTk6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtY2Rldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTEyMC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0zNzA9c3RhdGljIGludCBtbHg1Y3RsX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0zNzQtXFx0c3RydWN0IG1seDVfYWRldiAqbWFkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzozNzU6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtYWRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTM3Ni1cXHRzdHJ1Y3QgbWx4NWN0bF9kZXYgKm1jZGV2IF9fZnJlZShtbHg1Y3RsKSA9IGZ3Y3RsX2FsbG9jX2RldmljZShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jPTg9aW50IG1seDVyX2NtZF9xdWVyeV9zcGVjaWFsX21rZXlzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNDQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NDU6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTQ2LVxcdFxcdFxcdCAgICAgICB2b2lkICpvdXQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo1Nzp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXJuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTU4LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTY2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjY3OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpc24sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNjgte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNzYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6Nzc6aW50IG1seDVfY21kX2Rlc3Ryb3lfcnF0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBycXRuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjg3OmludCBtbHg1X2NtZF9hbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg4LVxcdFxcdFxcdFxcdCAgICB1MTYgdWlkKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTA1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEwNjp2b2lkIG1seDVfY21kX2RlYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEwNy1cXHRcXHRcXHRcXHQgICAgICAgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTExNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMTg6aW50IG1seDVfY21kX2RlYWxsb2NfcGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHBkbiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTkte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTI3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEyODppbnQgbWx4NV9jbWRfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTI5LVxcdFxcdFxcdHUzMiBxcG4sIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTQyOmludCBtbHg1X2NtZF9kZXRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDMtXFx0XFx0XFx0dTMyIHFwbiwgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE1NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNTY6aW50IG1seDVfY21kX3hyY2RfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp4cmNkbiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTcte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTY5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE3MDppbnQgbWx4NV9jbWRfeHJjZF9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB4cmNkbiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNzEte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM9MTgwPWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MjIzOmludCBtbHg1X2NtZF91YXJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp1YXJuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MjM5OmludCBtbHg1X2NtZF91YXJfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdWFybiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNDAte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjQ4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjI0OTppbnQgbWx4NV9jbWRfcXVlcnlfdnVpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBib29sIGRhdGFfZGlyZWN0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI1MC1cXHRcXHRcXHRjaGFyICpvdXRfdnVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oPTQwPWludCBtbHg1cl9jbWRfcXVlcnlfc3BlY2lhbF9ta2V5cyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDE6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTQyLVxcdFxcdFxcdCAgICAgICB2b2lkICpvdXQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQzOmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ0OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpcm4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ1OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpc24sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ2OmludCBtbHg1X2NtZF9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcnF0biwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDc6aW50IG1seDVfY21kX2FsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp0ZG4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNDgtXFx0XFx0XFx0XFx0ICAgIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ5OnZvaWQgbWx4NV9jbWRfZGVhbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0ZG4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTAtXFx0XFx0XFx0XFx0ICAgICAgIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjUxOmludCBtbHg1X2NtZF9hdHRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01Mi1cXHRcXHRcXHR1MzIgcXBuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1MzppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTQtXFx0XFx0XFx0dTMyIHFwbiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTU6aW50IG1seDVfY21kX3hyY2RfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp4cmNkbiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTY6aW50IG1seDVfY21kX3hyY2RfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgeHJjZG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU3LWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTgtXFx0XFx0ICAgICB1MTYgb3Btb2QsIHU4IHBvcnQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU5OmludCBtbHg1X2NtZF91YXJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp1YXJuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo2MDppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjYxOmludCBtbHg1X2NtZF9xdWVyeV92dWlkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGJvb2wgZGF0YV9kaXJlY3QsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNjItXFx0XFx0XFx0Y2hhciAqb3V0X3Z1aWQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTI5Mj1zdGF0aWMgaW50IG1seDVfaWJfZ2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTI5OS1cXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM6MzAwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMDEtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9MzI5PXN0YXRpYyBpbnQgbWx4NV9pYl9zZXRfY2NfcGFyYW1zKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtMzM1LVxcdGVudW0gbWx4NV9pYl9jb25nX25vZGVfdHlwZSBub2RlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzozMzY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNy1cXHR1MzIgYXR0cl9tYXNrID0gMDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYz00MzQ9dm9pZCBtbHg1X2liX2luaXRfY29uZ19kZWJ1Z2ZzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0pXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtNDM2LVxcdHN0cnVjdCBtbHg1X2liX2RiZ19jY19wYXJhbXMgKmRiZ19jY19wYXJhbXM7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjQzNzpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtNDM4LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0yODg9bWx4NV9pYl9hbGxvY19od19wb3J0X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydF9udW0pXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTI5NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjI5NjpzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVycyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTI5Ny1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG1seDVfaWJfY291bnRlcnMgKmNudHMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jPTM1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVyc192cG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzU3LVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKHF1ZXJ5X3FfY291bnRlcl9pbildID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzozNTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zNTktXFx0X19iZTMyIHZhbDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mzg3PXN0YXRpYyBpbnQgZG9fZ2V0X2h3X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTItXFx0Y29uc3Qgc3RydWN0IG1seDVfaWJfY291bnRlcnMgKmNudHMgPSBnZXRfY291bnRlcnMoZGV2LCBwb3J0X251bSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzozOTM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTQtXFx0aW50IHJldCwgbnVtX2NvdW50ZXJzO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02MTE9aW50IG1seDVfaWJfcG9sbF9jcShzdHJ1Y3QgaWJfY3EgKmliY3EsIGludCBudW1fZW50cmllcywgc3RydWN0IGliX3djICp3YylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihjcS1cXHUwMDNlaWJjcS5kZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjE2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE3LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jPTY0OD1pbnQgbWx4NV9pYl9hcm1fY3Eoc3RydWN0IGliX2NxICppYmNxLCBlbnVtIGliX2NxX25vdGlmeV9mbGFncyBmbGFncylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTY0OS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYzo2NTA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSB0b19tZGV2KGliY3EtXFx1MDAzZWRldmljZSktXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYy02NTEtXFx0c3RydWN0IG1seDVfaWJfY3EgKmNxID0gdG9fbWNxKGliY3EpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTEwNz1zdHJ1Y3QgZGV2eF91bWVtIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTA4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2XFx0XFx0Km1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTEwOS1cXHRzdHJ1Y3QgaWJfdW1lbVxcdFxcdFxcdCp1bWVtO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTIwMDU9c3RhdGljIGJvb2wgaXNfdmFsaWRfZXZlbnRzX2xlZ2FjeShpbnQgbnVtX2V2ZW50cywgdTE2ICpldmVudF90eXBlX251bV9saXN0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjMtI2RlZmluZSBNQVhfU1VQUF9FVkVOVF9OVU0gMjU1XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjIwMjQ6c3RhdGljIGJvb2wgaXNfdmFsaWRfZXZlbnRzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjUtXFx0XFx0XFx0ICAgIGludCBudW1fZXZlbnRzLCB1MTYgKmV2ZW50X3R5cGVfbnVtX2xpc3QsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjQ1MT1zdGF0aWMgaW50IGRldnhfdW1lbV9jbGVhbnVwKHN0cnVjdCBpYl91b2JqZWN0ICp1b2JqZWN0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjI0Njg6c3RhdGljIGJvb2wgaXNfdW5hZmZpbGlhdGVkX2V2ZW50KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjktXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGV2ZW50X3R5cGUpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyPXN0YXRpYyBpbnQgbWx4NV9jbWRfYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCAqYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTQte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTU6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xNi1cXHR1NjQgbnVtX21lbWljX2h3X3BhZ2VzID0gTUxYNV9DQVBfREVWX01FTShkZXYsIG1lbWljX2Jhcl9zaXplKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz04Nz12b2lkIG1seDVfY21kX2RlYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCBhZGRyLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy04OS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo5MDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXFx1MDAzZWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTkxLVxcdHU2NCBod19zdGFydF9hZGRyID0gTUxYNV9DQVA2NF9ERVZfTUVNKGRldiwgbWVtaWNfYmFyX3N0YXJ0X2FkZHIpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMTQ9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTE3LVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMTktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyOD1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTMyLVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMzM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMzQtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MzUyPXN0YXRpYyBzdHJ1Y3QgaWJfZG0gKmhhbmRsZV9hbGxvY19kbV9zd19pY20oc3RydWN0IGliX3Vjb250ZXh0ICpjdHgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1Ni17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzozNTc6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IHRvX21kZXYoY3R4LVxcdTAwM2VkZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMzU4LVxcdGVudW0gbWx4NV9zd19pY21fdHlwZSBpY21fdHlwZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9NDcwPXN0YXRpYyBpbnQgbWx4NV9kbV9pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9pYl91Y29udGV4dCAqY3R4LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy00NzMtXFx0ZW51bSBtbHg1X3N3X2ljbV90eXBlIHR5cGUgPSBnZXRfaWNtX3R5cGUoZG0tXFx1MDAzZWJhc2UudHlwZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo0NzQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IHRvX21kZXYoZG0tXFx1MDAzZWJhc2UuaWJkbS5kZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtNDc1LVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9MTM9c3RhdGljIGludCBtbHg1X2liX2FsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjE2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXFx1MDAzZWRldmljZSktXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTE3LVxcdHN0cnVjdCBtbHg1X2liX2RtYWggKmRtYWggPSB0b19tZG1haChpYmRtYWgpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00Mi1cXHRzdHJ1Y3QgbWx4NV9pYl9kbWFoICpkbWFoID0gdG9fbWRtYWgoaWJkbWFoKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSB0b19tZGV2KGliZG1haC1cXHUwMDNlZGV2aWNlKS1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDQtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE0OT1pbnQgcGFyc2VfZmxvd19mbG93X2FjdGlvbihzdHJ1Y3QgbWx4NV9pYl9mbG93X2FjdGlvbiAqbWFjdGlvbixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg5OnN0YXRpYyBpbnQgcGFyc2VfZmxvd19hdHRyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkwLVxcdFxcdFxcdCAgIHN0cnVjdCBtbHg1X2Zsb3dfc3BlYyAqc3BlYyxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9NTQ3PXN0YXRpYyBib29sIGZsb3dfaXNfbXVsdGljYXN0X29ubHkoY29uc3Qgc3RydWN0IGliX2Zsb3dfYXR0ciAqaWJfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNTc2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NTc3OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V0aGVydHlwZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTU3OC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGliX2Zsb3dfYXR0ciAqZmxvd19hdHRyLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzo2MjY6c3RhdGljIGJvb2wgaXNfdmFsaWRfYXR0cihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTYyNy1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9MTg3Mj1zdGF0aWMgaW50IG1seDVfaWJfZmlsbF90cmFuc3BvcnRfbnNfaW5mbyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3NS1cXHRcXHRcXHRcXHRcXHQgIHUxNiAqdnBvcnQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODc2OlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfY29yZV9kZXYgKipmdF9tZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3Ny1cXHRcXHRcXHRcXHRcXHQgIHUzMiBpYl9wb3J0LCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3OC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODc5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICplc3dfbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4ODAtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE5MDg9X2dldF9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MTYgdXNlcl9wcmlvcml0eSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkxMS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxOTEyOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpmdF9tZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkxMy1cXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlX2F0dHIgZnRfYXR0ciA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE9c3RhdGljIGludFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyOm1seDVfaWJfc2V0X3Zwb3J0X3JlcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEzOlxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpyZXBfZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTE0LVxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo0MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDQ6c3RhdGljIHZvaWQgbWx4NV9pYl9udW1fcG9ydHNfdXBkYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqbnVtX3BvcnRzKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQ1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo0NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy01OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo2MDpzdGF0aWMgaW50IG1seDVfaWJfc2V0X293bmVyX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqY3VyX293bmVyLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjYxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpuZXdfb3duZXIpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNjIte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtODgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6ODk6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWxlYXNlX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTkwLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo5MTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTItXFx0aW50IGksIHJldDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTk5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEwMDpzdGF0aWMgaW50IG1seDVfaWJfdGFrZV90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMDEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEwMjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAzLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjExODptbHg1X2liX3Zwb3J0X3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTE5LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjAtXFx0dTMyIG51bV9wb3J0cyA9IG1seDVfZXN3aXRjaF9nZXRfdG90YWxfdnBvcnRzKGRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTIxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpsYWdfbWFzdGVyID0gZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyMi1cXHRjb25zdCBzdHJ1Y3QgbWx4NV9pYl9wcm9maWxlICpwcm9maWxlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMzpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTI0LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXY7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0yMjE9bWx4NV9pYl92cG9ydF9yZXBfdW5sb2FkKHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjIyLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyMjM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtbHg1X2Vzd2l0Y2hfZ2V0X2NvcmVfZGV2KHJlcC1cXHUwMDNlZXN3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yMjQtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSBtbHg1X2liX3JlcF90b19kZXYocmVwKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI2MS1cXHRcXHRpZiAobWx4NV9sYWdfaXNfc2hhcmVkX2ZkYihtZGV2KSkge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI2MjpcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI2My1cXHRcXHRcXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0yNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwX29wcyByZXBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yODMte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4NDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4NS1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0zMTk9c3RhdGljIGludCBtbHg1cl9yZXBfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjItXFx0c3RydWN0IG1seDVfYWRldiAqaWRldiA9IGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgbWx4NV9hZGV2LCBhZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzozMjM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMyNC1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0zMzE9c3RhdGljIHZvaWQgbWx4NXJfcmVwX3JlbW92ZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMzMy1cXHRzdHJ1Y3QgbWx4NV9hZGV2ICppZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjMzNDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGlkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzM1LVxcdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz01MD1pbnQgbWx4NV9pYl9nZXRfdmZfY29uZmlnKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01My1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6NTQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTU1LVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICpyZXA7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9OTI9aW50IG1seDVfaWJfc2V0X3ZmX2xpbmtfc3RhdGUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjk2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy05Ny1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTIwPWludCBtbHg1X2liX2dldF92Zl9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xMjMtXFx0aW50IG91dF9zeiA9IE1MWDVfU1RfU1pfQllURVMocXVlcnlfdnBvcnRfY291bnRlcl9vdXQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxMjQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTEyNS1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNTE9c3RhdGljIGludCBzZXRfdmZfbm9kZV9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNTQtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjE1NTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU2LVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNzU9c3RhdGljIGludCBzZXRfdmZfcG9ydF9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNzgtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjE3OTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTgwLVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0yMTA9aW50IG1seDVfaWJfZ2V0X3ZmX2d1aWQoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTIxNC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MjE1OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0yMTYtXFx0c3RydWN0IG1seDVfdmZfY29udGV4dCAqdmZzX2N0eCA9IG1kZXYtXFx1MDAzZXByaXYuc3Jpb3YudmZzX2N0eDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jPTE1MD1zdGF0aWMgdm9pZCBwbWFfY250X2V4dF9hc3NpZ25fcHBjbnQoc3RydWN0IGliX3BtYV9wb3J0Y291bnRlcnNfZXh0ICpjbnRfZXh0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMTgwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjE4MTpzdGF0aWMgaW50IHF1ZXJ5X2liX3BwY250KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU4IHBvcnRfbnVtLCB1OCBwbGFuZV9udW0sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMTgyLVxcdFxcdFxcdCAgdm9pZCAqb3V0LCBzaXplX3Qgc3osIGJvb2wgZXh0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9MjA5PXN0YXRpYyBpbnQgcHJvY2Vzc19wbWFfY21kKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjIxMjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTMtXFx0Ym9vbCBuYXRpdmVfcG9ydCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz01OTc9aW50IG1seDVfcXVlcnlfbWFkX2lmY19wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTYwMC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjYwMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDItXFx0c3RydWN0IGliX3NtcCAqaW5fbWFkO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTIwNT1zdGF0aWMgaW50IG1seDVfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMTEtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmliX25kZXYgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoyMTI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIxMy1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzEyOnN0cnVjdCBtbHg1X2NvcmVfZGV2ICptbHg1X2liX2dldF9uYXRpdmVfcG9ydF9tZGV2KHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICB1MzIgaWJfcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzE3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgaWJfcG9ydF9udW0pO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTktXFx0c3RydWN0IG1seDVfaWJfbXVsdGlwb3J0X2luZm8gKm1waTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MzY9c3RhdGljIGludCBtbHg1X3F1ZXJ5X3BvcnRfcm9jZShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01NDAtXFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHB0eXNfcmVnKV0gPSB7MH07XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjU0MTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQyLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCAqdXBwZXI7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NzcyPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9zeXN0ZW1faW1hZ2VfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy03NzUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6Nzc2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy03NzctXFx0dTY0IHRtcDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz04MDQ9c3RhdGljIGludCBtbHg1X3F1ZXJ5X21heF9wa2V5cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04MDctXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6ODA4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04MDktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9ODc1PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9ub2RlX2Rlc2Moc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNoYXIgKm5vZGVfZGVzYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04ODgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjg4OTpzdGF0aWMgdm9pZCBmaWxsX2Vzd19tZ3JfcmVnX2MwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04OTAtXFx0XFx0XFx0XFx0c3RydWN0IG1seDVfaWJfcXVlcnlfZGV2aWNlX3Jlc3AgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9OTI5PXN0YXRpYyB1MzIgbWx4NV9pYl9jYWxjX21heF9xcF93cihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTMwLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTMxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05MzItXFx0dTMyIG1heF93cWVfYmJfdW5pdHMgPSAxIFxcdTAwM2NcXHUwMDNjIE1MWDVfQ0FQX0dFTihtZGV2LCBsb2dfbWF4X3FwX3N6KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz05NDU9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05NTAtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTUxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05NTItXFx0aW50IGVyciA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTQ2Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfaGNhX3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTQ2NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTQ2Ny1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE1NDI9aW50IG1seDVfaWJfcXVlcnlfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTU2Ni1cXHRcXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNTY3OlxcdFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNTY4LVxcdFxcdGJvb2wgcHV0X21kZXYgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE2MDM9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV9wb3J0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2Mjc6c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV92cG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTYyOC1cXHRcXHRcXHRcXHRcXHQgICAgICAgdTggb3BfbW9kLCB1MTYgdnBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX2JvbmQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY1Mi17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2NTM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTQtXFx0dTMyIGJvbmRfc3BlZWQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY3OT1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9yZXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjgyLVxcdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXA7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2ODM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2ODQtXFx0dTE2IG9wX21vZDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNzI2PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9naWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTcyOS1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNzMwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNzMxLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE3NDU9c3RhdGljIGludCBtbHg1X3F1ZXJ5X2hjYV9uaWNfcGtleShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTc0OC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNzQ5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNzUwLVxcdGJvb2wgcHV0X21kZXYgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE4MTY9c3RhdGljIGludCBzZXRfcG9ydF9jYXBzX2F0b21pYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLCB1MzIgbWFzayxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODE5LVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0IGN0eCA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxODIwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODIxLVxcdHUzMiBtZGV2X3BvcnRfbnVtO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE5NzM9c3RhdGljIHZvaWQgZGVhbGxvY2F0ZV91YXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE5ODYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE5ODc6c3RhdGljIGludCBtbHg1X2liX2VuYWJsZV9sYl9tcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWFzdGVyLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxOTg4OlxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTk4OS1cXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0ZSAqbGJfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjAwOC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjAwOTpzdGF0aWMgdm9pZCBtbHg1X2liX2Rpc2FibGVfbGJfbXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1hc3RlcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjAxMDpcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjAxMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2liX2xiX3N0YXRlICpsYl9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zMjUxPXN0YXRpYyB2b2lkIG1seDVfaWJfc3RhZ2Vfc3lzX2Vycm9yX25vdGlmaWVyX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzI1NjpzdGF0aWMgaW50IG1seDVfaWJfZ2V0X3BsYW5lX251bShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggKm51bV9wbGFuZSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1Ny17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzQ3Nz1tbHg1X2liX2NyZWF0ZV9kYXRhX2RpcmVjdF9yZXNvdXJjZXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ3OS1cXHRpbnQgaW5sZW4gPSBNTFg1X1NUX1NaX0JZVEVTKGNyZWF0ZV9ta2V5X2luKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzQ4MDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ4MS1cXHRib29sIHJvX3N1cHAgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNjU3PXN0YXRpYyBpbnQgbGFnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzY2MC1cXHRcXHRcXHRcXHRcXHQgICAgICAgbGFnX2V2ZW50cyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM2NjE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM2NjItXFx0c3RydWN0IGliX2RldmljZSAqaWJkZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VpYl9kZXY7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzcxOD1zdGF0aWMgaW50IG1seDVfZXRoX2xhZ19pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjAtXFx0c3RydWN0IG1seDVfZmxvd190YWJsZV9hdHRyIGZ0X2F0dHIgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzcyMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzcyMi1cXHRzdHJ1Y3QgbWx4NV9mbG93X25hbWVzcGFjZSAqbnM7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9Mzc1MT1zdGF0aWMgdm9pZCBtbHg1X2V0aF9sYWdfY2xlYW51cChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzc1Mi17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjQxLjM5MTg5NjE3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzk1NjY0ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIHRoZSBgbWx4NWAgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgbWx4NWAgZHJpdmVyIGlzIGZ1bmRhbWVudGFsbHkgYSBQQ0kgZHJpdmVyLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgc3l6a2FsbGVyIG9jY2FzaW9uYWxseSBhdHRlbXB0cyB0byBmdXp6IGBtbHg1YCwgYnV0IGl0J3MgdHlwaWNhbGx5IG9ubHkgYWNoaWV2YWJsZSB1bmRlciBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gVGhlIHByb21wdCBlbXBoYXNpemVzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgYG1seDVgIGV2ZW4gKnByZXNlbnQqIGluIHRob3NlIGVudmlyb25tZW50cz9cblxuR0NFIG9mZmVycyBzb21lIHZpcnR1YWxpemVkIGhhcmR3YXJlLCBidXQgSSdtIGNlcnRhaW4gaXQgZG9lc24ndCBwcmVzZW50IE1lbGxhbm94IENvbm5lY3RYIGhhcmR3YXJlLiBJdCdzIHZpcnRpby1uZXQgb3IgZ1ZOSUMsIHRoYXQncyB3aGF0J3MgYXZhaWxhYmxlLiBJJ20gcmVjYWxsaW5nIGlmIHN5emthbGxlciBoYXMgYSBtb3VudC1pbWFnZS1saWtlIHN5c2NhbGwgYnV0IEkgZG91YnQgdGhhdCdzIHJlbGV2YW50IGhlcmUuXG5cblN5emthbGxlciBkb2VzIGZ1enogc29tZSBSRE1BIGRyaXZlcnMsIGxldmVyYWdpbmcgdGhlIGByZG1hYCBzdWJzeXN0ZW0sIGJ1dCBgbWx4NWAgaXMgYSB2ZXJ5IHNwZWNpZmljICpoYXJkd2FyZSogZHJpdmVyLiBMZXQncyBub3QgZm9yZ2V0IHRoZXJlJ3MgYSBgbWx4NV9jb3JlYCBkcml2ZXI7IHRoZSBxdWVzdGlvbiBpcywgZG9lcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGV4aXN0IGZvciBpdD9cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgd2hldGhlciBgbmV0ZGV2c2ltYCwgYHZkcGFgLCBvciBzaW1pbGFyIHRlY2hub2xvZ2llcyBpbnRlcmZhY2Ugd2l0aCBgbWx4NWAuICpBaGEhKiBgZHJpdmVycy92ZHBhL21seDUvYCBleGlzdHMsIGJ1dCBteSBndXQgZmVlbGluZywgYW5kIGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBgbWx4NV92ZHBhYCBuZWNlc3NpdGF0ZXMgYSByZWFsIGBtbHg1YCBQQ0kgZGV2aWNlLiBTbyB0aGF0J3MgcHJvYmFibHkgYSBkZWFkIGVuZC5cblxuV2hhdCBhYm91dCBvdGhlciBhbHRlcm5hdGl2ZXM/IExvb2tpbmcgYXQgYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9gLCBJIGtub3cgdGhhdCBgcnhlYCBhbmQgYHNpd2AgYXJlIHNvZnR3YXJlIFJETUEgaW1wbGVtZW50YXRpb25zLCBidXQgYG1seDVgIGlzIGV4cGxpY2l0bHkgaGFyZHdhcmUtYmFzZWQuXG5cblRoZSB1bHRpbWF0ZSBxdWVzdGlvbiBpczogSXMgdGhlcmUgKmFueSogd2F5IHRvIHJlYWNoIGBtbHg1YCBjb2RlIHBhdGhzIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlPyBMZXQgbWUgY2hlY2sgZm9yIGFueSBwb3RlbnRpYWwgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIG1seDUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgYXZlbnVlIHRvIGV4cGxvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODk0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjUxLjc4NzU2MzkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTMxMTkxMzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el8uKm1seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjU0LjIwMDY5MTQyNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNzY2MTAzMDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIGBtbHg1YCB3aXRoIFN5emthbGxlcjogQSBUaG91Z2h0IFByb2Nlc3MqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSBwcm9tcHQgY2xlYXJseSBzdGF0ZXMgSSBjYW4ndCBkaXJlY3RseSBzZWFyY2ggZm9yIGBzeXprYWxsZXJgIHBzZXVkby1zeXNjYWxscyBsaWtlIGBzeXpfYCwgc28gSSBuZWVkIHRvIHVzZSBgY29kZXNlYXJjaC1kaXItaW5kZXhgIG9yIGp1c3QgcmVseSBvbiBteSB1bmRlcnN0YW5kaW5nIHRoYXQgYG1seDVgIGlzIGEgaGFyZHdhcmUgZHJpdmVyLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBtbHg1YCBpcyBldmVuICpyZWFjaGFibGUqIGJ5IFN5emthbGxlci4gSG1tLCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgdmlydHVhbCBgbWx4NWAgZGV2aWNlIGJ5IGRlZmF1bHQuIEJ1dCB3YWl0LCB3aGF0IGlmIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgd2l0aCBgQ09ORklHX01MWDVfQ09SRT15YCBhbmQgd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcz9cblxuQWgsIHJpZ2h0ISBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZWAgd2hpY2ggc3VnZ2VzdHMgaXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBgdmhjaWAgb3IgYHZmaW9gLiBXYWl0LCBubywgdGhlIFBDSSBmdXp6ZXIgZW11bGF0ZXMgUENJIGRldmljZXMuIFRoYXQncyBpdCEgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgYW5kIGl0IGludGVyY2VwdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy9QSU8gYWNjZXNzZXMuXG5cbkxldCdzIHNlZSwgZG9lcyB0aGF0IHF1YWxpZnkgYXMgXCJzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiPyBZZXMsIHRoZSBwcm9tcHQgZXhwbGljaXRseSBtZW50aW9ucyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYC4gU28gU3l6a2FsbGVyJ3MgUENJIGZ1enplciBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS5cblxuT2theSwgdGhpcyBtZWFucyB0aGF0ICphbnkqIFBDSSBkcml2ZXIgc2hvdWxkIGJlIHJlYWNoYWJsZSBpZiB0aGUgUENJIGZ1enplciBpcyBlbmFibGVkLCBiZWNhdXNlIHRoZSBwcm9tcHQgc2F5cyBjb2RlIHBhdGhzIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBzaG91bGRuJ3QgYmUgdG91Y2hlZC5cblxuTm93LCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIFN5emthbGxlciBpcyBhY3R1YWxseSBmdXp6aW5nIFBDSSBkcml2ZXJzIHdpdGggdGhlIGBkdW1teWAgUENJIGRldmljZSBvciBgdmZpb2Agb3IgYHBjaV9lbmRwb2ludGAuIEFuZCBsZXQncyBub3QgZm9yZ2V0IHRvIGNoZWNrIHRoZSBmaWxlIGBzeXMvbGludXgvZGV2X3BjaS50eHRgIGFzIGl0IGRlc2NyaWJlcyBQQ0kgZGV2aWNlcy5cblxuT2theSwgaXMgZnV6emluZyBgbWx4NWAgd29ydGggaXQ/IFRoZSBwYXRjaCBtb2RpZmllcyBgbWx4NV9kYl9hbGxvY19ub2RlYCBhbmQgYG1seDVfZGJfZnJlZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jYCwgdGhhdCdzIGNvcmUgbG9naWMgZm9yIE1lbGxhbm94IENvbm5lY3RYLTUsIHNvIGl0J3MgcHJvYmFibHkgaW50ZXJlc3RpbmcgdG8gZnV6ei5cblxuU2luY2UgUENJIGZ1enppbmcgaXMgc3VwcG9ydGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGlzIGBtbHg1X2RiX2FsbG9jX25vZGVgIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZT8gSXQncyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiAoYG1seDVfbWRldl9pbml0YCksIHF1ZXVlIHBhaXIgY3JlYXRpb24gKGBtbHg1X3dxX3FwX2NyZWF0ZWAsIGBtbHg1X2Nxd3FfY3JlYXRlYCwgZXRjLikuXG5cblF1ZXVlIHBhaXJzIGNhbiBiZSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlIHZpYSBSRE1BIChlLmcuLCBgaWJ2X2NyZWF0ZV9xcGApLCB3aGljaCBjYWxscyBgbWx4NV9pYl9jcmVhdGVfcXBgLiBTbywgaWYgSSB0cmFjZSBgbWx4NV9pYl9jcmVhdGVfcXBgIC1cdTAwM2UgYGNyZWF0ZV9xcF9jb21tb25gIC1cdTAwM2UgYG1seDVfZGJfYWxsb2Nfbm9kZWAsIEkgc2hvdWxkIGhhdmUgYSBjbGVhciBwYXRoIHRvIGZvbGxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3MTIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6MDQuOTY2Nzk2Nzk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkwNjg5Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfaWJfY3JlYXRlX3FwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NDcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfZGVmc1tdID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ0NzgtXFx0VUFQSV9ERUZfQ0hBSU4obWx4NV9pYl9jcmVhdGVfY3FfZGVmcyksXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ0Nzk6XFx0VUFQSV9ERUZfQ0hBSU4obWx4NV9pYl9jcmVhdGVfcXBfZGVmcyksXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ0ODAtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDU4MD1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1OTUtXFx0LmNyZWF0ZV91c2VyX2NxID0gbWx4NV9pYl9jcmVhdGVfdXNlcl9jcSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU5NjpcXHQuY3JlYXRlX3FwID0gbWx4NV9pYl9jcmVhdGVfcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1OTctXFx0LmNyZWF0ZV9zcnEgPSBtbHg1X2liX2NyZWF0ZV9zcnEsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTI5MD12b2lkIG1seDVfaWJfZGlzYWJsZV9sYihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgYm9vbCB0ZCwgYm9vbCBxcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjEyOTE6aW50IG1seDVfaWJfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqcXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTI5Mi1cXHRcXHQgICAgICBzdHJ1Y3QgaWJfdWRhdGEgKnVkYXRhKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaD0xNTE4PWV4dGVybiBjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfY3JlYXRlX2NxX2RlZnNbXTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTUxOTpleHRlcm4gY29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9xcF9kZWZzW107XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oLTE1MjAtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTU1MT1zdGF0aWMgaW5saW5lIGludCBnZXRfcXBfdXNlcl9pbmRleChzdHJ1Y3QgbWx4NV9pYl91Y29udGV4dCAqdWNvbnRleHQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjE1NTI6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTU1My1cXHRcXHRcXHRcXHQgICAgaW50IGlubGVuLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz00NDM9c3RhdGljIGludCBzZXRfcnFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6NDQ0OlxcdFxcdCAgICAgICBpbnQgaGFzX3JxLCBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTQ0NS17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTY0Mz1zdGF0aWMgaW50IHNldF91c2VyX2J1Zl9zaXplKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNjQ0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzo2NDU6XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTY0Ni1cXHRcXHRcXHQgICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9OTUyPXN0YXRpYyBpbnQgX2NyZWF0ZV91c2VyX3FwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgaWJfcGQgKnBkLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTUtXFx0XFx0XFx0ICAgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqYXR0ciwgdTMyICoqaW4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzo5NTY6XFx0XFx0XFx0ICAgc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgKnJlc3AsIGludCAqaW5sZW4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTctXFx0XFx0XFx0ICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjk1ODpcXHRcXHRcXHQgICBzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTkte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0xNTg3PXN0YXRpYyBpbnQgY3JlYXRlX3Jhd19wYWNrZXRfcXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2liX3FwICpxcCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTU5MC1cXHRcXHRcXHRcXHRzdHJ1Y3QgdXZlcmJzX2F0dHJfYnVuZGxlICphdHRycyxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjE1OTE6XFx0XFx0XFx0XFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgKnJlc3AsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0xNTkyLVxcdFxcdFxcdFxcdHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MTcyNz1zdHJ1Y3QgbWx4NV9jcmVhdGVfcXBfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTczNi1cXHR1MzIgdWlkeDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjE3Mzc6XFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgcmVzcDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTE3MzgtfTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MTc0MD1zdGF0aWMgaW50IGNyZWF0ZV9yc3NfcmF3X3FwX3RpcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTc0NC1cXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXFx1MDAzZWF0dHI7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoxNzQ1OlxcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MgKnVjbWQgPSBwYXJhbXMtXFx1MDAzZXVjbWQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0xNzQ2LVxcdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXFx1MDAzZXVkYXRhO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yMDk3PXN0YXRpYyBpbnQgY3JlYXRlX2RjaShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjEwMS1cXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXFx1MDAzZWF0dHI7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoyMTAyOlxcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCA9IHBhcmFtcy1cXHUwMDNldWNtZDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIxMDMtXFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKGNyZWF0ZV9xcF9vdXQpXSA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yMjU4PXN0YXRpYyBpbnQgY3JlYXRlX3VzZXJfcXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBpYl9wZCAqcGQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIyNjItXFx0c3RydWN0IGliX3FwX2luaXRfYXR0ciAqaW5pdF9hdHRyID0gcGFyYW1zLVxcdTAwM2VhdHRyO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjI2MzpcXHRzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQgPSBwYXJhbXMtXFx1MDAzZXVjbWQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0yMjY0LVxcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhjcmVhdGVfcXBfb3V0KV0gPSB7fTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9Mjc2Mz1zdGF0aWMgaW50IGNyZWF0ZV9kY3Qoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBpYl9wZCAqcGQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI3NjctXFx0c3RydWN0IGliX3FwX2luaXRfYXR0ciAqYXR0ciA9IHBhcmFtcy1cXHUwMDNlYXR0cjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjI3Njg6XFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwICp1Y21kID0gcGFyYW1zLVxcdTAwM2V1Y21kO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjc2OS1cXHR1MzIgdWlkeCA9IHBhcmFtcy1cXHUwMDNldWlkeDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MjkyOT1zdGF0aWMgaW50IHByb2Nlc3NfdmVuZG9yX2ZsYWdzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI5MzYtXFx0aWYgKGF0dHItXFx1MDAzZXJ3cV9pbmRfdGJsKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzNzpcXHRcXHRmbGFncyA9ICgoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3JzcyAqKXVjbWQpLVxcdTAwM2VmbGFncztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI5MzgtXFx0ZWxzZVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzOTpcXHRcXHRmbGFncyA9ICgoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwICopdWNtZCktXFx1MDAzZWZsYWdzO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjk0MC1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MzA5MD1zdGF0aWMgaW50IHByb2Nlc3NfdWRhdGFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzA5Mi17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMDkzOlxcdHNpemVfdCB1Y21kID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk0LVxcdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXFx1MDAzZXVkYXRhO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzA5ODpcXHRwYXJhbXMtXFx1MDAzZW91dGxlbiA9IG1pbihvdXRsZW4sIHNpemVvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCkpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzA5OS1cXHRwYXJhbXMtXFx1MDAzZXVjbWRfc2l6ZSA9IHVjbWQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMDItXFx0XFx0c2l6ZV90IG1pbl9pbmxlbiA9XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMTAzOlxcdFxcdFxcdG9mZnNldG9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCwgZWNlX29wdGlvbnMpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzEwNC1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzExMy1cXHQvKiBSU1MgUkFXIFFQICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMTE0OlxcdGlmIChpbmxlbiBcXHUwMDNjIG9mZnNldG9mZW5kKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MsIGZsYWdzKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTE2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzExNzpcXHRpZiAob3V0bGVuIFxcdTAwM2Mgb2Zmc2V0b2ZlbmQoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AsIGJmcmVnX2luZGV4KSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTE5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzEyMDpcXHR1Y21kID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzEyMS1cXHRwYXJhbXMtXFx1MDAzZXVjbWRfc2l6ZSA9IHVjbWQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTMyMjI9c3RhdGljIGludCBnZXRfcXBfdWlkeChzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMyMjQte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzIyNTpcXHRzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQgPSBwYXJhbXMtXFx1MDAzZXVjbWQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjI2LVxcdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXFx1MDAzZXVkYXRhO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0zMjU0PXN0YXRpYyBpbnQgY2hlY2tfdWNtZF9kYXRhKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjY1LVxcdFxcdCAqL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI2NjpcXHRcXHRsYXN0ID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzI2Ny1cXHRlbHNlXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMjY4OlxcdFxcdGxhc3QgPSBvZmZzZXRvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAsIHJlc2VydmVkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMyNjktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMyODctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMjg4OmludCBtbHg1X2liX2NyZWF0ZV9xcChzdHJ1Y3QgaWJfcXAgKmlicXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmF0dHIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjg5LVxcdFxcdCAgICAgIHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTU5OTI9QUREX1VWRVJCU19BVFRSSUJVVEVTX1NJTVBMRShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNTk5OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjU5OTk6Y29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9xcF9kZWZzW10gPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy02MDAwLVxcdFVBUElfREVGX0NIQUlOX09CSl9UUkVFKFVWRVJCU19PQkpFQ1RfUVAsIFxcdTAwMjZtbHg1X2liX3FwX2NyZWF0ZSksXFxuLS1cXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oPTMyMj1zdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfc3JxX3Jlc3Age1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zMjYtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozMjc6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX2RjaV9zdHJlYW1zIHtcXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMyOC1cXHRfX3U4IGxvZ19udW1fY29uY3VyZW50O1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zMzEtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozMzI6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwIHtcXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMzMy1cXHRfX2FsaWduZWRfdTY0IGJ1Zl9hZGRyO1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNDUtXFx0X191MzIgIGVjZV9vcHRpb25zO1xcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6MzQ2OlxcdHN0cnVjdCAgbWx4NV9pYl9jcmVhdGVfcXBfZGNpX3N0cmVhbXMgZGNpX3N0cmVhbXM7XFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNDctXFx0X191MTYgcmVzZXJ2ZWQ7XFxuLS1cXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oPTM2Mz1lbnVtIG1seDVfcnhfaGFzaF9maWVsZHMge1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNzYtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozNzc6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3JzcyB7XFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNzgtXFx0X19hbGlnbmVkX3U2NCByeF9oYXNoX2ZpZWxkc19tYXNrOyAvKiBlbnVtIG1seDVfcnhfaGFzaF9maWVsZHMgKi9cXG4tLVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzg2LVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6Mzg3OmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfcmVzcF9tYXNrIHtcXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM4OC1cXHRNTFg1X0lCX0NSRUFURV9RUF9SRVNQX01BU0tfVElSTiA9IDFVTCBcXHUwMDNjXFx1MDAzYyAwLFxcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zOTQtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozOTU6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3Age1xcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzk2LVxcdF9fdTMyXFx0YmZyZWdfaW5kZXg7XFxuLS1cXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1X3VzZXJfaW9jdGxfY21kcy5oPTI3NT1lbnVtIG1seDVfaWJfY3JlYXRlX2NxX2F0dHJzIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmgtMjc5LVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmg6MjgwOmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfYXR0cnMge1xcbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmgtMjgxLVxcdE1MWDVfSUJfQVRUUl9DUkVBVEVfUVBfREJSX0JVRl9VTUVNID0gVVZFUkJTX0lEX0RSSVZFUl9OU19XSVRIX1VIVyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6MDYuNzU3NDk2NDU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NzMyOTA5OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgYG1seDVfaWJfY3JlYXRlX3FwYCBpbiBhIEZ1enppbmcgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgbWx4NV9pYl9jcmVhdGVfcXBgIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBSRE1BIHV2ZXJicywgdGhhdCdzIGNsZWFyLiBCdXQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IGEgcmVhbCBNZWxsYW5veCAobWx4NSkgUENJIGRldmljZT8gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZS4gU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIHdoaWNoIGlzIHByb21pc2luZywgYnV0IGl0IGRvZXNuJ3QgZW11bGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBtbHg1IGhhcmR3YXJlLiBJdCBqdXN0IGJsYXN0cyB0aGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy9QSU8gYWNjZXNzZXMgd2l0aCByYW5kb20gZGF0YSwgd2hpY2ggaXMgdXNlZnVsLCBidXQgcGVyaGFwcyBub3QgdGFyZ2V0ZWQgZW5vdWdoLlxuXG5JZiB0aGUgUENJIGZ1enplciBoaXRzIHRoZSByaWdodCBzdHVmZiwgaXQgc2hvdWxkIHRyaWdnZXIgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdCB0byBpbml0aWFsaXplLiBEdXJpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgYG1seDVfbWRldl9pbml0YCBnZXRzIGNhbGxlZCwgd2hpY2gsIGluIHR1cm4sIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLiBUaGlzIGNvdWxkIHRoZW4gbGVhZCB0byBhdHRlbXB0cyB0byBhbGxvY2F0ZSBkYiBub2Rlcy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyB0aGlzIGEgd29ydGh3aGlsZSBwYXRoIHRvIGZ1eno/XG5cblRoZSBwcm9tcHQgc3RhdGVzOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFNvLCBpZiB0aGUgUENJIGZ1enplciAqY2FuKiByZWFjaCBpdCwgdGhlbiBpdCAqaXMqIHJlYWNoYWJsZSwgYW5kIHRoZXJlZm9yZSwgaW50ZXJlc3RpbmchXG5cblRoZSBrZXkgcXVlc3Rpb24gbm93IGlzIHRoaXM6IERvZXMgdGhlIFBDSSBmdXp6ZXIgYWN0dWFsbHkgcmVhY2ggYG1seDVfbWRldl9pbml0YD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2AgdG8gc2VlIHdoZXJlIGBtbHg1X21kZXZfaW5pdGAgaXMgY2FsbGVkIGFuZCBob3cgdGhlIFBDSSBmdXp6ZXIgbWF5IG9yIG1heSBub3QgcmVhY2ggaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTUyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjEzLjQzMDc4OTk3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMjc0OTI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X21kZXZfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE3OTY9c3RhdGljIHZvaWQgbWx4NV9ub3RpZmllcnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgwNDppbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgwNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE5MzU9c3RhdGljIGludCBwcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5NjA6XFx0ZXJyID0gbWx4NV9tZGV2X2luaXQoZGV2LCBwcm9mX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xOTYxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9NDMyPW1seDVfc2ZfY29yZWRldl90b19hZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6NDM3OmludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC00Mzgtdm9pZCBtbHg1X21kZXZfdW5pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYz0yNT1zdGF0aWMgaW50IG1seDVfc2ZfZGV2X3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LCBjb25zdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmM6NDk6XFx0ZXJyID0gbWx4NV9tZGV2X2luaXQobWRldiwgTUxYNV9TRl9QUk9GKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTUwLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jOjUxOlxcdFxcdG1seDVfY29yZV93YXJuKG1kZXYsIFxcXCJtbHg1X21kZXZfaW5pdCBvbiBlcnI9JWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy01Mi1cXHRcXHRnb3RvIG1kZXZfZXJyO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjoxNi40NjM1NDU5MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMzODAyMDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gTWVsbGFub3ggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgYHByb2JlX29uZWAsIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCBpcyBiZWluZyB0cmlnZ2VyZWQgYnkgU3l6a2FsbGVyJ3MgUENJIGZ1enplciwgd2hpY2ggaXMgdXNpbmcgYSBkZXZpY2Ugd2l0aCBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4gVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgYHByb2JlX29uZWAgaXMgY2FsbGluZyBgbWx4NV9tZGV2X2luaXRgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBhbmQgZnJvbSB0aGVyZSwgYXR0ZW1wdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uLlxuXG5UaGUgcnViIGlzIHRoZSBmdXp6ZXIgcHJvdmlkZXMgcmFuZG9tIE1NSU8gcmVzcG9uc2VzLCB3aGljaCBpcyBhIHByb2JsZW0gYmVjYXVzZSB0aGlzIGRyaXZlciwgbGlrZSBtb3N0LCByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUgcmVzcG9uc2VzIGR1cmluZyBpbml0aWFsaXphdGlvbiwgcGFydGljdWxhcmx5IGZvciBmaXJtd2FyZSBjb21tYW5kcyBhbmQgc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzLiBUaGlzIG1lYW5zIGl0J3MgbGlrZWx5IHRvIGZhaWwgcHJldHR5IGVhcmx5LCBidXQgKndoZXJlKiBleGFjdGx5P1xuXG5JJ20gd29uZGVyaW5nIGlmIGl0IHdpbGwgbWFrZSBpdCBhcyBmYXIgYXMgYG1seDVfZGJfYWxsb2Nfbm9kZWAuIExldCdzIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZC4gUmlnaHQsIGl0J3MgY2FsbGVkIGZyb20gYG1seDVfd3FfY3ljX2NyZWF0ZWAsIGBtbHg1X3dxX3FwX2NyZWF0ZWAsIGBtbHg1X2Nxd3FfY3JlYXRlYCwgYG1seDVfd3FfbGxfY3JlYXRlYCwgYG1seDV2Zl9jcmVhdGVfY3FgLCBhbmQgYG1seDV2Zl9jcmVhdGVfcmNfcXBgLiBTbywgdGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIHF1ZXVlIGNyZWF0aW9uLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBhcmUgYW55IHF1ZXVlcyBiZWluZyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gdGhhdCBoYXBwZW5zIHdpdGhpbiBgcHJvYmVfb25lYD8gTGV0IG1lIHRyYWNlIHRoaXMgb3V0OiBgcHJvYmVfb25lYCBjYWxscyBgbWx4NV9pbml0X29uZWAsIGFuZCB0aGVuIGBtbHg1X2xvYWRfb25lYCwgYnV0IGRvZXMgaXQgbGVhZCB0byBhbnkgcXVldWUgY3JlYXRpb24gb3IgYG1seDVfZGJfYWxsb2Nfbm9kZWA/IFBlcmhhcHMgYG1seDVfYWxsb2NfYmZyZWdgIGlzIHRoZSBrZXk/IEkgbmVlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoIGNsb3NlbHkgd2l0aGluIHRoYXQgZHJpdmVyLCBjaGVja2luZyB0aGUgY2FsbHMgZnJvbSBgcHJvYmVfb25lYCBhbGwgdGhlIHdheSBkb3duLiBJIHRoaW5rIHRoaXMgbmVlZHMgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjoyMi44MDE1NjkyNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTYzNTgxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV93cV9jeWNfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz0zMjY9c3RhdGljIGludCBtbHg1ZV9wdHBfYWxsb2NfdHhxc3Eoc3RydWN0IG1seDVlX3B0cCAqYywgaW50IHR4cV9peCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy0zNTctXFx0cGFyYW0tXFx1MDAzZXdxLmRiX251bWFfbm9kZSA9IG5vZGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjM1ODpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtMzU5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTg5NT1zdGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtOTc5LVxcdGRlZmF1bHQ6IC8qIE1MWDVfV1FfVFlQRV9DWUNMSUMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjk4MDpcXHRcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnJxX3BhcmFtLVxcdTAwM2V3cSwgcnFjX3dxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtOTgxLVxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cnEtXFx1MDAzZXdxZS53cSwgXFx1MDAyNnJxLVxcdTAwM2V3cV9jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTUzOD1zdGF0aWMgaW50IG1seDVlX2FsbG9jX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNTY3LVxcdHBhcmFtLVxcdTAwM2V3cS5kYl9udW1hX25vZGUgPSBjcHVfdG9fbm9kZShjLVxcdTAwM2VjcHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTU2ODpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE1NjktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTYyNz1zdGF0aWMgaW50IG1seDVlX2FsbG9jX2ljb3NxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNjQxLVxcdHBhcmFtLVxcdTAwM2V3cS5kYl9udW1hX25vZGUgPSBjcHVfdG9fbm9kZShjLVxcdTAwM2VjcHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTY0MjpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE2NDMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTcwMj1zdGF0aWMgaW50IG1seDVlX2FsbG9jX3R4cXNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNzM1LVxcdHBhcmFtLVxcdTAwM2V3cS5kYl9udW1hX25vZGUgPSBjcHVfdG9fbm9kZShjLVxcdTAwM2VjcHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTczNjpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE3MzctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MzYzOT1zdGF0aWMgaW50IG1seDVlX2FsbG9jX2Ryb3BfcnEoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTM2NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzozNjQ4OlxcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcXHUwMDI2cnFfcGFyYW0tXFx1MDAzZXdxLCBycWNfd3EsIFxcdTAwMjZycS1cXHUwMDNld3FlLndxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMzY0OS1cXHRcXHRcXHRcXHQgXFx1MDAyNnJxLVxcdTAwM2V3cV9jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvYXNvLmM9MTU4PXN0YXRpYyBpbnQgbWx4NV9hc29fYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGludCBudW1hX25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2Fzby5jLTE2OS1cXHRwYXJhbS5idWZfbnVtYV9ub2RlID0gbnVtYV9ub2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvYXNvLmM6MTcwOlxcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcXHUwMDI2cGFyYW0sIHNxY193cSwgd3EsIFxcdTAwMjZzcS1cXHUwMDNld3FfY3RybCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYy0xNzEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3Mvc2VuZC5jPTY4MT1zdGF0aWMgaW50IGh3c19zZW5kX3JpbmdfYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYy02OTctXFx0cGFyYW0uYnVmX251bWFfbm9kZSA9IG51bWFfbm9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYzo2OTg6XFx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFxcdTAwMjZwYXJhbSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYy02OTktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93Yy5jPTIyMT1zdGF0aWMgaW50IG1seDVfd2NfY3JlYXRlX3NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93Y19zcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd2MuYy0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmM6MjM2OlxcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcXHUwMDI2cGFyYW0sIHdxLCBcXHUwMDI2c3EtXFx1MDAzZXdxLCBcXHUwMDI2c3EtXFx1MDAzZXdxX2N0cmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93Yy5jLTIzNy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0zNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzozNzppbnQgbWx4NV93cV9jeWNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93cV9wYXJhbSAqcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMzgtXFx0XFx0ICAgICAgIHZvaWQgKndxYywgc3RydWN0IG1seDVfd3FfY3ljICp3cSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oPTcwPXN0cnVjdCBtbHg1X3dxX2xsIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oLTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oOjc5OmludCBtbHg1X3dxX2N5Y19jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1X3dxX3BhcmFtICpwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuaC04MC1cXHRcXHQgICAgICAgdm9pZCAqd3FjLCBzdHJ1Y3QgbWx4NV93cV9jeWMgKndxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjoyNC44NTc5MzE3MDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc4OTcxMTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgU3l6a2FsbGVyIG9uIHRoZSBtbHg1ZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgbWx4NWVfYWxsb2NfcnFgIGlzIGRlZmluaXRlbHkgY2FsbGVkIHdpdGhpbiBgbWx4NWVfb3BlbmAgd2hlbiB0aGUgbmV0d29yayBkZXZpY2Ugb3BlbnMuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGNhbiBTeXprYWxsZXIgdHJpZ2dlciB0aGUgb3BlbmluZyBvZiB0aGlzIG5ldGRldj8gVGhlIGFuc3dlciBpcyB5ZXMsIGlmIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGEgbmV0d29yayBkZXZpY2UuIEkga25vdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhIG5ldGRldjsgaXQncyBwYXJ0IG9mIHRoZSBgbWx4NWVfcHJvYmVgIGZ1bmN0aW9uIGFzIGFuIGF1eGlsaWFyeSBwcm9iZS4gVGhpcyBtZWFucyB0aGF0IGlmIGBtbHg1ZV9wcm9iZWAgaXMgY2FsbGVkLCBpdCB3aWxsIHJlZ2lzdGVyIHRoZSBuZXRkZXYuIEJ1dCwgYSBzdWNjZXNzZnVsIG5ldGRldiByZWdpc3RyYXRpb24gcmVxdWlyZXMgc3VjY2Vzc2Z1bCBkZXZpY2UgaW5pdGlhbGl6YXRpb24uXG5cbk5vdywgd2lsbCBgbWx4NV9tZGV2X2luaXRgIHdvcmsgd2l0aCB0aGUga2luZCBvZiByYW5kb20gUENJIE1NSU8gcmVzcG9uc2VzIHRoYXQgYSBmdXp6ZXIgbWlnaHQgZ2VuZXJhdGU/IFByb2JhYmx5IG5vdC4gSGFyZHdhcmUgZHJpdmVycyBhcmUgdHlwaWNhbGx5IHZlcnkgcGlja3kgYWJvdXQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZmlybXdhcmUgYW5kIGNvbW1hbmQgaW50ZXJmYWNlcywgYW5kIHJhbmRvbSBkYXRhIGlzIGEgcmVjaXBlIGZvciBmYWlsdXJlLiBNZWxsYW5veCBkcml2ZXJzLCBzcGVjaWZpY2FsbHksIHVzZSBhIGNvbW1hbmQgaW50ZXJmYWNlIChDTURJRikgd2hpY2ggaW52b2x2ZXMgd3JpdGluZyB0byBhIGRvb3JiZWxsIGFuZCB0aGVuIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCBvciBwb2xsaW5nIGEgc3RhdHVzIHJlZ2lzdGVyLiBSYW5kb20gZGF0YSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgY2F1c2UgYSB0aW1lb3V0IG9yIGZhaWx1cmUgaW4gdGhlIGNvbW1hbmQsIHdoaWNoIG1lYW5zIGBtbHg1X21kZXZfaW5pdGAgd2lsbCBsaWtlbHkgZmFpbC5cblxuSG93ZXZlciwgU3l6a2FsbGVyIGlzIGZvY3VzZWQgb24gZnV6emluZyBwcm9iZSBwYXRocyBhbmQgcmVhY2hpbmcgYXMgbWFueSBmdW5jdGlvbnMgYXMgcG9zc2libGUuIEV2ZW4gaWYgYG1seDVfbWRldl9pbml0YCBmYWlscyBlYXJseSwgaXTigJlzIHN0aWxsIGxpa2VseSB0byBleGVjdXRlIHNvbWUgb2YgaXRzIGNvZGUuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQhIEl0ICp3aWxsKiBleGVjdXRlIGBtbHg1X21kZXZfaW5pdGAgYW5kIHRoZXJlZm9yZSBgbWx4NV9kYl9wb29sc19pbml0YC4gSXQgY291bGQgYWxzbyByZWFjaCBgbWx4NV9kYl9hbGxvY19ub2RlYCBpZiBpdCBnZXRzIGZhciBlbm91Z2ggdG8gc3RhcnQgcXVldWUgY3JlYXRpb24gYmVmb3JlIGZhaWxpbmcuXG5cblRoaW5raW5nIG1vcmUgZGVlcGx5LCBgbWx4NV9jbWRfaW5pdGAgaXMgY2FsbGVkIGluIGBtbHg1X21kZXZfaW5pdGAgKmFmdGVyKiBgbWx4NV9kYl9wb29sc19pbml0YC4gSWYgYG1seDVfY21kX2luaXRgIGZhaWxzLCBpdCBqdW1wcyB0byBgZXJyX2NtZF9pbml0YCB3aGljaCB0aGVuIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLiBTbywgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBldmVuIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBpbml0aWFsaXplIHN1Y2Nlc3NmdWxseS4gTm93LCBhcmUgYG1seDVfZGJfYWxsb2Nfbm9kZWAgYW5kIGBtbHg1X2RiX2ZyZWVgIGFsc28gcmVhY2hhYmxlPyBUbyB1bmRlcnN0YW5kIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBtbHg1X2NtZF9pbml0YCBhY3R1YWxseSBhbGxvY2F0ZXMgYW55IHF1ZXVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4NDYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6MzMuNjQ3NjQ2MDMyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM2NzU1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY21kX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTE3NjA9c3RhdGljIGludCBVVkVSQlNfSEFORExFUihNTFg1X0lCX01FVEhPRF9ERVZYX0FTWU5DX0NNRF9GRF9BTExPQykoXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3MS1cXHRkZXZ4X2luaXRfZXZlbnRfcXVldWUoXFx1MDAyNmV2X2ZpbGUtXFx1MDAzZWV2X3F1ZXVlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTc3MjpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LVxcdTAwM2VtZGV2LCBcXHUwMDI2ZXZfZmlsZS1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU2MzpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTcyOkVYUE9SVF9TWU1CT0wobWx4NV9jbWRfaW5pdF9hc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI0Mjg9c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDMzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYz0xNDM9c3RhdGljIHN0cnVjdCBtbHg1ZV9idWxrX2FzeW5jX2N0eCAqbWx4NWVfYnVsa19hc3luY19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmM6MTU0OlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZidWxrX2FzeW5jLVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM9MTQyPWludCBtbHg1X3F1ZXJ5X2hjYV9jYXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM6MzEyOmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9mdy5jLTMxMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTExODE9c3RhdGljIGludCBtbHg1X2Z1bmN0aW9uX29wZW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEyMDM6XFx0ZXJyID0gbWx4NV9jbWRfaW5pdF9oY2EoZGV2LCBzd19vd25lcl9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMjA0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTgwND1pbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgzNzpcXHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0yMjI9aW50IG1seDVfcXVlcnlfbW9kdWxlX251bShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgKm1vZHVsZV9udW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyNC12b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjI3PXZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyOC1cXHRcXHRcXHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjk6aW50IG1seDVfY21kX2luaXRfaGNhKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqc3dfb3duZXJfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0yMzAtaW50IG1seDVfY21kX3RlYXJkb3duX2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zODMwPXN0YXRpYyBpbnQgbWx4NV92ZHBhX2Rldl9hZGQoc3RydWN0IHZkcGFfbWdtdF9kZXYgKnZfbWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zOTAyLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozOTAzOlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZtdmRldi1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzkwNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9NjI3PW1seDV2Zl9wY2lfc2F2ZV9kZXZpY2VfZGF0YShzdHJ1Y3QgbWx4NXZmX3BjaV9jb3JlX2RldmljZSAqbXZkZXYsIGJvb2wgdHJhY2spXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1Ny1cXHRjb21wbGV0ZShcXHUwMDI2bWlnZi1cXHUwMDNlc2F2ZV9jb21wKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjY1ODpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtdmRldi1cXHUwMDNlbWRldiwgXFx1MDAyNm1pZ2YtXFx1MDAzZWFzeW5jX2N0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy02NTktXFx0SU5JVF9XT1JLKFxcdTAwMjZtaWdmLVxcdTAwM2Vhc3luY19kYXRhLndvcmssIG1seDV2Zl9taWdfZmlsZV9jbGVhbnVwX2NiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD05ODM9c3RydWN0IG1seDVfYXN5bmNfd29yayB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtOTkyLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDo5OTM6dm9pZCBtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjM1LjQ4NDQwNzA3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA1Nzg1NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFF1ZXVlIEFsbG9jYXRpb24gaW4gbWx4NSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBgbWx4NWAgZHJpdmVyIGluaXRpYWxpemVzIGl0cyBxdWV1ZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB1c2VzIG9mIGBtbHg1X2RiX2FsbG9jX25vZGVgLiBJdCBzZWVtcyBsaWtlIGBtbHg1X2NtZF9pbml0YCBpdHNlbGYgZG9lc24ndCBkaXJlY3RseSBjYWxsIGBtbHg1X2RiX2FsbG9jX25vZGVgIHRvIGFsbG9jYXRlIGFueSBxdWV1ZXMuIFRoYXQncyBhIGxpdHRsZSB1bmV4cGVjdGVkLlxuXG5Ib2xkIG9uLCBJIG5lZWQgdG8gYmFja3RyYWNrIGFuZCBjb25zaWRlciB0aGUgYmlnZ2VyIHBpY3R1cmUuIFdoYXQgYWJvdXQgYG1seDVfY21kX2luaXRfaGNhYD8gVGhhdCdzIGFub3RoZXIgcG90ZW50aWFsIGNhbmRpZGF0ZSBmb3IgcXVldWUgYWxsb2NhdGlvbi4gQWgsIHJpZ2h0LCBJIHJlbWVtYmVyIG5vdywgYG1seDVfY21kX2luaXRfaGNhYCBpcyBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHRoZSBgbWx4NV9mdW5jdGlvbl9vcGVuYCByb3V0aW5lLCBub3QgZGlyZWN0bHkgYnkgYG1seDVfY21kX2luaXRgLiBTbywgaXMgYG1seDVfY21kX2luaXRgIGFjdHVhbGx5IGRvaW5nIGFueXRoaW5nIHVzZWZ1bCB0aGVuPyBJIG5lZWQgdG8gZ28gZGVlcGVyLlxuXG5MZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGBtbHg1X2NtZF9pbml0YCBpdHNlbGYuIFRpbWUgdG8gY29uc3VsdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jYCBhbmQgY29uZmlybSBleGFjdGx5IHdoYXQgdGhpcyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGRvaW5nLiBUaGlzIHdpbGwgY2xhcmlmeSBleGFjdGx5IHdoYXQgcm9sZXMgZWFjaCBmdW5jdGlvbiBpcyBwbGF5aW5nIGluIHRoZSBlbnRpcmUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwMTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6NDAuNTkwMTk1Mjg5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY4Mzc2MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY21kX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTE3NjA9c3RhdGljIGludCBVVkVSQlNfSEFORExFUihNTFg1X0lCX01FVEhPRF9ERVZYX0FTWU5DX0NNRF9GRF9BTExPQykoXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3MS1cXHRkZXZ4X2luaXRfZXZlbnRfcXVldWUoXFx1MDAyNmV2X2ZpbGUtXFx1MDAzZWV2X3F1ZXVlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTc3MjpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LVxcdTAwM2VtZGV2LCBcXHUwMDI2ZXZfZmlsZS1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU2MzpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTcyOkVYUE9SVF9TWU1CT0wobWx4NV9jbWRfaW5pdF9hc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI0Mjg9c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDMzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYz0xNDM9c3RhdGljIHN0cnVjdCBtbHg1ZV9idWxrX2FzeW5jX2N0eCAqbWx4NWVfYnVsa19hc3luY19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmM6MTU0OlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZidWxrX2FzeW5jLVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM9MTQyPWludCBtbHg1X3F1ZXJ5X2hjYV9jYXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM6MzEyOmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9mdy5jLTMxMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTExODE9c3RhdGljIGludCBtbHg1X2Z1bmN0aW9uX29wZW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEyMDM6XFx0ZXJyID0gbWx4NV9jbWRfaW5pdF9oY2EoZGV2LCBzd19vd25lcl9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMjA0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTgwND1pbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgzNzpcXHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0yMjI9aW50IG1seDVfcXVlcnlfbW9kdWxlX251bShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgKm1vZHVsZV9udW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyNC12b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjI3PXZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyOC1cXHRcXHRcXHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjk6aW50IG1seDVfY21kX2luaXRfaGNhKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqc3dfb3duZXJfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0yMzAtaW50IG1seDVfY21kX3RlYXJkb3duX2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zODMwPXN0YXRpYyBpbnQgbWx4NV92ZHBhX2Rldl9hZGQoc3RydWN0IHZkcGFfbWdtdF9kZXYgKnZfbWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zOTAyLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozOTAzOlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZtdmRldi1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzkwNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9NjI3PW1seDV2Zl9wY2lfc2F2ZV9kZXZpY2VfZGF0YShzdHJ1Y3QgbWx4NXZmX3BjaV9jb3JlX2RldmljZSAqbXZkZXYsIGJvb2wgdHJhY2spXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1Ny1cXHRjb21wbGV0ZShcXHUwMDI2bWlnZi1cXHUwMDNlc2F2ZV9jb21wKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjY1ODpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtdmRldi1cXHUwMDNlbWRldiwgXFx1MDAyNm1pZ2YtXFx1MDAzZWFzeW5jX2N0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy02NTktXFx0SU5JVF9XT1JLKFxcdTAwMjZtaWdmLVxcdTAwM2Vhc3luY19kYXRhLndvcmssIG1seDV2Zl9taWdfZmlsZV9jbGVhbnVwX2NiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD05ODM9c3RydWN0IG1seDVfYXN5bmNfd29yayB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtOTkyLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDo5OTM6dm9pZCBtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjQyLjU1ODU3NjUyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODEyNDc1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIG1seDVfY21kX2luaXQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG1seDVfY21kX2luaXRgIGZ1bmN0aW9uIGluIHRoZSBNZWxsYW5veCBkcml2ZXIncyBjb21tYW5kIHF1ZXVlIGNvZGUuIEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgaXQgd2Fzbid0IGhhbmRsaW5nIHF1ZXVlIGFsbG9jYXRpb24sIHdoaWNoIGlzIGEgYml0IG9kZCBjb25zaWRlcmluZyBpdHMgbmFtZSBhbmQgcHVycG9zZS4gQnV0IGhvbGQgb24sIEkganVtcGVkIHRoZSBndW4hIExldCBtZSByZS1ldmFsdWF0ZTsgSSdtIG1pc3Npbmcgc29tZXRoaW5nLiBUaGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIGNsb3NlciBsb29rIGlzIHdhcnJhbnRlZC4gTm93LCBsZXQncyBnbyBiYWNrIGFuZCBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuY2AgYW5kIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaW4gYG1seDVfY21kX2luaXRgLiBUaW1lIHRvIGRpc3NlY3QgdGhpcyBjb2RlIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTYxMCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjQ2LjQzOTgyNzE2NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MzMsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDMzOlxcdGludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuMjQzNDpcXHR7XFxuMjQzNTpcXHRcXHRzdHJ1Y3QgbWx4NV9jbWQgKmNtZCA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZDtcXG4yNDM2OlxcdFxcbjI0Mzc6XFx0XFx0Y21kLVxcdTAwM2VjaGVja3N1bV9kaXNhYmxlZCA9IDE7XFxuMjQzODpcXHRcXG4yNDM5OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjbWQtXFx1MDAzZWFsbG9jX2xvY2spO1xcbjI0NDA6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNtZC1cXHUwMDNldG9rZW5fbG9jayk7XFxuMjQ0MTpcXHRcXG4yNDQyOlxcdFxcdHNldF93cW5hbWUoZGV2KTtcXG4yNDQzOlxcdFxcdGNtZC1cXHUwMDNld3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShjbWQtXFx1MDAzZXdxX25hbWUpO1xcbjI0NDQ6XFx0XFx0aWYgKCFjbWQtXFx1MDAzZXdxKSB7XFxuMjQ0NTpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldiwgXFxcImZhaWxlZCB0byBjcmVhdGUgY29tbWFuZCB3b3JrcXVldWVcXFxcblxcXCIpO1xcbjI0NDY6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjQ0NzpcXHRcXHR9XFxuMjQ0ODpcXHRcXG4yNDQ5OlxcdFxcdG1seDVfY21kaWZfZGVidWdmc19pbml0KGRldik7XFxuMjQ1MDpcXHRcXG4yNDUxOlxcdFxcdHJldHVybiAwO1xcbjI0NTI6XFx0fVxcbjI0NTM6XFx0XFxuMjQ1NDpcXHR2b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4yNDU1OlxcdHtcXG4yNDU2OlxcdFxcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXFx1MDAyNmRldi1cXHUwMDNlY21kO1xcbjI0NTc6XFx0XFxuMjQ1ODpcXHRcXHRtbHg1X2NtZGlmX2RlYnVnZnNfY2xlYW51cChkZXYpO1xcbjI0NTk6XFx0XFx0ZGVzdHJveV93b3JrcXVldWUoY21kLVxcdTAwM2V3cSk7XFxuMjQ2MDpcXHR9XFxuMjQ2MTpcXHRcXG4yNDYyOlxcdGludCBtbHg1X2NtZF9lbmFibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4yNDYzOlxcdHtcXG4yNDY0OlxcdFxcdGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrKTtcXG4yNDY1OlxcdFxcdGludCBhbGlnbiA9IHJvdW5kdXBfcG93X29mX3R3byhzaXplKTtcXG4yNDY2OlxcdFxcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXFx1MDAyNmRldi1cXHUwMDNlY21kO1xcbjI0Njc6XFx0XFx0dTMyIGNtZF9oLCBjbWRfbDtcXG4yNDY4OlxcdFxcdGludCBlcnI7XFxuMjQ2OTpcXHRcXG4yNDcwOlxcdFxcdG1lbXNldChcXHUwMDI2Y21kLVxcdTAwM2V2YXJzLCAwLCBzaXplb2YoY21kLVxcdTAwM2V2YXJzKSk7XFxuMjQ3MTpcXHRcXHRjbWQtXFx1MDAzZXZhcnMuY21kaWZfcmV2ID0gY21kaWZfcmV2KGRldik7XFxuMjQ3MjpcXHRcXHRpZiAoY21kLVxcdTAwM2V2YXJzLmNtZGlmX3JldiAhPSBDTURfSUZfUkVWKSB7XFxuMjQ3MzpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldixcXG4yNDc0OlxcdFxcdFxcdFxcdCAgICAgIFxcXCJEcml2ZXIgY21kaWYgcmV2KCVkKSBkaWZmZXJzIGZyb20gZmlybXdhcmUncyglZClcXFxcblxcXCIsXFxuMjQ3NTpcXHRcXHRcXHRcXHQgICAgICBDTURfSUZfUkVWLCBjbWQtXFx1MDAzZXZhcnMuY21kaWZfcmV2KTtcXG4yNDc2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI0Nzc6XFx0XFx0fVxcbjI0Nzg6XFx0XFxuMjQ3OTpcXHRcXHRjbWRfbCA9IGlvcmVhZDMyYmUoXFx1MDAyNmRldi1cXHUwMDNlaXNlZy1cXHUwMDNlY21kcV9hZGRyX2xfc3opIFxcdTAwMjYgMHhmZjtcXG4yNDgwOlxcdFxcdGNtZC1cXHUwMDNldmFycy5sb2dfc3ogPSBjbWRfbCBcXHUwMDNlXFx1MDAzZSA0IFxcdTAwMjYgMHhmO1xcbjI0ODE6XFx0XFx0Y21kLVxcdTAwM2V2YXJzLmxvZ19zdHJpZGUgPSBjbWRfbCBcXHUwMDI2IDB4ZjtcXG4yNDgyOlxcdFxcdGlmICgxIFxcdTAwM2NcXHUwMDNjIGNtZC1cXHUwMDNldmFycy5sb2dfc3ogXFx1MDAzZSBNTFg1X01BWF9DT01NQU5EUykge1xcbjI0ODM6XFx0XFx0XFx0bWx4NV9jb3JlX2VycihkZXYsIFxcXCJmaXJtd2FyZSByZXBvcnRzIHRvbyBtYW55IG91dHN0YW5kaW5nIGNvbW1hbmRzICVkXFxcXG5cXFwiLFxcbjI0ODQ6XFx0XFx0XFx0XFx0ICAgICAgMSBcXHUwMDNjXFx1MDAzYyBjbWQtXFx1MDAzZXZhcnMubG9nX3N6KTtcXG4yNDg1OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI0ODY6XFx0XFx0fVxcbjI0ODc6XFx0XFxuMjQ4ODpcXHRcXHRpZiAoY21kLVxcdTAwM2V2YXJzLmxvZ19zeiArIGNtZC1cXHUwMDNldmFycy5sb2dfc3RyaWRlIFxcdTAwM2UgTUxYNV9BREFQVEVSX1BBR0VfU0hJRlQpIHtcXG4yNDg5OlxcdFxcdFxcdG1seDVfY29yZV9lcnIoZGV2LCBcXFwiY29tbWFuZCBxdWV1ZSBzaXplIG92ZXJmbG93XFxcXG5cXFwiKTtcXG4yNDkwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI0OTE6XFx0XFx0fVxcbjI0OTI6XFx0XFxuMjQ5MzpcXHRcXHRjbWQtXFx1MDAzZXN0YXRlID0gTUxYNV9DTURJRl9TVEFURV9ET1dOO1xcbjI0OTQ6XFx0XFx0Y21kLVxcdTAwM2V2YXJzLm1heF9yZWdfY21kcyA9ICgxIFxcdTAwM2NcXHUwMDNjIGNtZC1cXHUwMDNldmFycy5sb2dfc3opIC0gMTtcXG4yNDk1OlxcdFxcdGNtZC1cXHUwMDNldmFycy5iaXRtYXNrID0gTUxYNV9DTURfTUFTSztcXG4yNDk2OlxcdFxcbjI0OTc6XFx0XFx0c2VtYV9pbml0KFxcdTAwMjZjbWQtXFx1MDAzZXZhcnMuc2VtLCBjbWQtXFx1MDAzZXZhcnMubWF4X3JlZ19jbWRzKTtcXG4yNDk4OlxcdFxcdHNlbWFfaW5pdChcXHUwMDI2Y21kLVxcdTAwM2V2YXJzLnBhZ2VzX3NlbSwgMSk7XFxuMjQ5OTpcXHRcXHRzZW1hX2luaXQoXFx1MDAyNmNtZC1cXHUwMDNldmFycy50aHJvdHRsZV9zZW0sIERJVl9ST1VORF9VUChjbWQtXFx1MDAzZXZhcnMubWF4X3JlZ19jbWRzLCAyKSk7XFxuMjUwMDpcXHRcXHRzZW1hX2luaXQoXFx1MDAyNmNtZC1cXHUwMDNldmFycy51bnByaXZpbGVnZWRfc2VtLFxcbjI1MDE6XFx0XFx0XFx0ICBESVZfUk9VTkRfVVAoY21kLVxcdTAwM2V2YXJzLm1heF9yZWdfY21kcywgMikpO1xcbjI1MDI6XFx0XFxuMjUwMzpcXHRcXHR4YV9pbml0KFxcdTAwMjZjbWQtXFx1MDAzZXZhcnMucHJpdmlsZWdlZF91aWRzKTtcXG4yNTA0OlxcdFxcbjI1MDU6XFx0XFx0Y21kLVxcdTAwM2Vwb29sID0gZG1hX3Bvb2xfY3JlYXRlKFxcXCJtbHg1X2NtZFxcXCIsIG1seDVfY29yZV9kbWFfZGV2KGRldiksIHNpemUsIGFsaWduLCAwKTtcXG4yNTA2OlxcdFxcdGlmICghY21kLVxcdTAwM2Vwb29sKSB7XFxuMjUwNzpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjI1MDg6XFx0XFx0XFx0Z290byBlcnJfZGVzdHJveV94YTtcXG4yNTA5OlxcdFxcdH1cXG4yNTEwOlxcdFxcbjI1MTE6XFx0XFx0ZXJyID0gYWxsb2NfY21kX3BhZ2UoZGV2LCBjbWQpO1xcbjI1MTI6XFx0XFx0aWYgKGVycilcXG4yNTEzOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfcG9vbDtcXG4yNTE0OlxcdFxcbjI1MTU6XFx0XFx0Y21kX2ggPSAodTMyKSgodTY0KShjbWQtXFx1MDAzZWRtYSkgXFx1MDAzZVxcdTAwM2UgMzIpO1xcbjI1MTY6XFx0XFx0Y21kX2wgPSAodTMyKShjbWQtXFx1MDAzZWRtYSk7XFxuMjUxNzpcXHRcXHRpZiAoY21kX2wgXFx1MDAyNiAweGZmZikge1xcbjI1MTg6XFx0XFx0XFx0bWx4NV9jb3JlX2VycihkZXYsIFxcXCJpbnZhbGlkIGNvbW1hbmQgcXVldWUgYWRkcmVzc1xcXFxuXFxcIik7XFxuMjUxOTpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjI1MjA6XFx0XFx0XFx0Z290byBlcnJfY21kX3BhZ2U7XFxuMjUyMTpcXHRcXHR9XFxuMjUyMjpcXHRcXG4yNTIzOlxcdFxcdGlvd3JpdGUzMmJlKGNtZF9oLCBcXHUwMDI2ZGV2LVxcdTAwM2Vpc2VnLVxcdTAwM2VjbWRxX2FkZHJfaCk7XFxuMjUyNDpcXHRcXHRpb3dyaXRlMzJiZShjbWRfbCwgXFx1MDAyNmRldi1cXHUwMDNlaXNlZy1cXHUwMDNlY21kcV9hZGRyX2xfc3opO1xcbjI1MjU6XFx0XFxuMjUyNjpcXHRcXHQvKiBNYWtlIHN1cmUgZmlybXdhcmUgc2VlcyB0aGUgY29tcGxldGUgYWRkcmVzcyBiZWZvcmUgd2UgcHJvY2VlZCAqL1xcbjI1Mjc6XFx0XFx0d21iKCk7XFxuMjUyODpcXHRcXG4yNTI5OlxcdFxcdG1seDVfY29yZV9kYmcoZGV2LCBcXFwiZGVzY3JpcHRvciBhdCBkbWEgMHglbGx4XFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKShjbWQtXFx1MDAzZWRtYSkpO1xcbjI1MzA6XFx0XFxuMjUzMTpcXHRcXHRjbWQtXFx1MDAzZW1vZGUgPSBDTURfTU9ERV9QT0xMSU5HO1xcbjI1MzI6XFx0XFx0Y21kLVxcdTAwM2VhbGxvd2VkX29wY29kZSA9IENNRF9BTExPV0VEX09QQ09ERV9BTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjQ2LjQ0MDAwMzI2NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDczNjIyMjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbWx4NV9kYl9hbGxvY19ub2RlYCB3aXRoIHRoZSBQQ0kgRnV6emVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWx4NV9jbWRfaW5pdGAgZnVuY3Rpb24sIGFuZCBpdCBkb2Vzbid0IHNlZW0gdG8gZGlyZWN0bHkgY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gVGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYG1seDVfZGJfYWxsb2Nfbm9kZWAgYW5kIGl0cyBjb21wYW5pb24sIGBtbHg1X2RiX2ZyZWVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzIHRoYXQgaWYgdGhlIFBDSSBmdXp6ZXIgZmFpbHMgZWFybHkgaW4gYHByb2JlX29uZWAsIG1heWJlIGR1ZSB0byBhIGBjbWRpZl9yZXZgIGNoZWNrIG9yIGEgZmFpbHVyZSBkdXJpbmcgYG1seDVfY21kX2luaXRfaGNhYCwgd2Ugd291bGRuJ3QgZXZlbiBnZXQgdG8gdGhlIHF1ZXVlIGNyZWF0aW9uIHN0YWdlLCB0aHVzIGF2b2lkaW5nIHRoZSBjYWxsIHRvIGBtbHg1X2RiX2FsbG9jX25vZGVgLlxuXG5CdXQgdGhlbiwgSSByZW1lbWJlcmVkIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCEgVGhvc2UgYXJlIGNhbGxlZCB3aXRoaW4gYG1seDVfbWRldl9pbml0YCBhbmQgYG1seDVfbWRldl91bmluaXRgIHJlc3BlY3RpdmVseS4gQW5kIHllcywgdGhvc2UgcGF0aHMgKmFyZSogZGVmaW5pdGVseSByZWFjaGFibGUgYnkgdGhlIFBDSSBmdXp6ZXIuIFNvLCBJIG5lZWQgdG8gYWRqdXN0IG15IHRoaW5raW5nOyBpcyB0aGVyZSBzdGlsbCBhIGZ1enppbmcgb3Bwb3J0dW5pdHkgaGVyZT8gVGhpcyBwYXRjaCBjaGFuZ2VzIGhvdyB3ZSBhbGxvY2F0ZSBkb29yYmVsbCBwYWdlcywgbW92aW5nIHRvIGEgRE1BIHBvb2wgaW5zdGVhZCBvZiBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBhbGxvY2F0aW9uLlxuXG5FdmVuIGlmIGBtbHg1X2RiX2FsbG9jX25vZGVgIGlzbid0IHJlYWNoZWQsIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCBhcmUsIHdoaWNoIGFyZSBpbXBvcnRhbnQuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBtbHg1X2RiX2FsbG9jX25vZGVgIGl0c2VsZiBpcyByZWFjaGFibGUuIElmIHRoZSBQQ0kgZnV6emVyIGNhbiBiZSBjbGV2ZXIgZW5vdWdoIHRvIGZha2UgZmlybXdhcmUgcmVzcG9uc2VzLCBpdCAqbWlnaHQqIGdldCBmdXJ0aGVyLiBJIGtub3cgU3l6a2FsbGVyJ3MgUENJIGZ1enplciBpc24ndCBqdXN0IHNwaXR0aW5nIG91dCByYW5kb20gZGF0YTsgaXQncyB1c2luZyBmdXp6aW5nIHRvIGV4cGxvcmUgdGhlIHN0YXRlIHNwYWNlLiBJdCBjb3VsZCBwb3RlbnRpYWxseSBieXBhc3Mgc29tZSBjaGVja3MgaWYgdGhlIGZ1enplciBmaW5kcyB0aGUgcmlnaHQgdmFsdWVzLiBBbHNvLCB0aGVyZSdzIGBzeXpfcGNpX2RldmljZWAsIGJ1dCB0aGF0J3Mgbm90IHRoZSBvbmx5IHJvdXRlLlxuXG5XYWl0LCB3aGF0IGFib3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmU/IFRoZSBwcm9tcHQgaXMgZm9jdXNlZCBvbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBtbHg1IGlzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlciB3aXRoIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIGl0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB0aG9zZSBlbnZpcm9ubWVudHMgKnVubGVzcyogeW91IHVzZSB0aGUgUENJIGZ1enplci4gQnV0IGRvZXMgdGhlIFBDSSBmdXp6ZXIgY291bnQgYXMgXCJzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiPyBZZXMsIGl0IGRvZXMuIFNvLCB3ZSdyZSBiYWNrIHRvIHJlbHlpbmcgb24gdGhlIGZ1enplciB0byBnaXZlIHVzIG1vcmUgY29kZSBjb3ZlcmFnZS5cblxuQnV0LCBpcyBpdCAqcHJhY3RpY2FsbHkqIHJlYWNoYWJsZSB0byB0aGUgcG9pbnQgb2YgZ2V0dGluZyB0byBSRE1BIHF1ZXVlIGNyZWF0aW9uPyBQcm9iYWJseSBub3QuIENvbXBsZXggZGV2aWNlcyBsaWtlIG1seDUgaGF2ZSBjb21wbGV4IGZpcm13YXJlIGludGVyZmFjZXMgKENNRElGKSBhbmQgSSB0aGluayB0aGUgZnV6emVyIHdvdWxkIGhhdmUgYSBoYXJkIHRpbWUgZ2V0dGluZyBwYXN0IHRoZSBwcm9iZSBjaGVja3MuIEhvd2V2ZXIsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHRoYXQgYG1seDVfZGJfcG9vbHNfaW5pdGAgaXMgY2FsbGVkICpiZWZvcmUqIGJvdGggYG1seDVfY21kX2luaXRfaGNhYCAqYW5kKiBgbWx4NV9jbWRfZW5hYmxlYC4gU28sIEkgbmVlZCB0byByZXZpc2l0IGBtbHg1X21kZXZfaW5pdGAgYWdhaW4sIGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MzgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjo1Ny4xNzYyMjg4NThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwNCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4MDQ6XFx0aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcXG4xODA1OlxcdHtcXG4xODA2OlxcdFxcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2O1xcbjE4MDc6XFx0XFx0aW50IGVycjtcXG4xODA4OlxcdFxcbjE4MDk6XFx0XFx0bWVtY3B5KFxcdTAwMjZkZXYtXFx1MDAzZXByb2ZpbGUsIFxcdTAwMjZwcm9maWxlW3Byb2ZpbGVfaWR4XSwgc2l6ZW9mKGRldi1cXHUwMDNlcHJvZmlsZSkpO1xcbjE4MTA6XFx0XFx0bG9ja2RlcF9yZWdpc3Rlcl9rZXkoXFx1MDAyNmRldi1cXHUwMDNlbG9ja19rZXkpO1xcbjE4MTE6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VpbnRmX3N0YXRlX211dGV4KTtcXG4xODEyOlxcdFxcdGxvY2tkZXBfc2V0X2NsYXNzKFxcdTAwMjZkZXYtXFx1MDAzZWludGZfc3RhdGVfbXV0ZXgsIFxcdTAwMjZkZXYtXFx1MDAzZWxvY2tfa2V5KTtcXG4xODEzOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmRldi1cXHUwMDNlbWx4NWVfcmVzLnVwbGlua19uZXRkZXZfbG9jayk7XFxuMTgxNDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXdjX3N0YXRlX2xvY2spO1xcbjE4MTU6XFx0XFxuMTgxNjpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3MucmVnX2hlYWQubG9jayk7XFxuMTgxNzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3Mud2NfaGVhZC5sb2NrKTtcXG4xODE4OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3MucmVnX2hlYWQubGlzdCk7XFxuMTgxOTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XFxuMTgyMDpcXHRcXG4xODIxOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWFsbG9jX211dGV4KTtcXG4xODIyOlxcdFxcbjE4MjM6XFx0XFx0cHJpdi1cXHUwMDNlbnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSk7XFxuMTgyNDpcXHRcXHRwcml2LVxcdTAwM2VkYmcuZGJnX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoZGV2LVxcdTAwM2VkZXZpY2UpLFxcbjE4MjU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0bWx4NV9kZWJ1Z2ZzX3Jvb3QpO1xcbjE4MjY6XFx0XFxuMTgyNzpcXHRcXHRlcnIgPSBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2luaXQoZGV2KTtcXG4xODI4OlxcdFxcdGlmIChlcnIpXFxuMTgyOTpcXHRcXHRcXHRnb3RvIGVycl9mcmFnX2J1Zl9wb29sc19pbml0O1xcbjE4MzA6XFx0XFxuMTgzMTpcXHRcXHRlcnIgPSBtbHg1X2RiX3Bvb2xzX2luaXQoZGV2KTtcXG4xODMyOlxcdFxcdGlmIChlcnIpXFxuMTgzMzpcXHRcXHRcXHRnb3RvIGVycl9kYl9wb29sc19pbml0O1xcbjE4MzQ6XFx0XFxuMTgzNTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNldHJhcHMpO1xcbjE4MzY6XFx0XFxuMTgzNzpcXHRcXHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XFxuMTgzODpcXHRcXHRpZiAoZXJyKSB7XFxuMTgzOTpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldiwgXFxcIkZhaWxlZCBpbml0aWFsaXppbmcgY21kaWYgU1cgc3RydWN0cywgYWJvcnRpbmdcXFxcblxcXCIpO1xcbjE4NDA6XFx0XFx0XFx0Z290byBlcnJfY21kX2luaXQ7XFxuMTg0MTpcXHRcXHR9XFxuMTg0MjpcXHRcXG4xODQzOlxcdFxcdGVyciA9IG1seDVfdG91dF9pbml0KGRldik7XFxuMTg0NDpcXHRcXHRpZiAoZXJyKSB7XFxuMTg0NTpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldiwgXFxcIkZhaWxlZCBpbml0aWFsaXppbmcgdGltZW91dHMsIGFib3J0aW5nXFxcXG5cXFwiKTtcXG4xODQ2OlxcdFxcdFxcdGdvdG8gZXJyX3RpbWVvdXRfaW5pdDtcXG4xODQ3OlxcdFxcdH1cXG4xODQ4OlxcdFxcbjE4NDk6XFx0XFx0ZXJyID0gbWx4NV9oZWFsdGhfaW5pdChkZXYpO1xcbjE4NTA6XFx0XFx0aWYgKGVycilcXG4xODUxOlxcdFxcdFxcdGdvdG8gZXJyX2hlYWx0aF9pbml0O1xcbjE4NTI6XFx0XFxuMTg1MzpcXHRcXHRlcnIgPSBtbHg1X3BhZ2VhbGxvY19pbml0KGRldik7XFxuMTg1NDpcXHRcXHRpZiAoZXJyKVxcbjE4NTU6XFx0XFx0XFx0Z290byBlcnJfcGFnZWFsbG9jX2luaXQ7XFxuMTg1NjpcXHRcXG4xODU3OlxcdFxcdGVyciA9IG1seDVfYWRldl9pbml0KGRldik7XFxuMTg1ODpcXHRcXHRpZiAoZXJyKVxcbjE4NTk6XFx0XFx0XFx0Z290byBlcnJfYWRldl9pbml0O1xcbjE4NjA6XFx0XFxuMTg2MTpcXHRcXHRlcnIgPSBtbHg1X2hjYV9jYXBzX2FsbG9jKGRldik7XFxuMTg2MjpcXHRcXHRpZiAoZXJyKVxcbjE4NjM6XFx0XFx0XFx0Z290byBlcnJfaGNhX2NhcHM7XFxuMTg2NDpcXHRcXG4xODY1OlxcdFxcdGVyciA9IG1seDVfbm90aWZpZXJzX2luaXQoZGV2KTtcXG4xODY2OlxcdFxcdGlmIChlcnIpXFxuMTg2NzpcXHRcXHRcXHRnb3RvIGVycl9ub3RpZmllcnNfaW5pdDtcXG4xODY4OlxcdFxcbjE4Njk6XFx0XFx0LyogVGhlIGNvbmp1bmN0aW9uIG9mIHN3X3ZoY2FfaWQgd2l0aCBzd19vd25lcl9pZCB3aWxsIGJlIGEgZ2xvYmFsXFxuMTg3MDpcXHRcXHQgKiB1bmlxdWUgaWQgcGVyIGZ1bmN0aW9uIHdoaWNoIHVzZXMgbWx4NV9jb3JlLlxcbjE4NzE6XFx0XFx0ICogVGhvc2UgdmFsdWVzIGFyZSBzdXBwbGllZCB0byBGVyBhcyBwYXJ0IG9mIHRoZSBpbml0IEhDQSBjb21tYW5kIHRvXFxuMTg3MjpcXHRcXHQgKiBiZSB1c2VkIGJ5IGJvdGggZHJpdmVyIGFuZCBGVyB3aGVuIGl0J3MgYXBwbGljYWJsZS5cXG4xODczOlxcdFxcdCAqL1xcbjE4NzQ6XFx0XFx0ZGV2LVxcdTAwM2Vwcml2LnN3X3ZoY2FfaWQgPSBpZGFfYWxsb2NfcmFuZ2UoXFx1MDAyNnN3X3ZoY2FfaWRhLCAxLFxcbjE4NzU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BWF9TV19WSENBX0lELFxcbjE4NzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEdGUF9LRVJORUwpO1xcbjE4Nzc6XFx0XFx0aWYgKGRldi1cXHUwMDNlcHJpdi5zd192aGNhX2lkIFxcdTAwM2MgMClcXG4xODc4OlxcdFxcdFxcdG1seDVfY29yZV9lcnIoZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHN3X3ZoY2FfaWQsIGVycj0lZFxcXFxuXFxcIixcXG4xODc5OlxcdFxcdFxcdFxcdCAgICAgIGRldi1cXHUwMDNlcHJpdi5zd192aGNhX2lkKTtcXG4xODgwOlxcdFxcbjE4ODE6XFx0XFx0cmV0dXJuIDA7XFxuMTg4MjpcXHRcXG4xODgzOlxcdGVycl9ub3RpZmllcnNfaW5pdDpcXG4xODg0OlxcdFxcdG1seDVfaGNhX2NhcHNfZnJlZShkZXYpO1xcbjE4ODU6XFx0ZXJyX2hjYV9jYXBzOlxcbjE4ODY6XFx0XFx0bWx4NV9hZGV2X2NsZWFudXAoZGV2KTtcXG4xODg3OlxcdGVycl9hZGV2X2luaXQ6XFxuMTg4ODpcXHRcXHRtbHg1X3BhZ2VhbGxvY19jbGVhbnVwKGRldik7XFxuMTg4OTpcXHRlcnJfcGFnZWFsbG9jX2luaXQ6XFxuMTg5MDpcXHRcXHRtbHg1X2hlYWx0aF9jbGVhbnVwKGRldik7XFxuMTg5MTpcXHRlcnJfaGVhbHRoX2luaXQ6XFxuMTg5MjpcXHRcXHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xcbjE4OTM6XFx0ZXJyX3RpbWVvdXRfaW5pdDpcXG4xODk0OlxcdFxcdG1seDVfY21kX2NsZWFudXAoZGV2KTtcXG4xODk1OlxcdGVycl9jbWRfaW5pdDpcXG4xODk2OlxcdFxcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xcbjE4OTc6XFx0ZXJyX2RiX3Bvb2xzX2luaXQ6XFxuMTg5ODpcXHRcXHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG4xODk5OlxcdGVycl9mcmFnX2J1Zl9wb29sc19pbml0OlxcbjE5MDA6XFx0XFx0ZGVidWdmc19yZW1vdmUoZGV2LVxcdTAwM2Vwcml2LmRiZy5kYmdfcm9vdCk7XFxuMTkwMTpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2VhbGxvY19tdXRleCk7XFxuMTkwMjpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3Mud2NfaGVhZC5sb2NrKTtcXG4xOTAzOlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6NTcuMTc2MzYwNDY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MzQ5NDE3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGguIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzIGNhbGxlZCB2ZXJ5IGVhcmx5IGR1cmluZyBgbWx4NV9tZGV2X2luaXRgLiBJIGtub3cgdGhhdCBiZWNhdXNlIG9mIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzLiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNyZWF0ZXMgZGVidWdmcyBlbnRyaWVzLCB3aGljaCBpcyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBJIGtub3cgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBQQ0kgZnV6emVyLCB3aGljaCBpcyB0aGUga2V5IGhlcmUuIFRoZSBmdXp6ZXIgdHJpZ2dlcnMgYHByb2JlX29uZWAsIHdoaWNoIHVsdGltYXRlbHkgY2FsbHMgYG1seDVfbWRldl9pbml0YCwgdGh1cyBleGVjdXRpbmcgYG1seDVfZGJfcG9vbHNfaW5pdGAuXG5cblRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBgbWx4NV9kYl9hbGxvY19ub2RlYCByZWFjaGFibGU/IEl0J3MgbGlrZWx5IHRoYXQgaWYgdGhlIFBDSSBmdXp6ZXIgY2FuIHBhc3MgdGhlIGluaXRpYWwgY2hlY2tzLCBpdCAqY291bGQqIHJlYWNoIHRoYXQgZnVuY3Rpb24uIEV2ZW4gaWYgaXQgZG9lc24ndCwgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIGl0cyBjbGVhbnVwIGNvdW50ZXJwYXJ0IHN0aWxsIHJlcHJlc2VudCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugb2YgdGhlIG1lbW9yeSBwb29sIGFsbG9jYXRpb24gYW5kIGRlYnVnZnMgY3JlYXRpb24uIFRoYXQncyBhIGRlZmluaXRlIGNvbnNpZGVyYXRpb24uXG5cbk5vdywgd2FpdCBhIG1pbnV0ZSwgbGV0IG1lIHJlY2FsbCB0aGUgcHJvbXB0IGNvbnN0cmFpbnRzLiBJdCBzYXlzIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc1wiIHNwZWNpZmljIHR5cGVzIG9mIGNoYW5nZXMuIEl0IGxpc3RzIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbid0IGNoYW5nZSBmbG93LCBhbmQgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbkhtbSwgb2theS4gSXMgYG1seDVgIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgaXQgaXMuIFRoZSBQQ0kgZnV6emVyIGlzIHRoZSBhdmVudWUgaGVyZS4gQnV0LCBpcyB0aGUgUENJIGZ1enplciBjb25zaWRlcmVkIFwic29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIj8gSSB0aGluayBpdCBpczsgaXQgZW11bGF0ZXMgUENJIGRldmljZXMgaW4gc29mdHdhcmUuIFNvLCB5ZXMsIGBtbHg1YCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAoYENPTkZJR19NTFg1X0NPUkVgLCBwZXJoYXBzPykgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgcmVsZXZhbnQuIFRoYXQncyB0aGUgbmV4dCBzdGVwIGluIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NjI2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzM6MDUuOTExMzA1NTUyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ2NDIwNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTFg1X0NPUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo2OmNvbmZpZyBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Mjk6Y29uZmlnIE1MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTExMj1jb25maWcgTUxYNV9UQ19TQU1QTEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMjU6Y29uZmlnIE1MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjYtXFx0Ym9vbCBcXFwiRGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMzc6Y29uZmlnIE1MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzOC1cXHRib29sIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChjb25uZWN0WCBzZXJpZXMpIElQb0lCIG9mZmxvYWRzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjA3Ljk1NzczNTgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODkzMzc0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZWxsYW5veCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY2hhbmdlLCBhbmQgaXQgc2VlbXMgdGhlIGtleSBjb25maWcgdmFyaWFibGUgaW52b2x2ZWQgaXMgYENPTkZJR19NTFg1X0NPUkVgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgYXQgcGxheSBoZXJlLiBUaGlzIGtpbmQgb2Yga2VybmVsIGNvZGUgY2FuIGJlIGNvbXBsZXgsIGFuZCB0aGVyZSBhcmUgb2Z0ZW4gZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyBhbnkgb2YgdGhlIHJlbGF0ZWQgZmlsZXMuXG5cblRoZSBzcGVjaWZpYyBmaWxlIG1vZGlmaWVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY2AuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgdGhlIE1ha2VmaWxlIGFzc29jaWF0ZWQgd2l0aCBgYWxsb2MuY2AuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmlsZSBpcyBidWlsdCBhbmQgbGlua2VkIGlzIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIE1lbGxhbm94IGRyaXZlci4gR290dGEgZmluZCB0aG9zZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkyMiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjExLjk0NzA3NzE5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA2MjYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvY1xcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgKz0gbWx4NV9jb3JlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMy0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE0Om1seDVfY29yZS15IDo9XFx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNTpcXHRcXHRoZWFsdGgubyBtY2cubyBjcS5vIGFsbG9jLm8gcG9ydC5vIG1yLm8gcGQubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE2LVxcdFxcdHRyYW5zb2JqLm8gdnBvcnQubyBzcmlvdi5vIGZzX2NtZC5vIGZzX2NvcmUubyBwY2lfaXJxLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMzoxMi4wMDcxNDY4OThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMjY2NDk4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYSBNZWxsYW5veCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGFsbG9jLm9gLCB3aGljaCBpcyBhbHdheXMgYnVpbHQgd2hlbiBgQ09ORklHX01MWDVfQ09SRWAgaXMgZW5hYmxlZC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCwgYG1seDVfZGJfYWxsb2Nfbm9kZWAsIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFzb25hYmx5IGZ1enogdGhlc2U/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiB0aGUgUENJIGZ1enplciBjYW4gaGl0IGBtbHg1X2RiX2FsbG9jX25vZGVgLiBJZiB0aGUgUENJIGZ1enplciBmYWlscyBiZWZvcmUgYG1seDVfY21kX2luaXRfaGNhYCwgdGhlbiBgbWx4NV9kYl9hbGxvY19ub2RlYCBpcyB1bnJlYWNoYWJsZS4gSSBoYWQgdG8gY29uc2lkZXIsIGNvdWxkIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWAgZnVuY3Rpb24gZG8gdGhpcywgbWF5YmUgd2l0aCBhIHNwZWNpZmljIGRlc2NyaXB0aW9uIGZvciBtbHg1PyBJIGRpZCBhIHNlYXJjaCBmb3IgYHN5el8uKm1seDVgIGFuZCBkaWRuJ3QgZmluZCBhbnl0aGluZywgYnV0IHN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyBnZW5lcmFsbHkuIFNvIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgdmlhIGdlbmVyaWMgUENJIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZnV6emluZyB0YXJnZXRzLCBJJ2xsIGxpc3QgYG1seDVfZGJfcG9vbHNfaW5pdGAsIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLCBgbWx4NV9kYl9hbGxvY19ub2RlYCwgYW5kIGBtbHg1X2RiX2ZyZWVgIGFzIHRoZSBgRm9jdXNTeW1ib2xzYC4gQW5kIEknbGwgbmVlZCBgRW5hYmxlQ29uZmlnc2A6IGBNTFg1X0NPUkVgLlxuXG5XYWl0LCBpcyB0aGVyZSAqYW55KiBvdGhlciBjb25maWcgaW52b2x2ZWQ/IE5vLCBgTUxYNV9DT1JFYCBpcyBzdWZmaWNpZW50LlxuXG5Ob3csIGNvdWxkIEkgcG90ZW50aWFsbHkgcmVhY2ggYG1seDVfZGJfYWxsb2Nfbm9kZWAgZnJvbSB1c2Vyc3BhY2UgdmlhIFJETUE/IElmIGBDT05GSUdfTUxYNV9JTkZJTklCQU5EYCBpcyBlbmFibGVkLCB0aGVuIHVzZXJzcGFjZSBjYW4gY2FsbCBgbWx4NV9pYl9jcmVhdGVfcXBgLCB3aGljaCAqZG9lcyogY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSG93ZXZlciwgdGhpcyByZXF1aXJlcyBhIHJlYWwgbWx4NSBkZXZpY2UsIG9yLCBtb3JlIHJlYWxpc3RpY2FsbHksIHRoZSBQQ0kgZnV6emVyIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIHRoZSBkZXZpY2UgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBSRE1BIGRldmljZSByZWdpc3RlcnMuIFRoYXQgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gYG1seDVfaWJfcHJvYmVgICh0aGUgYXV4aWxpYXJ5IGRyaXZlciBwcm9iZSkuIFRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBtbHg1X21kZXZfaW5pdGAgdG8gc3VjY2VlZCwgYW5kIHRoZW4gdGhlIGF1eGlsaWFyeSBkZXZpY2UgdG8gYmUgYWRkZWQuIEl0J3MgdW5saWtlbHkgdGhlIFBDSSBmdXp6ZXIgY2FuIGZha2UgdGhhdCAqZW50aXJlKiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0byBnZXQgdGhlIFJETUEgZGV2aWNlIHRvIHJlZ2lzdGVyLiBIb3dldmVyLCBgbWx4NV9kYl9wb29sc19pbml0YCAqaXMqIGNhbGxlZCBlYXJseSBpbiBgbWx4NV9tZGV2X2luaXRgLCBhbmQgdGhhdCAqaXMqIHJlYWNoYWJsZS4gU28gdGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBiZWNhdXNlIGl0IHRvdWNoZXMgdGhlIGluaXRpYWxpemF0aW9uIHBhdGggb2YgYSBQQ0kgZHJpdmVyLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgcmVjYXAgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyByZW1vdmluZyBgbWx4NV9kYl9wZ2RpcmAgYW5kIHVzaW5nIGBtbHg1X2RtYV9wb29sYCBpbnN0ZWFkLiBJdCBhZGRzIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYC4gQW5kIGl0IG1vZGlmaWVzIGBtbHg1X2RiX2FsbG9jX25vZGVgIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0IGlzIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBjb3JlIGRyaXZlciwgd2hpY2ggaW1wYWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLCBhbmQgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaXMsIGluIGZhY3QsIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcuXG5cbk9uZSBmaW5hbCBjaGVjaywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgbWx4NV9kbWFfcG9vbGAgaXMgZGVmaW5lZCBpbiBgYWxsb2MuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDI4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjIzLjEzMzc5OTE1OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NjM3ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfZG1hX3Bvb2xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTE6c3RydWN0IG1seDVfZG1hX3Bvb2wge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyLVxcdC8qIFByb3RlY3RzIHBhZ2VfbGlzdCBhbmQgcGVyLXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXBzLiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjA6c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjE6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjItXFx0c3RydWN0IGxpc3RfaGVhZCBwb29sX2xpbms7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz02OD1zdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2OTpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbHNbTUxYNV9GUkFHX0JVRl9QT09MU19OVU1dO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzI6c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTczLVxcdGludCBub2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9ODM9c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTAyOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVzdHJveShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEwODpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTA5LVxcdFxcdFxcdFxcdFxcdFxcdCAgaW50IG5vZGUsIHU4IGJsb2NrX3NoaWZ0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTExOlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMjU6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEyNjptbHg1X2RtYV9wb29sX3BhZ2VfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTI3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMjgtXFx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEyOTpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNTY6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNTc6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjU6c3RhdGljIGludCBtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjY6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY3LVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nICppZHhfb3V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE4MzpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTg0Om1seDVfZG1hX3Bvb2xfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxODY6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTAtXFx0cGFnZSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2cG9vbC1cXHUwMDNlcGFnZV9saXN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlLCBwb29sX2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MjpcXHRpZiAocGFnZSBcXHUwMDI2XFx1MDAyNiAhbWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2UocG9vbCwgcGFnZSwgaWR4X291dCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTkzLVxcdFxcdGdvdG8gdW5sb2NrOyAvKiBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGZyb20gZXhpc3RpbmcgcGFnZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxOTU6XFx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhwb29sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTYtXFx0aWYgKCFwYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTk5LVxcdGxpc3RfYWRkKFxcdTAwMjZwYWdlLVxcdTAwM2Vwb29sX2xpbmssIFxcdTAwMjZwb29sLVxcdTAwM2VwYWdlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIwMDpcXHRtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA3OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZnJlZShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMDg6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjA5LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIxOS1cXHRcXHRsaXN0X2RlbChcXHUwMDI2cGFnZS1cXHUwMDNlcG9vbF9saW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMjA6XFx0XFx0bWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUocG9vbC1cXHUwMDNlZGV2LCBwYWdlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMjEtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzA6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX2dldF9zdGF0cyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzE6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzICpzdGF0cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIzMy1cXHRpbnQgYmxvY2tzX3Blcl9wYWdlID0gQklUKFBBR0VfU0hJRlQgLSBwb29sLVxcdTAwM2VibG9ja19zaGlmdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjM0OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjM1LVxcdHNpemVfdCBmcmVlX2Jsb2NrcyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjUxOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVidWdmc19zdGF0c19wcmludChzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjUyOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjU0OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHN0YXRzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI1NjpcXHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfZ2V0X3N0YXRzKHBvb2wsIFxcdTAwMjZzdGF0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjU3LVxcdHNlcV9wcmludGYoZmlsZSwgXFxcIiU0ZCAgICAgICAlNXp1ICAgICAgJTd6dSAgICAgICAgICAgJTd6dVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNjI6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoc3RydWN0IHNlcV9maWxlICpmaWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0yNjg9bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3koc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3MS1cXHRcXHRpZiAobm9kZV9wb29scy1cXHUwMDNlcG9vbHNbaV0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjcyOlxcdFxcdFxcdG1seDVfZG1hX3Bvb2xfZGVzdHJveShub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjczLVxcdGtmcmVlKG5vZGVfcG9vbHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9Mjc3PW1seDVfZnJhZ19idWZfbm9kZV9wb29sc19jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IG5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg4OlxcdFxcdG5vZGVfcG9vbHMtXFx1MDAzZXBvb2xzW2ldID0gbWx4NV9kbWFfcG9vbF9jcmVhdGUoZGV2LCBub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgYmxvY2tfc2hpZnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzAwPW1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA1OlxcdG1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKGZpbGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxNy1cXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIE1MWDVfRlJBR19CVUZfUE9PTFNfTlVNOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XFx0XFx0XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzIzOlxcdFxcdFxcdG1seDVfZG1hX3Bvb2xfZGVidWdmc19zdGF0c19wcmludChmaWxlLCBwb29sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzgxPWludCBtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4NDpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODUtXFx0aW50IHBvb2xfaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDAyLVxcdFxcdHN0cnVjdCBtbHg1X2J1Zl9saXN0ICpmcmFnID0gXFx1MDAyNmJ1Zi1cXHUwMDNlZnJhZ3NbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDAzOlxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDA0LVxcdFxcdHVuc2lnbmVkIGxvbmcgaWR4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MDY6XFx0XFx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXFx1MDAyNmlkeCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDA3LVxcdFxcdGlmICghcGFnZSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDIwPXZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MjMtXFx0XFx0c3RydWN0IG1seDVfYnVmX2xpc3QgKmZyYWcgPSBcXHUwMDI2YnVmLVxcdTAwM2VmcmFnc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjQ6XFx0XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjU6XFx0XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxcdFxcdHVuc2lnbmVkIGxvbmcgaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDMzLVxcdFxcdGlkeCA9IChmcmFnLVxcdTAwM2VtYXAgLSBwYWdlLVxcdTAwM2VkbWEpIFxcdTAwM2VcXHUwMDNlIHBvb2wtXFx1MDAzZWJsb2NrX3NoaWZ0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzNDpcXHRcXHRtbHg1X2RtYV9wb29sX2ZyZWUocG9vbCwgcGFnZSwgaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDQwPXN0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDU6XFx0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDUwLVxcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1MTpcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IGRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NTY6XFx0XFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00NjM9dm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3Mi1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NzM6XFx0XFx0XFx0bWx4NV9kbWFfcG9vbF9kZXN0cm95KHByaXYtXFx1MDAzZWRiX25vZGVfcG9vbHNbbm9kZV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ3OT1pbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00ODgtXFx0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDg5OlxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0OTE6XFx0XFx0cG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00OTItXFx0XFx0XFx0XFx0XFx0ICAgIG9yZGVyX2Jhc2VfMihjYWNoZV9saW5lX3NpemUoKSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NTA3PWludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwOTpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxMDpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTEtXFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTYtXFx0cG9vbCA9IGRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxNzpcXHRwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCBcXHUwMDI2aWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTgtXFx0aWYgKCFwYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NTMxPXZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUzMzpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlID0gZGItXFx1MDAzZXUucG9vbF9wYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUzNDpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IHBhZ2UtXFx1MDAzZXBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUzNjpcXHRtbHg1X2RtYV9wb29sX2ZyZWUocG9vbCwgcGFnZSwgZGItXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMzoyMy4yNjA0NDIxMjRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1ODU5Mzc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBKdXN0aWZpY2F0aW9uKipcblxuT2theSwgYWZ0ZXIgZXhhbWluaW5nIHRoaXMgcGF0Y2gsIEknbSBjb25maWRlbnQgdGhhdCBpdCdzIGZ1bmN0aW9uYWwgYW5kIHdlIGNhbiByZWFjaCBpdCB3aXRoIFBDSSBmdXp6aW5nLiBUaGF0IHNldHRsZXMgaXQ7IEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBoZXJlIGFyZSBgbWx4NV9kYl9wb29sc19pbml0YCwgYG1seDVfZGJfcG9vbHNfY2xlYW51cGAsIGBtbHg1X2RiX2FsbG9jX25vZGVgLCBhbmQgYG1seDVfZGJfZnJlZWAuIFRoZXNlIGFyZSBnb2luZyB0byBiZSBteSBgRm9jdXNTeW1ib2xzYC5cblxuSSdsbCBlbmFibGUgdGhlIGBNTFg1X0NPUkVgIGNvbmZpZzsgdGhhdCdzIHRoZSByZWxldmFudCBvbmUgZm9yIHRoaXMuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIG1seDUgY29yZSBkcml2ZXIuIEl0J3Mgc3dhcHBpbmcgb3V0IGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5IGZvciBhIERNQSBwb29sLCBhbmQgdGhhdCdzIGdvaW5nIHRvIGltcGFjdCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGhvdyBxdWV1ZXMgYXJlIGNyZWF0ZWQuIENydWNpYWxseSwgdGhlIGluaXRpYWxpemF0aW9uIHBhdGggKmlzKiByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHRob3JvdWdoIHRlc3RpbmcuIFRoaXMgY2hhbmdlIGhhcyBlbm91Z2ggbG93LWxldmVsIGltcGFjdCB0aGF0IGl0J3Mgd29ydGggdGhlIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1NzEsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjI4LjcxOTAzODI3M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjY3MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNTFg1X0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHg1X2RiX3Bvb2xzX2luaXRcIixcbiAgICBcIm1seDVfZGJfcG9vbHNfY2xlYW51cFwiLFxuICAgIFwibWx4NV9kYl9hbGxvY19ub2RlXCIsXG4gICAgXCJtbHg1X2RiX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUxYNV9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWx4NV9kYl9wb29sc19pbml0XCIsXG4gICAgXCJtbHg1X2RiX3Bvb2xzX2NsZWFudXBcIixcbiAgICBcIm1seDVfZGJfYWxsb2Nfbm9kZVwiLFxuICAgIFwibWx4NV9kYl9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBjb3JlIGRyaXZlciwgcmVwbGFjaW5nIGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5IHdpdGggYSBETUEgcG9vbC4gVGhpcyBhZmZlY3RzIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgcXVldWUgY3JlYXRpb24uIFRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2dvrj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 11:13:20 +0000 UTC FinishedAt: 2026-07-24 11:33:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLX5_CORE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLX5_CORE" ], "series_id": "00ca0e86-1312-4499-9d21-bf54ca6c033f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mlx5_db_pools_init", "mlx5_db_pools_cleanup", "mlx5_db_alloc_node", "mlx5_db_free" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWDVfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21seDVfZGJfcG9vbHNfaW5pdCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX3Bvb2xzX2NsZWFudXAmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlJiMzNDssCiAgICAmIzM0O21seDVfZGJfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNzAzNDY2MDlhMzljMDNmYzczYWM1MzdmYWJiYWRmNDE0ODBiZTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTE6MzE6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY1xuaW5kZXggNGZlOWQ3ZDRmMTQzOGUuLjYwZmY0MTM5OTlmNzU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXG5AQCAtNDgsMTMgJiM0Mzs0OCw2IEBAXG4gI2RlZmluZSBNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTSBcXFxuIFx0KFBBR0VfU0hJRlQgLSBNTFg1X0ZSQUdfQlVGX1BPT0xfTUlOX0JMT0NLX1NISUZUICYjNDM7IDEpXG4gXG4tc3RydWN0IG1seDVfZGJfcGdkaXIge1xuLVx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbi1cdHVuc2lnbmVkIGxvbmdcdCAgICAgICAqYml0bWFwO1xuLVx0X19iZTMyXHRcdCAgICAgICAqZGJfcGFnZTtcbi1cdGRtYV9hZGRyX3RcdFx0ZGJfZG1hO1xuLX07XG4tXG4gc3RydWN0IG1seDVfZG1hX3Bvb2wge1xuIFx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXG4gXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbkBAIC00NDQsMTA2ICYjNDM7NDM3LDEwMyBAQCB2b2lkIG1seDVfZnJhZ19idWZfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpO1xuIFxuLXN0YXRpYyBzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqbWx4NV9hbGxvY19kYl9wZ2RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuLVx0XHRcdFx0XHRcdCBpbnQgbm9kZSlcbiYjNDM7c3RhdGljIGludCBtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpwcml2KVxuIHtcbi1cdHUzMiBkYl9wZXJfcGFnZSA9IFBBR0VfU0laRSAvIGNhY2hlX2xpbmVfc2l6ZSgpO1xuLVx0c3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyO1xuJiM0MztcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG4mIzQzO1x0aW50IG5vZGU7XG4gXG4tXHRwZ2RpciA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKnBnZGlyKSwgR0ZQX0tFUk5FTCwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyKVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihmaWxlKTtcbiBcbi1cdHBnZGlyLVx1MDAzZWJpdG1hcCA9IGJpdG1hcF96YWxsb2Nfbm9kZShkYl9wZXJfcGFnZSwgR0ZQX0tFUk5FTCwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyLVx1MDAzZWJpdG1hcCkge1xuLVx0XHRrZnJlZShwZ2Rpcik7XG4tXHRcdHJldHVybiBOVUxMO1xuLVx0fVxuJiM0MztcdGlmICghZGV2LVx1MDAzZXByaXYuZGJfbm9kZV9wb29scylcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuLVx0Yml0bWFwX2ZpbGwocGdkaXItXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSk7XG4mIzQzO1x0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG4gXG4tXHRwZ2Rpci1cdTAwM2VkYl9wYWdlID0gbWx4NV9kbWFfemFsbG9jX2NvaGVyZW50X25vZGUoZGV2LCBQQUdFX1NJWkUsXG4tXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBnZGlyLVx1MDAzZWRiX2RtYSwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyLVx1MDAzZWRiX3BhZ2UpIHtcbi1cdFx0Yml0bWFwX2ZyZWUocGdkaXItXHUwMDNlYml0bWFwKTtcbi1cdFx0a2ZyZWUocGdkaXIpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGlmICghcG9vbClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHBnZGlyO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiYjNDM7REVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnMpO1xuIFxuLXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2Rpcixcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG4mIzQzO3ZvaWQgbWx4NV9kYl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4ge1xuLVx0dTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7XG4tXHRpbnQgb2Zmc2V0O1xuLVx0aW50IGk7XG4mIzQzO1x0c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IFx1MDAyNmRldi1cdTAwM2Vwcml2O1xuJiM0MztcdGludCBub2RlO1xuJiM0MztcbiYjNDM7XHRkZWJ1Z2ZzX3JlbW92ZShwcml2LVx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpXG4mIzQzO1x0XHRpZiAocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKVxuJiM0MztcdFx0XHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKTtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IG5vZGU7XG4gXG4tXHRpID0gZmluZF9maXJzdF9iaXQocGdkaXItXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSk7XG4tXHRpZiAoaSBcdTAwM2U9IGRiX3Blcl9wYWdlKVxuJiM0MztcdHByaXYtXHUwMDNlZGJfbm9kZV9wb29scyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzLCBucl9ub2RlX2lkcyk7XG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0X19jbGVhcl9iaXQoaSwgcGdkaXItXHUwMDNlYml0bWFwKTtcbiYjNDM7XHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcbiYjNDM7XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuIFxuLVx0ZGItXHUwMDNldS5wZ2RpciA9IHBnZGlyO1xuLVx0ZGItXHUwMDNlaW5kZXggICA9IGk7XG4tXHRvZmZzZXQgPSBkYi1cdTAwM2VpbmRleCAqIGNhY2hlX2xpbmVfc2l6ZSgpO1xuLVx0ZGItXHUwMDNlZGIgICAgICA9IHBnZGlyLVx1MDAzZWRiX3BhZ2UgJiM0Mzsgb2Zmc2V0IC8gc2l6ZW9mKCpwZ2Rpci1cdTAwM2VkYl9wYWdlKTtcbi1cdGRiLVx1MDAzZWRtYSAgICAgPSBwZ2Rpci1cdTAwM2VkYl9kbWEgICYjNDM7IG9mZnNldDtcbiYjNDM7XHRcdHBvb2wgPSBtbHg1X2RtYV9wb29sX2NyZWF0ZShkZXYsIG5vZGUsXG4mIzQzO1x0XHRcdFx0XHQgICAgb3JkZXJfYmFzZV8yKGNhY2hlX2xpbmVfc2l6ZSgpKSk7XG4mIzQzO1x0XHRpZiAoIXBvb2wpIHtcbiYjNDM7XHRcdFx0bWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7XG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdID0gcG9vbDtcbiYjNDM7XHR9XG4gXG4tXHRkYi1cdTAwM2VkYlswXSA9IDA7XG4tXHRkYi1cdTAwM2VkYlsxXSA9IDA7XG4mIzQzO1x0cHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPVxuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkYl9kbWFfcG9vbHNcJiMzNDssIDA0NDQsIHByaXYtXHUwMDNlZGJnLmRiZ19yb290LFxuJiM0MztcdFx0XHRcdCAgICBkZXYsIFx1MDAyNm1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnNfZm9wcyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKVxuIHtcbi1cdHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2Rpcjtcbi1cdGludCByZXQgPSAwO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlcHJpdi5wZ2Rpcl9tdXRleCk7XG4tXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBnZGlyLCBcdTAwMjZkZXYtXHUwMDNlcHJpdi5wZ2Rpcl9saXN0LCBsaXN0KVxuLVx0XHRpZiAoIW1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVxuLVx0cGdkaXIgPSBtbHg1X2FsbG9jX2RiX3BnZGlyKGRldiwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyKSB7XG4tXHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuJiM0MztcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG4mIzQzO1x0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBpZHg7XG4mIzQzO1x0aW50IG9mZnNldDtcbiBcbi1cdGxpc3RfYWRkKFx1MDAyNnBnZGlyLVx1MDAzZWxpc3QsIFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX2xpc3QpO1xuJiM0MztcdG5vZGUgPSBub2RlID09IE5VTUFfTk9fTk9ERSA/IG51bWFfbWVtX2lkKCkgOiBub2RlO1xuIFxuLVx0LyogVGhpcyBzaG91bGQgbmV2ZXIgZmFpbCAtLSB3ZSBqdXN0IGFsbG9jYXRlZCBhbiBlbXB0eSBwYWdlOiAqL1xuLVx0V0FSTl9PTihtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSk7XG4mIzQzO1x0cG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG4mIzQzO1x0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXHUwMDI2aWR4KTtcbiYjNDM7XHRpZiAoIXBhZ2UpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1vdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuJiM0MztcdG9mZnNldCA9IGlkeCBcdTAwM2NcdTAwM2MgcG9vbC1cdTAwM2VibG9ja19zaGlmdDtcbiYjNDM7XHRkYi1cdTAwM2V1LnBvb2xfcGFnZSA9IHBhZ2U7XG4mIzQzO1x0ZGItXHUwMDNlaW5kZXggPSBpZHg7XG4mIzQzO1x0ZGItXHUwMDNlZGIgPSAoX19iZTMyICopKCh1OCAqKXBhZ2UtXHUwMDNlYnVmICYjNDM7IG9mZnNldCk7XG4mIzQzO1x0ZGItXHUwMDNlZG1hID0gcGFnZS1cdTAwM2VkbWEgJiM0Mzsgb2Zmc2V0O1xuIFxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcbiBcbiB2b2lkIG1seDVfZGJfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG4ge1xuLVx0dTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX211dGV4KTtcbi1cbi1cdF9fc2V0X2JpdChkYi1cdTAwM2VpbmRleCwgZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXApO1xuLVxuLVx0aWYgKGJpdG1hcF9mdWxsKGRiLVx1MDAzZXUucGdkaXItXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSkpIHtcbi1cdFx0ZG1hX2ZyZWVfY29oZXJlbnQobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSwgUEFHRV9TSVpFLFxuLVx0XHRcdFx0ICBkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWRiX3BhZ2UsIGRiLVx1MDAzZXUucGdkaXItXHUwMDNlZGJfZG1hKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2ZGItXHUwMDNldS5wZ2Rpci1cdTAwM2VsaXN0KTtcbi1cdFx0Yml0bWFwX2ZyZWUoZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXApO1xuLVx0XHRrZnJlZShkYi1cdTAwM2V1LnBnZGlyKTtcbi1cdH1cbiYjNDM7XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlID0gZGItXHUwMDNldS5wb29sX3BhZ2U7XG4mIzQzO1x0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLVx1MDAzZXBvb2w7XG4gXG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuJiM0MztcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBkYi1cdTAwM2VpbmRleCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfZnJlZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcbmluZGV4IDY0M2I0YWFjMjAzMzY4Li41ZjI4ZDkwNmMzNWI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcbkBAIC0xODE5LDggJiM0MzsxODE5LDYgQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXBnZGlyX211dGV4KTtcbi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNlcGdkaXJfbGlzdCk7XG4gXG4gXHRwcml2LVx1MDAzZW51bWFfbm9kZSA9IGRldl90b19ub2RlKG1seDVfY29yZV9kbWFfZGV2KGRldikpO1xuIFx0cHJpdi1cdTAwM2VkYmcuZGJnX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoZGV2LVx1MDAzZWRldmljZSksXG5AQCAtMTgzMCw2ICYjNDM7MTgyOCwxMCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDtcbiBcbiYjNDM7XHRlcnIgPSBtbHg1X2RiX3Bvb2xzX2luaXQoZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnJfZGJfcG9vbHNfaW5pdDtcbiYjNDM7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZXRyYXBzKTtcbiBcbiBcdGVyciA9IG1seDVfY21kX2luaXQoZGV2KTtcbkBAIC0xODkxLDEwICYjNDM7MTg5MywxMSBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuIGVycl90aW1lb3V0X2luaXQ6XG4gXHRtbHg1X2NtZF9jbGVhbnVwKGRldik7XG4gZXJyX2NtZF9pbml0OlxuJiM0MztcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuJiM0MztlcnJfZGJfcG9vbHNfaW5pdDpcbiBcdG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChkZXYpO1xuIGVycl9mcmFnX2J1Zl9wb29sc19pbml0OlxuIFx0ZGVidWdmc19yZW1vdmUoZGV2LVx1MDAzZXByaXYuZGJnLmRiZ19yb290KTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbkBAIC0xOTE3LDkgJiM0MzsxOTIwLDkgQEAgdm9pZCBtbHg1X21kZXZfdW5pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4gXHRtbHg1X2hlYWx0aF9jbGVhbnVwKGRldik7XG4gXHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xuIFx0bWx4NV9jbWRfY2xlYW51cChkZXYpO1xuJiM0MztcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuIFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGV2LVx1MDAzZXByaXYuZGJnLmRiZ19yb290KTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmhcbmluZGV4IDA5ZTY2OWY4M2RiYTc2Li5kNjcxM2EyY2U2NzY5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oXG5AQCAtNDM4LDYgJiM0Mzs0MzgsOCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KTtcbiB2b2lkIG1seDVfbWRldl91bmluaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiB2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiYjNDM7aW50IG1seDVfZGJfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiYjNDM7dm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gdm9pZCBtbHg1X3VuaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXG5pbmRleCBiMTg3MWMwODIxZDBiOS4uODNkMGE4M2JiZmJjYWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaFxuQEAgLTU0OCw2ICYjNDM7NTQ4LDcgQEAgc3RydWN0IG1seDVfZGVidWdmc19lbnRyaWVzIHtcbiBcdHN0cnVjdCBkZW50cnkgKmNxX2RlYnVnZnM7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpjbWRpZl9kZWJ1Z2ZzO1xuIFx0c3RydWN0IGRlbnRyeSAqZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnM7XG4mIzQzO1x0c3RydWN0IGRlbnRyeSAqZGJfZG1hX3Bvb2xzX2RlYnVnZnM7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpwYWdlc19kZWJ1Z2ZzO1xuIFx0c3RydWN0IGRlbnRyeSAqbGFnX2RlYnVnZnM7XG4gfTtcbkBAIC01NjksNiAmIzQzOzU3MCw3IEBAIGVudW0gbWx4NV9wYWdlX21ndF9tb2RlIHtcbiB9O1xuIFxuIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHM7XG4mIzQzO3N0cnVjdCBtbHg1X2RtYV9wb29sO1xuIHN0cnVjdCBtbHg1X2Z0X3Bvb2w7XG4gc3RydWN0IG1seDVfcHJpdiB7XG4gXHQvKiBJUlEgdGFibGUgdmFsaWQgb25seSBmb3IgcmVhbCBwY2kgZGV2aWNlcyBQRiBvciBWRiAqL1xuQEAgLTU5OCwxMCAmIzQzOzYwMCw4IEBAIHN0cnVjdCBtbHg1X3ByaXYge1xuIFx0c3RydWN0IG11dGV4ICAgICAgICAgICAgYWxsb2NfbXV0ZXg7XG4gXHRpbnQgICAgICAgICAgICAgICAgICAgICBudW1hX25vZGU7XG4gXG4tXHRzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBwZ2Rpcl9tdXRleDtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBnZGlyX2xpc3Q7XG4tXG4gXHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICoqZnJhZ19idWZfbm9kZV9wb29scztcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqKmRiX25vZGVfcG9vbHM7XG4gXHQvKiBlbmQ6IGFsbG9jIHN0dWZmICovXG4gXG4gXHRzdHJ1Y3QgbWx4NV9hZGV2ICAgICAgICoqYWRldjtcbkBAIC04MDYsNyAmIzQzOzgwNiw3IEBAIHN0cnVjdCBtbHg1X2NvcmVfZGV2IHtcbiBzdHJ1Y3QgbWx4NV9kYiB7XG4gXHRfX2JlMzJcdFx0XHQqZGI7XG4gXHR1bmlvbiB7XG4tXHRcdHN0cnVjdCBtbHg1X2RiX3BnZGlyXHRcdCpwZ2RpcjtcbiYjNDM7XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2VcdCpwb29sX3BhZ2U7XG4gXHRcdHN0cnVjdCBtbHg1X2liX3VzZXJfZGJfcGFnZVx0KnVzZXJfcGFnZTtcbiBcdH1cdFx0XHR1O1xuIFx0ZG1hX2FkZHJfdFx0XHRkbWE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWDVfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21seDVfZGJfcG9vbHNfaW5pdCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX3Bvb2xzX2NsZWFudXAmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlJiMzNDssCiAgICAmIzM0O21seDVfZGJfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ3MDM0NjYwOWEzOWMwM2ZjNzNhYzUzN2ZhYmJhZGY0MTQ4MGJlMDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAxMTozMToyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMKaW5kZXggNGZlOWQ3ZDRmMTQzOGUuLjYwZmY0MTM5OTlmNzU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYwpAQCAtNDgsMTMgJiM0Mzs0OCw2IEBACiAjZGVmaW5lIE1MWDVfRlJBR19CVUZfUE9PTFNfTlVNIFwKIAkoUEFHRV9TSElGVCAtIE1MWDVfRlJBR19CVUZfUE9PTF9NSU5fQkxPQ0tfU0hJRlQgJiM0MzsgMSkKIAotc3RydWN0IG1seDVfZGJfcGdkaXIgewotCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKLQl1bnNpZ25lZCBsb25nCSAgICAgICAqYml0bWFwOwotCV9fYmUzMgkJICAgICAgICpkYl9wYWdlOwotCWRtYV9hZGRyX3QJCWRiX2RtYTsKLX07Ci0KIHN0cnVjdCBtbHg1X2RtYV9wb29sIHsKIAkvKiBQcm90ZWN0cyBwYWdlX2xpc3QgYW5kIHBlci1wYWdlIGFsbG9jYXRpb24gYml0bWFwcy4gKi8KIAlzdHJ1Y3QgbXV0ZXggbG9jazsKQEAgLTQ0NCwxMDYgJiM0Mzs0MzcsMTAzIEBAIHZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpOwogCi1zdGF0aWMgc3RydWN0IG1seDVfZGJfcGdkaXIgKm1seDVfYWxsb2NfZGJfcGdkaXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwKLQkJCQkJCSBpbnQgbm9kZSkKJiM0MztzdGF0aWMgaW50IG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpCiB7Ci0JdTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7Ci0Jc3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyOwomIzQzOwlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS0mZ3Q7cHJpdmF0ZTsKJiM0MzsJaW50IG5vZGU7CiAKLQlwZ2RpciA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKnBnZGlyKSwgR0ZQX0tFUk5FTCwgbm9kZSk7Ci0JaWYgKCFwZ2RpcikKLQkJcmV0dXJuIE5VTEw7CiYjNDM7CW1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKGZpbGUpOwogCi0JcGdkaXItJmd0O2JpdG1hcCA9IGJpdG1hcF96YWxsb2Nfbm9kZShkYl9wZXJfcGFnZSwgR0ZQX0tFUk5FTCwgbm9kZSk7Ci0JaWYgKCFwZ2Rpci0mZ3Q7Yml0bWFwKSB7Ci0JCWtmcmVlKHBnZGlyKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQomIzQzOwlpZiAoIWRldi0mZ3Q7cHJpdi5kYl9ub2RlX3Bvb2xzKQomIzQzOwkJcmV0dXJuIDA7CiAKLQliaXRtYXBfZmlsbChwZ2Rpci0mZ3Q7Yml0bWFwLCBkYl9wZXJfcGFnZSk7CiYjNDM7CWZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkgewomIzQzOwkJc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBkZXYtJmd0O3ByaXYuZGJfbm9kZV9wb29sc1tub2RlXTsKIAotCXBnZGlyLSZndDtkYl9wYWdlID0gbWx4NV9kbWFfemFsbG9jX2NvaGVyZW50X25vZGUoZGV2LCBQQUdFX1NJWkUsCi0JCQkJCQkgICAgICAgJmFtcDtwZ2Rpci0mZ3Q7ZGJfZG1hLCBub2RlKTsKLQlpZiAoIXBnZGlyLSZndDtkYl9wYWdlKSB7Ci0JCWJpdG1hcF9mcmVlKHBnZGlyLSZndDtiaXRtYXApOwotCQlrZnJlZShwZ2Rpcik7Ci0JCXJldHVybiBOVUxMOwomIzQzOwkJaWYgKCFwb29sKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpOwogCX0KIAotCXJldHVybiBwZ2RpcjsKJiM0MzsJcmV0dXJuIDA7CiB9CiYjNDM7REVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnMpOwogCi1zdGF0aWMgaW50IG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXIsCi0JCQkJICAgIHN0cnVjdCBtbHg1X2RiICpkYikKJiM0Mzt2b2lkIG1seDVfZGJfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQogewotCXUzMiBkYl9wZXJfcGFnZSA9IFBBR0VfU0laRSAvIGNhY2hlX2xpbmVfc2l6ZSgpOwotCWludCBvZmZzZXQ7Ci0JaW50IGk7CiYjNDM7CXN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSAmYW1wO2Rldi0mZ3Q7cHJpdjsKJiM0MzsJaW50IG5vZGU7CiYjNDM7CiYjNDM7CWRlYnVnZnNfcmVtb3ZlKHByaXYtJmd0O2RiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyk7CiYjNDM7CXByaXYtJmd0O2RiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyA9IE5VTEw7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkKJiM0MzsJCWlmIChwcml2LSZndDtkYl9ub2RlX3Bvb2xzW25vZGVdKQomIzQzOwkJCW1seDVfZG1hX3Bvb2xfZGVzdHJveShwcml2LSZndDtkYl9ub2RlX3Bvb2xzW25vZGVdKTsKJiM0MzsKJiM0MzsJa2ZyZWUocHJpdi0mZ3Q7ZGJfbm9kZV9wb29scyk7CiYjNDM7CXByaXYtJmd0O2RiX25vZGVfcG9vbHMgPSBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gJmFtcDtkZXYtJmd0O3ByaXY7CiYjNDM7CWludCBub2RlOwogCi0JaSA9IGZpbmRfZmlyc3RfYml0KHBnZGlyLSZndDtiaXRtYXAsIGRiX3Blcl9wYWdlKTsKLQlpZiAoaSAmZ3Q7PSBkYl9wZXJfcGFnZSkKJiM0MzsJcHJpdi0mZ3Q7ZGJfbm9kZV9wb29scyA9IGt6YWxsb2Nfb2JqcygqcHJpdi0mZ3Q7ZGJfbm9kZV9wb29scywgbnJfbm9kZV9pZHMpOwomIzQzOwlpZiAoIXByaXYtJmd0O2RiX25vZGVfcG9vbHMpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JX19jbGVhcl9iaXQoaSwgcGdkaXItJmd0O2JpdG1hcCk7CiYjNDM7CWZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkgewomIzQzOwkJc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7CiAKLQlkYi0mZ3Q7dS5wZ2RpciA9IHBnZGlyOwotCWRiLSZndDtpbmRleCAgID0gaTsKLQlvZmZzZXQgPSBkYi0mZ3Q7aW5kZXggKiBjYWNoZV9saW5lX3NpemUoKTsKLQlkYi0mZ3Q7ZGIgICAgICA9IHBnZGlyLSZndDtkYl9wYWdlICYjNDM7IG9mZnNldCAvIHNpemVvZigqcGdkaXItJmd0O2RiX3BhZ2UpOwotCWRiLSZndDtkbWEgICAgID0gcGdkaXItJmd0O2RiX2RtYSAgJiM0Mzsgb2Zmc2V0OwomIzQzOwkJcG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSwKJiM0MzsJCQkJCSAgICBvcmRlcl9iYXNlXzIoY2FjaGVfbGluZV9zaXplKCkpKTsKJiM0MzsJCWlmICghcG9vbCkgewomIzQzOwkJCW1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpOwomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJfQomIzQzOwkJcHJpdi0mZ3Q7ZGJfbm9kZV9wb29sc1tub2RlXSA9IHBvb2w7CiYjNDM7CX0KIAotCWRiLSZndDtkYlswXSA9IDA7Ci0JZGItJmd0O2RiWzFdID0gMDsKJiM0MzsJcHJpdi0mZ3Q7ZGJnLmRiX2RtYV9wb29sc19kZWJ1Z2ZzID0KJiM0MzsJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtkYl9kbWFfcG9vbHMmIzM0OywgMDQ0NCwgcHJpdi0mZ3Q7ZGJnLmRiZ19yb290LAomIzQzOwkJCQkgICAgZGV2LCAmYW1wO21seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnNfZm9wcyk7CiAKIAlyZXR1cm4gMDsKIH0KIAogaW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKQogewotCXN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcjsKLQlpbnQgcmV0ID0gMDsKLQotCW11dGV4X2xvY2soJmFtcDtkZXYtJmd0O3ByaXYucGdkaXJfbXV0ZXgpOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShwZ2RpciwgJmFtcDtkZXYtJmd0O3ByaXYucGdkaXJfbGlzdCwgbGlzdCkKLQkJaWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSkKLQkJCWdvdG8gb3V0OwotCi0JcGdkaXIgPSBtbHg1X2FsbG9jX2RiX3BnZGlyKGRldiwgbm9kZSk7Ci0JaWYgKCFwZ2RpcikgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDsKLQl9CiYjNDM7CXN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7CiYjNDM7CXN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sOwomIzQzOwl1bnNpZ25lZCBsb25nIGlkeDsKJiM0MzsJaW50IG9mZnNldDsKIAotCWxpc3RfYWRkKCZhbXA7cGdkaXItJmd0O2xpc3QsICZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX2xpc3QpOwomIzQzOwlub2RlID0gbm9kZSA9PSBOVU1BX05PX05PREUgPyBudW1hX21lbV9pZCgpIDogbm9kZTsKIAotCS8qIFRoaXMgc2hvdWxkIG5ldmVyIGZhaWwgLS0gd2UganVzdCBhbGxvY2F0ZWQgYW4gZW1wdHkgcGFnZTogKi8KLQlXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTsKJiM0MzsJcG9vbCA9IGRldi0mZ3Q7cHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdOwomIzQzOwlwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCAmYW1wO2lkeCk7CiYjNDM7CWlmICghcGFnZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX211dGV4KTsKJiM0MzsJb2Zmc2V0ID0gaWR4ICZsdDsmbHQ7IHBvb2wtJmd0O2Jsb2NrX3NoaWZ0OwomIzQzOwlkYi0mZ3Q7dS5wb29sX3BhZ2UgPSBwYWdlOwomIzQzOwlkYi0mZ3Q7aW5kZXggPSBpZHg7CiYjNDM7CWRiLSZndDtkYiA9IChfX2JlMzIgKikoKHU4ICopcGFnZS0mZ3Q7YnVmICYjNDM7IG9mZnNldCk7CiYjNDM7CWRiLSZndDtkbWEgPSBwYWdlLSZndDtkbWEgJiM0Mzsgb2Zmc2V0OwogCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2FsbG9jX25vZGUpOwogCiB2b2lkIG1seDVfZGJfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIpCiB7Ci0JdTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7Ci0KLQltdXRleF9sb2NrKCZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX211dGV4KTsKLQotCV9fc2V0X2JpdChkYi0mZ3Q7aW5kZXgsIGRiLSZndDt1LnBnZGlyLSZndDtiaXRtYXApOwotCi0JaWYgKGJpdG1hcF9mdWxsKGRiLSZndDt1LnBnZGlyLSZndDtiaXRtYXAsIGRiX3Blcl9wYWdlKSkgewotCQlkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsCi0JCQkJICBkYi0mZ3Q7dS5wZ2Rpci0mZ3Q7ZGJfcGFnZSwgZGItJmd0O3UucGdkaXItJmd0O2RiX2RtYSk7Ci0JCWxpc3RfZGVsKCZhbXA7ZGItJmd0O3UucGdkaXItJmd0O2xpc3QpOwotCQliaXRtYXBfZnJlZShkYi0mZ3Q7dS5wZ2Rpci0mZ3Q7Yml0bWFwKTsKLQkJa2ZyZWUoZGItJmd0O3UucGdkaXIpOwotCX0KJiM0MzsJc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSA9IGRiLSZndDt1LnBvb2xfcGFnZTsKJiM0MzsJc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLSZndDtwb29sOwogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7ZGV2LSZndDtwcml2LnBnZGlyX211dGV4KTsKJiM0MzsJbWx4NV9kbWFfcG9vbF9mcmVlKHBvb2wsIHBhZ2UsIGRiLSZndDtpbmRleCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2ZyZWUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwppbmRleCA2NDNiNGFhYzIwMzM2OC4uNWYyOGQ5MDZjMzViNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwpAQCAtMTgxOSw4ICYjNDM7MTgxOSw2IEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpCiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtwcml2LSZndDtiZnJlZ3Mud2NfaGVhZC5saXN0KTsKIAogCW11dGV4X2luaXQoJmFtcDtwcml2LSZndDthbGxvY19tdXRleCk7Ci0JbXV0ZXhfaW5pdCgmYW1wO3ByaXYtJmd0O3BnZGlyX211dGV4KTsKLQlJTklUX0xJU1RfSEVBRCgmYW1wO3ByaXYtJmd0O3BnZGlyX2xpc3QpOwogCiAJcHJpdi0mZ3Q7bnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSk7CiAJcHJpdi0mZ3Q7ZGJnLmRiZ19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGRldi0mZ3Q7ZGV2aWNlKSwKQEAgLTE4MzAsNiAmIzQzOzE4MjgsMTAgQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeCkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9mcmFnX2J1Zl9wb29sc19pbml0OwogCiYjNDM7CWVyciA9IG1seDVfZGJfcG9vbHNfaW5pdChkZXYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfZGJfcG9vbHNfaW5pdDsKJiM0MzsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3ByaXYtJmd0O3RyYXBzKTsKIAogCWVyciA9IG1seDVfY21kX2luaXQoZGV2KTsKQEAgLTE4OTEsMTAgJiM0MzsxODkzLDExIEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpCiBlcnJfdGltZW91dF9pbml0OgogCW1seDVfY21kX2NsZWFudXAoZGV2KTsKIGVycl9jbWRfaW5pdDoKJiM0MzsJbWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7CiYjNDM7ZXJyX2RiX3Bvb2xzX2luaXQ6CiAJbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7CiBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDoKIAlkZWJ1Z2ZzX3JlbW92ZShkZXYtJmd0O3ByaXYuZGJnLmRiZ19yb290KTsKLQltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7cGdkaXJfbXV0ZXgpOwogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDthbGxvY19tdXRleCk7CiAJbXV0ZXhfZGVzdHJveSgmYW1wO3ByaXYtJmd0O2JmcmVncy53Y19oZWFkLmxvY2spOwogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDtiZnJlZ3MucmVnX2hlYWQubG9jayk7CkBAIC0xOTE3LDkgJiM0MzsxOTIwLDkgQEAgdm9pZCBtbHg1X21kZXZfdW5pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpCiAJbWx4NV9oZWFsdGhfY2xlYW51cChkZXYpOwogCW1seDVfdG91dF9jbGVhbnVwKGRldik7CiAJbWx4NV9jbWRfY2xlYW51cChkZXYpOwomIzQzOwltbHg1X2RiX3Bvb2xzX2NsZWFudXAoZGV2KTsKIAltbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTsKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGV2LSZndDtwcml2LmRiZy5kYmdfcm9vdCk7Ci0JbXV0ZXhfZGVzdHJveSgmYW1wO3ByaXYtJmd0O3BnZGlyX211dGV4KTsKIAltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7YWxsb2NfbXV0ZXgpOwogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDtiZnJlZ3Mud2NfaGVhZC5sb2NrKTsKIAltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7YmZyZWdzLnJlZ19oZWFkLmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oCmluZGV4IDA5ZTY2OWY4M2RiYTc2Li5kNjcxM2EyY2U2NzY5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaApAQCAtNDM4LDYgJiM0Mzs0MzgsOCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KTsKIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsKIGludCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7CiB2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsKJiM0MztpbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwomIzQzO3ZvaWQgbWx4NV9kYl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwogaW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7CiBpbnQgbWx4NV9pbml0X29uZV9kZXZsX2xvY2tlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsKIHZvaWQgbWx4NV91bmluaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oCmluZGV4IGIxODcxYzA4MjFkMGI5Li44M2QwYTgzYmJmYmNhYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaApAQCAtNTQ4LDYgJiM0Mzs1NDgsNyBAQCBzdHJ1Y3QgbWx4NV9kZWJ1Z2ZzX2VudHJpZXMgewogCXN0cnVjdCBkZW50cnkgKmNxX2RlYnVnZnM7CiAJc3RydWN0IGRlbnRyeSAqY21kaWZfZGVidWdmczsKIAlzdHJ1Y3QgZGVudHJ5ICpmcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmczsKJiM0MzsJc3RydWN0IGRlbnRyeSAqZGJfZG1hX3Bvb2xzX2RlYnVnZnM7CiAJc3RydWN0IGRlbnRyeSAqcGFnZXNfZGVidWdmczsKIAlzdHJ1Y3QgZGVudHJ5ICpsYWdfZGVidWdmczsKIH07CkBAIC01NjksNiAmIzQzOzU3MCw3IEBAIGVudW0gbWx4NV9wYWdlX21ndF9tb2RlIHsKIH07CiAKIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHM7CiYjNDM7c3RydWN0IG1seDVfZG1hX3Bvb2w7CiBzdHJ1Y3QgbWx4NV9mdF9wb29sOwogc3RydWN0IG1seDVfcHJpdiB7CiAJLyogSVJRIHRhYmxlIHZhbGlkIG9ubHkgZm9yIHJlYWwgcGNpIGRldmljZXMgUEYgb3IgVkYgKi8KQEAgLTU5OCwxMCAmIzQzOzYwMCw4IEBAIHN0cnVjdCBtbHg1X3ByaXYgewogCXN0cnVjdCBtdXRleCAgICAgICAgICAgIGFsbG9jX211dGV4OwogCWludCAgICAgICAgICAgICAgICAgICAgIG51bWFfbm9kZTsKIAotCXN0cnVjdCBtdXRleCAgICAgICAgICAgIHBnZGlyX211dGV4OwotCXN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBnZGlyX2xpc3Q7Ci0KIAlzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICoqZnJhZ19idWZfbm9kZV9wb29sczsKJiM0MzsJc3RydWN0IG1seDVfZG1hX3Bvb2wgKipkYl9ub2RlX3Bvb2xzOwogCS8qIGVuZDogYWxsb2Mgc3R1ZmYgKi8KIAogCXN0cnVjdCBtbHg1X2FkZXYgICAgICAgKiphZGV2OwpAQCAtODA2LDcgJiM0Mzs4MDYsNyBAQCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiB7CiBzdHJ1Y3QgbWx4NV9kYiB7CiAJX19iZTMyCQkJKmRiOwogCXVuaW9uIHsKLQkJc3RydWN0IG1seDVfZGJfcGdkaXIJCSpwZ2RpcjsKJiM0MzsJCXN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UJKnBvb2xfcGFnZTsKIAkJc3RydWN0IG1seDVfaWJfdXNlcl9kYl9wYWdlCSp1c2VyX3BhZ2U7CiAJfQkJCXU7CiAJZG1hX2FkZHJfdAkJZG1hOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgTWVsbGFub3ggQ29ubmVjdFgtNSBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGluIHRoZSBNZWxsYW5veCBDb25uZWN0WC01IChtbHg1KSBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlLCBzd2FwcGluZyBgbWx4NV9kYl9wZ2RpcmAgd2l0aCBgbWx4NV9kbWFfcG9vbGAgZm9yIHRob3NlIGFsbG9jYXRpb25zIGFuZCBhZGRpbmcgaW5pdGlhbGl6YXRpb24vY2xlYW51cCBmdW5jdGlvbnMgZm9yIGRvb3JiZWxsIHBvb2xzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgY29kZSBldmVuICpiZSogcmVhY2hlZCBpbiB0aGUgZW52aXJvbm1lbnRzIHdlIHVzdWFsbHkgdGVzdCwgZXNwZWNpYWxseSB2aXJ0dWFsaXplZCBvbmVzIGxpa2UgR0NFIG9yIFFFTVU/CgpNZWxsYW5veCBtbHg1IGlzIGEgUENJIGRldmljZSBkcml2ZXIsIHJpZ2h0PyBJbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXAsIHlvdSYjMzk7cmUgbm90IGdvaW5nIHRvIHNlZSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSBhcmUgZW11bGF0ZWQgb3IsIGluIHNvbWUgY2FzZXMsIHBhc3NlZCB0aHJvdWdoLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBvdXIgZnV6emluZyBzZXR1cCBldmVuICp0cnkqIHRvIHJlYWNoIHRoaXM/IFN5emthbGxlciBoYXMgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgdmlhIHZoY2kgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBtbHg1IGlzIHR5cGljYWxseSBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLgoKSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciBtbHg1IG9yIGFueSBtZW50aW9ucyBvZiBpdCBiZWluZyByZWFjaGFibGUuIFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZGV2aWNlcyBpZiBpdCBsZXZlcmFnZXMgdGhlIFBDSSBmdXp6aW5nIHN1YnN5c3RlbSwgYnV0IHdlIG9ubHkgZnV6eiB0aGluZ3MgdGhhdCBhcmUgKnJlYWNoYWJsZSosIHNvIHRoaXMgaXMgYSBjcnVjaWFsIHBvaW50LgoKV2FpdCBhIG1pbnV0ZSwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMsICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNvLCBpcyBtbHg1ICplbXVsYXRlZCogaW4gUUVNVT8gTm8sIGRlZmluaXRlbHkgbm90IG5hdGl2ZWx5LiBRRU1VIGVtdWxhdGVzIG90aGVyIG5ldHdvcmsgZGV2aWNlcywgbGlrZSBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgYW5kIHZteG5ldDMsIGJ1dCBub3QgbWx4NS4gSSByZWNhbGwgUUVNVSBoYXZpbmcgc29tZSBzdXBwb3J0IGZvciBSRE1BIGRldmljZXMsIGxpa2UgcHZyZG1hLCBidXQgbm90IG1seDUuCgpBbHJpZ2h0LCBzbyBpZiBub3QgUUVNVSBlbXVsYXRpb24sIHdoYXQgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsPyBJcyB0aGVyZSBhbnl0aGluZz8gTm8uIG1seDUgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNZWxsYW5veCBDb25uZWN0WC00LzUvNi83LiBXYWl0LCB0aGVyZSYjMzk7cyBgbmV0ZGV2c2ltYCwgYnV0IGl0JiMzOTtzIHVucmVsYXRlZCB0byBtbHg1LgoKTXkgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGlmIGBtbHg1YCBpcyBldmVuIHByb2JlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gR2VuZXJhbGx5LCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIHdpdGhvdXQgZW11bGF0aW9uIGFyZSBub3QgcmVhY2hhYmxlLiBUaGUgcHJpbWFyeSB0aGluZyB0byBkbyBub3cgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYG1seDVfZGJfYWxsb2Nfbm9kZWAgY2FuIGJlIHJlYWNoZWQuIEkgaGF2ZSB0byBsb29rIGludG8gdGhpcyBtb3JlIGRlZXBseSB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfZGJfYWxsb2Nfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00Nzk9aW50IG1seDVfZGJfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwNzppbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyOC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mjk6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYz0zNz1pbnQgbWx4NV93cV9jeWNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93cV9wYXJhbSAqcGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzo0NjpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZ3cV9jdHJsLVx1MDAzZWRiLCBwYXJhbS1cdTAwM2VkYl9udW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtNDctXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzo0ODpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTQ5LVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTk5PWludCBtbHg1X3dxX3FwX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTExMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjExMzpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZ3cV9jdHJsLVx1MDAzZWRiLCBwYXJhbS1cdTAwM2VkYl9udW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTE0LVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6MTE1Olx0XHRtbHg1X2NvcmVfd2FybihtZGV2LCBcJiMzNDttbHg1X2RiX2FsbG9jX25vZGUoKSBmYWlsZWQsICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTE2LVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTE1OT1pbnQgbWx4NV9jcXdxX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjE2ODpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZ3cV9jdHJsLVx1MDAzZWRiLCBwYXJhbS1cdTAwM2VkYl9udW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTY5LVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6MTcwOlx0XHRtbHg1X2NvcmVfd2FybihtZGV2LCBcJiMzNDttbHg1X2RiX2FsbG9jX25vZGUoKSBmYWlsZWQsICVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTcxLVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTIxMD1pbnQgbWx4NV93cV9sbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1X3dxX3BhcmFtICpwYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0yMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzoyMTk6XHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXHUwMDI2d3FfY3RybC1cdTAwM2VkYiwgcGFyYW0tXHUwMDNlZGJfbnVtYV9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTIyMC1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjIyMTpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTIyMi1cdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM9MTE3MD1zdGF0aWMgaW50IG1seDV2Zl9jcmVhdGVfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTExODMtXHRuY3FlID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5jcWUpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jOjExODQ6XHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXHUwMDI2Y3EtXHUwMDNlZGIsIG1kZXYtXHUwMDNlcHJpdi5udW1hX25vZGUpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTExODUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYz0xMjQxPW1seDV2Zl9jcmVhdGVfcmNfcXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTEyNTYtXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM6MTI1NzpcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcdTAwMjZxcC1cdTAwM2VkYiwgbWRldi1cdTAwM2Vwcml2Lm51bWFfbm9kZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmMtMTI1OC1cdGlmIChlcnIpXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTEwNzA9aW50IG1seDVfY29yZV9hY2Nlc3NfcmVnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmRhdGFfaW4sXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTEwNzMtXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTA3NDppbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYixcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMDc1LVx0XHQgICAgICAgaW50IG5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMDc3PXN0YXRpYyBpbmxpbmUgaW50IG1seDVfZGJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiKVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTEwNzgte1xuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjEwNzk6XHRyZXR1cm4gbWx4NV9kYl9hbGxvY19ub2RlKGRldiwgZGIsIGRldi1cdTAwM2Vwcml2Lm51bWFfbm9kZSk7XG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTA4MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxMQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIG1seDUgRW11bGF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYG1seDVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVycyDigJMgdGhlIDQsIDUsIDYsIGFuZCA3IHNlcmllcy4gVGhlc2UgYXJlIGNvbXBsZXggcGllY2VzIG9mIGhhcmR3YXJlLCBhbmQgbXkgY3VycmVudCB0YXNrIGhhcyBtZSB3b25kZXJpbmcgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXM6IGRvZXMgYSB2aXJ0dWFsIGhhcmR3YXJlIGNvbnN0cnVjdCBvciBlbXVsYXRpb24gZXhpc3QgZm9yIHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBzb21ldGhpbmcgbGlrZSBhIGB2aGNpYCBlcXVpdmFsZW50IG9yIGEgc2ltaWxhciBhcHByb2FjaCBhdmFpbGFibGUgZm9yIHRlc3Rpbmcgb3IgZGV2ZWxvcG1lbnQgc2NlbmFyaW9zIHdoZXJlIHRoZSBhY3R1YWwgaGFyZHdhcmUgaXNuJiMzOTt0IGFjY2Vzc2libGUuIEkmIzM5O2xsIG5lZWQgdG8gcmVzZWFyY2ggdG8gZGlzY292ZXIgYW55IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2NvcmVfZGV2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNDAxNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0yND1zdHJ1Y3QgbWx4NWN0bF9kZXYge1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0yNS1cdHN0cnVjdCBmd2N0bF9kZXZpY2UgZndjdGw7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jOjI2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI3LX07XG4tLVxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0xMTY9c3RhdGljIHZvaWQgbWx4NWN0bF9yZWxlYXNlX3VpZChzdHJ1Y3QgbWx4NWN0bF9kZXYgKm1jZGV2LCB1MTYgdWlkKVxuLS1cbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMTE4LVx0dTMyIGluW01MWDVfU1RfU1pfRFcoZGVzdHJveV91Y3R4X2luKV0gPSB7fTtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6MTE5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtY2Rldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0xMjAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MzcwPXN0YXRpYyBpbnQgbWx4NWN0bF9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTM3NC1cdHN0cnVjdCBtbHg1X2FkZXYgKm1hZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzozNzU6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IG1hZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTM3Ni1cdHN0cnVjdCBtbHg1Y3RsX2RldiAqbWNkZXYgX19mcmVlKG1seDVjdGwpID0gZndjdGxfYWxsb2NfZGV2aWNlKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jPTg9aW50IG1seDVyX2NtZF9xdWVyeV9zcGVjaWFsX21rZXlzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTQ0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NDU6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNDYtXHRcdFx0ICAgICAgIHZvaWQgKm91dClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjU3OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpcm4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01OC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNjYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo2Nzp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNjgte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTc2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6Nzc6aW50IG1seDVfY21kX2Rlc3Ryb3lfcnF0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBycXRuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNzgte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6ODc6aW50IG1seDVfY21kX2FsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy04OC1cdFx0XHRcdCAgICB1MTYgdWlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEwNS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEwNjp2b2lkIG1seDVfY21kX2RlYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGRuLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTA3LVx0XHRcdFx0ICAgICAgIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTE3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTE4OmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTkte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEyODppbnQgbWx4NV9jbWRfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMjktXHRcdFx0dTMyIHFwbiwgdTE2IHVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNDI6aW50IG1seDVfY21kX2RldGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTQzLVx0XHRcdHUzMiBxcG4sIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTU1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTU2OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTcte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE2OS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE3MDppbnQgbWx4NV9jbWRfeHJjZF9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB4cmNkbiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE3MS17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM9MTgwPWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjIyLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MjIzOmludCBtbHg1X2NtZF91YXJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp1YXJuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjI0LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMzgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyMzk6aW50IG1seDVfY21kX3Vhcl9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB1YXJuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjQwLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNDgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyNDk6aW50IG1seDVfY21kX3F1ZXJ5X3Z1aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCBkYXRhX2RpcmVjdCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI1MC1cdFx0XHRjaGFyICpvdXRfdnVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaD00MD1pbnQgbWx4NXJfY21kX3F1ZXJ5X3NwZWNpYWxfbWtleXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDE6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNDItXHRcdFx0ICAgICAgIHZvaWQgKm91dCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0MzppbnQgbWx4NV9jbWRfZGVhbGxvY19wZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcGRuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ0OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpcm4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDU6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlzbiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NjppbnQgbWx4NV9jbWRfZGVzdHJveV9ycXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHJxdG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDc6aW50IG1seDVfY21kX2FsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC00OC1cdFx0XHRcdCAgICB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ5OnZvaWQgbWx4NV9jbWRfZGVhbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01MC1cdFx0XHRcdCAgICAgICB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjUxOmludCBtbHg1X2NtZF9hdHRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTUyLVx0XHRcdHUzMiBxcG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTM6aW50IG1seDVfY21kX2RldGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTQtXHRcdFx0dTMyIHFwbiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1NTppbnQgbWx4NV9jbWRfeHJjZF9hbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnhyY2RuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU2OmludCBtbHg1X2NtZF94cmNkX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHhyY2RuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU3LWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01OC1cdFx0ICAgICB1MTYgb3Btb2QsIHU4IHBvcnQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTk6aW50IG1seDVfY21kX3Vhcl9hbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnVhcm4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NjA6aW50IG1seDVfY21kX3Vhcl9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB1YXJuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjYxOmludCBtbHg1X2NtZF9xdWVyeV92dWlkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGJvb2wgZGF0YV9kaXJlY3QsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC02Mi1cdFx0XHRjaGFyICpvdXRfdnVpZCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTI5Mj1zdGF0aWMgaW50IG1seDVfaWJfZ2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0yOTktXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzozMDA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMDEtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTMyOT1zdGF0aWMgaW50IG1seDVfaWJfc2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMzUtXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzozMzY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMzctXHR1MzIgYXR0cl9tYXNrID0gMDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9NDM0PXZvaWQgbWx4NV9pYl9pbml0X2NvbmdfZGVidWdmcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy00MzYtXHRzdHJ1Y3QgbWx4NV9pYl9kYmdfY2NfcGFyYW1zICpkYmdfY2NfcGFyYW1zO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjQzNzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzOC1cdGludCBpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mjg4PW1seDVfaWJfYWxsb2NfaHdfcG9ydF9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnRfbnVtKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMjk1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzoyOTY6c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3FfY291bnRlcnMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTI5Ny1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbWx4NV9pYl9jb3VudGVycyAqY250cyxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jPTM1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVyc192cG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM1Ny1cdHUzMiBpbltNTFg1X1NUX1NaX0RXKHF1ZXJ5X3FfY291bnRlcl9pbildID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjM1ODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zNTktXHRfX2JlMzIgdmFsO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mzg3PXN0YXRpYyBpbnQgZG9fZ2V0X2h3X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzkyLVx0Y29uc3Qgc3RydWN0IG1seDVfaWJfY291bnRlcnMgKmNudHMgPSBnZXRfY291bnRlcnMoZGV2LCBwb3J0X251bSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjM5MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTQtXHRpbnQgcmV0LCBudW1fY291bnRlcnM7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02MTE9aW50IG1seDVfaWJfcG9sbF9jcShzdHJ1Y3QgaWJfY3EgKmliY3EsIGludCBudW1fZW50cmllcywgc3RydWN0IGliX3djICp3Yylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihjcS1cdTAwM2VpYmNxLmRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jOjYxNjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNy1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02NDg9aW50IG1seDVfaWJfYXJtX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgZW51bSBpYl9jcV9ub3RpZnlfZmxhZ3MgZmxhZ3MpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTY0OS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jOjY1MDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmNxLVx1MDAzZWRldmljZSktXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjUxLVx0c3RydWN0IG1seDVfaWJfY3EgKmNxID0gdG9fbWNxKGliY3EpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0xMDc9c3RydWN0IGRldnhfdW1lbSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTA4Olx0c3RydWN0IG1seDVfY29yZV9kZXZcdFx0Km1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTA5LVx0c3RydWN0IGliX3VtZW1cdFx0XHQqdW1lbTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjAwNT1zdGF0aWMgYm9vbCBpc192YWxpZF9ldmVudHNfbGVnYWN5KGludCBudW1fZXZlbnRzLCB1MTYgKmV2ZW50X3R5cGVfbnVtX2xpc3QsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjMtI2RlZmluZSBNQVhfU1VQUF9FVkVOVF9OVU0gMjU1XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MjAyNDpzdGF0aWMgYm9vbCBpc192YWxpZF9ldmVudHMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMDI1LVx0XHRcdCAgICBpbnQgbnVtX2V2ZW50cywgdTE2ICpldmVudF90eXBlX251bV9saXN0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yNDUxPXN0YXRpYyBpbnQgZGV2eF91bWVtX2NsZWFudXAoc3RydWN0IGliX3VvYmplY3QgKnVvYmplY3QsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MjQ2ODpzdGF0aWMgYm9vbCBpc191bmFmZmlsaWF0ZWRfZXZlbnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yNDY5LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIGV2ZW50X3R5cGUpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMj1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgKmFkZHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xNC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjE1Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVx1MDAzZWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTYtXHR1NjQgbnVtX21lbWljX2h3X3BhZ2VzID0gTUxYNV9DQVBfREVWX01FTShkZXYsIG1lbWljX2Jhcl9zaXplKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9ODc9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTg5LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6OTA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy05MS1cdHU2NCBod19zdGFydF9hZGRyID0gTUxYNV9DQVA2NF9ERVZfTUVNKGRldiwgbWVtaWNfYmFyX3N0YXJ0X2FkZHIpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MTE0PXZvaWQgbWx4NV9jbWRfZGVhbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMTctXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMTg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMTktXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMjg9c3RhdGljIGludCBtbHg1X2NtZF9hbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMzItXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMzM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMzQtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MzUyPXN0YXRpYyBzdHJ1Y3QgaWJfZG0gKmhhbmRsZV9hbGxvY19kbV9zd19pY20oc3RydWN0IGliX3Vjb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0zNTYte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzozNTc6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gdG9fbWRldihjdHgtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0zNTgtXHRlbnVtIG1seDVfc3dfaWNtX3R5cGUgaWNtX3R5cGU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz00NzA9c3RhdGljIGludCBtbHg1X2RtX2ljbV9kZWFsbG9jKHN0cnVjdCBtbHg1X2liX3Vjb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy00NzMtXHRlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSA9IGdldF9pY21fdHlwZShkbS1cdTAwM2ViYXNlLnR5cGUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo0NzQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gdG9fbWRldihkbS1cdTAwM2ViYXNlLmliZG0uZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy00NzUtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0xMz1zdGF0aWMgaW50IG1seDVfaWJfYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6MTY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHRvX21kZXYoaWJkbWFoLVx1MDAzZWRldmljZSktXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNy1cdHN0cnVjdCBtbHg1X2liX2RtYWggKmRtYWggPSB0b19tZG1haChpYmRtYWgpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0zOT1zdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQyLVx0c3RydWN0IG1seDVfaWJfZG1haCAqZG1haCA9IHRvX21kbWFoKGliZG1haCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHRvX21kZXYoaWJkbWFoLVx1MDAzZWRldmljZSktXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE0OT1pbnQgcGFyc2VfZmxvd19mbG93X2FjdGlvbihzdHJ1Y3QgbWx4NV9pYl9mbG93X2FjdGlvbiAqbWFjdGlvbixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg5OnN0YXRpYyBpbnQgcGFyc2VfZmxvd19hdHRyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xOTAtXHRcdFx0ICAgc3RydWN0IG1seDVfZmxvd19zcGVjICpzcGVjLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9NTQ3PXN0YXRpYyBib29sIGZsb3dfaXNfbXVsdGljYXN0X29ubHkoY29uc3Qgc3RydWN0IGliX2Zsb3dfYXR0ciAqaWJfYXR0cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTU3Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NTc3OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V0aGVydHlwZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNTc4LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICpmbG93X2F0dHIsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjYyNjpzdGF0aWMgYm9vbCBpc192YWxpZF9hdHRyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjctXHRcdFx0ICBjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICpmbG93X2F0dHIpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xODcyPXN0YXRpYyBpbnQgbWx4NV9pYl9maWxsX3RyYW5zcG9ydF9uc19pbmZvKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3NS1cdFx0XHRcdFx0ICB1MTYgKnZwb3J0LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODc2Olx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICoqZnRfbWRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3Ny1cdFx0XHRcdFx0ICB1MzIgaWJfcG9ydCwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3OC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjE4Nzk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZXN3X21kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4ODAtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xOTA4PV9nZXRfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTE2IHVzZXJfcHJpb3JpdHksXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xOTExLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTkxMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpmdF9tZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTMtXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlX2F0dHIgZnRfYXR0ciA9IHt9O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTExPXN0YXRpYyBpbnRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyOm1seDVfaWJfc2V0X3Zwb3J0X3JlcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTM6XHRcdCAgICAgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpyZXBfZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTQtXHRcdCAgICAgIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo0MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00My1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQ0OnN0YXRpYyB2b2lkIG1seDVfaWJfbnVtX3BvcnRzX3VwZGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKm51bV9wb3J0cylcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQ1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQ2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy01OS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjYwOnN0YXRpYyBpbnQgbWx4NV9pYl9zZXRfb3duZXJfdHJhbnNwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpjdXJfb3duZXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo2MTpcdFx0XHRcdFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm5ld19vd25lcilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTYyLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy04OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjg5OnN0YXRpYyB2b2lkIG1seDVfaWJfcmVsZWFzZV90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTkwLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjkxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTItXHRpbnQgaSwgcmV0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTk5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTAwOnN0YXRpYyBpbnQgbWx4NV9pYl90YWtlX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAxLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEwMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX2RldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEwMy1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE3PXN0YXRpYyBpbnRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjExODptbHg1X2liX3Zwb3J0X3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMTkte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTIwLVx0dTMyIG51bV9wb3J0cyA9IG1seDVfZXN3aXRjaF9nZXRfdG90YWxfdnBvcnRzKGRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbGFnX21hc3RlciA9IGRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyMi1cdGNvbnN0IHN0cnVjdCBtbHg1X2liX3Byb2ZpbGUgKnByb2ZpbGU7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjQtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTIyMT1tbHg1X2liX3Zwb3J0X3JlcF91bmxvYWQoc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTIyMi17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyMjM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IG1seDVfZXN3aXRjaF9nZXRfY29yZV9kZXYocmVwLVx1MDAzZWVzdyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yMjQtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IG1seDVfaWJfcmVwX3RvX2RldihyZXApO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI2MS1cdFx0aWYgKG1seDVfbGFnX2lzX3NoYXJlZF9mZGIobWRldikpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI2MjpcdFx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjYzLVx0XHRcdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0yNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwX29wcyByZXBfb3BzID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4My17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyODQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjg1LVx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTMxOT1zdGF0aWMgaW50IG1seDVyX3JlcF9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjItXHRzdHJ1Y3QgbWx4NV9hZGV2ICppZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MzIzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjQtXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzMxPXN0YXRpYyB2b2lkIG1seDVyX3JlcF9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzMzLVx0c3RydWN0IG1seDVfYWRldiAqaWRldiA9IGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgbWx4NV9hZGV2LCBhZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjMzNDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gaWRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzM1LVx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz01MD1pbnQgbWx4NV9pYl9nZXRfdmZfY29uZmlnKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtNTMtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzo1NDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtNTUtXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz05Mj1pbnQgbWx4NV9pYl9zZXRfdmZfbGlua19zdGF0ZShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2Zixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTUtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzo5NjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTctXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTEyMD1pbnQgbWx4NV9pYl9nZXRfdmZfc3RhdHMoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTEyMy1cdGludCBvdXRfc3ogPSBNTFg1X1NUX1NaX0JZVEVTKHF1ZXJ5X3Zwb3J0X2NvdW50ZXJfb3V0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxMjQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xMjUtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTUxPXN0YXRpYyBpbnQgc2V0X3ZmX25vZGVfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE1NC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjE1NTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU2LVx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKmluO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNzU9c3RhdGljIGludCBzZXRfdmZfcG9ydF9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTc4LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MTc5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xODAtXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTIxMD1pbnQgbWx4NV9pYl9nZXRfdmZfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTIxNC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjIxNTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMjE2LVx0c3RydWN0IG1seDVfdmZfY29udGV4dCAqdmZzX2N0eCA9IG1kZXYtXHUwMDNlcHJpdi5zcmlvdi52ZnNfY3R4O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jPTE1MD1zdGF0aWMgdm9pZCBwbWFfY250X2V4dF9hc3NpZ25fcHBjbnQoc3RydWN0IGliX3BtYV9wb3J0Y291bnRlcnNfZXh0ICpjbnRfZXh0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjE4MTpzdGF0aWMgaW50IHF1ZXJ5X2liX3BwY250KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU4IHBvcnRfbnVtLCB1OCBwbGFuZV9udW0sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0xODItXHRcdFx0ICB2b2lkICpvdXQsIHNpemVfdCBzeiwgYm9vbCBleHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9MjA5PXN0YXRpYyBpbnQgcHJvY2Vzc19wbWFfY21kKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjExLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjIxMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjEzLVx0Ym9vbCBuYXRpdmVfcG9ydCA9IHRydWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9NTk3PWludCBtbHg1X3F1ZXJ5X21hZF9pZmNfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtNjAwLVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjYwMTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDItXHRzdHJ1Y3QgaWJfc21wICppbl9tYWQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTIwNT1zdGF0aWMgaW50IG1seDVfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjExLVx0c3RydWN0IG5ldF9kZXZpY2UgKmliX25kZXYgPSBOVUxMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIxMjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIxMy1cdHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXY7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMTI6c3RydWN0IG1seDVfY29yZV9kZXYgKm1seDVfaWJfZ2V0X25hdGl2ZV9wb3J0X21kZXYoc3RydWN0IG1seDVfaWJfZGV2ICppYmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTMtXHRcdFx0XHRcdFx0ICAgdTMyIGliX3BvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTctXHRcdFx0XHRcdFx0XHQgIGliX3BvcnRfbnVtKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMTg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzE5LVx0c3RydWN0IG1seDVfaWJfbXVsdGlwb3J0X2luZm8gKm1waTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTM2PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9wb3J0X3JvY2Uoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTU0MC1cdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhwdHlzX3JlZyldID0gezB9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjU0MTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTU0Mi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCAqdXBwZXI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTc3Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfc3lzdGVtX2ltYWdlX2d1aWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTc3NS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6Nzc2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy03NzctXHR1NjQgdG1wO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz04MDQ9c3RhdGljIGludCBtbHg1X3F1ZXJ5X21heF9wa2V5cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA3LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo4MDg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTgwOS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9ODc1PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9ub2RlX2Rlc2Moc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNoYXIgKm5vZGVfZGVzYylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODg4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjg4OTpzdGF0aWMgdm9pZCBmaWxsX2Vzd19tZ3JfcmVnX2MwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTg5MC1cdFx0XHRcdHN0cnVjdCBtbHg1X2liX3F1ZXJ5X2RldmljZV9yZXNwICpyZXNwKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz05Mjk9c3RhdGljIHUzMiBtbHg1X2liX2NhbGNfbWF4X3FwX3dyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTkzMC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTMxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05MzItXHR1MzIgbWF4X3dxZV9iYl91bml0cyA9IDEgXHUwMDNjXHUwMDNjIE1MWDVfQ0FQX0dFTihtZGV2LCBsb2dfbWF4X3FwX3N6KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9OTQ1PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTk1MC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTUxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05NTItXHRpbnQgZXJyID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTQ2Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfaGNhX3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNDY1LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNDY2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNDY3LVx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKnJlcDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTU0Mj1pbnQgbWx4NV9pYl9xdWVyeV9wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTU2Ni1cdFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNTY3Olx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNTY4LVx0XHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTYwMz1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3BvcnQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTYyNzpzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3Zwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjgtXHRcdFx0XHRcdCAgICAgICB1OCBvcF9tb2QsIHUxNiB2cG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX2JvbmQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2NTM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTQtXHR1MzIgYm9uZF9zcGVlZDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY3OT1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9yZXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY4Mi1cdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXA7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTY4MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2ODQtXHR1MTYgb3BfbW9kO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNzI2PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9naWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LCBpbnQgaW5kZXgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3MjktXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE3MzA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3MzEtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE3NDU9c3RhdGljIGludCBtbHg1X3F1ZXJ5X2hjYV9uaWNfcGtleShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3NDgtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE3NDk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNzUwLVx0Ym9vbCBwdXRfbWRldiA9IHRydWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE4MTY9c3RhdGljIGludCBzZXRfcG9ydF9jYXBzX2F0b21pYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLCB1MzIgbWFzayxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTgxOS1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0IGN0eCA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE4MjA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODIxLVx0dTMyIG1kZXZfcG9ydF9udW07XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE5NzM9c3RhdGljIHZvaWQgZGVhbGxvY2F0ZV91YXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xOTg2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE5ODc6c3RhdGljIGludCBtbHg1X2liX2VuYWJsZV9sYl9tcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWFzdGVyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE5ODg6XHRcdFx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqc2xhdmUsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTk4OS1cdFx0XHRcdHN0cnVjdCBtbHg1X2liX2xiX3N0YXRlICpsYl9zdGF0ZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjAwOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoyMDA5OnN0YXRpYyB2b2lkIG1seDVfaWJfZGlzYWJsZV9sYl9tcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWFzdGVyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMTA6XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMDExLVx0XHRcdFx0ICBzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0ZSAqbGJfc3RhdGUpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTMyNTE9c3RhdGljIHZvaWQgbWx4NV9pYl9zdGFnZV9zeXNfZXJyb3Jfbm90aWZpZXJfY2xlYW51cChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1NS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMjU2OnN0YXRpYyBpbnQgbWx4NV9pYl9nZXRfcGxhbmVfbnVtKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCAqbnVtX3BsYW5lKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMyNTcte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNDc3PW1seDVfaWJfY3JlYXRlX2RhdGFfZGlyZWN0X3Jlc291cmNlcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ3OS1cdGludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX21rZXlfaW4pO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM0ODA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM0ODEtXHRib29sIHJvX3N1cHAgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzY1Nz1zdGF0aWMgaW50IGxhZ19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNjYwLVx0XHRcdFx0XHQgICAgICAgbGFnX2V2ZW50cyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzY2MTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzY2Mi1cdHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZWliX2Rldjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzcxOD1zdGF0aWMgaW50IG1seDVfZXRoX2xhZ19pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNzIwLVx0c3RydWN0IG1seDVfZmxvd190YWJsZV9hdHRyIGZ0X2F0dHIgPSB7fTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozNzIxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNzIyLVx0c3RydWN0IG1seDVfZmxvd19uYW1lc3BhY2UgKm5zO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNzUxPXN0YXRpYyB2b2lkIG1seDVfZXRoX2xhZ19jbGVhbnVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3NTIte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4OTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgdGhlIGBtbHg1YCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgbWx4NWAgZHJpdmVyIGlzIGZ1bmRhbWVudGFsbHkgYSBQQ0kgZHJpdmVyLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgc3l6a2FsbGVyIG9jY2FzaW9uYWxseSBhdHRlbXB0cyB0byBmdXp6IGBtbHg1YCwgYnV0IGl0JiMzOTtzIHR5cGljYWxseSBvbmx5IGFjaGlldmFibGUgdW5kZXIgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoZSBwcm9tcHQgZW1waGFzaXplcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIGBtbHg1YCBldmVuICpwcmVzZW50KiBpbiB0aG9zZSBlbnZpcm9ubWVudHM/CgpHQ0Ugb2ZmZXJzIHNvbWUgdmlydHVhbGl6ZWQgaGFyZHdhcmUsIGJ1dCBJJiMzOTttIGNlcnRhaW4gaXQgZG9lc24mIzM5O3QgcHJlc2VudCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZS4gSXQmIzM5O3MgdmlydGlvLW5ldCBvciBnVk5JQywgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gSSYjMzk7bSByZWNhbGxpbmcgaWYgc3l6a2FsbGVyIGhhcyBhIG1vdW50LWltYWdlLWxpa2Ugc3lzY2FsbCBidXQgSSBkb3VidCB0aGF0JiMzOTtzIHJlbGV2YW50IGhlcmUuCgpTeXprYWxsZXIgZG9lcyBmdXp6IHNvbWUgUkRNQSBkcml2ZXJzLCBsZXZlcmFnaW5nIHRoZSBgcmRtYWAgc3Vic3lzdGVtLCBidXQgYG1seDVgIGlzIGEgdmVyeSBzcGVjaWZpYyAqaGFyZHdhcmUqIGRyaXZlci4gTGV0JiMzOTtzIG5vdCBmb3JnZXQgdGhlcmUmIzM5O3MgYSBgbWx4NV9jb3JlYCBkcml2ZXI7IHRoZSBxdWVzdGlvbiBpcywgZG9lcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGV4aXN0IGZvciBpdD8KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHdoZXRoZXIgYG5ldGRldnNpbWAsIGB2ZHBhYCwgb3Igc2ltaWxhciB0ZWNobm9sb2dpZXMgaW50ZXJmYWNlIHdpdGggYG1seDVgLiAqQWhhISogYGRyaXZlcnMvdmRwYS9tbHg1L2AgZXhpc3RzLCBidXQgbXkgZ3V0IGZlZWxpbmcsIGFuZCBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYG1seDVfdmRwYWAgbmVjZXNzaXRhdGVzIGEgcmVhbCBgbWx4NWAgUENJIGRldmljZS4gU28gdGhhdCYjMzk7cyBwcm9iYWJseSBhIGRlYWQgZW5kLgoKV2hhdCBhYm91dCBvdGhlciBhbHRlcm5hdGl2ZXM/IExvb2tpbmcgYXQgYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9gLCBJIGtub3cgdGhhdCBgcnhlYCBhbmQgYHNpd2AgYXJlIHNvZnR3YXJlIFJETUEgaW1wbGVtZW50YXRpb25zLCBidXQgYG1seDVgIGlzIGV4cGxpY2l0bHkgaGFyZHdhcmUtYmFzZWQuCgpUaGUgdWx0aW1hdGUgcXVlc3Rpb24gaXM6IElzIHRoZXJlICphbnkqIHdheSB0byByZWFjaCBgbWx4NWAgY29kZSBwYXRocyB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZT8gTGV0IG1lIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBtbHg1LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGF2ZW51ZSB0byBleHBsb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6Xy4qbWx4NSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgYG1seDVgIHdpdGggU3l6a2FsbGVyOiBBIFRob3VnaHQgUHJvY2VzcyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSBwcm9tcHQgY2xlYXJseSBzdGF0ZXMgSSBjYW4mIzM5O3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6a2FsbGVyYCBwc2V1ZG8tc3lzY2FsbHMgbGlrZSBgc3l6X2AsIHNvIEkgbmVlZCB0byB1c2UgYGNvZGVzZWFyY2gtZGlyLWluZGV4YCBvciBqdXN0IHJlbHkgb24gbXkgdW5kZXJzdGFuZGluZyB0aGF0IGBtbHg1YCBpcyBhIGhhcmR3YXJlIGRyaXZlci4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBgbWx4NWAgaXMgZXZlbiAqcmVhY2hhYmxlKiBieSBTeXprYWxsZXIuIEhtbSwgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSB2aXJ0dWFsIGBtbHg1YCBkZXZpY2UgYnkgZGVmYXVsdC4gQnV0IHdhaXQsIHdoYXQgaWYgdGhlIGtlcm5lbCBpcyBjb21waWxlZCB3aXRoIGBDT05GSUdfTUxYNV9DT1JFPXlgIGFuZCB3ZSBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzPwoKQWgsIHJpZ2h0ISBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZWAgd2hpY2ggc3VnZ2VzdHMgaXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBgdmhjaWAgb3IgYHZmaW9gLiBXYWl0LCBubywgdGhlIFBDSSBmdXp6ZXIgZW11bGF0ZXMgUENJIGRldmljZXMuIFRoYXQmIzM5O3MgaXQhIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIGFuZCBpdCBpbnRlcmNlcHRzIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8vUElPIGFjY2Vzc2VzLgoKTGV0JiMzOTtzIHNlZSwgZG9lcyB0aGF0IHF1YWxpZnkgYXMgJiMzNDtzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7PyBZZXMsIHRoZSBwcm9tcHQgZXhwbGljaXRseSBtZW50aW9ucyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYC4gU28gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuCgpPa2F5LCB0aGlzIG1lYW5zIHRoYXQgKmFueSogUENJIGRyaXZlciBzaG91bGQgYmUgcmVhY2hhYmxlIGlmIHRoZSBQQ0kgZnV6emVyIGlzIGVuYWJsZWQsIGJlY2F1c2UgdGhlIHByb21wdCBzYXlzIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIHNob3VsZG4mIzM5O3QgYmUgdG91Y2hlZC4KCk5vdywgSSBzaG91bGQgY2hlY2sgd2hldGhlciBTeXprYWxsZXIgaXMgYWN0dWFsbHkgZnV6emluZyBQQ0kgZHJpdmVycyB3aXRoIHRoZSBgZHVtbXlgIFBDSSBkZXZpY2Ugb3IgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRgLiBBbmQgbGV0JiMzOTtzIG5vdCBmb3JnZXQgdG8gY2hlY2sgdGhlIGZpbGUgYHN5cy9saW51eC9kZXZfcGNpLnR4dGAgYXMgaXQgZGVzY3JpYmVzIFBDSSBkZXZpY2VzLgoKT2theSwgaXMgZnV6emluZyBgbWx4NWAgd29ydGggaXQ/IFRoZSBwYXRjaCBtb2RpZmllcyBgbWx4NV9kYl9hbGxvY19ub2RlYCBhbmQgYG1seDVfZGJfZnJlZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jYCwgdGhhdCYjMzk7cyBjb3JlIGxvZ2ljIGZvciBNZWxsYW5veCBDb25uZWN0WC01LCBzbyBpdCYjMzk7cyBwcm9iYWJseSBpbnRlcmVzdGluZyB0byBmdXp6LgoKU2luY2UgUENJIGZ1enppbmcgaXMgc3VwcG9ydGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGlzIGBtbHg1X2RiX2FsbG9jX25vZGVgIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZT8gSXQmIzM5O3MgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gKGBtbHg1X21kZXZfaW5pdGApLCBxdWV1ZSBwYWlyIGNyZWF0aW9uIChgbWx4NV93cV9xcF9jcmVhdGVgLCBgbWx4NV9jcXdxX2NyZWF0ZWAsIGV0Yy4pLgoKUXVldWUgcGFpcnMgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIFJETUEgKGUuZy4sIGBpYnZfY3JlYXRlX3FwYCksIHdoaWNoIGNhbGxzIGBtbHg1X2liX2NyZWF0ZV9xcGAuIFNvLCBpZiBJIHRyYWNlIGBtbHg1X2liX2NyZWF0ZV9xcGAgLSZndDsgYGNyZWF0ZV9xcF9jb21tb25gIC0mZ3Q7IGBtbHg1X2RiX2FsbG9jX25vZGVgLCBJIHNob3VsZCBoYXZlIGEgY2xlYXIgcGF0aCB0byBmb2xsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfaWJfY3JlYXRlX3FwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NDcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfZGVmc1tdID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NDc4LVx0VUFQSV9ERUZfQ0hBSU4obWx4NV9pYl9jcmVhdGVfY3FfZGVmcyksXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDQ3OTpcdFVBUElfREVGX0NIQUlOKG1seDVfaWJfY3JlYXRlX3FwX2RlZnMpLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ0ODAtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQ1ODA9c3RhdGljIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG1seDVfaWJfZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU5NS1cdC5jcmVhdGVfdXNlcl9jcSA9IG1seDVfaWJfY3JlYXRlX3VzZXJfY3EsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU5NjpcdC5jcmVhdGVfcXAgPSBtbHg1X2liX2NyZWF0ZV9xcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTk3LVx0LmNyZWF0ZV9zcnEgPSBtbHg1X2liX2NyZWF0ZV9zcnEsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oPTEyOTA9dm9pZCBtbHg1X2liX2Rpc2FibGVfbGIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGJvb2wgdGQsIGJvb2wgcXApO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjEyOTE6aW50IG1seDVfaWJfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqcXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaC0xMjkyLVx0XHQgICAgICBzdHJ1Y3QgaWJfdWRhdGEgKnVkYXRhKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTUxOD1leHRlcm4gY29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9jcV9kZWZzW107XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTUxOTpleHRlcm4gY29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9xcF9kZWZzW107XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTUyMC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTU1MT1zdGF0aWMgaW5saW5lIGludCBnZXRfcXBfdXNlcl9pbmRleChzdHJ1Y3QgbWx4NV9pYl91Y29udGV4dCAqdWNvbnRleHQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTU1MjpcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTU1My1cdFx0XHRcdCAgICBpbnQgaW5sZW4sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz00NDM9c3RhdGljIGludCBzZXRfcnFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzo0NDQ6XHRcdCAgICAgICBpbnQgaGFzX3JxLCBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNDQ1LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTY0Mz1zdGF0aWMgaW50IHNldF91c2VyX2J1Zl9zaXplKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy02NDQtXHRcdFx0ICAgIHN0cnVjdCBtbHg1X2liX3FwICpxcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6NjQ1Olx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTY0Ni1cdFx0XHQgICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTk1Mj1zdGF0aWMgaW50IF9jcmVhdGVfdXNlcl9xcChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTk1NS1cdFx0XHQgICBzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyLCB1MzIgKippbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6OTU2Olx0XHRcdCAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yZXNwICpyZXNwLCBpbnQgKmlubGVuLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTctXHRcdFx0ICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6OTU4Olx0XHRcdCAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtOTU5LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTE1ODc9c3RhdGljIGludCBjcmVhdGVfcmF3X3BhY2tldF9xcChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IG1seDVfaWJfcXAgKnFwLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTU5MC1cdFx0XHRcdHN0cnVjdCB1dmVyYnNfYXR0cl9idW5kbGUgKmF0dHJzLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoxNTkxOlx0XHRcdFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgKnJlc3AsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTE1OTItXHRcdFx0XHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0xNzI3PXN0cnVjdCBtbHg1X2NyZWF0ZV9xcF9wYXJhbXMge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTczNi1cdHUzMiB1aWR4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoxNzM3Olx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgcmVzcDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTczOC19O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MTc0MD1zdGF0aWMgaW50IGNyZWF0ZV9yc3NfcmF3X3FwX3RpcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTE3NDQtXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXHUwMDNlYXR0cjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MTc0NTpcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MgKnVjbWQgPSBwYXJhbXMtXHUwMDNldWNtZDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTc0Ni1cdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXHUwMDNldWRhdGE7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yMDk3PXN0YXRpYyBpbnQgY3JlYXRlX2RjaShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIxMDEtXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXHUwMDNlYXR0cjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjEwMjpcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCA9IHBhcmFtcy1cdTAwM2V1Y21kO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0yMTAzLVx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKGNyZWF0ZV9xcF9vdXQpXSA9IHt9O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MjI1OD1zdGF0aWMgaW50IGNyZWF0ZV91c2VyX3FwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgaWJfcGQgKnBkLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjI2Mi1cdHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0ciA9IHBhcmFtcy1cdTAwM2VhdHRyO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoyMjYzOlx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwICp1Y21kID0gcGFyYW1zLVx1MDAzZXVjbWQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIyNjQtXHR1MzIgb3V0W01MWDVfU1RfU1pfRFcoY3JlYXRlX3FwX291dCldID0ge307XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yNzYzPXN0YXRpYyBpbnQgY3JlYXRlX2RjdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI3NjctXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyID0gcGFyYW1zLVx1MDAzZWF0dHI7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjI3Njg6XHRzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQgPSBwYXJhbXMtXHUwMDNldWNtZDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjc2OS1cdHUzMiB1aWR4ID0gcGFyYW1zLVx1MDAzZXVpZHg7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yOTI5PXN0YXRpYyBpbnQgcHJvY2Vzc192ZW5kb3JfZmxhZ3Moc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2liX3FwICpxcCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI5MzYtXHRpZiAoYXR0ci1cdTAwM2Vyd3FfaW5kX3RibClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzNzpcdFx0ZmxhZ3MgPSAoKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MgKil1Y21kKS1cdTAwM2VmbGFncztcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjkzOC1cdGVsc2VcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzOTpcdFx0ZmxhZ3MgPSAoKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqKXVjbWQpLVx1MDAzZWZsYWdzO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0yOTQwLVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MzA5MD1zdGF0aWMgaW50IHByb2Nlc3NfdWRhdGFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMwOTIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMDkzOlx0c2l6ZV90IHVjbWQgPSBzaXplb2Yoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzA5NC1cdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXHUwMDNldWRhdGE7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMDk4Olx0cGFyYW1zLVx1MDAzZW91dGxlbiA9IG1pbihvdXRsZW4sIHNpemVvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCkpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk5LVx0cGFyYW1zLVx1MDAzZXVjbWRfc2l6ZSA9IHVjbWQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTAyLVx0XHRzaXplX3QgbWluX2lubGVuID1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzEwMzpcdFx0XHRvZmZzZXRvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAsIGVjZV9vcHRpb25zKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzEwNC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTMtXHQvKiBSU1MgUkFXIFFQICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjMxMTQ6XHRpZiAoaW5sZW4gXHUwMDNjIG9mZnNldG9mZW5kKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MsIGZsYWdzKSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzExNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjMxMTc6XHRpZiAob3V0bGVuIFx1MDAzYyBvZmZzZXRvZmVuZChzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCwgYmZyZWdfaW5kZXgpKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTE4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzExOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzEyMDpcdHVjbWQgPSBzaXplb2Yoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jzcyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMjEtXHRwYXJhbXMtXHUwMDNldWNtZF9zaXplID0gdWNtZDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTMyMjI9c3RhdGljIGludCBnZXRfcXBfdWlkeChzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjI0LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzIyNTpcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCA9IHBhcmFtcy1cdTAwM2V1Y21kO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjI2LVx0c3RydWN0IGliX3VkYXRhICp1ZGF0YSA9IHBhcmFtcy1cdTAwM2V1ZGF0YTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTMyNTQ9c3RhdGljIGludCBjaGVja191Y21kX2RhdGEoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjY1LVx0XHQgKi9cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI2NjpcdFx0bGFzdCA9IHNpemVvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcnNzKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzI2Ny1cdGVsc2VcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI2ODpcdFx0bGFzdCA9IG9mZnNldG9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCwgcmVzZXJ2ZWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjY5LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzI4Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI4ODppbnQgbWx4NV9pYl9jcmVhdGVfcXAoc3RydWN0IGliX3FwICppYnFwLCBzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjg5LVx0XHQgICAgICBzdHJ1Y3QgaWJfdWRhdGEgKnVkYXRhKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9NTk5Mj1BRERfVVZFUkJTX0FUVFJJQlVURVNfU0lNUExFKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNTk5OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6NTk5OTpjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfY3JlYXRlX3FwX2RlZnNbXSA9IHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNjAwMC1cdFVBUElfREVGX0NIQUlOX09CSl9UUkVFKFVWRVJCU19PQkpFQ1RfUVAsIFx1MDAyNm1seDVfaWJfcXBfY3JlYXRlKSxcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oPTMyMj1zdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfc3JxX3Jlc3Age1xuLS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzI2LVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozMjc6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX2RjaV9zdHJlYW1zIHtcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzI4LVx0X191OCBsb2dfbnVtX2NvbmN1cmVudDtcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMzMS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6MzMyOnN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCB7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMzMy1cdF9fYWxpZ25lZF91NjQgYnVmX2FkZHI7XG4tLVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNDUtXHRfX3UzMiAgZWNlX29wdGlvbnM7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oOjM0NjpcdHN0cnVjdCAgbWx4NV9pYl9jcmVhdGVfcXBfZGNpX3N0cmVhbXMgZGNpX3N0cmVhbXM7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM0Ny1cdF9fdTE2IHJlc2VydmVkO1xuLS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg9MzYzPWVudW0gbWx4NV9yeF9oYXNoX2ZpZWxkcyB7XG4tLVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNzYtXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oOjM3NzpzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcnNzIHtcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzc4LVx0X19hbGlnbmVkX3U2NCByeF9oYXNoX2ZpZWxkc19tYXNrOyAvKiBlbnVtIG1seDVfcnhfaGFzaF9maWVsZHMgKi9cbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM4Ni1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6Mzg3OmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfcmVzcF9tYXNrIHtcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzg4LVx0TUxYNV9JQl9DUkVBVEVfUVBfUkVTUF9NQVNLX1RJUk4gPSAxVUwgXHUwMDNjXHUwMDNjIDAsXG4tLVxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zOTQtXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oOjM5NTpzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCB7XG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM5Ni1cdF9fdTMyXHRiZnJlZ19pbmRleDtcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1X3VzZXJfaW9jdGxfY21kcy5oPTI3NT1lbnVtIG1seDVfaWJfY3JlYXRlX2NxX2F0dHJzIHtcbi0tXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1X3VzZXJfaW9jdGxfY21kcy5oLTI3OS1cbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmg6MjgwOmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfYXR0cnMge1xuaW5jbHVkZS91YXBpL3JkbWEvbWx4NV91c2VyX2lvY3RsX2NtZHMuaC0yODEtXHRNTFg1X0lCX0FUVFJfQ1JFQVRFX1FQX0RCUl9CVUZfVU1FTSA9IFVWRVJCU19JRF9EUklWRVJfTlNfV0lUSF9VSFcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTUyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIGBtbHg1X2liX2NyZWF0ZV9xcGAgaW4gYSBGdXp6aW5nIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBtbHg1X2liX2NyZWF0ZV9xcGAgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIFJETUEgdXZlcmJzLCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IGEgcmVhbCBNZWxsYW5veCAobWx4NSkgUENJIGRldmljZT8gVGhhdCYjMzk7cyB0aGUgcmVhbCBjaGFsbGVuZ2UuIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBpcyBwcm9taXNpbmcsIGJ1dCBpdCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIG1seDUgaGFyZHdhcmUuIEl0IGp1c3QgYmxhc3RzIHRoZSBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPL1BJTyBhY2Nlc3NlcyB3aXRoIHJhbmRvbSBkYXRhLCB3aGljaCBpcyB1c2VmdWwsIGJ1dCBwZXJoYXBzIG5vdCB0YXJnZXRlZCBlbm91Z2guCgpJZiB0aGUgUENJIGZ1enplciBoaXRzIHRoZSByaWdodCBzdHVmZiwgaXQgc2hvdWxkIHRyaWdnZXIgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdCB0byBpbml0aWFsaXplLiBEdXJpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgYG1seDVfbWRldl9pbml0YCBnZXRzIGNhbGxlZCwgd2hpY2gsIGluIHR1cm4sIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLiBUaGlzIGNvdWxkIHRoZW4gbGVhZCB0byBhdHRlbXB0cyB0byBhbGxvY2F0ZSBkYiBub2Rlcy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyB0aGlzIGEgd29ydGh3aGlsZSBwYXRoIHRvIGZ1eno/CgpUaGUgcHJvbXB0IHN0YXRlczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBTbywgaWYgdGhlIFBDSSBmdXp6ZXIgKmNhbiogcmVhY2ggaXQsIHRoZW4gaXQgKmlzKiByZWFjaGFibGUsIGFuZCB0aGVyZWZvcmUsIGludGVyZXN0aW5nIQoKVGhlIGtleSBxdWVzdGlvbiBub3cgaXMgdGhpczogRG9lcyB0aGUgUENJIGZ1enplciBhY3R1YWxseSByZWFjaCBgbWx4NV9tZGV2X2luaXRgPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIExldCBtZSBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCB0byBzZWUgd2hlcmUgYG1seDVfbWRldl9pbml0YCBpcyBjYWxsZWQgYW5kIGhvdyB0aGUgUENJIGZ1enplciBtYXkgb3IgbWF5IG5vdCByZWFjaCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9tZGV2X2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xNzk2PXN0YXRpYyB2b2lkIG1seDVfbm90aWZpZXJzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE4MDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE4MDQ6aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgwNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xOTM1PXN0YXRpYyBpbnQgcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xOTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoxOTYwOlx0ZXJyID0gbWx4NV9tZGV2X2luaXQoZGV2LCBwcm9mX3NlbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NjEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD00MzI9bWx4NV9zZl9jb3JlZGV2X3RvX2FkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDo0Mzc6aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDM4LXZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jPTI1PXN0YXRpYyBpbnQgbWx4NV9zZl9kZXZfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo0OTpcdGVyciA9IG1seDVfbWRldl9pbml0KG1kZXYsIE1MWDVfU0ZfUFJPRik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTUwLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo1MTpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9tZGV2X2luaXQgb24gZXJyPSVkXFxuXCYjMzQ7LCBlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy01Mi1cdFx0Z290byBtZGV2X2VycjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwMTYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIE1lbGxhbm94IERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBgcHJvYmVfb25lYCwgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIGlzIGJlaW5nIHRyaWdnZXJlZCBieSBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpY2ggaXMgdXNpbmcgYSBkZXZpY2Ugd2l0aCBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4gVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgYHByb2JlX29uZWAgaXMgY2FsbGluZyBgbWx4NV9tZGV2X2luaXRgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBhbmQgZnJvbSB0aGVyZSwgYXR0ZW1wdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uLgoKVGhlIHJ1YiBpcyB0aGUgZnV6emVyIHByb3ZpZGVzIHJhbmRvbSBNTUlPIHJlc3BvbnNlcywgd2hpY2ggaXMgYSBwcm9ibGVtIGJlY2F1c2UgdGhpcyBkcml2ZXIsIGxpa2UgbW9zdCwgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHJlc3BvbnNlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHBhcnRpY3VsYXJseSBmb3IgZmlybXdhcmUgY29tbWFuZHMgYW5kIHNwZWNpZmljIHJlZ2lzdGVyIHZhbHVlcy4gVGhpcyBtZWFucyBpdCYjMzk7cyBsaWtlbHkgdG8gZmFpbCBwcmV0dHkgZWFybHksIGJ1dCAqd2hlcmUqIGV4YWN0bHk/CgpJJiMzOTttIHdvbmRlcmluZyBpZiBpdCB3aWxsIG1ha2UgaXQgYXMgZmFyIGFzIGBtbHg1X2RiX2FsbG9jX25vZGVgLiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkLiBSaWdodCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG1seDVfd3FfY3ljX2NyZWF0ZWAsIGBtbHg1X3dxX3FwX2NyZWF0ZWAsIGBtbHg1X2Nxd3FfY3JlYXRlYCwgYG1seDVfd3FfbGxfY3JlYXRlYCwgYG1seDV2Zl9jcmVhdGVfY3FgLCBhbmQgYG1seDV2Zl9jcmVhdGVfcmNfcXBgLiBTbywgdGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIHF1ZXVlIGNyZWF0aW9uLgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgYXJlIGFueSBxdWV1ZXMgYmVpbmcgY3JlYXRlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHRoYXQgaGFwcGVucyB3aXRoaW4gYHByb2JlX29uZWA/IExldCBtZSB0cmFjZSB0aGlzIG91dDogYHByb2JlX29uZWAgY2FsbHMgYG1seDVfaW5pdF9vbmVgLCBhbmQgdGhlbiBgbWx4NV9sb2FkX29uZWAsIGJ1dCBkb2VzIGl0IGxlYWQgdG8gYW55IHF1ZXVlIGNyZWF0aW9uIG9yIGBtbHg1X2RiX2FsbG9jX25vZGVgPyBQZXJoYXBzIGBtbHg1X2FsbG9jX2JmcmVnYCBpcyB0aGUga2V5PyBJIG5lZWQgdG8gZm9sbG93IHRoZSBleGVjdXRpb24gcGF0aCBjbG9zZWx5IHdpdGhpbiB0aGF0IGRyaXZlciwgY2hlY2tpbmcgdGhlIGNhbGxzIGZyb20gYHByb2JlX29uZWAgYWxsIHRoZSB3YXkgZG93bi4gSSB0aGluayB0aGlzIG5lZWRzIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV93cV9jeWNfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz0zMjY9c3RhdGljIGludCBtbHg1ZV9wdHBfYWxsb2NfdHhxc3Eoc3RydWN0IG1seDVlX3B0cCAqYywgaW50IHR4cV9peCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtMzU3LVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gbm9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYzozNTg6XHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXHUwMDI2cGFyYW0tXHUwMDNld3EsIHNxY193cSwgd3EsIFx1MDAyNnNxLVx1MDAzZXdxX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTM1OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz04OTU9c3RhdGljIGludCBtbHg1ZV9hbGxvY19ycShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy05NzktXHRkZWZhdWx0OiAvKiBNTFg1X1dRX1RZUEVfQ1lDTElDICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjk4MDpcdFx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnJxX3BhcmFtLVx1MDAzZXdxLCBycWNfd3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTk4MS1cdFx0XHRcdFx0IFx1MDAyNnJxLVx1MDAzZXdxZS53cSwgXHUwMDI2cnEtXHUwMDNld3FfY3RybCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0xNTM4PXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfeGRwc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNTY3LVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy1cdTAwM2VjcHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxNTY4Olx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLVx1MDAzZXdxLCBzcWNfd3EsIHdxLCBcdTAwMjZzcS1cdTAwM2V3cV9jdHJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTU2OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0xNjI3PXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfaWNvc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNjQxLVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy1cdTAwM2VjcHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxNjQyOlx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLVx1MDAzZXdxLCBzcWNfd3EsIHdxLCBcdTAwMjZzcS1cdTAwM2V3cV9jdHJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTY0My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0xNzAyPXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfdHhxc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNzM1LVx0cGFyYW0tXHUwMDNld3EuZGJfbnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy1cdTAwM2VjcHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxNzM2Olx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLVx1MDAzZXdxLCBzcWNfd3EsIHdxLCBcdTAwMjZzcS1cdTAwM2V3cV9jdHJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTczNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0zNjM5PXN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfZHJvcF9ycShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTM2NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjM2NDg6XHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXHUwMDI2cnFfcGFyYW0tXHUwMDNld3EsIHJxY193cSwgXHUwMDI2cnEtXHUwMDNld3FlLndxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0zNjQ5LVx0XHRcdFx0IFx1MDAyNnJxLVx1MDAzZXdxX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvYXNvLmM9MTU4PXN0YXRpYyBpbnQgbWx4NV9hc29fYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGludCBudW1hX25vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYy0xNjktXHRwYXJhbS5idWZfbnVtYV9ub2RlID0gbnVtYV9ub2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYzoxNzA6XHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXHUwMDI2cGFyYW0sIHNxY193cSwgd3EsIFx1MDAyNnNxLVx1MDAzZXdxX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYy0xNzEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3Mvc2VuZC5jPTY4MT1zdGF0aWMgaW50IGh3c19zZW5kX3JpbmdfYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9zZW5kLmMtNjk3LVx0cGFyYW0uYnVmX251bWFfbm9kZSA9IG51bWFfbm9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3Mvc2VuZC5jOjY5ODpcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcdTAwMjZwYXJhbSwgc3FjX3dxLCB3cSwgXHUwMDI2c3EtXHUwMDNld3FfY3RybCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYy02OTktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93Yy5jPTIyMT1zdGF0aWMgaW50IG1seDVfd2NfY3JlYXRlX3NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93Y19zcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmMtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmM6MjM2Olx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFx1MDAyNnBhcmFtLCB3cSwgXHUwMDI2c3EtXHUwMDNld3EsIFx1MDAyNnNxLVx1MDAzZXdxX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmMtMjM3LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6Mzc6aW50IG1seDVfd3FfY3ljX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMzgtXHRcdCAgICAgICB2b2lkICp3cWMsIHN0cnVjdCBtbHg1X3dxX2N5YyAqd3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmg9NzA9c3RydWN0IG1seDVfd3FfbGwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oLTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmg6Nzk6aW50IG1seDVfd3FfY3ljX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmgtODAtXHRcdCAgICAgICB2b2lkICp3cWMsIHN0cnVjdCBtbHg1X3dxX2N5YyAqd3EsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODQ2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBTeXprYWxsZXIgb24gdGhlIG1seDVlIERyaXZlcioqCgpPa2F5LCBzbyBgbWx4NWVfYWxsb2NfcnFgIGlzIGRlZmluaXRlbHkgY2FsbGVkIHdpdGhpbiBgbWx4NWVfb3BlbmAgd2hlbiB0aGUgbmV0d29yayBkZXZpY2Ugb3BlbnMuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGNhbiBTeXprYWxsZXIgdHJpZ2dlciB0aGUgb3BlbmluZyBvZiB0aGlzIG5ldGRldj8gVGhlIGFuc3dlciBpcyB5ZXMsIGlmIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGEgbmV0d29yayBkZXZpY2UuIEkga25vdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhIG5ldGRldjsgaXQmIzM5O3MgcGFydCBvZiB0aGUgYG1seDVlX3Byb2JlYCBmdW5jdGlvbiBhcyBhbiBhdXhpbGlhcnkgcHJvYmUuIFRoaXMgbWVhbnMgdGhhdCBpZiBgbWx4NWVfcHJvYmVgIGlzIGNhbGxlZCwgaXQgd2lsbCByZWdpc3RlciB0aGUgbmV0ZGV2LiBCdXQsIGEgc3VjY2Vzc2Z1bCBuZXRkZXYgcmVnaXN0cmF0aW9uIHJlcXVpcmVzIHN1Y2Nlc3NmdWwgZGV2aWNlIGluaXRpYWxpemF0aW9uLgoKTm93LCB3aWxsIGBtbHg1X21kZXZfaW5pdGAgd29yayB3aXRoIHRoZSBraW5kIG9mIHJhbmRvbSBQQ0kgTU1JTyByZXNwb25zZXMgdGhhdCBhIGZ1enplciBtaWdodCBnZW5lcmF0ZT8gUHJvYmFibHkgbm90LiBIYXJkd2FyZSBkcml2ZXJzIGFyZSB0eXBpY2FsbHkgdmVyeSBwaWNreSBhYm91dCB0aGVpciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSBhbmQgY29tbWFuZCBpbnRlcmZhY2VzLCBhbmQgcmFuZG9tIGRhdGEgaXMgYSByZWNpcGUgZm9yIGZhaWx1cmUuIE1lbGxhbm94IGRyaXZlcnMsIHNwZWNpZmljYWxseSwgdXNlIGEgY29tbWFuZCBpbnRlcmZhY2UgKENNRElGKSB3aGljaCBpbnZvbHZlcyB3cml0aW5nIHRvIGEgZG9vcmJlbGwgYW5kIHRoZW4gd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0IG9yIHBvbGxpbmcgYSBzdGF0dXMgcmVnaXN0ZXIuIFJhbmRvbSBkYXRhIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBjYXVzZSBhIHRpbWVvdXQgb3IgZmFpbHVyZSBpbiB0aGUgY29tbWFuZCwgd2hpY2ggbWVhbnMgYG1seDVfbWRldl9pbml0YCB3aWxsIGxpa2VseSBmYWlsLgoKSG93ZXZlciwgU3l6a2FsbGVyIGlzIGZvY3VzZWQgb24gZnV6emluZyBwcm9iZSBwYXRocyBhbmQgcmVhY2hpbmcgYXMgbWFueSBmdW5jdGlvbnMgYXMgcG9zc2libGUuIEV2ZW4gaWYgYG1seDVfbWRldl9pbml0YCBmYWlscyBlYXJseSwgaXTigJlzIHN0aWxsIGxpa2VseSB0byBleGVjdXRlIHNvbWUgb2YgaXRzIGNvZGUuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQhIEl0ICp3aWxsKiBleGVjdXRlIGBtbHg1X21kZXZfaW5pdGAgYW5kIHRoZXJlZm9yZSBgbWx4NV9kYl9wb29sc19pbml0YC4gSXQgY291bGQgYWxzbyByZWFjaCBgbWx4NV9kYl9hbGxvY19ub2RlYCBpZiBpdCBnZXRzIGZhciBlbm91Z2ggdG8gc3RhcnQgcXVldWUgY3JlYXRpb24gYmVmb3JlIGZhaWxpbmcuCgpUaGlua2luZyBtb3JlIGRlZXBseSwgYG1seDVfY21kX2luaXRgIGlzIGNhbGxlZCBpbiBgbWx4NV9tZGV2X2luaXRgICphZnRlciogYG1seDVfZGJfcG9vbHNfaW5pdGAuIElmIGBtbHg1X2NtZF9pbml0YCBmYWlscywgaXQganVtcHMgdG8gYGVycl9jbWRfaW5pdGAgd2hpY2ggdGhlbiBjYWxscyBgbWx4NV9kYl9wb29sc19jbGVhbnVwYC4gU28sIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgZXZlbiBpZiB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IGluaXRpYWxpemUgc3VjY2Vzc2Z1bGx5LiBOb3csIGFyZSBgbWx4NV9kYl9hbGxvY19ub2RlYCBhbmQgYG1seDVfZGJfZnJlZWAgYWxzbyByZWFjaGFibGU/IFRvIHVuZGVyc3RhbmQgdGhhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYG1seDVfY21kX2luaXRgIGFjdHVhbGx5IGFsbG9jYXRlcyBhbnkgcXVldWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2NtZF9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0xNzYwPXN0YXRpYyBpbnQgVVZFUkJTX0hBTkRMRVIoTUxYNV9JQl9NRVRIT0RfREVWWF9BU1lOQ19DTURfRkRfQUxMT0MpKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xNzcxLVx0ZGV2eF9pbml0X2V2ZW50X3F1ZXVlKFx1MDAyNmV2X2ZpbGUtXHUwMDNlZXZfcXVldWUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjE3NzI6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LVx1MDAzZW1kZXYsIFx1MDAyNmV2X2ZpbGUtXHUwMDNlYXN5bmNfY3R4KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xNzczLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQ1MDE9c3RhdGljIGludCBtbHg1X2liX3N0YWdlX2luaXRfaW5pdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo0NTYzOlx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobWRldiwgXHUwMDI2ZGV2LVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjE2Mj1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2V4ZWNfcG9sbGluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTY1LVx0XHRcdCAgICAgc3RydWN0IG1seDVfYXN5bmNfY3R4ICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxNzI6RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9pbml0X2FzeW5jX2N0eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE3My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjQyOD1zdGF0aWMgdTE2IGNtZGlmX3JldihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MzM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwva3Rsc190eC5jPTE0Mz1zdGF0aWMgc3RydWN0IG1seDVlX2J1bGtfYXN5bmNfY3R4ICptbHg1ZV9idWxrX2FzeW5jX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGludCBuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYzoxNTQ6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcdTAwMjZidWxrX2FzeW5jLVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwva3Rsc190eC5jLTE1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYz0xNDI9aW50IG1seDVfcXVlcnlfaGNhX2NhcHMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYzozMTI6aW50IG1seDVfY21kX2luaXRfaGNhKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqc3dfb3duZXJfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTE4MT1zdGF0aWMgaW50IG1seDVfZnVuY3Rpb25fb3BlbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTIwMzpcdGVyciA9IG1seDVfY21kX2luaXRfaGNhKGRldiwgc3dfb3duZXJfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMjA0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTgwND1pbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgzNzpcdGVyciA9IG1seDVfY21kX2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgzOC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjIyPWludCBtbHg1X3F1ZXJ5X21vZHVsZV9udW0oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50ICptb2R1bGVfbnVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMjI0LXZvaWQgbWx4NV9jbWRfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjI3PXZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMjI4LVx0XHRcdGVudW0gbWx4NV9jbWRpZl9zdGF0ZSBjbWRpZl9zdGF0ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6MjI5OmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0yMzAtaW50IG1seDVfY21kX3RlYXJkb3duX2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgzMD1zdGF0aWMgaW50IG1seDVfdmRwYV9kZXZfYWRkKHN0cnVjdCB2ZHBhX21nbXRfZGV2ICp2X21kZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM5MDItXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzkwMzpcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFx1MDAyNm12ZGV2LVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzkwNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTYyNz1tbHg1dmZfcGNpX3NhdmVfZGV2aWNlX2RhdGEoc3RydWN0IG1seDV2Zl9wY2lfY29yZV9kZXZpY2UgKm12ZGV2LCBib29sIHRyYWNrKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtNjU3LVx0Y29tcGxldGUoXHUwMDI2bWlnZi1cdTAwM2VzYXZlX2NvbXApO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzo2NTg6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtdmRldi1cdTAwM2VtZGV2LCBcdTAwMjZtaWdmLVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1OS1cdElOSVRfV09SSyhcdTAwMjZtaWdmLVx1MDAzZWFzeW5jX2RhdGEud29yaywgbWx4NXZmX21pZ19maWxlX2NsZWFudXBfY2IpO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD05ODM9c3RydWN0IG1seDVfYXN5bmNfd29yayB7XG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTk5Mi1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDo5OTM6dm9pZCBtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTk5NC1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwMTMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUXVldWUgQWxsb2NhdGlvbiBpbiBtbHg1IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgYG1seDVgIGRyaXZlciBpbml0aWFsaXplcyBpdHMgcXVldWVzLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdXNlcyBvZiBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSXQgc2VlbXMgbGlrZSBgbWx4NV9jbWRfaW5pdGAgaXRzZWxmIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGNhbGwgYG1seDVfZGJfYWxsb2Nfbm9kZWAgdG8gYWxsb2NhdGUgYW55IHF1ZXVlcy4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bmV4cGVjdGVkLgoKSG9sZCBvbiwgSSBuZWVkIHRvIGJhY2t0cmFjayBhbmQgY29uc2lkZXIgdGhlIGJpZ2dlciBwaWN0dXJlLiBXaGF0IGFib3V0IGBtbHg1X2NtZF9pbml0X2hjYWA/IFRoYXQmIzM5O3MgYW5vdGhlciBwb3RlbnRpYWwgY2FuZGlkYXRlIGZvciBxdWV1ZSBhbGxvY2F0aW9uLiBBaCwgcmlnaHQsIEkgcmVtZW1iZXIgbm93LCBgbWx4NV9jbWRfaW5pdF9oY2FgIGlzIGFjdHVhbGx5IGNhbGxlZCBkdXJpbmcgdGhlIGBtbHg1X2Z1bmN0aW9uX29wZW5gIHJvdXRpbmUsIG5vdCBkaXJlY3RseSBieSBgbWx4NV9jbWRfaW5pdGAuIFNvLCBpcyBgbWx4NV9jbWRfaW5pdGAgYWN0dWFsbHkgZG9pbmcgYW55dGhpbmcgdXNlZnVsIHRoZW4/IEkgbmVlZCB0byBnbyBkZWVwZXIuCgpMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGBtbHg1X2NtZF9pbml0YCBpdHNlbGYuIFRpbWUgdG8gY29uc3VsdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jYCBhbmQgY29uZmlybSBleGFjdGx5IHdoYXQgdGhpcyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGRvaW5nLiBUaGlzIHdpbGwgY2xhcmlmeSBleGFjdGx5IHdoYXQgcm9sZXMgZWFjaCBmdW5jdGlvbiBpcyBwbGF5aW5nIGluIHRoZSBlbnRpcmUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jbWRfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MTc2MD1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0RFVlhfQVNZTkNfQ01EX0ZEX0FMTE9DKShcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3MS1cdGRldnhfaW5pdF9ldmVudF9xdWV1ZShcdTAwMjZldl9maWxlLVx1MDAzZWV2X3F1ZXVlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoxNzcyOlx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobWRldi1cdTAwM2VtZGV2LCBcdTAwMjZldl9maWxlLVx1MDAzZWFzeW5jX2N0eCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3My1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1NjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU2MzpcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFx1MDAyNmRldi1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1NjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE2NDp2b2lkIG1seDVfY21kX2luaXRfYXN5bmNfY3R4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTcxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTcyOkVYUE9SVF9TWU1CT0wobWx4NV9jbWRfaW5pdF9hc3luY19jdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI0Mjg9c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDMzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYz0xNDM9c3RhdGljIHN0cnVjdCBtbHg1ZV9idWxrX2FzeW5jX2N0eCAqbWx4NWVfYnVsa19hc3luY19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwva3Rsc190eC5jLTE1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmM6MTU0Olx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobWRldiwgXHUwMDI2YnVsa19hc3luYy1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM9MTQyPWludCBtbHg1X3F1ZXJ5X2hjYV9jYXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM6MzEyOmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmMtMzEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTExODE9c3RhdGljIGludCBtbHg1X2Z1bmN0aW9uX29wZW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTEyMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEyMDM6XHRlcnIgPSBtbHg1X2NtZF9pbml0X2hjYShkZXYsIHN3X293bmVyX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwNC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE4MDQ9aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE4MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE4Mzc6XHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE4MzgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTIyMj1pbnQgbWx4NV9xdWVyeV9tb2R1bGVfbnVtKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCAqbW9kdWxlX251bSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6MjIzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyNC12b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTIyNz12b2lkIG1seDVfY21kX3NldF9zdGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyOC1cdFx0XHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjIyOTppbnQgbWx4NV9jbWRfaW5pdF9oY2Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICpzd19vd25lcl9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMjMwLWludCBtbHg1X2NtZF90ZWFyZG93bl9oY2Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM4MzA9c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zOTAyLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM5MDM6XHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcdTAwMjZtdmRldi1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM5MDQtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz02Mjc9bWx4NXZmX3BjaV9zYXZlX2RldmljZV9kYXRhKHN0cnVjdCBtbHg1dmZfcGNpX2NvcmVfZGV2aWNlICptdmRldiwgYm9vbCB0cmFjaylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1Ny1cdGNvbXBsZXRlKFx1MDAyNm1pZ2YtXHUwMDNlc2F2ZV9jb21wKTtcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6NjU4Olx0bWx4NV9jbWRfaW5pdF9hc3luY19jdHgobXZkZXYtXHUwMDNlbWRldiwgXHUwMDI2bWlnZi1cdTAwM2Vhc3luY19jdHgpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy02NTktXHRJTklUX1dPUksoXHUwMDI2bWlnZi1cdTAwM2Vhc3luY19kYXRhLndvcmssIG1seDV2Zl9taWdfZmlsZV9jbGVhbnVwX2NiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9OTgzPXN0cnVjdCBtbHg1X2FzeW5jX3dvcmsge1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTItXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6OTkzOnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTQtXHRcdFx0ICAgICBzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NjEwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgbWx4NV9jbWRfaW5pdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBtbHg1X2NtZF9pbml0YCBmdW5jdGlvbiBpbiB0aGUgTWVsbGFub3ggZHJpdmVyJiMzOTtzIGNvbW1hbmQgcXVldWUgY29kZS4gSW5pdGlhbGx5LCBpdCBsb29rZWQgbGlrZSBpdCB3YXNuJiMzOTt0IGhhbmRsaW5nIHF1ZXVlIGFsbG9jYXRpb24sIHdoaWNoIGlzIGEgYml0IG9kZCBjb25zaWRlcmluZyBpdHMgbmFtZSBhbmQgcHVycG9zZS4gQnV0IGhvbGQgb24sIEkganVtcGVkIHRoZSBndW4hIExldCBtZSByZS1ldmFsdWF0ZTsgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBhbmQgYSBjbG9zZXIgbG9vayBpcyB3YXJyYW50ZWQuIE5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jYCBhbmQgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gYG1seDVfY21kX2luaXRgLiBUaW1lIHRvIGRpc3NlY3QgdGhpcyBjb2RlIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0MzM6XHRpbnQgbWx4NV9jbWRfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuMjQzNDpcdHtcbjI0MzU6XHRcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXHUwMDI2ZGV2LVx1MDAzZWNtZDtcbjI0MzY6XHRcbjI0Mzc6XHRcdGNtZC1cdTAwM2VjaGVja3N1bV9kaXNhYmxlZCA9IDE7XG4yNDM4Olx0XG4yNDM5Olx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjbWQtXHUwMDNlYWxsb2NfbG9jayk7XG4yNDQwOlx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjbWQtXHUwMDNldG9rZW5fbG9jayk7XG4yNDQxOlx0XG4yNDQyOlx0XHRzZXRfd3FuYW1lKGRldik7XG4yNDQzOlx0XHRjbWQtXHUwMDNld3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShjbWQtXHUwMDNld3FfbmFtZSk7XG4yNDQ0Olx0XHRpZiAoIWNtZC1cdTAwM2V3cSkge1xuMjQ0NTpcdFx0XHRtbHg1X2NvcmVfZXJyKGRldiwgXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBjb21tYW5kIHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4yNDQ2Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjQ0NzpcdFx0fVxuMjQ0ODpcdFxuMjQ0OTpcdFx0bWx4NV9jbWRpZl9kZWJ1Z2ZzX2luaXQoZGV2KTtcbjI0NTA6XHRcbjI0NTE6XHRcdHJldHVybiAwO1xuMjQ1MjpcdH1cbjI0NTM6XHRcbjI0NTQ6XHR2b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbjI0NTU6XHR7XG4yNDU2Olx0XHRzdHJ1Y3QgbWx4NV9jbWQgKmNtZCA9IFx1MDAyNmRldi1cdTAwM2VjbWQ7XG4yNDU3Olx0XG4yNDU4Olx0XHRtbHg1X2NtZGlmX2RlYnVnZnNfY2xlYW51cChkZXYpO1xuMjQ1OTpcdFx0ZGVzdHJveV93b3JrcXVldWUoY21kLVx1MDAzZXdxKTtcbjI0NjA6XHR9XG4yNDYxOlx0XG4yNDYyOlx0aW50IG1seDVfY21kX2VuYWJsZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuMjQ2MzpcdHtcbjI0NjQ6XHRcdGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrKTtcbjI0NjU6XHRcdGludCBhbGlnbiA9IHJvdW5kdXBfcG93X29mX3R3byhzaXplKTtcbjI0NjY6XHRcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXHUwMDI2ZGV2LVx1MDAzZWNtZDtcbjI0Njc6XHRcdHUzMiBjbWRfaCwgY21kX2w7XG4yNDY4Olx0XHRpbnQgZXJyO1xuMjQ2OTpcdFxuMjQ3MDpcdFx0bWVtc2V0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLCAwLCBzaXplb2YoY21kLVx1MDAzZXZhcnMpKTtcbjI0NzE6XHRcdGNtZC1cdTAwM2V2YXJzLmNtZGlmX3JldiA9IGNtZGlmX3JldihkZXYpO1xuMjQ3MjpcdFx0aWYgKGNtZC1cdTAwM2V2YXJzLmNtZGlmX3JldiAhPSBDTURfSUZfUkVWKSB7XG4yNDczOlx0XHRcdG1seDVfY29yZV9lcnIoZGV2LFxuMjQ3NDpcdFx0XHRcdCAgICAgIFwmIzM0O0RyaXZlciBjbWRpZiByZXYoJWQpIGRpZmZlcnMgZnJvbSBmaXJtd2FyZSYjMzk7cyglZClcXG5cJiMzNDssXG4yNDc1Olx0XHRcdFx0ICAgICAgQ01EX0lGX1JFViwgY21kLVx1MDAzZXZhcnMuY21kaWZfcmV2KTtcbjI0NzY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNDc3Olx0XHR9XG4yNDc4Olx0XG4yNDc5Olx0XHRjbWRfbCA9IGlvcmVhZDMyYmUoXHUwMDI2ZGV2LVx1MDAzZWlzZWctXHUwMDNlY21kcV9hZGRyX2xfc3opIFx1MDAyNiAweGZmO1xuMjQ4MDpcdFx0Y21kLVx1MDAzZXZhcnMubG9nX3N6ID0gY21kX2wgXHUwMDNlXHUwMDNlIDQgXHUwMDI2IDB4ZjtcbjI0ODE6XHRcdGNtZC1cdTAwM2V2YXJzLmxvZ19zdHJpZGUgPSBjbWRfbCBcdTAwMjYgMHhmO1xuMjQ4MjpcdFx0aWYgKDEgXHUwMDNjXHUwMDNjIGNtZC1cdTAwM2V2YXJzLmxvZ19zeiBcdTAwM2UgTUxYNV9NQVhfQ09NTUFORFMpIHtcbjI0ODM6XHRcdFx0bWx4NV9jb3JlX2VycihkZXYsIFwmIzM0O2Zpcm13YXJlIHJlcG9ydHMgdG9vIG1hbnkgb3V0c3RhbmRpbmcgY29tbWFuZHMgJWRcXG5cJiMzNDssXG4yNDg0Olx0XHRcdFx0ICAgICAgMSBcdTAwM2NcdTAwM2MgY21kLVx1MDAzZXZhcnMubG9nX3N6KTtcbjI0ODU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNDg2Olx0XHR9XG4yNDg3Olx0XG4yNDg4Olx0XHRpZiAoY21kLVx1MDAzZXZhcnMubG9nX3N6ICYjNDM7IGNtZC1cdTAwM2V2YXJzLmxvZ19zdHJpZGUgXHUwMDNlIE1MWDVfQURBUFRFUl9QQUdFX1NISUZUKSB7XG4yNDg5Olx0XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDtjb21tYW5kIHF1ZXVlIHNpemUgb3ZlcmZsb3dcXG5cJiMzNDspO1xuMjQ5MDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjI0OTE6XHRcdH1cbjI0OTI6XHRcbjI0OTM6XHRcdGNtZC1cdTAwM2VzdGF0ZSA9IE1MWDVfQ01ESUZfU1RBVEVfRE9XTjtcbjI0OTQ6XHRcdGNtZC1cdTAwM2V2YXJzLm1heF9yZWdfY21kcyA9ICgxIFx1MDAzY1x1MDAzYyBjbWQtXHUwMDNldmFycy5sb2dfc3opIC0gMTtcbjI0OTU6XHRcdGNtZC1cdTAwM2V2YXJzLmJpdG1hc2sgPSBNTFg1X0NNRF9NQVNLO1xuMjQ5NjpcdFxuMjQ5NzpcdFx0c2VtYV9pbml0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLnNlbSwgY21kLVx1MDAzZXZhcnMubWF4X3JlZ19jbWRzKTtcbjI0OTg6XHRcdHNlbWFfaW5pdChcdTAwMjZjbWQtXHUwMDNldmFycy5wYWdlc19zZW0sIDEpO1xuMjQ5OTpcdFx0c2VtYV9pbml0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLnRocm90dGxlX3NlbSwgRElWX1JPVU5EX1VQKGNtZC1cdTAwM2V2YXJzLm1heF9yZWdfY21kcywgMikpO1xuMjUwMDpcdFx0c2VtYV9pbml0KFx1MDAyNmNtZC1cdTAwM2V2YXJzLnVucHJpdmlsZWdlZF9zZW0sXG4yNTAxOlx0XHRcdCAgRElWX1JPVU5EX1VQKGNtZC1cdTAwM2V2YXJzLm1heF9yZWdfY21kcywgMikpO1xuMjUwMjpcdFxuMjUwMzpcdFx0eGFfaW5pdChcdTAwMjZjbWQtXHUwMDNldmFycy5wcml2aWxlZ2VkX3VpZHMpO1xuMjUwNDpcdFxuMjUwNTpcdFx0Y21kLVx1MDAzZXBvb2wgPSBkbWFfcG9vbF9jcmVhdGUoXCYjMzQ7bWx4NV9jbWRcJiMzNDssIG1seDVfY29yZV9kbWFfZGV2KGRldiksIHNpemUsIGFsaWduLCAwKTtcbjI1MDY6XHRcdGlmICghY21kLVx1MDAzZXBvb2wpIHtcbjI1MDc6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjI1MDg6XHRcdFx0Z290byBlcnJfZGVzdHJveV94YTtcbjI1MDk6XHRcdH1cbjI1MTA6XHRcbjI1MTE6XHRcdGVyciA9IGFsbG9jX2NtZF9wYWdlKGRldiwgY21kKTtcbjI1MTI6XHRcdGlmIChlcnIpXG4yNTEzOlx0XHRcdGdvdG8gZXJyX2ZyZWVfcG9vbDtcbjI1MTQ6XHRcbjI1MTU6XHRcdGNtZF9oID0gKHUzMikoKHU2NCkoY21kLVx1MDAzZWRtYSkgXHUwMDNlXHUwMDNlIDMyKTtcbjI1MTY6XHRcdGNtZF9sID0gKHUzMikoY21kLVx1MDAzZWRtYSk7XG4yNTE3Olx0XHRpZiAoY21kX2wgXHUwMDI2IDB4ZmZmKSB7XG4yNTE4Olx0XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDtpbnZhbGlkIGNvbW1hbmQgcXVldWUgYWRkcmVzc1xcblwmIzM0Oyk7XG4yNTE5Olx0XHRcdGVyciA9IC1FTk9NRU07XG4yNTIwOlx0XHRcdGdvdG8gZXJyX2NtZF9wYWdlO1xuMjUyMTpcdFx0fVxuMjUyMjpcdFxuMjUyMzpcdFx0aW93cml0ZTMyYmUoY21kX2gsIFx1MDAyNmRldi1cdTAwM2Vpc2VnLVx1MDAzZWNtZHFfYWRkcl9oKTtcbjI1MjQ6XHRcdGlvd3JpdGUzMmJlKGNtZF9sLCBcdTAwMjZkZXYtXHUwMDNlaXNlZy1cdTAwM2VjbWRxX2FkZHJfbF9zeik7XG4yNTI1Olx0XG4yNTI2Olx0XHQvKiBNYWtlIHN1cmUgZmlybXdhcmUgc2VlcyB0aGUgY29tcGxldGUgYWRkcmVzcyBiZWZvcmUgd2UgcHJvY2VlZCAqL1xuMjUyNzpcdFx0d21iKCk7XG4yNTI4Olx0XG4yNTI5Olx0XHRtbHg1X2NvcmVfZGJnKGRldiwgXCYjMzQ7ZGVzY3JpcHRvciBhdCBkbWEgMHglbGx4XFxuXCYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKShjbWQtXHUwMDNlZG1hKSk7XG4yNTMwOlx0XG4yNTMxOlx0XHRjbWQtXHUwMDNlbW9kZSA9IENNRF9NT0RFX1BPTExJTkc7XG4yNTMyOlx0XHRjbWQtXHUwMDNlYWxsb3dlZF9vcGNvZGUgPSBDTURfQUxMT1dFRF9PUENPREVfQUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTYzOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDYzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbWx4NV9kYl9hbGxvY19ub2RlYCB3aXRoIHRoZSBQQ0kgRnV6emVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbHg1X2NtZF9pbml0YCBmdW5jdGlvbiwgYW5kIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZGlyZWN0bHkgY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gVGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYG1seDVfZGJfYWxsb2Nfbm9kZWAgYW5kIGl0cyBjb21wYW5pb24sIGBtbHg1X2RiX2ZyZWVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzIHRoYXQgaWYgdGhlIFBDSSBmdXp6ZXIgZmFpbHMgZWFybHkgaW4gYHByb2JlX29uZWAsIG1heWJlIGR1ZSB0byBhIGBjbWRpZl9yZXZgIGNoZWNrIG9yIGEgZmFpbHVyZSBkdXJpbmcgYG1seDVfY21kX2luaXRfaGNhYCwgd2Ugd291bGRuJiMzOTt0IGV2ZW4gZ2V0IHRvIHRoZSBxdWV1ZSBjcmVhdGlvbiBzdGFnZSwgdGh1cyBhdm9pZGluZyB0aGUgY2FsbCB0byBgbWx4NV9kYl9hbGxvY19ub2RlYC4KCkJ1dCB0aGVuLCBJIHJlbWVtYmVyZWQgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgISBUaG9zZSBhcmUgY2FsbGVkIHdpdGhpbiBgbWx4NV9tZGV2X2luaXRgIGFuZCBgbWx4NV9tZGV2X3VuaW5pdGAgcmVzcGVjdGl2ZWx5LiBBbmQgeWVzLCB0aG9zZSBwYXRocyAqYXJlKiBkZWZpbml0ZWx5IHJlYWNoYWJsZSBieSB0aGUgUENJIGZ1enplci4gU28sIEkgbmVlZCB0byBhZGp1c3QgbXkgdGhpbmtpbmc7IGlzIHRoZXJlIHN0aWxsIGEgZnV6emluZyBvcHBvcnR1bml0eSBoZXJlPyBUaGlzIHBhdGNoIGNoYW5nZXMgaG93IHdlIGFsbG9jYXRlIGRvb3JiZWxsIHBhZ2VzLCBtb3ZpbmcgdG8gYSBETUEgcG9vbCBpbnN0ZWFkIG9mIGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IGFsbG9jYXRpb24uCgpFdmVuIGlmIGBtbHg1X2RiX2FsbG9jX25vZGVgIGlzbiYjMzk7dCByZWFjaGVkLCBgbWx4NV9kYl9wb29sc19pbml0YCBhbmQgYG1seDVfZGJfcG9vbHNfY2xlYW51cGAgYXJlLCB3aGljaCBhcmUgaW1wb3J0YW50LiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBgbWx4NV9kYl9hbGxvY19ub2RlYCBpdHNlbGYgaXMgcmVhY2hhYmxlLiBJZiB0aGUgUENJIGZ1enplciBjYW4gYmUgY2xldmVyIGVub3VnaCB0byBmYWtlIGZpcm13YXJlIHJlc3BvbnNlcywgaXQgKm1pZ2h0KiBnZXQgZnVydGhlci4gSSBrbm93IFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGlzbiYjMzk7dCBqdXN0IHNwaXR0aW5nIG91dCByYW5kb20gZGF0YTsgaXQmIzM5O3MgdXNpbmcgZnV6emluZyB0byBleHBsb3JlIHRoZSBzdGF0ZSBzcGFjZS4gSXQgY291bGQgcG90ZW50aWFsbHkgYnlwYXNzIHNvbWUgY2hlY2tzIGlmIHRoZSBmdXp6ZXIgZmluZHMgdGhlIHJpZ2h0IHZhbHVlcy4gQWxzbywgdGhlcmUmIzM5O3MgYHN5el9wY2lfZGV2aWNlYCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBvbmx5IHJvdXRlLgoKV2FpdCwgd2hhdCBhYm91dCB0aGUgcG9zc2liaWxpdHkgb2YgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlPyBUaGUgcHJvbXB0IGlzIGZvY3VzZWQgb24gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSWYgbWx4NSBpcyBhICpyZWFsKiBoYXJkd2FyZSBkcml2ZXIgd2l0aCBubyBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLCBpdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHRob3NlIGVudmlyb25tZW50cyAqdW5sZXNzKiB5b3UgdXNlIHRoZSBQQ0kgZnV6emVyLiBCdXQgZG9lcyB0aGUgUENJIGZ1enplciBjb3VudCBhcyAmIzM0O3NvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDs/IFllcywgaXQgZG9lcy4gU28sIHdlJiMzOTtyZSBiYWNrIHRvIHJlbHlpbmcgb24gdGhlIGZ1enplciB0byBnaXZlIHVzIG1vcmUgY29kZSBjb3ZlcmFnZS4KCkJ1dCwgaXMgaXQgKnByYWN0aWNhbGx5KiByZWFjaGFibGUgdG8gdGhlIHBvaW50IG9mIGdldHRpbmcgdG8gUkRNQSBxdWV1ZSBjcmVhdGlvbj8gUHJvYmFibHkgbm90LiBDb21wbGV4IGRldmljZXMgbGlrZSBtbHg1IGhhdmUgY29tcGxleCBmaXJtd2FyZSBpbnRlcmZhY2VzIChDTURJRikgYW5kIEkgdGhpbmsgdGhlIGZ1enplciB3b3VsZCBoYXZlIGEgaGFyZCB0aW1lIGdldHRpbmcgcGFzdCB0aGUgcHJvYmUgY2hlY2tzLiBIb3dldmVyLCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiB0aGF0IGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzIGNhbGxlZCAqYmVmb3JlKiBib3RoIGBtbHg1X2NtZF9pbml0X2hjYWAgKmFuZCogYG1seDVfY21kX2VuYWJsZWAuIFNvLCBJIG5lZWQgdG8gcmV2aXNpdCBgbWx4NV9tZGV2X2luaXRgIGFnYWluLCBjYXJlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDExOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4MDQ6XHRpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuMTgwNTpcdHtcbjE4MDY6XHRcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcHJpdjtcbjE4MDc6XHRcdGludCBlcnI7XG4xODA4Olx0XG4xODA5Olx0XHRtZW1jcHkoXHUwMDI2ZGV2LVx1MDAzZXByb2ZpbGUsIFx1MDAyNnByb2ZpbGVbcHJvZmlsZV9pZHhdLCBzaXplb2YoZGV2LVx1MDAzZXByb2ZpbGUpKTtcbjE4MTA6XHRcdGxvY2tkZXBfcmVnaXN0ZXJfa2V5KFx1MDAyNmRldi1cdTAwM2Vsb2NrX2tleSk7XG4xODExOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VpbnRmX3N0YXRlX211dGV4KTtcbjE4MTI6XHRcdGxvY2tkZXBfc2V0X2NsYXNzKFx1MDAyNmRldi1cdTAwM2VpbnRmX3N0YXRlX211dGV4LCBcdTAwMjZkZXYtXHUwMDNlbG9ja19rZXkpO1xuMTgxMzpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlbWx4NWVfcmVzLnVwbGlua19uZXRkZXZfbG9jayk7XG4xODE0Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V3Y19zdGF0ZV9sb2NrKTtcbjE4MTU6XHRcbjE4MTY6XHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2ViZnJlZ3MucmVnX2hlYWQubG9jayk7XG4xODE3Olx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubG9jayk7XG4xODE4Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5saXN0KTtcbjE4MTk6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XG4xODIwOlx0XG4xODIxOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuMTgyMjpcdFxuMTgyMzpcdFx0cHJpdi1cdTAwM2VudW1hX25vZGUgPSBkZXZfdG9fbm9kZShtbHg1X2NvcmVfZG1hX2RldihkZXYpKTtcbjE4MjQ6XHRcdHByaXYtXHUwMDNlZGJnLmRiZ19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGRldi1cdTAwM2VkZXZpY2UpLFxuMTgyNTpcdFx0XHRcdFx0XHRcdG1seDVfZGVidWdmc19yb290KTtcbjE4MjY6XHRcbjE4Mjc6XHRcdGVyciA9IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChkZXYpO1xuMTgyODpcdFx0aWYgKGVycilcbjE4Mjk6XHRcdFx0Z290byBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDtcbjE4MzA6XHRcbjE4MzE6XHRcdGVyciA9IG1seDVfZGJfcG9vbHNfaW5pdChkZXYpO1xuMTgzMjpcdFx0aWYgKGVycilcbjE4MzM6XHRcdFx0Z290byBlcnJfZGJfcG9vbHNfaW5pdDtcbjE4MzQ6XHRcbjE4MzU6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNldHJhcHMpO1xuMTgzNjpcdFxuMTgzNzpcdFx0ZXJyID0gbWx4NV9jbWRfaW5pdChkZXYpO1xuMTgzODpcdFx0aWYgKGVycikge1xuMTgzOTpcdFx0XHRtbHg1X2NvcmVfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIGluaXRpYWxpemluZyBjbWRpZiBTVyBzdHJ1Y3RzLCBhYm9ydGluZ1xcblwmIzM0Oyk7XG4xODQwOlx0XHRcdGdvdG8gZXJyX2NtZF9pbml0O1xuMTg0MTpcdFx0fVxuMTg0MjpcdFxuMTg0MzpcdFx0ZXJyID0gbWx4NV90b3V0X2luaXQoZGV2KTtcbjE4NDQ6XHRcdGlmIChlcnIpIHtcbjE4NDU6XHRcdFx0bWx4NV9jb3JlX2VycihkZXYsIFwmIzM0O0ZhaWxlZCBpbml0aWFsaXppbmcgdGltZW91dHMsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbjE4NDY6XHRcdFx0Z290byBlcnJfdGltZW91dF9pbml0O1xuMTg0NzpcdFx0fVxuMTg0ODpcdFxuMTg0OTpcdFx0ZXJyID0gbWx4NV9oZWFsdGhfaW5pdChkZXYpO1xuMTg1MDpcdFx0aWYgKGVycilcbjE4NTE6XHRcdFx0Z290byBlcnJfaGVhbHRoX2luaXQ7XG4xODUyOlx0XG4xODUzOlx0XHRlcnIgPSBtbHg1X3BhZ2VhbGxvY19pbml0KGRldik7XG4xODU0Olx0XHRpZiAoZXJyKVxuMTg1NTpcdFx0XHRnb3RvIGVycl9wYWdlYWxsb2NfaW5pdDtcbjE4NTY6XHRcbjE4NTc6XHRcdGVyciA9IG1seDVfYWRldl9pbml0KGRldik7XG4xODU4Olx0XHRpZiAoZXJyKVxuMTg1OTpcdFx0XHRnb3RvIGVycl9hZGV2X2luaXQ7XG4xODYwOlx0XG4xODYxOlx0XHRlcnIgPSBtbHg1X2hjYV9jYXBzX2FsbG9jKGRldik7XG4xODYyOlx0XHRpZiAoZXJyKVxuMTg2MzpcdFx0XHRnb3RvIGVycl9oY2FfY2FwcztcbjE4NjQ6XHRcbjE4NjU6XHRcdGVyciA9IG1seDVfbm90aWZpZXJzX2luaXQoZGV2KTtcbjE4NjY6XHRcdGlmIChlcnIpXG4xODY3Olx0XHRcdGdvdG8gZXJyX25vdGlmaWVyc19pbml0O1xuMTg2ODpcdFxuMTg2OTpcdFx0LyogVGhlIGNvbmp1bmN0aW9uIG9mIHN3X3ZoY2FfaWQgd2l0aCBzd19vd25lcl9pZCB3aWxsIGJlIGEgZ2xvYmFsXG4xODcwOlx0XHQgKiB1bmlxdWUgaWQgcGVyIGZ1bmN0aW9uIHdoaWNoIHVzZXMgbWx4NV9jb3JlLlxuMTg3MTpcdFx0ICogVGhvc2UgdmFsdWVzIGFyZSBzdXBwbGllZCB0byBGVyBhcyBwYXJ0IG9mIHRoZSBpbml0IEhDQSBjb21tYW5kIHRvXG4xODcyOlx0XHQgKiBiZSB1c2VkIGJ5IGJvdGggZHJpdmVyIGFuZCBGVyB3aGVuIGl0JiMzOTtzIGFwcGxpY2FibGUuXG4xODczOlx0XHQgKi9cbjE4NzQ6XHRcdGRldi1cdTAwM2Vwcml2LnN3X3ZoY2FfaWQgPSBpZGFfYWxsb2NfcmFuZ2UoXHUwMDI2c3dfdmhjYV9pZGEsIDEsXG4xODc1Olx0XHRcdFx0XHRcdCAgICAgICBNQVhfU1dfVkhDQV9JRCxcbjE4NzY6XHRcdFx0XHRcdFx0ICAgICAgIEdGUF9LRVJORUwpO1xuMTg3NzpcdFx0aWYgKGRldi1cdTAwM2Vwcml2LnN3X3ZoY2FfaWQgXHUwMDNjIDApXG4xODc4Olx0XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc3dfdmhjYV9pZCwgZXJyPSVkXFxuXCYjMzQ7LFxuMTg3OTpcdFx0XHRcdCAgICAgIGRldi1cdTAwM2Vwcml2LnN3X3ZoY2FfaWQpO1xuMTg4MDpcdFxuMTg4MTpcdFx0cmV0dXJuIDA7XG4xODgyOlx0XG4xODgzOlx0ZXJyX25vdGlmaWVyc19pbml0OlxuMTg4NDpcdFx0bWx4NV9oY2FfY2Fwc19mcmVlKGRldik7XG4xODg1Olx0ZXJyX2hjYV9jYXBzOlxuMTg4NjpcdFx0bWx4NV9hZGV2X2NsZWFudXAoZGV2KTtcbjE4ODc6XHRlcnJfYWRldl9pbml0OlxuMTg4ODpcdFx0bWx4NV9wYWdlYWxsb2NfY2xlYW51cChkZXYpO1xuMTg4OTpcdGVycl9wYWdlYWxsb2NfaW5pdDpcbjE4OTA6XHRcdG1seDVfaGVhbHRoX2NsZWFudXAoZGV2KTtcbjE4OTE6XHRlcnJfaGVhbHRoX2luaXQ6XG4xODkyOlx0XHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xuMTg5MzpcdGVycl90aW1lb3V0X2luaXQ6XG4xODk0Olx0XHRtbHg1X2NtZF9jbGVhbnVwKGRldik7XG4xODk1Olx0ZXJyX2NtZF9pbml0OlxuMTg5NjpcdFx0bWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7XG4xODk3Olx0ZXJyX2RiX3Bvb2xzX2luaXQ6XG4xODk4Olx0XHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcbjE4OTk6XHRlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDpcbjE5MDA6XHRcdGRlYnVnZnNfcmVtb3ZlKGRldi1cdTAwM2Vwcml2LmRiZy5kYmdfcm9vdCk7XG4xOTAxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuMTkwMjpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuMTkwMzpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MjYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gYG1seDVfZGJfcG9vbHNfaW5pdGAgaXMgY2FsbGVkIHZlcnkgZWFybHkgZHVyaW5nIGBtbHg1X21kZXZfaW5pdGAuIEkga25vdyB0aGF0IGJlY2F1c2Ugb2YgaG93IHRoZSBkcml2ZXIgaW5pdGlhbGl6ZXMuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY3JlYXRlcyBkZWJ1Z2ZzIGVudHJpZXMsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIEkga25vdyB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFBDSSBmdXp6ZXIsIHdoaWNoIGlzIHRoZSBrZXkgaGVyZS4gVGhlIGZ1enplciB0cmlnZ2VycyBgcHJvYmVfb25lYCwgd2hpY2ggdWx0aW1hdGVseSBjYWxscyBgbWx4NV9tZGV2X2luaXRgLCB0aHVzIGV4ZWN1dGluZyBgbWx4NV9kYl9wb29sc19pbml0YC4KClRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBgbWx4NV9kYl9hbGxvY19ub2RlYCByZWFjaGFibGU/IEl0JiMzOTtzIGxpa2VseSB0aGF0IGlmIHRoZSBQQ0kgZnV6emVyIGNhbiBwYXNzIHRoZSBpbml0aWFsIGNoZWNrcywgaXQgKmNvdWxkKiByZWFjaCB0aGF0IGZ1bmN0aW9uLiBFdmVuIGlmIGl0IGRvZXNuJiMzOTt0LCBgbWx4NV9kYl9wb29sc19pbml0YCBhbmQgaXRzIGNsZWFudXAgY291bnRlcnBhcnQgc3RpbGwgcmVwcmVzZW50IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBvZiB0aGUgbWVtb3J5IHBvb2wgYWxsb2NhdGlvbiBhbmQgZGVidWdmcyBjcmVhdGlvbi4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGNvbnNpZGVyYXRpb24uCgpOb3csIHdhaXQgYSBtaW51dGUsIGxldCBtZSByZWNhbGwgdGhlIHByb21wdCBjb25zdHJhaW50cy4gSXQgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMmIzM0OyBzcGVjaWZpYyB0eXBlcyBvZiBjaGFuZ2VzLiBJdCBsaXN0cyBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgY2hhbmdlIGZsb3csIGFuZCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkhtbSwgb2theS4gSXMgYG1seDVgIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgaXQgaXMuIFRoZSBQQ0kgZnV6emVyIGlzIHRoZSBhdmVudWUgaGVyZS4gQnV0LCBpcyB0aGUgUENJIGZ1enplciBjb25zaWRlcmVkICYjMzQ7c29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oz8gSSB0aGluayBpdCBpczsgaXQgZW11bGF0ZXMgUENJIGRldmljZXMgaW4gc29mdHdhcmUuIFNvLCB5ZXMsIGBtbHg1YCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGBDT05GSUdfTUxYNV9DT1JFYCwgcGVyaGFwcz8pIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGJlIHJlbGV2YW50LiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgaW4gbXkgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWDVfQ09SRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Njpjb25maWcgTUxYNV9DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBjb3JlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTE5PWNvbmZpZyBNTFg1X0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjI5OmNvbmZpZyBNTFg1X0NPUkVfRU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xMTI9Y29uZmlnIE1MWDVfVENfU0FNUExFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MTI1OmNvbmZpZyBNTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjYtXHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMzc6Y29uZmlnIE1MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM4LVx0Ym9vbCBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChjb25uZWN0WCBzZXJpZXMpIElQb0lCIG9mZmxvYWRzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5MjIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbGxhbm94IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoYW5nZSwgYW5kIGl0IHNlZW1zIHRoZSBrZXkgY29uZmlnIHZhcmlhYmxlIGludm9sdmVkIGlzIGBDT05GSUdfTUxYNV9DT1JFYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgbmVlZCB0byBrbm93IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIGF0IHBsYXkgaGVyZS4gVGhpcyBraW5kIG9mIGtlcm5lbCBjb2RlIGNhbiBiZSBjb21wbGV4LCBhbmQgdGhlcmUgYXJlIG9mdGVuIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGFueSBvZiB0aGUgcmVsYXRlZCBmaWxlcy4KClRoZSBzcGVjaWZpYyBmaWxlIG1vZGlmaWVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY2AuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgdGhlIE1ha2VmaWxlIGFzc29jaWF0ZWQgd2l0aCBgYWxsb2MuY2AuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmlsZSBpcyBidWlsdCBhbmQgbGlua2VkIGlzIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIE1lbGxhbm94IGRyaXZlci4gR290dGEgZmluZCB0aG9zZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGxvY1xcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgJiM0Mzs9IG1seDVfY29yZS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEzLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDptbHg1X2NvcmUteSA6PVx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNTpcdFx0aGVhbHRoLm8gbWNnLm8gY3EubyBhbGxvYy5vIHBvcnQubyBtci5vIHBkLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNi1cdFx0dHJhbnNvYmoubyB2cG9ydC5vIHNyaW92Lm8gZnNfY21kLm8gZnNfY29yZS5vIHBjaV9pcnEubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQyOAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyBhIE1lbGxhbm94IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGFsbG9jLm9gLCB3aGljaCBpcyBhbHdheXMgYnVpbHQgd2hlbiBgQ09ORklHX01MWDVfQ09SRWAgaXMgZW5hYmxlZC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCwgYG1seDVfZGJfYWxsb2Nfbm9kZWAsIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFzb25hYmx5IGZ1enogdGhlc2U/CgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgdGhlIFBDSSBmdXp6ZXIgY2FuIGhpdCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSWYgdGhlIFBDSSBmdXp6ZXIgZmFpbHMgYmVmb3JlIGBtbHg1X2NtZF9pbml0X2hjYWAsIHRoZW4gYG1seDVfZGJfYWxsb2Nfbm9kZWAgaXMgdW5yZWFjaGFibGUuIEkgaGFkIHRvIGNvbnNpZGVyLCBjb3VsZCBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlYCBmdW5jdGlvbiBkbyB0aGlzLCBtYXliZSB3aXRoIGEgc3BlY2lmaWMgZGVzY3JpcHRpb24gZm9yIG1seDU/IEkgZGlkIGEgc2VhcmNoIGZvciBgc3l6Xy4qbWx4NWAgYW5kIGRpZG4mIzM5O3QgZmluZCBhbnl0aGluZywgYnV0IHN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyBnZW5lcmFsbHkuIFNvIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgdmlhIGdlbmVyaWMgUENJIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBmdXp6aW5nIHRhcmdldHMsIEkmIzM5O2xsIGxpc3QgYG1seDVfZGJfcG9vbHNfaW5pdGAsIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLCBgbWx4NV9kYl9hbGxvY19ub2RlYCwgYW5kIGBtbHg1X2RiX2ZyZWVgIGFzIHRoZSBgRm9jdXNTeW1ib2xzYC4gQW5kIEkmIzM5O2xsIG5lZWQgYEVuYWJsZUNvbmZpZ3NgOiBgTUxYNV9DT1JFYC4KCldhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZyBpbnZvbHZlZD8gTm8sIGBNTFg1X0NPUkVgIGlzIHN1ZmZpY2llbnQuCgpOb3csIGNvdWxkIEkgcG90ZW50aWFsbHkgcmVhY2ggYG1seDVfZGJfYWxsb2Nfbm9kZWAgZnJvbSB1c2Vyc3BhY2UgdmlhIFJETUE/IElmIGBDT05GSUdfTUxYNV9JTkZJTklCQU5EYCBpcyBlbmFibGVkLCB0aGVuIHVzZXJzcGFjZSBjYW4gY2FsbCBgbWx4NV9pYl9jcmVhdGVfcXBgLCB3aGljaCAqZG9lcyogY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSG93ZXZlciwgdGhpcyByZXF1aXJlcyBhIHJlYWwgbWx4NSBkZXZpY2UsIG9yLCBtb3JlIHJlYWxpc3RpY2FsbHksIHRoZSBQQ0kgZnV6emVyIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIHRoZSBkZXZpY2UgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBSRE1BIGRldmljZSByZWdpc3RlcnMuIFRoYXQgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gYG1seDVfaWJfcHJvYmVgICh0aGUgYXV4aWxpYXJ5IGRyaXZlciBwcm9iZSkuIFRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBtbHg1X21kZXZfaW5pdGAgdG8gc3VjY2VlZCwgYW5kIHRoZW4gdGhlIGF1eGlsaWFyeSBkZXZpY2UgdG8gYmUgYWRkZWQuIEl0JiMzOTtzIHVubGlrZWx5IHRoZSBQQ0kgZnV6emVyIGNhbiBmYWtlIHRoYXQgKmVudGlyZSogaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgdG8gZ2V0IHRoZSBSRE1BIGRldmljZSB0byByZWdpc3Rlci4gSG93ZXZlciwgYG1seDVfZGJfcG9vbHNfaW5pdGAgKmlzKiBjYWxsZWQgZWFybHkgaW4gYG1seDVfbWRldl9pbml0YCwgYW5kIHRoYXQgKmlzKiByZWFjaGFibGUuIFNvIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYmVjYXVzZSBpdCB0b3VjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIGEgUENJIGRyaXZlciwgd2hpY2ggaXMgZnV6emFibGUgdmlhIFBDSSBmdXp6aW5nLgoKTGV0IG1lIGp1c3QgcXVpY2tseSByZWNhcCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyByZW1vdmluZyBgbWx4NV9kYl9wZ2RpcmAgYW5kIHVzaW5nIGBtbHg1X2RtYV9wb29sYCBpbnN0ZWFkLiBJdCBhZGRzIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYC4gQW5kIGl0IG1vZGlmaWVzIGBtbHg1X2RiX2FsbG9jX25vZGVgIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0IGlzIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBjb3JlIGRyaXZlciwgd2hpY2ggaW1wYWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLCBhbmQgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaXMsIGluIGZhY3QsIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcuCgpPbmUgZmluYWwgY2hlY2ssIEkgbmVlZCB0byBtYWtlIHN1cmUgYG1seDVfZG1hX3Bvb2xgIGlzIGRlZmluZWQgaW4gYGFsbG9jLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2RtYV9wb29sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MTpzdHJ1Y3QgbWx4NV9kbWFfcG9vbCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01Mi1cdC8qIFByb3RlY3RzIHBhZ2VfbGlzdCBhbmQgcGVyLXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXBzLiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjA6c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2MTpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjItXHRzdHJ1Y3QgbGlzdF9oZWFkIHBvb2xfbGluaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz02OD1zdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY5Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2xzW01MWDVfRlJBR19CVUZfUE9PTFNfTlVNXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTcwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy03MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjcyOnN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTczLVx0aW50IG5vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9ODM9c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTAyOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVzdHJveShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEwMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqbWx4NV9kbWFfcG9vbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEwOS1cdFx0XHRcdFx0XHQgIGludCBub2RlLCB1OCBibG9ja19zaGlmdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMTE6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMjU6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTI2Om1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEyNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMjgtXHRpbnQgYmxvY2tzX3Blcl9wYWdlID0gQklUKFBBR0VfU0hJRlQgLSBwb29sLVx1MDAzZWJsb2NrX3NoaWZ0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEyOTpcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTU2OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfcGFnZV9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNTc6XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTY1OnN0YXRpYyBpbnQgbWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2Uoc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjY6XHRcdFx0XHRcdCBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY3LVx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyAqaWR4X291dClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxODM6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTg0Om1seDVfZG1hX3Bvb2xfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTg2Olx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE4Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTAtXHRwYWdlID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNnBvb2wtXHUwMDNlcGFnZV9saXN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkxOlx0XHRcdFx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlLCBwb29sX2xpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkyOlx0aWYgKHBhZ2UgXHUwMDI2XHUwMDI2ICFtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5My1cdFx0Z290byB1bmxvY2s7IC8qIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgZnJvbSBleGlzdGluZyBwYWdlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxOTU6XHRwYWdlID0gbWx4NV9kbWFfcG9vbF9wYWdlX2FsbG9jKHBvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTk2LVx0aWYgKCFwYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5OS1cdGxpc3RfYWRkKFx1MDAyNnBhZ2UtXHUwMDNlcG9vbF9saW5rLCBcdTAwMjZwb29sLVx1MDAzZXBhZ2VfbGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMDA6XHRtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMDc6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9mcmVlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA4Olx0XHRcdCAgICAgICBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjA5LVx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMTktXHRcdGxpc3RfZGVsKFx1MDAyNnBhZ2UtXHUwMDNlcG9vbF9saW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIyMDpcdFx0bWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUocG9vbC1cdTAwM2VkZXYsIHBhZ2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjIxLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzA6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX2dldF9zdGF0cyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzMTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzICpzdGF0cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIzMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzMtXHRpbnQgYmxvY2tzX3Blcl9wYWdlID0gQklUKFBBR0VfU0hJRlQgLSBwb29sLVx1MDAzZWJsb2NrX3NoaWZ0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzNDpcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzUtXHRzaXplX3QgZnJlZV9ibG9ja3MgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI1MTpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoc3RydWN0IHNlcV9maWxlICpmaWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjUyOlx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTQ6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9zdGF0cyBzdGF0cyA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjU2Olx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX2dldF9zdGF0cyhwb29sLCBcdTAwMjZzdGF0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNTctXHRzZXFfcHJpbnRmKGZpbGUsIFwmIzM0OyU0ZCAgICAgICAlNXp1ICAgICAgJTd6dSAgICAgICAgICAgJTd6dVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNjI6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoc3RydWN0IHNlcV9maWxlICpmaWxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0yNjg9bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3koc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNzEtXHRcdGlmIChub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjcyOlx0XHRcdG1seDVfZG1hX3Bvb2xfZGVzdHJveShub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3My1cdGtmcmVlKG5vZGVfcG9vbHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTI3Nz1tbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4ODpcdFx0bm9kZV9wb29scy1cdTAwM2Vwb29sc1tpXSA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4OS1cdFx0XHRcdFx0XHRcdCAgICBibG9ja19zaGlmdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzAwPW1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA1Olx0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzE3LVx0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgTUxYNV9GUkFHX0JVRl9QT09MU19OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XHRcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMyMzpcdFx0XHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjQtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zODE9aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mzg0Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODUtXHRpbnQgcG9vbF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDAyLVx0XHRzdHJ1Y3QgbWx4NV9idWZfbGlzdCAqZnJhZyA9IFx1MDAyNmJ1Zi1cdTAwM2VmcmFnc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQwMzpcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQwNC1cdFx0dW5zaWduZWQgbG9uZyBpZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MDY6XHRcdHBhZ2UgPSBtbHg1X2RtYV9wb29sX2FsbG9jKHBvb2wsIFx1MDAyNmlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MDctXHRcdGlmICghcGFnZSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQyMD12b2lkIG1seDVfZnJhZ19idWZfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyMy1cdFx0c3RydWN0IG1seDVfYnVmX2xpc3QgKmZyYWcgPSBcdTAwMjZidWYtXHUwMDNlZnJhZ3NbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjQ6XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjU6XHRcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVx0XHR1bnNpZ25lZCBsb25nIGlkeDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzMtXHRcdGlkeCA9IChmcmFnLVx1MDAzZW1hcCAtIHBhZ2UtXHUwMDNlZG1hKSBcdTAwM2VcdTAwM2UgcG9vbC1cdTAwM2VibG9ja19zaGlmdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzNDpcdFx0bWx4NV9kbWFfcG9vbF9mcmVlKHBvb2wsIHBhZ2UsIGlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzUtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDQwPXN0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDU6XHRtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihmaWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NTAtXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1MTpcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBkZXYtXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1NjpcdFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDU3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ2Mz12b2lkIG1seDVfZGJfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3Mi1cdFx0aWYgKHByaXYtXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ3MzpcdFx0XHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00Nzk9aW50IG1seDVfZGJfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ4OC1cdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDg5Olx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ5MTpcdFx0cG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ5Mi1cdFx0XHRcdFx0ICAgIG9yZGVyX2Jhc2VfMihjYWNoZV9saW5lX3NpemUoKSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTUwNz1pbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTA5Olx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxMDpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTExLVx0dW5zaWduZWQgbG9uZyBpZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTE2LVx0cG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MTc6XHRwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCBcdTAwMjZpZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTE4LVx0aWYgKCFwYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTUzMT12b2lkIG1seDVfZGJfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMzOlx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSA9IGRiLVx1MDAzZXUucG9vbF9wYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTM0Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLVx1MDAzZXBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MzY6XHRtbHg1X2RtYV9wb29sX2ZyZWUocG9vbCwgcGFnZSwgZGItXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTM3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1NzEKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEp1c3RpZmljYXRpb24qKgoKT2theSwgYWZ0ZXIgZXhhbWluaW5nIHRoaXMgcGF0Y2gsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgaXQmIzM5O3MgZnVuY3Rpb25hbCBhbmQgd2UgY2FuIHJlYWNoIGl0IHdpdGggUENJIGZ1enppbmcuIFRoYXQgc2V0dGxlcyBpdDsgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgaGVyZSBhcmUgYG1seDVfZGJfcG9vbHNfaW5pdGAsIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLCBgbWx4NV9kYl9hbGxvY19ub2RlYCwgYW5kIGBtbHg1X2RiX2ZyZWVgLiBUaGVzZSBhcmUgZ29pbmcgdG8gYmUgbXkgYEZvY3VzU3ltYm9sc2AuCgpJJiMzOTtsbCBlbmFibGUgdGhlIGBNTFg1X0NPUkVgIGNvbmZpZzsgdGhhdCYjMzk7cyB0aGUgcmVsZXZhbnQgb25lIGZvciB0aGlzLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgbWx4NSBjb3JlIGRyaXZlci4gSXQmIzM5O3Mgc3dhcHBpbmcgb3V0IGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5IGZvciBhIERNQSBwb29sLCBhbmQgdGhhdCYjMzk7cyBnb2luZyB0byBpbXBhY3QgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBob3cgcXVldWVzIGFyZSBjcmVhdGVkLiBDcnVjaWFsbHksIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoICppcyogcmVhY2hhYmxlIHRocm91Z2ggUENJIGZ1enppbmcsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciB0aG9yb3VnaCB0ZXN0aW5nLiBUaGlzIGNoYW5nZSBoYXMgZW5vdWdoIGxvdy1sZXZlbCBpbXBhY3QgdGhhdCBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4NV9kYl9wb29sc19pbml0JiMzNDssCiAgICAmIzM0O21seDVfZGJfcG9vbHNfY2xlYW51cCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX2FsbG9jX25vZGUmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIG1seDUgY29yZSBkcml2ZXIsIHJlcGxhY2luZyBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeSB3aXRoIGEgRE1BIHBvb2wuIFRoaXMgYWZmZWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLiBUaGUgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4NV9kYl9wb29sc19pbml0JiMzNDssCiAgICAmIzM0O21seDVfZGJfcG9vbHNfY2xlYW51cCYjMzQ7LAogICAgJiMzNDttbHg1X2RiX2FsbG9jX25vZGUmIzM0OywKICAgICYjMzQ7bWx4NV9kYl9mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIG1seDUgY29yZSBkcml2ZXIsIHJlcGxhY2luZyBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeSB3aXRoIGEgRE1BIHBvb2wuIFRoaXMgYWZmZWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLiBUaGUgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjI0LjA2Nzk0Nzc4MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDcyODM2OTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNTFg1X0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHg1X2RiX3Bvb2xzX2luaXRcIixcbiAgICBcIm1seDVfZGJfcG9vbHNfY2xlYW51cFwiLFxuICAgIFwibWx4NV9kYl9hbGxvY19ub2RlXCIsXG4gICAgXCJtbHg1X2RiX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjI0LjA2Nzk1NDk5MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0OTcxMTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDcwMzQ2NjA5YTM5YzAzZmM3M2FjNTM3ZmFiYmFkZjQxNDgwYmUwN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMTozMToyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXFxuaW5kZXggNGZlOWQ3ZDRmMTQzOGUuLjYwZmY0MTM5OTlmNzU1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcXG5AQCAtNDgsMTMgKzQ4LDYgQEBcXG4gI2RlZmluZSBNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTSBcXFxcXFxuIFxcdChQQUdFX1NISUZUIC0gTUxYNV9GUkFHX0JVRl9QT09MX01JTl9CTE9DS19TSElGVCArIDEpXFxuIFxcbi1zdHJ1Y3QgbWx4NV9kYl9wZ2RpciB7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWRcXHRsaXN0O1xcbi1cXHR1bnNpZ25lZCBsb25nXFx0ICAgICAgICpiaXRtYXA7XFxuLVxcdF9fYmUzMlxcdFxcdCAgICAgICAqZGJfcGFnZTtcXG4tXFx0ZG1hX2FkZHJfdFxcdFxcdGRiX2RtYTtcXG4tfTtcXG4tXFxuIHN0cnVjdCBtbHg1X2RtYV9wb29sIHtcXG4gXFx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXFxuIFxcdHN0cnVjdCBtdXRleCBsb2NrO1xcbkBAIC00NDQsMTA2ICs0MzcsMTAzIEBAIHZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9mcmFnX2J1Zl9mcmVlKTtcXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqbWx4NV9hbGxvY19kYl9wZ2RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgaW50IG5vZGUpXFxuK3N0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcXG4ge1xcbi1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG4tXFx0c3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyO1xcbitcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG4rXFx0aW50IG5vZGU7XFxuIFxcbi1cXHRwZ2RpciA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKnBnZGlyKSwgR0ZQX0tFUk5FTCwgbm9kZSk7XFxuLVxcdGlmICghcGdkaXIpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihmaWxlKTtcXG4gXFxuLVxcdHBnZGlyLVxcdTAwM2ViaXRtYXAgPSBiaXRtYXBfemFsbG9jX25vZGUoZGJfcGVyX3BhZ2UsIEdGUF9LRVJORUwsIG5vZGUpO1xcbi1cXHRpZiAoIXBnZGlyLVxcdTAwM2ViaXRtYXApIHtcXG4tXFx0XFx0a2ZyZWUocGdkaXIpO1xcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFx0fVxcbitcXHRpZiAoIWRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGJpdG1hcF9maWxsKHBnZGlyLVxcdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKTtcXG4rXFx0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XFxuK1xcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sID0gZGV2LVxcdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XFxuIFxcbi1cXHRwZ2Rpci1cXHUwMDNlZGJfcGFnZSA9IG1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKGRldiwgUEFHRV9TSVpFLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnBnZGlyLVxcdTAwM2VkYl9kbWEsIG5vZGUpO1xcbi1cXHRpZiAoIXBnZGlyLVxcdTAwM2VkYl9wYWdlKSB7XFxuLVxcdFxcdGJpdG1hcF9mcmVlKHBnZGlyLVxcdTAwM2ViaXRtYXApO1xcbi1cXHRcXHRrZnJlZShwZ2Rpcik7XFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRpZiAoIXBvb2wpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gcGdkaXI7XFxuK1xcdHJldHVybiAwO1xcbiB9XFxuK0RFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzKTtcXG4gXFxuLXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcixcXG4tXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RiICpkYilcXG4rdm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4ge1xcbi1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG4tXFx0aW50IG9mZnNldDtcXG4tXFx0aW50IGk7XFxuK1xcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgbm9kZTtcXG4rXFxuK1xcdGRlYnVnZnNfcmVtb3ZlKHByaXYtXFx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyk7XFxuK1xcdHByaXYtXFx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyA9IE5VTEw7XFxuK1xcbitcXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpXFxuK1xcdFxcdGlmIChwcml2LVxcdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKVxcbitcXHRcXHRcXHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kocHJpdi1cXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSk7XFxuK1xcbitcXHRrZnJlZShwcml2LVxcdTAwM2VkYl9ub2RlX3Bvb2xzKTtcXG4rXFx0cHJpdi1cXHUwMDNlZGJfbm9kZV9wb29scyA9IE5VTEw7XFxuK31cXG4rXFxuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXFx1MDAyNmRldi1cXHUwMDNlcHJpdjtcXG4rXFx0aW50IG5vZGU7XFxuIFxcbi1cXHRpID0gZmluZF9maXJzdF9iaXQocGdkaXItXFx1MDAzZWJpdG1hcCwgZGJfcGVyX3BhZ2UpO1xcbi1cXHRpZiAoaSBcXHUwMDNlPSBkYl9wZXJfcGFnZSlcXG4rXFx0cHJpdi1cXHUwMDNlZGJfbm9kZV9wb29scyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cXHUwMDNlZGJfbm9kZV9wb29scywgbnJfbm9kZV9pZHMpO1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWRiX25vZGVfcG9vbHMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0X19jbGVhcl9iaXQoaSwgcGdkaXItXFx1MDAzZWJpdG1hcCk7XFxuK1xcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xcbitcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG4gXFxuLVxcdGRiLVxcdTAwM2V1LnBnZGlyID0gcGdkaXI7XFxuLVxcdGRiLVxcdTAwM2VpbmRleCAgID0gaTtcXG4tXFx0b2Zmc2V0ID0gZGItXFx1MDAzZWluZGV4ICogY2FjaGVfbGluZV9zaXplKCk7XFxuLVxcdGRiLVxcdTAwM2VkYiAgICAgID0gcGdkaXItXFx1MDAzZWRiX3BhZ2UgKyBvZmZzZXQgLyBzaXplb2YoKnBnZGlyLVxcdTAwM2VkYl9wYWdlKTtcXG4tXFx0ZGItXFx1MDAzZWRtYSAgICAgPSBwZ2Rpci1cXHUwMDNlZGJfZG1hICArIG9mZnNldDtcXG4rXFx0XFx0cG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG9yZGVyX2Jhc2VfMihjYWNoZV9saW5lX3NpemUoKSkpO1xcbitcXHRcXHRpZiAoIXBvb2wpIHtcXG4rXFx0XFx0XFx0bWx4NV9kYl9wb29sc19jbGVhbnVwKGRldik7XFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHR9XFxuK1xcdFxcdHByaXYtXFx1MDAzZWRiX25vZGVfcG9vbHNbbm9kZV0gPSBwb29sO1xcbitcXHR9XFxuIFxcbi1cXHRkYi1cXHUwMDNlZGJbMF0gPSAwO1xcbi1cXHRkYi1cXHUwMDNlZGJbMV0gPSAwO1xcbitcXHRwcml2LVxcdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPVxcbitcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkYl9kbWFfcG9vbHNcXFwiLCAwNDQ0LCBwcml2LVxcdTAwM2VkYmcuZGJnX3Jvb3QsXFxuK1xcdFxcdFxcdFxcdCAgICBkZXYsIFxcdTAwMjZtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzX2ZvcHMpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG4ge1xcbi1cXHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XFxuLVxcdGludCByZXQgPSAwO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2LnBnZGlyX211dGV4KTtcXG4tXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkocGdkaXIsIFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbGlzdCwgbGlzdClcXG4tXFx0XFx0aWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSlcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRwZ2RpciA9IG1seDVfYWxsb2NfZGJfcGdkaXIoZGV2LCBub2RlKTtcXG4tXFx0aWYgKCFwZ2Rpcikge1xcbi1cXHRcXHRyZXQgPSAtRU5PTUVNO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG4rXFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuK1xcdGludCBvZmZzZXQ7XFxuIFxcbi1cXHRsaXN0X2FkZChcXHUwMDI2cGdkaXItXFx1MDAzZWxpc3QsIFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbGlzdCk7XFxuK1xcdG5vZGUgPSBub2RlID09IE5VTUFfTk9fTk9ERSA/IG51bWFfbWVtX2lkKCkgOiBub2RlO1xcbiBcXG4tXFx0LyogVGhpcyBzaG91bGQgbmV2ZXIgZmFpbCAtLSB3ZSBqdXN0IGFsbG9jYXRlZCBhbiBlbXB0eSBwYWdlOiAqL1xcbi1cXHRXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTtcXG4rXFx0cG9vbCA9IGRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xcbitcXHRwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCBcXHUwMDI2aWR4KTtcXG4rXFx0aWYgKCFwYWdlKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuLW91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xcbitcXHRvZmZzZXQgPSBpZHggXFx1MDAzY1xcdTAwM2MgcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQ7XFxuK1xcdGRiLVxcdTAwM2V1LnBvb2xfcGFnZSA9IHBhZ2U7XFxuK1xcdGRiLVxcdTAwM2VpbmRleCA9IGlkeDtcXG4rXFx0ZGItXFx1MDAzZWRiID0gKF9fYmUzMiAqKSgodTggKilwYWdlLVxcdTAwM2VidWYgKyBvZmZzZXQpO1xcbitcXHRkYi1cXHUwMDNlZG1hID0gcGFnZS1cXHUwMDNlZG1hICsgb2Zmc2V0O1xcbiBcXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG4gXFxuIHZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG4ge1xcbi1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlcHJpdi5wZ2Rpcl9tdXRleCk7XFxuLVxcbi1cXHRfX3NldF9iaXQoZGItXFx1MDAzZWluZGV4LCBkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlYml0bWFwKTtcXG4tXFxuLVxcdGlmIChiaXRtYXBfZnVsbChkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSkpIHtcXG4tXFx0XFx0ZG1hX2ZyZWVfY29oZXJlbnQobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSwgUEFHRV9TSVpFLFxcbi1cXHRcXHRcXHRcXHQgIGRiLVxcdTAwM2V1LnBnZGlyLVxcdTAwM2VkYl9wYWdlLCBkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlZGJfZG1hKTtcXG4tXFx0XFx0bGlzdF9kZWwoXFx1MDAyNmRiLVxcdTAwM2V1LnBnZGlyLVxcdTAwM2VsaXN0KTtcXG4tXFx0XFx0Yml0bWFwX2ZyZWUoZGItXFx1MDAzZXUucGdkaXItXFx1MDAzZWJpdG1hcCk7XFxuLVxcdFxcdGtmcmVlKGRiLVxcdTAwM2V1LnBnZGlyKTtcXG4tXFx0fVxcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlID0gZGItXFx1MDAzZXUucG9vbF9wYWdlO1xcbitcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IHBhZ2UtXFx1MDAzZXBvb2w7XFxuIFxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlcHJpdi5wZ2Rpcl9tdXRleCk7XFxuK1xcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBkYi1cXHUwMDNlaW5kZXgpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfZnJlZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xcbmluZGV4IDY0M2I0YWFjMjAzMzY4Li41ZjI4ZDkwNmMzNWI2MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xcbkBAIC0xODE5LDggKzE4MTksNiBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VhbGxvY19tdXRleCk7XFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXBnZGlyX211dGV4KTtcXG4tXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnByaXYtXFx1MDAzZXBnZGlyX2xpc3QpO1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNlbnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSk7XFxuIFxcdHByaXYtXFx1MDAzZWRiZy5kYmdfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShkZXYtXFx1MDAzZWRldmljZSksXFxuQEAgLTE4MzAsNiArMTgyOCwxMCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycl9mcmFnX2J1Zl9wb29sc19pbml0O1xcbiBcXG4rXFx0ZXJyID0gbWx4NV9kYl9wb29sc19pbml0KGRldik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdGdvdG8gZXJyX2RiX3Bvb2xzX2luaXQ7XFxuK1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNldHJhcHMpO1xcbiBcXG4gXFx0ZXJyID0gbWx4NV9jbWRfaW5pdChkZXYpO1xcbkBAIC0xODkxLDEwICsxODkzLDExIEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpXFxuIGVycl90aW1lb3V0X2luaXQ6XFxuIFxcdG1seDVfY21kX2NsZWFudXAoZGV2KTtcXG4gZXJyX2NtZF9pbml0OlxcbitcXHRtbHg1X2RiX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG4rZXJyX2RiX3Bvb2xzX2luaXQ6XFxuIFxcdG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChkZXYpO1xcbiBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDpcXG4gXFx0ZGVidWdmc19yZW1vdmUoZGV2LVxcdTAwM2Vwcml2LmRiZy5kYmdfcm9vdCk7XFxuLVxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXBnZGlyX211dGV4KTtcXG4gXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlYWxsb2NfbXV0ZXgpO1xcbiBcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3Mud2NfaGVhZC5sb2NrKTtcXG4gXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLnJlZ19oZWFkLmxvY2spO1xcbkBAIC0xOTE3LDkgKzE5MjAsOSBAQCB2b2lkIG1seDVfbWRldl91bmluaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4gXFx0bWx4NV9oZWFsdGhfY2xlYW51cChkZXYpO1xcbiBcXHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xcbiBcXHRtbHg1X2NtZF9jbGVhbnVwKGRldik7XFxuK1xcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xcbiBcXHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG4gXFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGRldi1cXHUwMDNlcHJpdi5kYmcuZGJnX3Jvb3QpO1xcbi1cXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2VwZ2Rpcl9tdXRleCk7XFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZWFsbG9jX211dGV4KTtcXG4gXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLndjX2hlYWQubG9jayk7XFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oXFxuaW5kZXggMDllNjY5ZjgzZGJhNzYuLmQ2NzEzYTJjZTY3Njk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxcbkBAIC00MzgsNiArNDM4LDggQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeCk7XFxuIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4gaW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4gdm9pZCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuK3ZvaWQgbWx4NV9kYl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbiBpbnQgbWx4NV9pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4gaW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuIHZvaWQgbWx4NV91bmluaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmggYi9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmhcXG5pbmRleCBiMTg3MWMwODIxZDBiOS4uODNkMGE4M2JiZmJjYWMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXFxuQEAgLTU0OCw2ICs1NDgsNyBAQCBzdHJ1Y3QgbWx4NV9kZWJ1Z2ZzX2VudHJpZXMge1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpjcV9kZWJ1Z2ZzO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpjbWRpZl9kZWJ1Z2ZzO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpmcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmcztcXG4rXFx0c3RydWN0IGRlbnRyeSAqZGJfZG1hX3Bvb2xzX2RlYnVnZnM7XFxuIFxcdHN0cnVjdCBkZW50cnkgKnBhZ2VzX2RlYnVnZnM7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmxhZ19kZWJ1Z2ZzO1xcbiB9O1xcbkBAIC01NjksNiArNTcwLDcgQEAgZW51bSBtbHg1X3BhZ2VfbWd0X21vZGUge1xcbiB9O1xcbiBcXG4gc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scztcXG4rc3RydWN0IG1seDVfZG1hX3Bvb2w7XFxuIHN0cnVjdCBtbHg1X2Z0X3Bvb2w7XFxuIHN0cnVjdCBtbHg1X3ByaXYge1xcbiBcXHQvKiBJUlEgdGFibGUgdmFsaWQgb25seSBmb3IgcmVhbCBwY2kgZGV2aWNlcyBQRiBvciBWRiAqL1xcbkBAIC01OTgsMTAgKzYwMCw4IEBAIHN0cnVjdCBtbHg1X3ByaXYge1xcbiBcXHRzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBhbGxvY19tdXRleDtcXG4gXFx0aW50ICAgICAgICAgICAgICAgICAgICAgbnVtYV9ub2RlO1xcbiBcXG4tXFx0c3RydWN0IG11dGV4ICAgICAgICAgICAgcGdkaXJfbXV0ZXg7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBnZGlyX2xpc3Q7XFxuLVxcbiBcXHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICoqZnJhZ19idWZfbm9kZV9wb29scztcXG4rXFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKipkYl9ub2RlX3Bvb2xzO1xcbiBcXHQvKiBlbmQ6IGFsbG9jIHN0dWZmICovXFxuIFxcbiBcXHRzdHJ1Y3QgbWx4NV9hZGV2ICAgICAgICoqYWRldjtcXG5AQCAtODA2LDcgKzgwNiw3IEBAIHN0cnVjdCBtbHg1X2NvcmVfZGV2IHtcXG4gc3RydWN0IG1seDVfZGIge1xcbiBcXHRfX2JlMzJcXHRcXHRcXHQqZGI7XFxuIFxcdHVuaW9uIHtcXG4tXFx0XFx0c3RydWN0IG1seDVfZGJfcGdkaXJcXHRcXHQqcGdkaXI7XFxuK1xcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2VcXHQqcG9vbF9wYWdlO1xcbiBcXHRcXHRzdHJ1Y3QgbWx4NV9pYl91c2VyX2RiX3BhZ2VcXHQqdXNlcl9wYWdlO1xcbiBcXHR9XFx0XFx0XFx0dTtcXG4gXFx0ZG1hX2FkZHJfdFxcdFxcdGRtYTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzE6MjQuNTAzNjI1ODQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI0MjkyNjgyNjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1MWDVfQ09SRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1seDVfZGJfcG9vbHNfaW5pdFwiLFxuICAgIFwibWx4NV9kYl9wb29sc19jbGVhbnVwXCIsXG4gICAgXCJtbHg1X2RiX2FsbG9jX25vZGVcIixcbiAgICBcIm1seDVfZGJfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIG1seDUgY29yZSBkcml2ZXIsIHJlcGxhY2luZyBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeSB3aXRoIGEgRE1BIHBvb2wuIFRoaXMgYWZmZWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLiBUaGUgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNzAzNDY2MDlhMzljMDNmYzczYWM1MzdmYWJiYWRmNDE0ODBiZTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTE6MzE6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jXG5pbmRleCA0ZmU5ZDdkNGYxNDM4ZS4uNjBmZjQxMzk5OWY3NTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcbkBAIC00OCwxMyArNDgsNiBAQFxuICNkZWZpbmUgTUxYNV9GUkFHX0JVRl9QT09MU19OVU0gXFxcbiBcdChQQUdFX1NISUZUIC0gTUxYNV9GUkFHX0JVRl9QT09MX01JTl9CTE9DS19TSElGVCArIDEpXG4gXG4tc3RydWN0IG1seDVfZGJfcGdkaXIge1xuLVx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbi1cdHVuc2lnbmVkIGxvbmdcdCAgICAgICAqYml0bWFwO1xuLVx0X19iZTMyXHRcdCAgICAgICAqZGJfcGFnZTtcbi1cdGRtYV9hZGRyX3RcdFx0ZGJfZG1hO1xuLX07XG4tXG4gc3RydWN0IG1seDVfZG1hX3Bvb2wge1xuIFx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXG4gXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbkBAIC00NDQsMTA2ICs0MzcsMTAzIEBAIHZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZnJhZ19idWZfZnJlZSk7XG4gXG4tc3RhdGljIHN0cnVjdCBtbHg1X2RiX3BnZGlyICptbHg1X2FsbG9jX2RiX3BnZGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG4tXHRcdFx0XHRcdFx0IGludCBub2RlKVxuK3N0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcbiB7XG4tXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcbi1cdHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcjtcbitcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG4rXHRpbnQgbm9kZTtcbiBcbi1cdHBnZGlyID0ga3phbGxvY19ub2RlKHNpemVvZigqcGdkaXIpLCBHRlBfS0VSTkVMLCBub2RlKTtcbi1cdGlmICghcGdkaXIpXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XG4gXG4tXHRwZ2Rpci1cdTAwM2ViaXRtYXAgPSBiaXRtYXBfemFsbG9jX25vZGUoZGJfcGVyX3BhZ2UsIEdGUF9LRVJORUwsIG5vZGUpO1xuLVx0aWYgKCFwZ2Rpci1cdTAwM2ViaXRtYXApIHtcbi1cdFx0a2ZyZWUocGdkaXIpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbi1cdH1cbitcdGlmICghZGV2LVx1MDAzZXByaXYuZGJfbm9kZV9wb29scylcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHRiaXRtYXBfZmlsbChwZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKTtcbitcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuK1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IGRldi1cdTAwM2Vwcml2LmRiX25vZGVfcG9vbHNbbm9kZV07XG4gXG4tXHRwZ2Rpci1cdTAwM2VkYl9wYWdlID0gbWx4NV9kbWFfemFsbG9jX2NvaGVyZW50X25vZGUoZGV2LCBQQUdFX1NJWkUsXG4tXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBnZGlyLVx1MDAzZWRiX2RtYSwgbm9kZSk7XG4tXHRpZiAoIXBnZGlyLVx1MDAzZWRiX3BhZ2UpIHtcbi1cdFx0Yml0bWFwX2ZyZWUocGdkaXItXHUwMDNlYml0bWFwKTtcbi1cdFx0a2ZyZWUocGdkaXIpO1xuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0aWYgKCFwb29sKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XG4gXHR9XG4gXG4tXHRyZXR1cm4gcGdkaXI7XG4rXHRyZXR1cm4gMDtcbiB9XG4rREVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZGJfZG1hX3Bvb2xzX2RlYnVnZnMpO1xuIFxuLXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2Rpcixcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9kYiAqZGIpXG4rdm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbiB7XG4tXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcbi1cdGludCBvZmZzZXQ7XG4tXHRpbnQgaTtcbitcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcHJpdjtcbitcdGludCBub2RlO1xuK1xuK1x0ZGVidWdmc19yZW1vdmUocHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMpO1xuK1x0cHJpdi1cdTAwM2VkYmcuZGJfZG1hX3Bvb2xzX2RlYnVnZnMgPSBOVUxMO1xuK1xuK1x0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKVxuK1x0XHRpZiAocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzW25vZGVdKVxuK1x0XHRcdG1seDVfZG1hX3Bvb2xfZGVzdHJveShwcml2LVx1MDAzZWRiX25vZGVfcG9vbHNbbm9kZV0pO1xuK1xuK1x0a2ZyZWUocHJpdi1cdTAwM2VkYl9ub2RlX3Bvb2xzKTtcbitcdHByaXYtXHUwMDNlZGJfbm9kZV9wb29scyA9IE5VTEw7XG4rfVxuK1xuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbit7XG4rXHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG4rXHRpbnQgbm9kZTtcbiBcbi1cdGkgPSBmaW5kX2ZpcnN0X2JpdChwZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKTtcbi1cdGlmIChpIFx1MDAzZT0gZGJfcGVyX3BhZ2UpXG4rXHRwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMgPSBremFsbG9jX29ianMoKnByaXYtXHUwMDNlZGJfbm9kZV9wb29scywgbnJfbm9kZV9pZHMpO1xuK1x0aWYgKCFwcml2LVx1MDAzZWRiX25vZGVfcG9vbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0X19jbGVhcl9iaXQoaSwgcGdkaXItXHUwMDNlYml0bWFwKTtcbitcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuK1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbiBcbi1cdGRiLVx1MDAzZXUucGdkaXIgPSBwZ2Rpcjtcbi1cdGRiLVx1MDAzZWluZGV4ICAgPSBpO1xuLVx0b2Zmc2V0ID0gZGItXHUwMDNlaW5kZXggKiBjYWNoZV9saW5lX3NpemUoKTtcbi1cdGRiLVx1MDAzZWRiICAgICAgPSBwZ2Rpci1cdTAwM2VkYl9wYWdlICsgb2Zmc2V0IC8gc2l6ZW9mKCpwZ2Rpci1cdTAwM2VkYl9wYWdlKTtcbi1cdGRiLVx1MDAzZWRtYSAgICAgPSBwZ2Rpci1cdTAwM2VkYl9kbWEgICsgb2Zmc2V0O1xuK1x0XHRwb29sID0gbWx4NV9kbWFfcG9vbF9jcmVhdGUoZGV2LCBub2RlLFxuK1x0XHRcdFx0XHQgICAgb3JkZXJfYmFzZV8yKGNhY2hlX2xpbmVfc2l6ZSgpKSk7XG4rXHRcdGlmICghcG9vbCkge1xuK1x0XHRcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHR9XG4rXHRcdHByaXYtXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSA9IHBvb2w7XG4rXHR9XG4gXG4tXHRkYi1cdTAwM2VkYlswXSA9IDA7XG4tXHRkYi1cdTAwM2VkYlsxXSA9IDA7XG4rXHRwcml2LVx1MDAzZWRiZy5kYl9kbWFfcG9vbHNfZGVidWdmcyA9XG4rXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkYl9kbWFfcG9vbHNcIiwgMDQ0NCwgcHJpdi1cdTAwM2VkYmcuZGJnX3Jvb3QsXG4rXHRcdFx0XHQgICAgZGV2LCBcdTAwMjZtbHg1X2RiX2RtYV9wb29sc19kZWJ1Z2ZzX2ZvcHMpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcbiB7XG4tXHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XG4tXHRpbnQgcmV0ID0gMDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuLVxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShwZ2RpciwgXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbGlzdCwgbGlzdClcbi1cdFx0aWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSlcbi1cdFx0XHRnb3RvIG91dDtcbi1cbi1cdHBnZGlyID0gbWx4NV9hbGxvY19kYl9wZ2RpcihkZXYsIG5vZGUpO1xuLVx0aWYgKCFwZ2Rpcikge1xuLVx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbitcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG4rXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbitcdHVuc2lnbmVkIGxvbmcgaWR4O1xuK1x0aW50IG9mZnNldDtcbiBcbi1cdGxpc3RfYWRkKFx1MDAyNnBnZGlyLVx1MDAzZWxpc3QsIFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX2xpc3QpO1xuK1x0bm9kZSA9IG5vZGUgPT0gTlVNQV9OT19OT0RFID8gbnVtYV9tZW1faWQoKSA6IG5vZGU7XG4gXG4tXHQvKiBUaGlzIHNob3VsZCBuZXZlciBmYWlsIC0tIHdlIGp1c3QgYWxsb2NhdGVkIGFuIGVtcHR5IHBhZ2U6ICovXG4tXHRXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTtcbitcdHBvb2wgPSBkZXYtXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xuK1x0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXHUwMDI2aWR4KTtcbitcdGlmICghcGFnZSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX211dGV4KTtcbitcdG9mZnNldCA9IGlkeCBcdTAwM2NcdTAwM2MgcG9vbC1cdTAwM2VibG9ja19zaGlmdDtcbitcdGRiLVx1MDAzZXUucG9vbF9wYWdlID0gcGFnZTtcbitcdGRiLVx1MDAzZWluZGV4ID0gaWR4O1xuK1x0ZGItXHUwMDNlZGIgPSAoX19iZTMyICopKCh1OCAqKXBhZ2UtXHUwMDNlYnVmICsgb2Zmc2V0KTtcbitcdGRiLVx1MDAzZWRtYSA9IHBhZ2UtXHUwMDNlZG1hICsgb2Zmc2V0O1xuIFxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiAwO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2FsbG9jX25vZGUpO1xuIFxuIHZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcbiB7XG4tXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuLVxuLVx0X19zZXRfYml0KGRiLVx1MDAzZWluZGV4LCBkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWJpdG1hcCk7XG4tXG4tXHRpZiAoYml0bWFwX2Z1bGwoZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKSkge1xuLVx0XHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsXG4tXHRcdFx0XHQgIGRiLVx1MDAzZXUucGdkaXItXHUwMDNlZGJfcGFnZSwgZGItXHUwMDNldS5wZ2Rpci1cdTAwM2VkYl9kbWEpO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWxpc3QpO1xuLVx0XHRiaXRtYXBfZnJlZShkYi1cdTAwM2V1LnBnZGlyLVx1MDAzZWJpdG1hcCk7XG4tXHRcdGtmcmVlKGRiLVx1MDAzZXUucGdkaXIpO1xuLVx0fVxuK1x0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSA9IGRiLVx1MDAzZXUucG9vbF9wYWdlO1xuK1x0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBwYWdlLVx1MDAzZXBvb2w7XG4gXG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXByaXYucGdkaXJfbXV0ZXgpO1xuK1x0bWx4NV9kbWFfcG9vbF9mcmVlKHBvb2wsIHBhZ2UsIGRiLVx1MDAzZWluZGV4KTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9mcmVlKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xuaW5kZXggNjQzYjRhYWMyMDMzNjguLjVmMjhkOTA2YzM1YjYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY1xuQEAgLTE4MTksOCArMTgxOSw2IEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxpc3QpO1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWFsbG9jX211dGV4KTtcbi1cdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4tXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZXBnZGlyX2xpc3QpO1xuIFxuIFx0cHJpdi1cdTAwM2VudW1hX25vZGUgPSBkZXZfdG9fbm9kZShtbHg1X2NvcmVfZG1hX2RldihkZXYpKTtcbiBcdHByaXYtXHUwMDNlZGJnLmRiZ19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGRldi1cdTAwM2VkZXZpY2UpLFxuQEAgLTE4MzAsNiArMTgyOCwxMCBAQCBpbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfZnJhZ19idWZfcG9vbHNfaW5pdDtcbiBcbitcdGVyciA9IG1seDVfZGJfcG9vbHNfaW5pdChkZXYpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfZGJfcG9vbHNfaW5pdDtcbitcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnByaXYtXHUwMDNldHJhcHMpO1xuIFxuIFx0ZXJyID0gbWx4NV9jbWRfaW5pdChkZXYpO1xuQEAgLTE4OTEsMTAgKzE4OTMsMTEgQEAgaW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcbiBlcnJfdGltZW91dF9pbml0OlxuIFx0bWx4NV9jbWRfY2xlYW51cChkZXYpO1xuIGVycl9jbWRfaW5pdDpcbitcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuK2Vycl9kYl9wb29sc19pbml0OlxuIFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG4gZXJyX2ZyYWdfYnVmX3Bvb2xzX2luaXQ6XG4gXHRkZWJ1Z2ZzX3JlbW92ZShkZXYtXHUwMDNlcHJpdi5kYmcuZGJnX3Jvb3QpO1xuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZXBnZGlyX211dGV4KTtcbiBcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VhbGxvY19tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLndjX2hlYWQubG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYmZyZWdzLnJlZ19oZWFkLmxvY2spO1xuQEAgLTE5MTcsOSArMTkyMCw5IEBAIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuIFx0bWx4NV9oZWFsdGhfY2xlYW51cChkZXYpO1xuIFx0bWx4NV90b3V0X2NsZWFudXAoZGV2KTtcbiBcdG1seDVfY21kX2NsZWFudXAoZGV2KTtcbitcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xuIFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGV2LVx1MDAzZXByaXYuZGJnLmRiZ19yb290KTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2VwZ2Rpcl9tdXRleCk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlYWxsb2NfbXV0ZXgpO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy53Y19oZWFkLmxvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmhcbmluZGV4IDA5ZTY2OWY4M2RiYTc2Li5kNjcxM2EyY2U2NzY5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oXG5AQCAtNDM4LDYgKzQzOCw4IEBAIGludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpO1xuIHZvaWQgbWx4NV9tZGV2X3VuaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbiBpbnQgbWx4NV9mcmFnX2J1Zl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuIHZvaWQgbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuK2ludCBtbHg1X2RiX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4rdm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gaW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4gdm9pZCBtbHg1X3VuaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oXG5pbmRleCBiMTg3MWMwODIxZDBiOS4uODNkMGE4M2JiZmJjYWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaFxuQEAgLTU0OCw2ICs1NDgsNyBAQCBzdHJ1Y3QgbWx4NV9kZWJ1Z2ZzX2VudHJpZXMge1xuIFx0c3RydWN0IGRlbnRyeSAqY3FfZGVidWdmcztcbiBcdHN0cnVjdCBkZW50cnkgKmNtZGlmX2RlYnVnZnM7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpmcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmcztcbitcdHN0cnVjdCBkZW50cnkgKmRiX2RtYV9wb29sc19kZWJ1Z2ZzO1xuIFx0c3RydWN0IGRlbnRyeSAqcGFnZXNfZGVidWdmcztcbiBcdHN0cnVjdCBkZW50cnkgKmxhZ19kZWJ1Z2ZzO1xuIH07XG5AQCAtNTY5LDYgKzU3MCw3IEBAIGVudW0gbWx4NV9wYWdlX21ndF9tb2RlIHtcbiB9O1xuIFxuIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHM7XG4rc3RydWN0IG1seDVfZG1hX3Bvb2w7XG4gc3RydWN0IG1seDVfZnRfcG9vbDtcbiBzdHJ1Y3QgbWx4NV9wcml2IHtcbiBcdC8qIElSUSB0YWJsZSB2YWxpZCBvbmx5IGZvciByZWFsIHBjaSBkZXZpY2VzIFBGIG9yIFZGICovXG5AQCAtNTk4LDEwICs2MDAsOCBAQCBzdHJ1Y3QgbWx4NV9wcml2IHtcbiBcdHN0cnVjdCBtdXRleCAgICAgICAgICAgIGFsbG9jX211dGV4O1xuIFx0aW50ICAgICAgICAgICAgICAgICAgICAgbnVtYV9ub2RlO1xuIFxuLVx0c3RydWN0IG11dGV4ICAgICAgICAgICAgcGdkaXJfbXV0ZXg7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBwZ2Rpcl9saXN0O1xuLVxuIFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqKmZyYWdfYnVmX25vZGVfcG9vbHM7XG4rXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqKmRiX25vZGVfcG9vbHM7XG4gXHQvKiBlbmQ6IGFsbG9jIHN0dWZmICovXG4gXG4gXHRzdHJ1Y3QgbWx4NV9hZGV2ICAgICAgICoqYWRldjtcbkBAIC04MDYsNyArODA2LDcgQEAgc3RydWN0IG1seDVfY29yZV9kZXYge1xuIHN0cnVjdCBtbHg1X2RiIHtcbiBcdF9fYmUzMlx0XHRcdCpkYjtcbiBcdHVuaW9uIHtcbi1cdFx0c3RydWN0IG1seDVfZGJfcGdkaXJcdFx0KnBnZGlyO1xuK1x0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlXHQqcG9vbF9wYWdlO1xuIFx0XHRzdHJ1Y3QgbWx4NV9pYl91c2VyX2RiX3BhZ2VcdCp1c2VyX3BhZ2U7XG4gXHR9XHRcdFx0dTtcbiBcdGRtYV9hZGRyX3RcdFx0ZG1hO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzE6MjQuNTAzNjI3Mjg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU0Mzc3MjE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE1lbGxhbm94IENvbm5lY3RYLTUgRHJpdmVyIFBhdGNoIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBkb29yYmVsbCBwYWdlIGFsbG9jYXRpb24gaW4gdGhlIE1lbGxhbm94IENvbm5lY3RYLTUgKG1seDUpIGRyaXZlci4gSXQgc2VlbXMgbGlrZSBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UsIHN3YXBwaW5nIGBtbHg1X2RiX3BnZGlyYCB3aXRoIGBtbHg1X2RtYV9wb29sYCBmb3IgdGhvc2UgYWxsb2NhdGlvbnMgYW5kIGFkZGluZyBpbml0aWFsaXphdGlvbi9jbGVhbnVwIGZ1bmN0aW9ucyBmb3IgZG9vcmJlbGwgcG9vbHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiByZWFjaGVkIGluIHRoZSBlbnZpcm9ubWVudHMgd2UgdXN1YWxseSB0ZXN0LCBlc3BlY2lhbGx5IHZpcnR1YWxpemVkIG9uZXMgbGlrZSBHQ0Ugb3IgUUVNVT9cblxuTWVsbGFub3ggbWx4NSBpcyBhIFBDSSBkZXZpY2UgZHJpdmVyLCByaWdodD8gSW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIHNldHVwLCB5b3UncmUgbm90IGdvaW5nIHRvIHNlZSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSBhcmUgZW11bGF0ZWQgb3IsIGluIHNvbWUgY2FzZXMsIHBhc3NlZCB0aHJvdWdoLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBvdXIgZnV6emluZyBzZXR1cCBldmVuICp0cnkqIHRvIHJlYWNoIHRoaXM/IFN5emthbGxlciBoYXMgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgdmlhIHZoY2kgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBtbHg1IGlzIHR5cGljYWxseSBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLlxuXG5JIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIG1seDUgb3IgYW55IG1lbnRpb25zIG9mIGl0IGJlaW5nIHJlYWNoYWJsZS4gU3l6a2FsbGVyIGNhbiBmdXp6IFBDSSBkZXZpY2VzIGlmIGl0IGxldmVyYWdlcyB0aGUgUENJIGZ1enppbmcgc3Vic3lzdGVtLCBidXQgd2Ugb25seSBmdXp6IHRoaW5ncyB0aGF0IGFyZSAqcmVhY2hhYmxlKiwgc28gdGhpcyBpcyBhIGNydWNpYWwgcG9pbnQuXG5cbldhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zLCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBTbywgaXMgbWx4NSAqZW11bGF0ZWQqIGluIFFFTVU/IE5vLCBkZWZpbml0ZWx5IG5vdCBuYXRpdmVseS4gUUVNVSBlbXVsYXRlcyBvdGhlciBuZXR3b3JrIGRldmljZXMsIGxpa2UgZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQsIGFuZCB2bXhuZXQzLCBidXQgbm90IG1seDUuIEkgcmVjYWxsIFFFTVUgaGF2aW5nIHNvbWUgc3VwcG9ydCBmb3IgUkRNQSBkZXZpY2VzLCBsaWtlIHB2cmRtYSwgYnV0IG5vdCBtbHg1LlxuXG5BbHJpZ2h0LCBzbyBpZiBub3QgUUVNVSBlbXVsYXRpb24sIHdoYXQgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsPyBJcyB0aGVyZSBhbnl0aGluZz8gTm8uIG1seDUgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNZWxsYW5veCBDb25uZWN0WC00LzUvNi83LiBXYWl0LCB0aGVyZSdzIGBuZXRkZXZzaW1gLCBidXQgaXQncyB1bnJlbGF0ZWQgdG8gbWx4NS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGlmIGBtbHg1YCBpcyBldmVuIHByb2JlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gR2VuZXJhbGx5LCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIHdpdGhvdXQgZW11bGF0aW9uIGFyZSBub3QgcmVhY2hhYmxlLiBUaGUgcHJpbWFyeSB0aGluZyB0byBkbyBub3cgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYG1seDVfZGJfYWxsb2Nfbm9kZWAgY2FuIGJlIHJlYWNoZWQuIEkgaGF2ZSB0byBsb29rIGludG8gdGhpcyBtb3JlIGRlZXBseSB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzE6MzQuMDQ3NDAyMjAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTc3MjI4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9kYl9hbGxvY19ub2RlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ3OT1pbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTA3OmludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTI4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mjk6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYz0zNz1pbnQgbWx4NV93cV9jeWNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93cV9wYXJhbSAqcGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzo0NjpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNndxX2N0cmwtXFx1MDAzZWRiLCBwYXJhbS1cXHUwMDNlZGJfbnVtYV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy00Ny1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmM6NDg6XFx0XFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXFxcIm1seDVfZGJfYWxsb2Nfbm9kZSgpIGZhaWxlZCwgJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtNDktXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTk5PWludCBtbHg1X3dxX3FwX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjExMzpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNndxX2N0cmwtXFx1MDAzZWRiLCBwYXJhbS1cXHUwMDNlZGJfbnVtYV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xMTQtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjExNTpcXHRcXHRtbHg1X2NvcmVfd2FybihtZGV2LCBcXFwibWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xMTYtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTE1OT1pbnQgbWx4NV9jcXdxX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVfd3FfcGFyYW0gKnBhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjE2ODpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNndxX2N0cmwtXFx1MDAzZWRiLCBwYXJhbS1cXHUwMDNlZGJfbnVtYV9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xNjktXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jOjE3MDpcXHRcXHRtbHg1X2NvcmVfd2FybihtZGV2LCBcXFwibWx4NV9kYl9hbGxvY19ub2RlKCkgZmFpbGVkLCAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0xNzEtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jPTIxMD1pbnQgbWx4NV93cV9sbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1X3dxX3BhcmFtICpwYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzoyMTk6XFx0ZXJyID0gbWx4NV9kYl9hbGxvY19ub2RlKG1kZXYsIFxcdTAwMjZ3cV9jdHJsLVxcdTAwM2VkYiwgcGFyYW0tXFx1MDAzZWRiX251bWFfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMjIwLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzoyMjE6XFx0XFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXFxcIm1seDVfZGJfYWxsb2Nfbm9kZSgpIGZhaWxlZCwgJWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMjIyLVxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM9MTE3MD1zdGF0aWMgaW50IG1seDV2Zl9jcmVhdGVfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmMtMTE4My1cXHRuY3FlID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5jcWUpO1xcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYzoxMTg0OlxcdGVyciA9IG1seDVfZGJfYWxsb2Nfbm9kZShtZGV2LCBcXHUwMDI2Y3EtXFx1MDAzZWRiLCBtZGV2LVxcdTAwM2Vwcml2Lm51bWFfbm9kZSk7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L2NtZC5jLTExODUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYz0xMjQxPW1seDV2Zl9jcmVhdGVfcmNfcXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmMtMTI1Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvY21kLmM6MTI1NzpcXHRlcnIgPSBtbHg1X2RiX2FsbG9jX25vZGUobWRldiwgXFx1MDAyNnFwLVxcdTAwM2VkYiwgbWRldi1cXHUwMDNlcHJpdi5udW1hX25vZGUpO1xcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9jbWQuYy0xMjU4LVxcdGlmIChlcnIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTA3MD1pbnQgbWx4NV9jb3JlX2FjY2Vzc19yZWcoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqZGF0YV9pbixcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMDczLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMDc0OmludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMDc1LVxcdFxcdCAgICAgICBpbnQgbm9kZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTA3Nz1zdGF0aWMgaW5saW5lIGludCBtbHg1X2RiX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTA3OC17XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjEwNzk6XFx0cmV0dXJuIG1seDVfZGJfYWxsb2Nfbm9kZShkZXYsIGRiLCBkZXYtXFx1MDAzZXByaXYubnVtYV9ub2RlKTtcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTA4MC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjM2LjA2NTEzMTYxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTM4OTkwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgbWx4NSBFbXVsYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYG1seDVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVycyDigJMgdGhlIDQsIDUsIDYsIGFuZCA3IHNlcmllcy4gVGhlc2UgYXJlIGNvbXBsZXggcGllY2VzIG9mIGhhcmR3YXJlLCBhbmQgbXkgY3VycmVudCB0YXNrIGhhcyBtZSB3b25kZXJpbmcgYWJvdXQgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXM6IGRvZXMgYSB2aXJ0dWFsIGhhcmR3YXJlIGNvbnN0cnVjdCBvciBlbXVsYXRpb24gZXhpc3QgZm9yIHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSdzIHNvbWV0aGluZyBsaWtlIGEgYHZoY2lgIGVxdWl2YWxlbnQgb3IgYSBzaW1pbGFyIGFwcHJvYWNoIGF2YWlsYWJsZSBmb3IgdGVzdGluZyBvciBkZXZlbG9wbWVudCBzY2VuYXJpb3Mgd2hlcmUgdGhlIGFjdHVhbCBoYXJkd2FyZSBpc24ndCBhY2Nlc3NpYmxlLiBJJ2xsIG5lZWQgdG8gcmVzZWFyY2ggdG8gZGlzY292ZXIgYW55IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgxMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjM5LjQ3OTAzMjc2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTEyODU4MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY29yZV9kZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNDAxNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0yND1zdHJ1Y3QgbWx4NWN0bF9kZXYge1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMjUtXFx0c3RydWN0IGZ3Y3RsX2RldmljZSBmd2N0bDtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jOjI2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMjctfTtcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MTE2PXN0YXRpYyB2b2lkIG1seDVjdGxfcmVsZWFzZV91aWQoc3RydWN0IG1seDVjdGxfZGV2ICptY2RldiwgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMTE4LVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKGRlc3Ryb3lfdWN0eF9pbildID0ge307XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzoxMTk6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtY2Rldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTEyMC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0zNzA9c3RhdGljIGludCBtbHg1Y3RsX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0zNzQtXFx0c3RydWN0IG1seDVfYWRldiAqbWFkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzozNzU6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtYWRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTM3Ni1cXHRzdHJ1Y3QgbWx4NWN0bF9kZXYgKm1jZGV2IF9fZnJlZShtbHg1Y3RsKSA9IGZ3Y3RsX2FsbG9jX2RldmljZShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jPTg9aW50IG1seDVyX2NtZF9xdWVyeV9zcGVjaWFsX21rZXlzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNDQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NDU6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTQ2LVxcdFxcdFxcdCAgICAgICB2b2lkICpvdXQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo1Nzp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXJuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTU4LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTY2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjY3OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpc24sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNjgte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNzYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6Nzc6aW50IG1seDVfY21kX2Rlc3Ryb3lfcnF0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBycXRuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjg3OmludCBtbHg1X2NtZF9hbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg4LVxcdFxcdFxcdFxcdCAgICB1MTYgdWlkKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTA1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEwNjp2b2lkIG1seDVfY21kX2RlYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEwNy1cXHRcXHRcXHRcXHQgICAgICAgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTExNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMTg6aW50IG1seDVfY21kX2RlYWxsb2NfcGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHBkbiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTkte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTI3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjEyODppbnQgbWx4NV9jbWRfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTI5LVxcdFxcdFxcdHUzMiBxcG4sIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTQyOmludCBtbHg1X2NtZF9kZXRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDMtXFx0XFx0XFx0dTMyIHFwbiwgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE1NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNTY6aW50IG1seDVfY21kX3hyY2RfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp4cmNkbiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTcte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTY5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE3MDppbnQgbWx4NV9jbWRfeHJjZF9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB4cmNkbiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNzEte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM9MTgwPWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MjIzOmludCBtbHg1X2NtZF91YXJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp1YXJuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MjM5OmludCBtbHg1X2NtZF91YXJfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdWFybiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNDAte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjQ4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjI0OTppbnQgbWx4NV9jbWRfcXVlcnlfdnVpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBib29sIGRhdGFfZGlyZWN0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI1MC1cXHRcXHRcXHRjaGFyICpvdXRfdnVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oPTQwPWludCBtbHg1cl9jbWRfcXVlcnlfc3BlY2lhbF9ta2V5cyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDE6aW50IG1seDVfY21kX3F1ZXJ5X2NvbmdfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBjb25nX3BvaW50LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTQyLVxcdFxcdFxcdCAgICAgICB2b2lkICpvdXQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQzOmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ0OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpcm4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ1OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpc24sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ2OmludCBtbHg1X2NtZF9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcnF0biwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDc6aW50IG1seDVfY21kX2FsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp0ZG4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNDgtXFx0XFx0XFx0XFx0ICAgIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ5OnZvaWQgbWx4NV9jbWRfZGVhbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0ZG4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTAtXFx0XFx0XFx0XFx0ICAgICAgIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjUxOmludCBtbHg1X2NtZF9hdHRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01Mi1cXHRcXHRcXHR1MzIgcXBuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1MzppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTQtXFx0XFx0XFx0dTMyIHFwbiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTU6aW50IG1seDVfY21kX3hyY2RfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp4cmNkbiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTY6aW50IG1seDVfY21kX3hyY2RfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgeHJjZG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU3LWludCBtbHg1X2NtZF9tYWRfaWZjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjb25zdCB2b2lkICppbmIsIHZvaWQgKm91dGIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTgtXFx0XFx0ICAgICB1MTYgb3Btb2QsIHU4IHBvcnQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU5OmludCBtbHg1X2NtZF91YXJfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp1YXJuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo2MDppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjYxOmludCBtbHg1X2NtZF9xdWVyeV92dWlkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGJvb2wgZGF0YV9kaXJlY3QsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNjItXFx0XFx0XFx0Y2hhciAqb3V0X3Z1aWQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTI5Mj1zdGF0aWMgaW50IG1seDVfaWJfZ2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTI5OS1cXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM6MzAwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMDEtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9MzI5PXN0YXRpYyBpbnQgbWx4NV9pYl9zZXRfY2NfcGFyYW1zKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtMzM1LVxcdGVudW0gbWx4NV9pYl9jb25nX25vZGVfdHlwZSBub2RlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzozMzY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNy1cXHR1MzIgYXR0cl9tYXNrID0gMDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYz00MzQ9dm9pZCBtbHg1X2liX2luaXRfY29uZ19kZWJ1Z2ZzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0pXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtNDM2LVxcdHN0cnVjdCBtbHg1X2liX2RiZ19jY19wYXJhbXMgKmRiZ19jY19wYXJhbXM7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjQzNzpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtNDM4LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0yODg9bWx4NV9pYl9hbGxvY19od19wb3J0X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydF9udW0pXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTI5NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjI5NjpzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVycyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTI5Ny1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG1seDVfaWJfY291bnRlcnMgKmNudHMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jPTM1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVyc192cG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzU3LVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKHF1ZXJ5X3FfY291bnRlcl9pbildID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzozNTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zNTktXFx0X19iZTMyIHZhbDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mzg3PXN0YXRpYyBpbnQgZG9fZ2V0X2h3X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTItXFx0Y29uc3Qgc3RydWN0IG1seDVfaWJfY291bnRlcnMgKmNudHMgPSBnZXRfY291bnRlcnMoZGV2LCBwb3J0X251bSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzozOTM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTQtXFx0aW50IHJldCwgbnVtX2NvdW50ZXJzO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02MTE9aW50IG1seDVfaWJfcG9sbF9jcShzdHJ1Y3QgaWJfY3EgKmliY3EsIGludCBudW1fZW50cmllcywgc3RydWN0IGliX3djICp3YylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihjcS1cXHUwMDNlaWJjcS5kZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjE2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE3LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jPTY0OD1pbnQgbWx4NV9pYl9hcm1fY3Eoc3RydWN0IGliX2NxICppYmNxLCBlbnVtIGliX2NxX25vdGlmeV9mbGFncyBmbGFncylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTY0OS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYzo2NTA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSB0b19tZGV2KGliY3EtXFx1MDAzZWRldmljZSktXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYy02NTEtXFx0c3RydWN0IG1seDVfaWJfY3EgKmNxID0gdG9fbWNxKGliY3EpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTEwNz1zdHJ1Y3QgZGV2eF91bWVtIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTA4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2XFx0XFx0Km1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTEwOS1cXHRzdHJ1Y3QgaWJfdW1lbVxcdFxcdFxcdCp1bWVtO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTIwMDU9c3RhdGljIGJvb2wgaXNfdmFsaWRfZXZlbnRzX2xlZ2FjeShpbnQgbnVtX2V2ZW50cywgdTE2ICpldmVudF90eXBlX251bV9saXN0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjMtI2RlZmluZSBNQVhfU1VQUF9FVkVOVF9OVU0gMjU1XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjIwMjQ6c3RhdGljIGJvb2wgaXNfdmFsaWRfZXZlbnRzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjUtXFx0XFx0XFx0ICAgIGludCBudW1fZXZlbnRzLCB1MTYgKmV2ZW50X3R5cGVfbnVtX2xpc3QsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjQ1MT1zdGF0aWMgaW50IGRldnhfdW1lbV9jbGVhbnVwKHN0cnVjdCBpYl91b2JqZWN0ICp1b2JqZWN0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjI0Njg6c3RhdGljIGJvb2wgaXNfdW5hZmZpbGlhdGVkX2V2ZW50KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjktXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGV2ZW50X3R5cGUpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyPXN0YXRpYyBpbnQgbWx4NV9jbWRfYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCAqYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTQte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTU6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xNi1cXHR1NjQgbnVtX21lbWljX2h3X3BhZ2VzID0gTUxYNV9DQVBfREVWX01FTShkZXYsIG1lbWljX2Jhcl9zaXplKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz04Nz12b2lkIG1seDVfY21kX2RlYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCBhZGRyLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy04OS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo5MDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXFx1MDAzZWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTkxLVxcdHU2NCBod19zdGFydF9hZGRyID0gTUxYNV9DQVA2NF9ERVZfTUVNKGRldiwgbWVtaWNfYmFyX3N0YXJ0X2FkZHIpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMTQ9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTE3LVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMTktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyOD1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTMyLVxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzoxMzM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xMzQtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MzUyPXN0YXRpYyBzdHJ1Y3QgaWJfZG0gKmhhbmRsZV9hbGxvY19kbV9zd19pY20oc3RydWN0IGliX3Vjb250ZXh0ICpjdHgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1Ni17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzozNTc6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IHRvX21kZXYoY3R4LVxcdTAwM2VkZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMzU4LVxcdGVudW0gbWx4NV9zd19pY21fdHlwZSBpY21fdHlwZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9NDcwPXN0YXRpYyBpbnQgbWx4NV9kbV9pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9pYl91Y29udGV4dCAqY3R4LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy00NzMtXFx0ZW51bSBtbHg1X3N3X2ljbV90eXBlIHR5cGUgPSBnZXRfaWNtX3R5cGUoZG0tXFx1MDAzZWJhc2UudHlwZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo0NzQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IHRvX21kZXYoZG0tXFx1MDAzZWJhc2UuaWJkbS5kZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtNDc1LVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9MTM9c3RhdGljIGludCBtbHg1X2liX2FsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjE2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXFx1MDAzZWRldmljZSktXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTE3LVxcdHN0cnVjdCBtbHg1X2liX2RtYWggKmRtYWggPSB0b19tZG1haChpYmRtYWgpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00Mi1cXHRzdHJ1Y3QgbWx4NV9pYl9kbWFoICpkbWFoID0gdG9fbWRtYWgoaWJkbWFoKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSB0b19tZGV2KGliZG1haC1cXHUwMDNlZGV2aWNlKS1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDQtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE0OT1pbnQgcGFyc2VfZmxvd19mbG93X2FjdGlvbihzdHJ1Y3QgbWx4NV9pYl9mbG93X2FjdGlvbiAqbWFjdGlvbixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg5OnN0YXRpYyBpbnQgcGFyc2VfZmxvd19hdHRyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkwLVxcdFxcdFxcdCAgIHN0cnVjdCBtbHg1X2Zsb3dfc3BlYyAqc3BlYyxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9NTQ3PXN0YXRpYyBib29sIGZsb3dfaXNfbXVsdGljYXN0X29ubHkoY29uc3Qgc3RydWN0IGliX2Zsb3dfYXR0ciAqaWJfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNTc2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NTc3OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V0aGVydHlwZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTU3OC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGliX2Zsb3dfYXR0ciAqZmxvd19hdHRyLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzo2MjY6c3RhdGljIGJvb2wgaXNfdmFsaWRfYXR0cihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTYyNy1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9MTg3Mj1zdGF0aWMgaW50IG1seDVfaWJfZmlsbF90cmFuc3BvcnRfbnNfaW5mbyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3NS1cXHRcXHRcXHRcXHRcXHQgIHUxNiAqdnBvcnQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODc2OlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfY29yZV9kZXYgKipmdF9tZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3Ny1cXHRcXHRcXHRcXHRcXHQgIHUzMiBpYl9wb3J0LCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg3OC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODc5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICplc3dfbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4ODAtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE5MDg9X2dldF9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MTYgdXNlcl9wcmlvcml0eSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkxMS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxOTEyOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpmdF9tZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkxMy1cXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlX2F0dHIgZnRfYXR0ciA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE9c3RhdGljIGludFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyOm1seDVfaWJfc2V0X3Zwb3J0X3JlcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEzOlxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpyZXBfZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTE0LVxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo0MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDQ6c3RhdGljIHZvaWQgbWx4NV9pYl9udW1fcG9ydHNfdXBkYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqbnVtX3BvcnRzKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQ1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo0NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy01OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo2MDpzdGF0aWMgaW50IG1seDVfaWJfc2V0X293bmVyX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqY3VyX293bmVyLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjYxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpuZXdfb3duZXIpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNjIte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtODgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6ODk6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWxlYXNlX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTkwLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo5MTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTItXFx0aW50IGksIHJldDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTk5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEwMDpzdGF0aWMgaW50IG1seDVfaWJfdGFrZV90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMDEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEwMjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAzLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjExODptbHg1X2liX3Zwb3J0X3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTE5LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjAtXFx0dTMyIG51bV9wb3J0cyA9IG1seDVfZXN3aXRjaF9nZXRfdG90YWxfdnBvcnRzKGRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTIxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpsYWdfbWFzdGVyID0gZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyMi1cXHRjb25zdCBzdHJ1Y3QgbWx4NV9pYl9wcm9maWxlICpwcm9maWxlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMzpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTI0LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXY7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0yMjE9bWx4NV9pYl92cG9ydF9yZXBfdW5sb2FkKHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjIyLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyMjM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBtbHg1X2Vzd2l0Y2hfZ2V0X2NvcmVfZGV2KHJlcC1cXHUwMDNlZXN3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yMjQtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSBtbHg1X2liX3JlcF90b19kZXYocmVwKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI2MS1cXHRcXHRpZiAobWx4NV9sYWdfaXNfc2hhcmVkX2ZkYihtZGV2KSkge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI2MjpcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI2My1cXHRcXHRcXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0yNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwX29wcyByZXBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4MjpzdGF0aWMgdm9pZCBtbHg1X2liX3JlZ2lzdGVyX3BlZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yODMte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4NDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9tZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4NS1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0zMTk9c3RhdGljIGludCBtbHg1cl9yZXBfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjItXFx0c3RydWN0IG1seDVfYWRldiAqaWRldiA9IGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgbWx4NV9hZGV2LCBhZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzozMjM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMyNC1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0zMzE9c3RhdGljIHZvaWQgbWx4NXJfcmVwX3JlbW92ZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMzMy1cXHRzdHJ1Y3QgbWx4NV9hZGV2ICppZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjMzNDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGlkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzM1LVxcdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz01MD1pbnQgbWx4NV9pYl9nZXRfdmZfY29uZmlnKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01My1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6NTQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTU1LVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICpyZXA7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9OTI9aW50IG1seDVfaWJfc2V0X3ZmX2xpbmtfc3RhdGUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjk2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy05Ny1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTIwPWludCBtbHg1X2liX2dldF92Zl9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xMjMtXFx0aW50IG91dF9zeiA9IE1MWDVfU1RfU1pfQllURVMocXVlcnlfdnBvcnRfY291bnRlcl9vdXQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxMjQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTEyNS1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNTE9c3RhdGljIGludCBzZXRfdmZfbm9kZV9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNTQtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjE1NTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU2LVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNzU9c3RhdGljIGludCBzZXRfdmZfcG9ydF9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNzgtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjE3OTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTgwLVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0yMTA9aW50IG1seDVfaWJfZ2V0X3ZmX2d1aWQoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTIxNC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MjE1OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0yMTYtXFx0c3RydWN0IG1seDVfdmZfY29udGV4dCAqdmZzX2N0eCA9IG1kZXYtXFx1MDAzZXByaXYuc3Jpb3YudmZzX2N0eDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jPTE1MD1zdGF0aWMgdm9pZCBwbWFfY250X2V4dF9hc3NpZ25fcHBjbnQoc3RydWN0IGliX3BtYV9wb3J0Y291bnRlcnNfZXh0ICpjbnRfZXh0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMTgwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjE4MTpzdGF0aWMgaW50IHF1ZXJ5X2liX3BwY250KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU4IHBvcnRfbnVtLCB1OCBwbGFuZV9udW0sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMTgyLVxcdFxcdFxcdCAgdm9pZCAqb3V0LCBzaXplX3Qgc3osIGJvb2wgZXh0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9MjA5PXN0YXRpYyBpbnQgcHJvY2Vzc19wbWFfY21kKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjIxMjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTMtXFx0Ym9vbCBuYXRpdmVfcG9ydCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz01OTc9aW50IG1seDVfcXVlcnlfbWFkX2lmY19wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTYwMC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jOjYwMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDItXFx0c3RydWN0IGliX3NtcCAqaW5fbWFkO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTIwNT1zdGF0aWMgaW50IG1seDVfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMTEtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmliX25kZXYgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoyMTI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIxMy1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzEyOnN0cnVjdCBtbHg1X2NvcmVfZGV2ICptbHg1X2liX2dldF9uYXRpdmVfcG9ydF9tZGV2KHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICB1MzIgaWJfcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzE3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgaWJfcG9ydF9udW0pO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozMTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTktXFx0c3RydWN0IG1seDVfaWJfbXVsdGlwb3J0X2luZm8gKm1waTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MzY9c3RhdGljIGludCBtbHg1X3F1ZXJ5X3BvcnRfcm9jZShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01NDAtXFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHB0eXNfcmVnKV0gPSB7MH07XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjU0MTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQyLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCAqdXBwZXI7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NzcyPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9zeXN0ZW1faW1hZ2VfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy03NzUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6Nzc2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy03NzctXFx0dTY0IHRtcDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz04MDQ9c3RhdGljIGludCBtbHg1X3F1ZXJ5X21heF9wa2V5cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04MDctXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6ODA4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04MDktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9ODc1PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9ub2RlX2Rlc2Moc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNoYXIgKm5vZGVfZGVzYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04ODgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjg4OTpzdGF0aWMgdm9pZCBmaWxsX2Vzd19tZ3JfcmVnX2MwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04OTAtXFx0XFx0XFx0XFx0c3RydWN0IG1seDVfaWJfcXVlcnlfZGV2aWNlX3Jlc3AgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9OTI5PXN0YXRpYyB1MzIgbWx4NV9pYl9jYWxjX21heF9xcF93cihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTMwLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTMxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05MzItXFx0dTMyIG1heF93cWVfYmJfdW5pdHMgPSAxIFxcdTAwM2NcXHUwMDNjIE1MWDVfQ0FQX0dFTihtZGV2LCBsb2dfbWF4X3FwX3N6KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz05NDU9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05NTAtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6OTUxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy05NTItXFx0aW50IGVyciA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTQ2Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfaGNhX3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTQ2NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTQ2Ny1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE1NDI9aW50IG1seDVfaWJfcXVlcnlfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTU2Ni1cXHRcXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNTY3OlxcdFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNTY4LVxcdFxcdGJvb2wgcHV0X21kZXYgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE2MDM9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV9wb3J0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2Mjc6c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV92cG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTYyOC1cXHRcXHRcXHRcXHRcXHQgICAgICAgdTggb3BfbW9kLCB1MTYgdnBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY1MD1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX2JvbmQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY1Mi17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2NTM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTQtXFx0dTMyIGJvbmRfc3BlZWQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTY3OT1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9yZXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjgyLVxcdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXA7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE2ODM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2ODQtXFx0dTE2IG9wX21vZDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNzI2PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9naWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTcyOS1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNzMwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNzMxLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE3NDU9c3RhdGljIGludCBtbHg1X3F1ZXJ5X2hjYV9uaWNfcGtleShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTc0OC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNzQ5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNzUwLVxcdGJvb2wgcHV0X21kZXYgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE4MTY9c3RhdGljIGludCBzZXRfcG9ydF9jYXBzX2F0b21pYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLCB1MzIgbWFzayxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODE5LVxcdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0IGN0eCA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxODIwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODIxLVxcdHUzMiBtZGV2X3BvcnRfbnVtO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE5NzM9c3RhdGljIHZvaWQgZGVhbGxvY2F0ZV91YXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE5ODYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE5ODc6c3RhdGljIGludCBtbHg1X2liX2VuYWJsZV9sYl9tcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWFzdGVyLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxOTg4OlxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTk4OS1cXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0ZSAqbGJfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjAwOC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjAwOTpzdGF0aWMgdm9pZCBtbHg1X2liX2Rpc2FibGVfbGJfbXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1hc3RlcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjAxMDpcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjAxMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2liX2xiX3N0YXRlICpsYl9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zMjUxPXN0YXRpYyB2b2lkIG1seDVfaWJfc3RhZ2Vfc3lzX2Vycm9yX25vdGlmaWVyX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzI1NjpzdGF0aWMgaW50IG1seDVfaWJfZ2V0X3BsYW5lX251bShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggKm51bV9wbGFuZSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1Ny17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzQ3Nz1tbHg1X2liX2NyZWF0ZV9kYXRhX2RpcmVjdF9yZXNvdXJjZXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ3OS1cXHRpbnQgaW5sZW4gPSBNTFg1X1NUX1NaX0JZVEVTKGNyZWF0ZV9ta2V5X2luKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzQ4MDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ4MS1cXHRib29sIHJvX3N1cHAgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNjU3PXN0YXRpYyBpbnQgbGFnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzY2MC1cXHRcXHRcXHRcXHRcXHQgICAgICAgbGFnX2V2ZW50cyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM2NjE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM2NjItXFx0c3RydWN0IGliX2RldmljZSAqaWJkZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VpYl9kZXY7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzcxOD1zdGF0aWMgaW50IG1seDVfZXRoX2xhZ19pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjAtXFx0c3RydWN0IG1seDVfZmxvd190YWJsZV9hdHRyIGZ0X2F0dHIgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzcyMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzcyMi1cXHRzdHJ1Y3QgbWx4NV9mbG93X25hbWVzcGFjZSAqbnM7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9Mzc1MT1zdGF0aWMgdm9pZCBtbHg1X2V0aF9sYWdfY2xlYW51cChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzc1Mi17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjQxLjM5MTg5NjE3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzk1NjY0ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIHRoZSBgbWx4NWAgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgbWx4NWAgZHJpdmVyIGlzIGZ1bmRhbWVudGFsbHkgYSBQQ0kgZHJpdmVyLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgc3l6a2FsbGVyIG9jY2FzaW9uYWxseSBhdHRlbXB0cyB0byBmdXp6IGBtbHg1YCwgYnV0IGl0J3MgdHlwaWNhbGx5IG9ubHkgYWNoaWV2YWJsZSB1bmRlciBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gVGhlIHByb21wdCBlbXBoYXNpemVzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgYG1seDVgIGV2ZW4gKnByZXNlbnQqIGluIHRob3NlIGVudmlyb25tZW50cz9cblxuR0NFIG9mZmVycyBzb21lIHZpcnR1YWxpemVkIGhhcmR3YXJlLCBidXQgSSdtIGNlcnRhaW4gaXQgZG9lc24ndCBwcmVzZW50IE1lbGxhbm94IENvbm5lY3RYIGhhcmR3YXJlLiBJdCdzIHZpcnRpby1uZXQgb3IgZ1ZOSUMsIHRoYXQncyB3aGF0J3MgYXZhaWxhYmxlLiBJJ20gcmVjYWxsaW5nIGlmIHN5emthbGxlciBoYXMgYSBtb3VudC1pbWFnZS1saWtlIHN5c2NhbGwgYnV0IEkgZG91YnQgdGhhdCdzIHJlbGV2YW50IGhlcmUuXG5cblN5emthbGxlciBkb2VzIGZ1enogc29tZSBSRE1BIGRyaXZlcnMsIGxldmVyYWdpbmcgdGhlIGByZG1hYCBzdWJzeXN0ZW0sIGJ1dCBgbWx4NWAgaXMgYSB2ZXJ5IHNwZWNpZmljICpoYXJkd2FyZSogZHJpdmVyLiBMZXQncyBub3QgZm9yZ2V0IHRoZXJlJ3MgYSBgbWx4NV9jb3JlYCBkcml2ZXI7IHRoZSBxdWVzdGlvbiBpcywgZG9lcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGV4aXN0IGZvciBpdD9cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgd2hldGhlciBgbmV0ZGV2c2ltYCwgYHZkcGFgLCBvciBzaW1pbGFyIHRlY2hub2xvZ2llcyBpbnRlcmZhY2Ugd2l0aCBgbWx4NWAuICpBaGEhKiBgZHJpdmVycy92ZHBhL21seDUvYCBleGlzdHMsIGJ1dCBteSBndXQgZmVlbGluZywgYW5kIGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBgbWx4NV92ZHBhYCBuZWNlc3NpdGF0ZXMgYSByZWFsIGBtbHg1YCBQQ0kgZGV2aWNlLiBTbyB0aGF0J3MgcHJvYmFibHkgYSBkZWFkIGVuZC5cblxuV2hhdCBhYm91dCBvdGhlciBhbHRlcm5hdGl2ZXM/IExvb2tpbmcgYXQgYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9gLCBJIGtub3cgdGhhdCBgcnhlYCBhbmQgYHNpd2AgYXJlIHNvZnR3YXJlIFJETUEgaW1wbGVtZW50YXRpb25zLCBidXQgYG1seDVgIGlzIGV4cGxpY2l0bHkgaGFyZHdhcmUtYmFzZWQuXG5cblRoZSB1bHRpbWF0ZSBxdWVzdGlvbiBpczogSXMgdGhlcmUgKmFueSogd2F5IHRvIHJlYWNoIGBtbHg1YCBjb2RlIHBhdGhzIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlPyBMZXQgbWUgY2hlY2sgZm9yIGFueSBwb3RlbnRpYWwgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIG1seDUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgYXZlbnVlIHRvIGV4cGxvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODk0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjUxLjc4NzU2MzkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTMxMTkxMzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el8uKm1seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMxOjU0LjIwMDY5MTQyNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNzY2MTAzMDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIGBtbHg1YCB3aXRoIFN5emthbGxlcjogQSBUaG91Z2h0IFByb2Nlc3MqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSBwcm9tcHQgY2xlYXJseSBzdGF0ZXMgSSBjYW4ndCBkaXJlY3RseSBzZWFyY2ggZm9yIGBzeXprYWxsZXJgIHBzZXVkby1zeXNjYWxscyBsaWtlIGBzeXpfYCwgc28gSSBuZWVkIHRvIHVzZSBgY29kZXNlYXJjaC1kaXItaW5kZXhgIG9yIGp1c3QgcmVseSBvbiBteSB1bmRlcnN0YW5kaW5nIHRoYXQgYG1seDVgIGlzIGEgaGFyZHdhcmUgZHJpdmVyLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBtbHg1YCBpcyBldmVuICpyZWFjaGFibGUqIGJ5IFN5emthbGxlci4gSG1tLCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgdmlydHVhbCBgbWx4NWAgZGV2aWNlIGJ5IGRlZmF1bHQuIEJ1dCB3YWl0LCB3aGF0IGlmIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgd2l0aCBgQ09ORklHX01MWDVfQ09SRT15YCBhbmQgd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcz9cblxuQWgsIHJpZ2h0ISBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZWAgd2hpY2ggc3VnZ2VzdHMgaXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBgdmhjaWAgb3IgYHZmaW9gLiBXYWl0LCBubywgdGhlIFBDSSBmdXp6ZXIgZW11bGF0ZXMgUENJIGRldmljZXMuIFRoYXQncyBpdCEgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgYW5kIGl0IGludGVyY2VwdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy9QSU8gYWNjZXNzZXMuXG5cbkxldCdzIHNlZSwgZG9lcyB0aGF0IHF1YWxpZnkgYXMgXCJzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiPyBZZXMsIHRoZSBwcm9tcHQgZXhwbGljaXRseSBtZW50aW9ucyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYC4gU28gU3l6a2FsbGVyJ3MgUENJIGZ1enplciBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS5cblxuT2theSwgdGhpcyBtZWFucyB0aGF0ICphbnkqIFBDSSBkcml2ZXIgc2hvdWxkIGJlIHJlYWNoYWJsZSBpZiB0aGUgUENJIGZ1enplciBpcyBlbmFibGVkLCBiZWNhdXNlIHRoZSBwcm9tcHQgc2F5cyBjb2RlIHBhdGhzIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBzaG91bGRuJ3QgYmUgdG91Y2hlZC5cblxuTm93LCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIFN5emthbGxlciBpcyBhY3R1YWxseSBmdXp6aW5nIFBDSSBkcml2ZXJzIHdpdGggdGhlIGBkdW1teWAgUENJIGRldmljZSBvciBgdmZpb2Agb3IgYHBjaV9lbmRwb2ludGAuIEFuZCBsZXQncyBub3QgZm9yZ2V0IHRvIGNoZWNrIHRoZSBmaWxlIGBzeXMvbGludXgvZGV2X3BjaS50eHRgIGFzIGl0IGRlc2NyaWJlcyBQQ0kgZGV2aWNlcy5cblxuT2theSwgaXMgZnV6emluZyBgbWx4NWAgd29ydGggaXQ/IFRoZSBwYXRjaCBtb2RpZmllcyBgbWx4NV9kYl9hbGxvY19ub2RlYCBhbmQgYG1seDVfZGJfZnJlZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jYCwgdGhhdCdzIGNvcmUgbG9naWMgZm9yIE1lbGxhbm94IENvbm5lY3RYLTUsIHNvIGl0J3MgcHJvYmFibHkgaW50ZXJlc3RpbmcgdG8gZnV6ei5cblxuU2luY2UgUENJIGZ1enppbmcgaXMgc3VwcG9ydGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGlzIGBtbHg1X2RiX2FsbG9jX25vZGVgIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZT8gSXQncyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiAoYG1seDVfbWRldl9pbml0YCksIHF1ZXVlIHBhaXIgY3JlYXRpb24gKGBtbHg1X3dxX3FwX2NyZWF0ZWAsIGBtbHg1X2Nxd3FfY3JlYXRlYCwgZXRjLikuXG5cblF1ZXVlIHBhaXJzIGNhbiBiZSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlIHZpYSBSRE1BIChlLmcuLCBgaWJ2X2NyZWF0ZV9xcGApLCB3aGljaCBjYWxscyBgbWx4NV9pYl9jcmVhdGVfcXBgLiBTbywgaWYgSSB0cmFjZSBgbWx4NV9pYl9jcmVhdGVfcXBgIC1cdTAwM2UgYGNyZWF0ZV9xcF9jb21tb25gIC1cdTAwM2UgYG1seDVfZGJfYWxsb2Nfbm9kZWAsIEkgc2hvdWxkIGhhdmUgYSBjbGVhciBwYXRoIHRvIGZvbGxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3MTIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6MDQuOTY2Nzk2Nzk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkwNjg5Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfaWJfY3JlYXRlX3FwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NDcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfZGVmc1tdID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ0NzgtXFx0VUFQSV9ERUZfQ0hBSU4obWx4NV9pYl9jcmVhdGVfY3FfZGVmcyksXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ0Nzk6XFx0VUFQSV9ERUZfQ0hBSU4obWx4NV9pYl9jcmVhdGVfcXBfZGVmcyksXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ0ODAtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDU4MD1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1OTUtXFx0LmNyZWF0ZV91c2VyX2NxID0gbWx4NV9pYl9jcmVhdGVfdXNlcl9jcSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU5NjpcXHQuY3JlYXRlX3FwID0gbWx4NV9pYl9jcmVhdGVfcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1OTctXFx0LmNyZWF0ZV9zcnEgPSBtbHg1X2liX2NyZWF0ZV9zcnEsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTI5MD12b2lkIG1seDVfaWJfZGlzYWJsZV9sYihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgYm9vbCB0ZCwgYm9vbCBxcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjEyOTE6aW50IG1seDVfaWJfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqcXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTI5Mi1cXHRcXHQgICAgICBzdHJ1Y3QgaWJfdWRhdGEgKnVkYXRhKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaD0xNTE4PWV4dGVybiBjb25zdCBzdHJ1Y3QgdWFwaV9kZWZpbml0aW9uIG1seDVfaWJfY3JlYXRlX2NxX2RlZnNbXTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTUxOTpleHRlcm4gY29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9xcF9kZWZzW107XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oLTE1MjAtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg9MTU1MT1zdGF0aWMgaW5saW5lIGludCBnZXRfcXBfdXNlcl9pbmRleChzdHJ1Y3QgbWx4NV9pYl91Y29udGV4dCAqdWNvbnRleHQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjE1NTI6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTU1My1cXHRcXHRcXHRcXHQgICAgaW50IGlubGVuLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz00NDM9c3RhdGljIGludCBzZXRfcnFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6NDQ0OlxcdFxcdCAgICAgICBpbnQgaGFzX3JxLCBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTQ0NS17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTY0Mz1zdGF0aWMgaW50IHNldF91c2VyX2J1Zl9zaXplKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNjQ0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzo2NDU6XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTY0Ni1cXHRcXHRcXHQgICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9OTUyPXN0YXRpYyBpbnQgX2NyZWF0ZV91c2VyX3FwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgaWJfcGQgKnBkLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTUtXFx0XFx0XFx0ICAgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqYXR0ciwgdTMyICoqaW4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzo5NTY6XFx0XFx0XFx0ICAgc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgKnJlc3AsIGludCAqaW5sZW4sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTctXFx0XFx0XFx0ICAgc3RydWN0IG1seDVfaWJfcXBfYmFzZSAqYmFzZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjk1ODpcXHRcXHRcXHQgICBzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy05NTkte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0xNTg3PXN0YXRpYyBpbnQgY3JlYXRlX3Jhd19wYWNrZXRfcXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2liX3FwICpxcCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTU5MC1cXHRcXHRcXHRcXHRzdHJ1Y3QgdXZlcmJzX2F0dHJfYnVuZGxlICphdHRycyxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjE1OTE6XFx0XFx0XFx0XFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgKnJlc3AsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0xNTkyLVxcdFxcdFxcdFxcdHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MTcyNz1zdHJ1Y3QgbWx4NV9jcmVhdGVfcXBfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTczNi1cXHR1MzIgdWlkeDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjE3Mzc6XFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AgcmVzcDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTE3MzgtfTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MTc0MD1zdGF0aWMgaW50IGNyZWF0ZV9yc3NfcmF3X3FwX3RpcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMTc0NC1cXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXFx1MDAzZWF0dHI7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoxNzQ1OlxcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MgKnVjbWQgPSBwYXJhbXMtXFx1MDAzZXVjbWQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0xNzQ2LVxcdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXFx1MDAzZXVkYXRhO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yMDk3PXN0YXRpYyBpbnQgY3JlYXRlX2RjaShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IGliX3BkICpwZCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjEwMS1cXHRzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0X2F0dHIgPSBwYXJhbXMtXFx1MDAzZWF0dHI7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzoyMTAyOlxcdHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCAqdWNtZCA9IHBhcmFtcy1cXHUwMDNldWNtZDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIxMDMtXFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKGNyZWF0ZV9xcF9vdXQpXSA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0yMjU4PXN0YXRpYyBpbnQgY3JlYXRlX3VzZXJfcXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBpYl9wZCAqcGQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTIyNjItXFx0c3RydWN0IGliX3FwX2luaXRfYXR0ciAqaW5pdF9hdHRyID0gcGFyYW1zLVxcdTAwM2VhdHRyO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjI2MzpcXHRzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQgPSBwYXJhbXMtXFx1MDAzZXVjbWQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0yMjY0LVxcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhjcmVhdGVfcXBfb3V0KV0gPSB7fTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9Mjc2Mz1zdGF0aWMgaW50IGNyZWF0ZV9kY3Qoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBpYl9wZCAqcGQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI3NjctXFx0c3RydWN0IGliX3FwX2luaXRfYXR0ciAqYXR0ciA9IHBhcmFtcy1cXHUwMDNlYXR0cjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjI3Njg6XFx0c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwICp1Y21kID0gcGFyYW1zLVxcdTAwM2V1Y21kO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjc2OS1cXHR1MzIgdWlkeCA9IHBhcmFtcy1cXHUwMDNldWlkeDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MjkyOT1zdGF0aWMgaW50IHByb2Nlc3NfdmVuZG9yX2ZsYWdzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI5MzYtXFx0aWYgKGF0dHItXFx1MDAzZXJ3cV9pbmRfdGJsKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzNzpcXHRcXHRmbGFncyA9ICgoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3JzcyAqKXVjbWQpLVxcdTAwM2VmbGFncztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTI5MzgtXFx0ZWxzZVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MjkzOTpcXHRcXHRmbGFncyA9ICgoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwICopdWNtZCktXFx1MDAzZWZsYWdzO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMjk0MC1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM9MzA5MD1zdGF0aWMgaW50IHByb2Nlc3NfdWRhdGFfc2l6ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzA5Mi17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMDkzOlxcdHNpemVfdCB1Y21kID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk0LVxcdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXFx1MDAzZXVkYXRhO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMDk3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzA5ODpcXHRwYXJhbXMtXFx1MDAzZW91dGxlbiA9IG1pbihvdXRsZW4sIHNpemVvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXBfcmVzcCkpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzA5OS1cXHRwYXJhbXMtXFx1MDAzZXVjbWRfc2l6ZSA9IHVjbWQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMDItXFx0XFx0c2l6ZV90IG1pbl9pbmxlbiA9XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMTAzOlxcdFxcdFxcdG9mZnNldG9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcCwgZWNlX29wdGlvbnMpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzEwNC1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzExMy1cXHQvKiBSU1MgUkFXIFFQICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMTE0OlxcdGlmIChpbmxlbiBcXHUwMDNjIG9mZnNldG9mZW5kKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MsIGZsYWdzKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTE2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzExNzpcXHRpZiAob3V0bGVuIFxcdTAwM2Mgb2Zmc2V0b2ZlbmQoc3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3AsIGJmcmVnX2luZGV4KSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMxMTgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMTE5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzEyMDpcXHR1Y21kID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzEyMS1cXHRwYXJhbXMtXFx1MDAzZXVjbWRfc2l6ZSA9IHVjbWQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTMyMjI9c3RhdGljIGludCBnZXRfcXBfdWlkeChzdHJ1Y3QgbWx4NV9pYl9xcCAqcXAsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMyMjQte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzIyNTpcXHRzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAgKnVjbWQgPSBwYXJhbXMtXFx1MDAzZXVjbWQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjI2LVxcdHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEgPSBwYXJhbXMtXFx1MDAzZXVkYXRhO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYz0zMjU0PXN0YXRpYyBpbnQgY2hlY2tfdWNtZF9kYXRhKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjY1LVxcdFxcdCAqL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmM6MzI2NjpcXHRcXHRsYXN0ID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2liX2NyZWF0ZV9xcF9yc3MpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtMzI2Ny1cXHRlbHNlXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMjY4OlxcdFxcdGxhc3QgPSBvZmZzZXRvZihzdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfcXAsIHJlc2VydmVkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMyNjktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jLTMyODctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYzozMjg4OmludCBtbHg1X2liX2NyZWF0ZV9xcChzdHJ1Y3QgaWJfcXAgKmlicXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmF0dHIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy0zMjg5LVxcdFxcdCAgICAgIHN0cnVjdCBpYl91ZGF0YSAqdWRhdGEpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jPTU5OTI9QUREX1VWRVJCU19BVFRSSUJVVEVTX1NJTVBMRShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3FwLmMtNTk5OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jOjU5OTk6Y29uc3Qgc3RydWN0IHVhcGlfZGVmaW5pdGlvbiBtbHg1X2liX2NyZWF0ZV9xcF9kZWZzW10gPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYy02MDAwLVxcdFVBUElfREVGX0NIQUlOX09CSl9UUkVFKFVWRVJCU19PQkpFQ1RfUVAsIFxcdTAwMjZtbHg1X2liX3FwX2NyZWF0ZSksXFxuLS1cXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oPTMyMj1zdHJ1Y3QgbWx4NV9pYl9jcmVhdGVfc3JxX3Jlc3Age1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zMjYtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozMjc6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX2RjaV9zdHJlYW1zIHtcXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMyOC1cXHRfX3U4IGxvZ19udW1fY29uY3VyZW50O1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zMzEtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozMzI6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwIHtcXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTMzMy1cXHRfX2FsaWduZWRfdTY0IGJ1Zl9hZGRyO1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNDUtXFx0X191MzIgIGVjZV9vcHRpb25zO1xcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6MzQ2OlxcdHN0cnVjdCAgbWx4NV9pYl9jcmVhdGVfcXBfZGNpX3N0cmVhbXMgZGNpX3N0cmVhbXM7XFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNDctXFx0X191MTYgcmVzZXJ2ZWQ7XFxuLS1cXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oPTM2Mz1lbnVtIG1seDVfcnhfaGFzaF9maWVsZHMge1xcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNzYtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozNzc6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3JzcyB7XFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zNzgtXFx0X19hbGlnbmVkX3U2NCByeF9oYXNoX2ZpZWxkc19tYXNrOyAvKiBlbnVtIG1seDVfcnhfaGFzaF9maWVsZHMgKi9cXG4tLVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzg2LVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmg6Mzg3OmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfcmVzcF9tYXNrIHtcXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1LWFiaS5oLTM4OC1cXHRNTFg1X0lCX0NSRUFURV9RUF9SRVNQX01BU0tfVElSTiA9IDFVTCBcXHUwMDNjXFx1MDAzYyAwLFxcbi0tXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaC0zOTQtXFxuaW5jbHVkZS91YXBpL3JkbWEvbWx4NS1hYmkuaDozOTU6c3RydWN0IG1seDVfaWJfY3JlYXRlX3FwX3Jlc3Age1xcbmluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgtMzk2LVxcdF9fdTMyXFx0YmZyZWdfaW5kZXg7XFxuLS1cXG5pbmNsdWRlL3VhcGkvcmRtYS9tbHg1X3VzZXJfaW9jdGxfY21kcy5oPTI3NT1lbnVtIG1seDVfaWJfY3JlYXRlX2NxX2F0dHJzIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmgtMjc5LVxcbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmg6MjgwOmVudW0gbWx4NV9pYl9jcmVhdGVfcXBfYXR0cnMge1xcbmluY2x1ZGUvdWFwaS9yZG1hL21seDVfdXNlcl9pb2N0bF9jbWRzLmgtMjgxLVxcdE1MWDVfSUJfQVRUUl9DUkVBVEVfUVBfREJSX0JVRl9VTUVNID0gVVZFUkJTX0lEX0RSSVZFUl9OU19XSVRIX1VIVyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6MDYuNzU3NDk2NDU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NzMyOTA5OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgYG1seDVfaWJfY3JlYXRlX3FwYCBpbiBhIEZ1enppbmcgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgbWx4NV9pYl9jcmVhdGVfcXBgIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBSRE1BIHV2ZXJicywgdGhhdCdzIGNsZWFyLiBCdXQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IGEgcmVhbCBNZWxsYW5veCAobWx4NSkgUENJIGRldmljZT8gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZS4gU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIHdoaWNoIGlzIHByb21pc2luZywgYnV0IGl0IGRvZXNuJ3QgZW11bGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBtbHg1IGhhcmR3YXJlLiBJdCBqdXN0IGJsYXN0cyB0aGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy9QSU8gYWNjZXNzZXMgd2l0aCByYW5kb20gZGF0YSwgd2hpY2ggaXMgdXNlZnVsLCBidXQgcGVyaGFwcyBub3QgdGFyZ2V0ZWQgZW5vdWdoLlxuXG5JZiB0aGUgUENJIGZ1enplciBoaXRzIHRoZSByaWdodCBzdHVmZiwgaXQgc2hvdWxkIHRyaWdnZXIgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIGFuZCB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdCB0byBpbml0aWFsaXplLiBEdXJpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgYG1seDVfbWRldl9pbml0YCBnZXRzIGNhbGxlZCwgd2hpY2gsIGluIHR1cm4sIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLiBUaGlzIGNvdWxkIHRoZW4gbGVhZCB0byBhdHRlbXB0cyB0byBhbGxvY2F0ZSBkYiBub2Rlcy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyB0aGlzIGEgd29ydGh3aGlsZSBwYXRoIHRvIGZ1eno/XG5cblRoZSBwcm9tcHQgc3RhdGVzOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFNvLCBpZiB0aGUgUENJIGZ1enplciAqY2FuKiByZWFjaCBpdCwgdGhlbiBpdCAqaXMqIHJlYWNoYWJsZSwgYW5kIHRoZXJlZm9yZSwgaW50ZXJlc3RpbmchXG5cblRoZSBrZXkgcXVlc3Rpb24gbm93IGlzIHRoaXM6IERvZXMgdGhlIFBDSSBmdXp6ZXIgYWN0dWFsbHkgcmVhY2ggYG1seDVfbWRldl9pbml0YD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2AgdG8gc2VlIHdoZXJlIGBtbHg1X21kZXZfaW5pdGAgaXMgY2FsbGVkIGFuZCBob3cgdGhlIFBDSSBmdXp6ZXIgbWF5IG9yIG1heSBub3QgcmVhY2ggaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTUyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjEzLjQzMDc4OTk3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMjc0OTI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X21kZXZfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE3OTY9c3RhdGljIHZvaWQgbWx4NV9ub3RpZmllcnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgwNDppbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTgwNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE5MzU9c3RhdGljIGludCBwcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5NjA6XFx0ZXJyID0gbWx4NV9tZGV2X2luaXQoZGV2LCBwcm9mX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xOTYxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9NDMyPW1seDVfc2ZfY29yZWRldl90b19hZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6NDM3OmludCBtbHg1X21kZXZfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgcHJvZmlsZV9pZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC00Mzgtdm9pZCBtbHg1X21kZXZfdW5pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYz0yNT1zdGF0aWMgaW50IG1seDVfc2ZfZGV2X3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LCBjb25zdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmM6NDk6XFx0ZXJyID0gbWx4NV9tZGV2X2luaXQobWRldiwgTUxYNV9TRl9QUk9GKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTUwLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jOjUxOlxcdFxcdG1seDVfY29yZV93YXJuKG1kZXYsIFxcXCJtbHg1X21kZXZfaW5pdCBvbiBlcnI9JWRcXFxcblxcXCIsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy01Mi1cXHRcXHRnb3RvIG1kZXZfZXJyO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjoxNi40NjM1NDU5MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMzODAyMDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gTWVsbGFub3ggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgYHByb2JlX29uZWAsIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCBpcyBiZWluZyB0cmlnZ2VyZWQgYnkgU3l6a2FsbGVyJ3MgUENJIGZ1enplciwgd2hpY2ggaXMgdXNpbmcgYSBkZXZpY2Ugd2l0aCBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4gVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgYHByb2JlX29uZWAgaXMgY2FsbGluZyBgbWx4NV9tZGV2X2luaXRgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBhbmQgZnJvbSB0aGVyZSwgYXR0ZW1wdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uLlxuXG5UaGUgcnViIGlzIHRoZSBmdXp6ZXIgcHJvdmlkZXMgcmFuZG9tIE1NSU8gcmVzcG9uc2VzLCB3aGljaCBpcyBhIHByb2JsZW0gYmVjYXVzZSB0aGlzIGRyaXZlciwgbGlrZSBtb3N0LCByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUgcmVzcG9uc2VzIGR1cmluZyBpbml0aWFsaXphdGlvbiwgcGFydGljdWxhcmx5IGZvciBmaXJtd2FyZSBjb21tYW5kcyBhbmQgc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzLiBUaGlzIG1lYW5zIGl0J3MgbGlrZWx5IHRvIGZhaWwgcHJldHR5IGVhcmx5LCBidXQgKndoZXJlKiBleGFjdGx5P1xuXG5JJ20gd29uZGVyaW5nIGlmIGl0IHdpbGwgbWFrZSBpdCBhcyBmYXIgYXMgYG1seDVfZGJfYWxsb2Nfbm9kZWAuIExldCdzIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZC4gUmlnaHQsIGl0J3MgY2FsbGVkIGZyb20gYG1seDVfd3FfY3ljX2NyZWF0ZWAsIGBtbHg1X3dxX3FwX2NyZWF0ZWAsIGBtbHg1X2Nxd3FfY3JlYXRlYCwgYG1seDVfd3FfbGxfY3JlYXRlYCwgYG1seDV2Zl9jcmVhdGVfY3FgLCBhbmQgYG1seDV2Zl9jcmVhdGVfcmNfcXBgLiBTbywgdGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIHF1ZXVlIGNyZWF0aW9uLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBhcmUgYW55IHF1ZXVlcyBiZWluZyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gdGhhdCBoYXBwZW5zIHdpdGhpbiBgcHJvYmVfb25lYD8gTGV0IG1lIHRyYWNlIHRoaXMgb3V0OiBgcHJvYmVfb25lYCBjYWxscyBgbWx4NV9pbml0X29uZWAsIGFuZCB0aGVuIGBtbHg1X2xvYWRfb25lYCwgYnV0IGRvZXMgaXQgbGVhZCB0byBhbnkgcXVldWUgY3JlYXRpb24gb3IgYG1seDVfZGJfYWxsb2Nfbm9kZWA/IFBlcmhhcHMgYG1seDVfYWxsb2NfYmZyZWdgIGlzIHRoZSBrZXk/IEkgbmVlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoIGNsb3NlbHkgd2l0aGluIHRoYXQgZHJpdmVyLCBjaGVja2luZyB0aGUgY2FsbHMgZnJvbSBgcHJvYmVfb25lYCBhbGwgdGhlIHdheSBkb3duLiBJIHRoaW5rIHRoaXMgbmVlZHMgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjoyMi44MDE1NjkyNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTYzNTgxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV93cV9jeWNfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz0zMjY9c3RhdGljIGludCBtbHg1ZV9wdHBfYWxsb2NfdHhxc3Eoc3RydWN0IG1seDVlX3B0cCAqYywgaW50IHR4cV9peCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy0zNTctXFx0cGFyYW0tXFx1MDAzZXdxLmRiX251bWFfbm9kZSA9IG5vZGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjM1ODpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtMzU5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTg5NT1zdGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtOTc5LVxcdGRlZmF1bHQ6IC8qIE1MWDVfV1FfVFlQRV9DWUNMSUMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjk4MDpcXHRcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnJxX3BhcmFtLVxcdTAwM2V3cSwgcnFjX3dxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtOTgxLVxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cnEtXFx1MDAzZXdxZS53cSwgXFx1MDAyNnJxLVxcdTAwM2V3cV9jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTUzOD1zdGF0aWMgaW50IG1seDVlX2FsbG9jX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNTY3LVxcdHBhcmFtLVxcdTAwM2V3cS5kYl9udW1hX25vZGUgPSBjcHVfdG9fbm9kZShjLVxcdTAwM2VjcHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTU2ODpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE1NjktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTYyNz1zdGF0aWMgaW50IG1seDVlX2FsbG9jX2ljb3NxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNjQxLVxcdHBhcmFtLVxcdTAwM2V3cS5kYl9udW1hX25vZGUgPSBjcHVfdG9fbm9kZShjLVxcdTAwM2VjcHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTY0MjpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE2NDMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTcwMj1zdGF0aWMgaW50IG1seDVlX2FsbG9jX3R4cXNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xNzM1LVxcdHBhcmFtLVxcdTAwM2V3cS5kYl9udW1hX25vZGUgPSBjcHVfdG9fbm9kZShjLVxcdTAwM2VjcHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTczNjpcXHRlcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRldiwgXFx1MDAyNnBhcmFtLVxcdTAwM2V3cSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE3MzctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MzYzOT1zdGF0aWMgaW50IG1seDVlX2FsbG9jX2Ryb3BfcnEoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTM2NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzozNjQ4OlxcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcXHUwMDI2cnFfcGFyYW0tXFx1MDAzZXdxLCBycWNfd3EsIFxcdTAwMjZycS1cXHUwMDNld3FlLndxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMzY0OS1cXHRcXHRcXHRcXHQgXFx1MDAyNnJxLVxcdTAwM2V3cV9jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvYXNvLmM9MTU4PXN0YXRpYyBpbnQgbWx4NV9hc29fYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGludCBudW1hX25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2Fzby5jLTE2OS1cXHRwYXJhbS5idWZfbnVtYV9ub2RlID0gbnVtYV9ub2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvYXNvLmM6MTcwOlxcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcXHUwMDI2cGFyYW0sIHNxY193cSwgd3EsIFxcdTAwMjZzcS1cXHUwMDNld3FfY3RybCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9hc28uYy0xNzEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3Mvc2VuZC5jPTY4MT1zdGF0aWMgaW50IGh3c19zZW5kX3JpbmdfYWxsb2Nfc3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYy02OTctXFx0cGFyYW0uYnVmX251bWFfbm9kZSA9IG51bWFfbm9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYzo2OTg6XFx0ZXJyID0gbWx4NV93cV9jeWNfY3JlYXRlKG1kZXYsIFxcdTAwMjZwYXJhbSwgc3FjX3dxLCB3cSwgXFx1MDAyNnNxLVxcdTAwM2V3cV9jdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL3NlbmQuYy02OTktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93Yy5jPTIyMT1zdGF0aWMgaW50IG1seDVfd2NfY3JlYXRlX3NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93Y19zcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd2MuYy0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3djLmM6MjM2OlxcdGVyciA9IG1seDVfd3FfY3ljX2NyZWF0ZShtZGV2LCBcXHUwMDI2cGFyYW0sIHdxLCBcXHUwMDI2c3EtXFx1MDAzZXdxLCBcXHUwMDI2c3EtXFx1MDAzZXdxX2N0cmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93Yy5jLTIzNy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYy0zNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuYzozNzppbnQgbWx4NV93cV9jeWNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbWx4NV93cV9wYXJhbSAqcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3dxLmMtMzgtXFx0XFx0ICAgICAgIHZvaWQgKndxYywgc3RydWN0IG1seDVfd3FfY3ljICp3cSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oPTcwPXN0cnVjdCBtbHg1X3dxX2xsIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oLTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS93cS5oOjc5OmludCBtbHg1X3dxX2N5Y19jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1X3dxX3BhcmFtICpwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvd3EuaC04MC1cXHRcXHQgICAgICAgdm9pZCAqd3FjLCBzdHJ1Y3QgbWx4NV93cV9jeWMgKndxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjoyNC44NTc5MzE3MDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc4OTcxMTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgU3l6a2FsbGVyIG9uIHRoZSBtbHg1ZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgbWx4NWVfYWxsb2NfcnFgIGlzIGRlZmluaXRlbHkgY2FsbGVkIHdpdGhpbiBgbWx4NWVfb3BlbmAgd2hlbiB0aGUgbmV0d29yayBkZXZpY2Ugb3BlbnMuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGNhbiBTeXprYWxsZXIgdHJpZ2dlciB0aGUgb3BlbmluZyBvZiB0aGlzIG5ldGRldj8gVGhlIGFuc3dlciBpcyB5ZXMsIGlmIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGEgbmV0d29yayBkZXZpY2UuIEkga25vdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhIG5ldGRldjsgaXQncyBwYXJ0IG9mIHRoZSBgbWx4NWVfcHJvYmVgIGZ1bmN0aW9uIGFzIGFuIGF1eGlsaWFyeSBwcm9iZS4gVGhpcyBtZWFucyB0aGF0IGlmIGBtbHg1ZV9wcm9iZWAgaXMgY2FsbGVkLCBpdCB3aWxsIHJlZ2lzdGVyIHRoZSBuZXRkZXYuIEJ1dCwgYSBzdWNjZXNzZnVsIG5ldGRldiByZWdpc3RyYXRpb24gcmVxdWlyZXMgc3VjY2Vzc2Z1bCBkZXZpY2UgaW5pdGlhbGl6YXRpb24uXG5cbk5vdywgd2lsbCBgbWx4NV9tZGV2X2luaXRgIHdvcmsgd2l0aCB0aGUga2luZCBvZiByYW5kb20gUENJIE1NSU8gcmVzcG9uc2VzIHRoYXQgYSBmdXp6ZXIgbWlnaHQgZ2VuZXJhdGU/IFByb2JhYmx5IG5vdC4gSGFyZHdhcmUgZHJpdmVycyBhcmUgdHlwaWNhbGx5IHZlcnkgcGlja3kgYWJvdXQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZmlybXdhcmUgYW5kIGNvbW1hbmQgaW50ZXJmYWNlcywgYW5kIHJhbmRvbSBkYXRhIGlzIGEgcmVjaXBlIGZvciBmYWlsdXJlLiBNZWxsYW5veCBkcml2ZXJzLCBzcGVjaWZpY2FsbHksIHVzZSBhIGNvbW1hbmQgaW50ZXJmYWNlIChDTURJRikgd2hpY2ggaW52b2x2ZXMgd3JpdGluZyB0byBhIGRvb3JiZWxsIGFuZCB0aGVuIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCBvciBwb2xsaW5nIGEgc3RhdHVzIHJlZ2lzdGVyLiBSYW5kb20gZGF0YSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgY2F1c2UgYSB0aW1lb3V0IG9yIGZhaWx1cmUgaW4gdGhlIGNvbW1hbmQsIHdoaWNoIG1lYW5zIGBtbHg1X21kZXZfaW5pdGAgd2lsbCBsaWtlbHkgZmFpbC5cblxuSG93ZXZlciwgU3l6a2FsbGVyIGlzIGZvY3VzZWQgb24gZnV6emluZyBwcm9iZSBwYXRocyBhbmQgcmVhY2hpbmcgYXMgbWFueSBmdW5jdGlvbnMgYXMgcG9zc2libGUuIEV2ZW4gaWYgYG1seDVfbWRldl9pbml0YCBmYWlscyBlYXJseSwgaXTigJlzIHN0aWxsIGxpa2VseSB0byBleGVjdXRlIHNvbWUgb2YgaXRzIGNvZGUuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQhIEl0ICp3aWxsKiBleGVjdXRlIGBtbHg1X21kZXZfaW5pdGAgYW5kIHRoZXJlZm9yZSBgbWx4NV9kYl9wb29sc19pbml0YC4gSXQgY291bGQgYWxzbyByZWFjaCBgbWx4NV9kYl9hbGxvY19ub2RlYCBpZiBpdCBnZXRzIGZhciBlbm91Z2ggdG8gc3RhcnQgcXVldWUgY3JlYXRpb24gYmVmb3JlIGZhaWxpbmcuXG5cblRoaW5raW5nIG1vcmUgZGVlcGx5LCBgbWx4NV9jbWRfaW5pdGAgaXMgY2FsbGVkIGluIGBtbHg1X21kZXZfaW5pdGAgKmFmdGVyKiBgbWx4NV9kYl9wb29sc19pbml0YC4gSWYgYG1seDVfY21kX2luaXRgIGZhaWxzLCBpdCBqdW1wcyB0byBgZXJyX2NtZF9pbml0YCB3aGljaCB0aGVuIGNhbGxzIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLiBTbywgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBldmVuIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBpbml0aWFsaXplIHN1Y2Nlc3NmdWxseS4gTm93LCBhcmUgYG1seDVfZGJfYWxsb2Nfbm9kZWAgYW5kIGBtbHg1X2RiX2ZyZWVgIGFsc28gcmVhY2hhYmxlPyBUbyB1bmRlcnN0YW5kIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBtbHg1X2NtZF9pbml0YCBhY3R1YWxseSBhbGxvY2F0ZXMgYW55IHF1ZXVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4NDYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6MzMuNjQ3NjQ2MDMyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM2NzU1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY21kX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTE3NjA9c3RhdGljIGludCBVVkVSQlNfSEFORExFUihNTFg1X0lCX01FVEhPRF9ERVZYX0FTWU5DX0NNRF9GRF9BTExPQykoXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3MS1cXHRkZXZ4X2luaXRfZXZlbnRfcXVldWUoXFx1MDAyNmV2X2ZpbGUtXFx1MDAzZWV2X3F1ZXVlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTc3MjpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LVxcdTAwM2VtZGV2LCBcXHUwMDI2ZXZfZmlsZS1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU2MzpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTcyOkVYUE9SVF9TWU1CT0wobWx4NV9jbWRfaW5pdF9hc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI0Mjg9c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDMzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYz0xNDM9c3RhdGljIHN0cnVjdCBtbHg1ZV9idWxrX2FzeW5jX2N0eCAqbWx4NWVfYnVsa19hc3luY19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmM6MTU0OlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZidWxrX2FzeW5jLVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM9MTQyPWludCBtbHg1X3F1ZXJ5X2hjYV9jYXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM6MzEyOmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9mdy5jLTMxMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTExODE9c3RhdGljIGludCBtbHg1X2Z1bmN0aW9uX29wZW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEyMDM6XFx0ZXJyID0gbWx4NV9jbWRfaW5pdF9oY2EoZGV2LCBzd19vd25lcl9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMjA0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTgwND1pbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgzNzpcXHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0yMjI9aW50IG1seDVfcXVlcnlfbW9kdWxlX251bShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgKm1vZHVsZV9udW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyNC12b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjI3PXZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyOC1cXHRcXHRcXHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjk6aW50IG1seDVfY21kX2luaXRfaGNhKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqc3dfb3duZXJfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0yMzAtaW50IG1seDVfY21kX3RlYXJkb3duX2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zODMwPXN0YXRpYyBpbnQgbWx4NV92ZHBhX2Rldl9hZGQoc3RydWN0IHZkcGFfbWdtdF9kZXYgKnZfbWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zOTAyLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozOTAzOlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZtdmRldi1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzkwNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9NjI3PW1seDV2Zl9wY2lfc2F2ZV9kZXZpY2VfZGF0YShzdHJ1Y3QgbWx4NXZmX3BjaV9jb3JlX2RldmljZSAqbXZkZXYsIGJvb2wgdHJhY2spXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1Ny1cXHRjb21wbGV0ZShcXHUwMDI2bWlnZi1cXHUwMDNlc2F2ZV9jb21wKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjY1ODpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtdmRldi1cXHUwMDNlbWRldiwgXFx1MDAyNm1pZ2YtXFx1MDAzZWFzeW5jX2N0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy02NTktXFx0SU5JVF9XT1JLKFxcdTAwMjZtaWdmLVxcdTAwM2Vhc3luY19kYXRhLndvcmssIG1seDV2Zl9taWdfZmlsZV9jbGVhbnVwX2NiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD05ODM9c3RydWN0IG1seDVfYXN5bmNfd29yayB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtOTkyLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDo5OTM6dm9pZCBtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjM1LjQ4NDQwNzA3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA1Nzg1NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFF1ZXVlIEFsbG9jYXRpb24gaW4gbWx4NSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBgbWx4NWAgZHJpdmVyIGluaXRpYWxpemVzIGl0cyBxdWV1ZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB1c2VzIG9mIGBtbHg1X2RiX2FsbG9jX25vZGVgLiBJdCBzZWVtcyBsaWtlIGBtbHg1X2NtZF9pbml0YCBpdHNlbGYgZG9lc24ndCBkaXJlY3RseSBjYWxsIGBtbHg1X2RiX2FsbG9jX25vZGVgIHRvIGFsbG9jYXRlIGFueSBxdWV1ZXMuIFRoYXQncyBhIGxpdHRsZSB1bmV4cGVjdGVkLlxuXG5Ib2xkIG9uLCBJIG5lZWQgdG8gYmFja3RyYWNrIGFuZCBjb25zaWRlciB0aGUgYmlnZ2VyIHBpY3R1cmUuIFdoYXQgYWJvdXQgYG1seDVfY21kX2luaXRfaGNhYD8gVGhhdCdzIGFub3RoZXIgcG90ZW50aWFsIGNhbmRpZGF0ZSBmb3IgcXVldWUgYWxsb2NhdGlvbi4gQWgsIHJpZ2h0LCBJIHJlbWVtYmVyIG5vdywgYG1seDVfY21kX2luaXRfaGNhYCBpcyBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHRoZSBgbWx4NV9mdW5jdGlvbl9vcGVuYCByb3V0aW5lLCBub3QgZGlyZWN0bHkgYnkgYG1seDVfY21kX2luaXRgLiBTbywgaXMgYG1seDVfY21kX2luaXRgIGFjdHVhbGx5IGRvaW5nIGFueXRoaW5nIHVzZWZ1bCB0aGVuPyBJIG5lZWQgdG8gZ28gZGVlcGVyLlxuXG5MZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGBtbHg1X2NtZF9pbml0YCBpdHNlbGYuIFRpbWUgdG8gY29uc3VsdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jYCBhbmQgY29uZmlybSBleGFjdGx5IHdoYXQgdGhpcyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGRvaW5nLiBUaGlzIHdpbGwgY2xhcmlmeSBleGFjdGx5IHdoYXQgcm9sZXMgZWFjaCBmdW5jdGlvbiBpcyBwbGF5aW5nIGluIHRoZSBlbnRpcmUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwMTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6NDAuNTkwMTk1Mjg5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY4Mzc2MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY21kX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTE3NjA9c3RhdGljIGludCBVVkVSQlNfSEFORExFUihNTFg1X0lCX01FVEhPRF9ERVZYX0FTWU5DX0NNRF9GRF9BTExPQykoXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3MS1cXHRkZXZ4X2luaXRfZXZlbnRfcXVldWUoXFx1MDAyNmV2X2ZpbGUtXFx1MDAzZWV2X3F1ZXVlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MTc3MjpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LVxcdTAwM2VtZGV2LCBcXHUwMDI2ZXZfZmlsZS1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMTc3My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU2MzpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNzEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTcyOkVYUE9SVF9TWU1CT0wobWx4NV9jbWRfaW5pdF9hc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI0Mjg9c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDMzOmludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL2t0bHNfdHguYz0xNDM9c3RhdGljIHN0cnVjdCBtbHg1ZV9idWxrX2FzeW5jX2N0eCAqbWx4NWVfYnVsa19hc3luY19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmM6MTU0OlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZidWxrX2FzeW5jLVxcdTAwM2Vhc3luY19jdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9rdGxzX3R4LmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM9MTQyPWludCBtbHg1X3F1ZXJ5X2hjYV9jYXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZncuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Z3LmM6MzEyOmludCBtbHg1X2NtZF9pbml0X2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnN3X293bmVyX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9mdy5jLTMxMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTExODE9c3RhdGljIGludCBtbHg1X2Z1bmN0aW9uX29wZW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEyMDM6XFx0ZXJyID0gbWx4NV9jbWRfaW5pdF9oY2EoZGV2LCBzd19vd25lcl9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMjA0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTgwND1pbnQgbWx4NV9tZGV2X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHByb2ZpbGVfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTgzNzpcXHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xODM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0yMjI9aW50IG1seDVfcXVlcnlfbW9kdWxlX251bShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgKm1vZHVsZV9udW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjM6aW50IG1seDVfY21kX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyNC12b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9MjI3PXZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTIyOC1cXHRcXHRcXHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDoyMjk6aW50IG1seDVfY21kX2luaXRfaGNhKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqc3dfb3duZXJfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0yMzAtaW50IG1seDVfY21kX3RlYXJkb3duX2hjYShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zODMwPXN0YXRpYyBpbnQgbWx4NV92ZHBhX2Rldl9hZGQoc3RydWN0IHZkcGFfbWdtdF9kZXYgKnZfbWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zOTAyLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozOTAzOlxcdG1seDVfY21kX2luaXRfYXN5bmNfY3R4KG1kZXYsIFxcdTAwMjZtdmRldi1cXHUwMDNlYXN5bmNfY3R4KTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzkwNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9NjI3PW1seDV2Zl9wY2lfc2F2ZV9kZXZpY2VfZGF0YShzdHJ1Y3QgbWx4NXZmX3BjaV9jb3JlX2RldmljZSAqbXZkZXYsIGJvb2wgdHJhY2spXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTY1Ny1cXHRjb21wbGV0ZShcXHUwMDI2bWlnZi1cXHUwMDNlc2F2ZV9jb21wKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjY1ODpcXHRtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChtdmRldi1cXHUwMDNlbWRldiwgXFx1MDAyNm1pZ2YtXFx1MDAzZWFzeW5jX2N0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy02NTktXFx0SU5JVF9XT1JLKFxcdTAwMjZtaWdmLVxcdTAwM2Vhc3luY19kYXRhLndvcmssIG1seDV2Zl9taWdfZmlsZV9jbGVhbnVwX2NiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD05ODM9c3RydWN0IG1seDVfYXN5bmNfd29yayB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtOTkyLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDo5OTM6dm9pZCBtbHg1X2NtZF9pbml0X2FzeW5jX2N0eChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC05OTQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjQyLjU1ODU3NjUyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODEyNDc1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIG1seDVfY21kX2luaXQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG1seDVfY21kX2luaXRgIGZ1bmN0aW9uIGluIHRoZSBNZWxsYW5veCBkcml2ZXIncyBjb21tYW5kIHF1ZXVlIGNvZGUuIEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgaXQgd2Fzbid0IGhhbmRsaW5nIHF1ZXVlIGFsbG9jYXRpb24sIHdoaWNoIGlzIGEgYml0IG9kZCBjb25zaWRlcmluZyBpdHMgbmFtZSBhbmQgcHVycG9zZS4gQnV0IGhvbGQgb24sIEkganVtcGVkIHRoZSBndW4hIExldCBtZSByZS1ldmFsdWF0ZTsgSSdtIG1pc3Npbmcgc29tZXRoaW5nLiBUaGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIGNsb3NlciBsb29rIGlzIHdhcnJhbnRlZC4gTm93LCBsZXQncyBnbyBiYWNrIGFuZCBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuY2AgYW5kIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaW4gYG1seDVfY21kX2luaXRgLiBUaW1lIHRvIGRpc3NlY3QgdGhpcyBjb2RlIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTYxMCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjQ2LjQzOTgyNzE2NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MzMsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDMzOlxcdGludCBtbHg1X2NtZF9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuMjQzNDpcXHR7XFxuMjQzNTpcXHRcXHRzdHJ1Y3QgbWx4NV9jbWQgKmNtZCA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZDtcXG4yNDM2OlxcdFxcbjI0Mzc6XFx0XFx0Y21kLVxcdTAwM2VjaGVja3N1bV9kaXNhYmxlZCA9IDE7XFxuMjQzODpcXHRcXG4yNDM5OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjbWQtXFx1MDAzZWFsbG9jX2xvY2spO1xcbjI0NDA6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNtZC1cXHUwMDNldG9rZW5fbG9jayk7XFxuMjQ0MTpcXHRcXG4yNDQyOlxcdFxcdHNldF93cW5hbWUoZGV2KTtcXG4yNDQzOlxcdFxcdGNtZC1cXHUwMDNld3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShjbWQtXFx1MDAzZXdxX25hbWUpO1xcbjI0NDQ6XFx0XFx0aWYgKCFjbWQtXFx1MDAzZXdxKSB7XFxuMjQ0NTpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldiwgXFxcImZhaWxlZCB0byBjcmVhdGUgY29tbWFuZCB3b3JrcXVldWVcXFxcblxcXCIpO1xcbjI0NDY6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjQ0NzpcXHRcXHR9XFxuMjQ0ODpcXHRcXG4yNDQ5OlxcdFxcdG1seDVfY21kaWZfZGVidWdmc19pbml0KGRldik7XFxuMjQ1MDpcXHRcXG4yNDUxOlxcdFxcdHJldHVybiAwO1xcbjI0NTI6XFx0fVxcbjI0NTM6XFx0XFxuMjQ1NDpcXHR2b2lkIG1seDVfY21kX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4yNDU1OlxcdHtcXG4yNDU2OlxcdFxcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXFx1MDAyNmRldi1cXHUwMDNlY21kO1xcbjI0NTc6XFx0XFxuMjQ1ODpcXHRcXHRtbHg1X2NtZGlmX2RlYnVnZnNfY2xlYW51cChkZXYpO1xcbjI0NTk6XFx0XFx0ZGVzdHJveV93b3JrcXVldWUoY21kLVxcdTAwM2V3cSk7XFxuMjQ2MDpcXHR9XFxuMjQ2MTpcXHRcXG4yNDYyOlxcdGludCBtbHg1X2NtZF9lbmFibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4yNDYzOlxcdHtcXG4yNDY0OlxcdFxcdGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrKTtcXG4yNDY1OlxcdFxcdGludCBhbGlnbiA9IHJvdW5kdXBfcG93X29mX3R3byhzaXplKTtcXG4yNDY2OlxcdFxcdHN0cnVjdCBtbHg1X2NtZCAqY21kID0gXFx1MDAyNmRldi1cXHUwMDNlY21kO1xcbjI0Njc6XFx0XFx0dTMyIGNtZF9oLCBjbWRfbDtcXG4yNDY4OlxcdFxcdGludCBlcnI7XFxuMjQ2OTpcXHRcXG4yNDcwOlxcdFxcdG1lbXNldChcXHUwMDI2Y21kLVxcdTAwM2V2YXJzLCAwLCBzaXplb2YoY21kLVxcdTAwM2V2YXJzKSk7XFxuMjQ3MTpcXHRcXHRjbWQtXFx1MDAzZXZhcnMuY21kaWZfcmV2ID0gY21kaWZfcmV2KGRldik7XFxuMjQ3MjpcXHRcXHRpZiAoY21kLVxcdTAwM2V2YXJzLmNtZGlmX3JldiAhPSBDTURfSUZfUkVWKSB7XFxuMjQ3MzpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldixcXG4yNDc0OlxcdFxcdFxcdFxcdCAgICAgIFxcXCJEcml2ZXIgY21kaWYgcmV2KCVkKSBkaWZmZXJzIGZyb20gZmlybXdhcmUncyglZClcXFxcblxcXCIsXFxuMjQ3NTpcXHRcXHRcXHRcXHQgICAgICBDTURfSUZfUkVWLCBjbWQtXFx1MDAzZXZhcnMuY21kaWZfcmV2KTtcXG4yNDc2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI0Nzc6XFx0XFx0fVxcbjI0Nzg6XFx0XFxuMjQ3OTpcXHRcXHRjbWRfbCA9IGlvcmVhZDMyYmUoXFx1MDAyNmRldi1cXHUwMDNlaXNlZy1cXHUwMDNlY21kcV9hZGRyX2xfc3opIFxcdTAwMjYgMHhmZjtcXG4yNDgwOlxcdFxcdGNtZC1cXHUwMDNldmFycy5sb2dfc3ogPSBjbWRfbCBcXHUwMDNlXFx1MDAzZSA0IFxcdTAwMjYgMHhmO1xcbjI0ODE6XFx0XFx0Y21kLVxcdTAwM2V2YXJzLmxvZ19zdHJpZGUgPSBjbWRfbCBcXHUwMDI2IDB4ZjtcXG4yNDgyOlxcdFxcdGlmICgxIFxcdTAwM2NcXHUwMDNjIGNtZC1cXHUwMDNldmFycy5sb2dfc3ogXFx1MDAzZSBNTFg1X01BWF9DT01NQU5EUykge1xcbjI0ODM6XFx0XFx0XFx0bWx4NV9jb3JlX2VycihkZXYsIFxcXCJmaXJtd2FyZSByZXBvcnRzIHRvbyBtYW55IG91dHN0YW5kaW5nIGNvbW1hbmRzICVkXFxcXG5cXFwiLFxcbjI0ODQ6XFx0XFx0XFx0XFx0ICAgICAgMSBcXHUwMDNjXFx1MDAzYyBjbWQtXFx1MDAzZXZhcnMubG9nX3N6KTtcXG4yNDg1OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI0ODY6XFx0XFx0fVxcbjI0ODc6XFx0XFxuMjQ4ODpcXHRcXHRpZiAoY21kLVxcdTAwM2V2YXJzLmxvZ19zeiArIGNtZC1cXHUwMDNldmFycy5sb2dfc3RyaWRlIFxcdTAwM2UgTUxYNV9BREFQVEVSX1BBR0VfU0hJRlQpIHtcXG4yNDg5OlxcdFxcdFxcdG1seDVfY29yZV9lcnIoZGV2LCBcXFwiY29tbWFuZCBxdWV1ZSBzaXplIG92ZXJmbG93XFxcXG5cXFwiKTtcXG4yNDkwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI0OTE6XFx0XFx0fVxcbjI0OTI6XFx0XFxuMjQ5MzpcXHRcXHRjbWQtXFx1MDAzZXN0YXRlID0gTUxYNV9DTURJRl9TVEFURV9ET1dOO1xcbjI0OTQ6XFx0XFx0Y21kLVxcdTAwM2V2YXJzLm1heF9yZWdfY21kcyA9ICgxIFxcdTAwM2NcXHUwMDNjIGNtZC1cXHUwMDNldmFycy5sb2dfc3opIC0gMTtcXG4yNDk1OlxcdFxcdGNtZC1cXHUwMDNldmFycy5iaXRtYXNrID0gTUxYNV9DTURfTUFTSztcXG4yNDk2OlxcdFxcbjI0OTc6XFx0XFx0c2VtYV9pbml0KFxcdTAwMjZjbWQtXFx1MDAzZXZhcnMuc2VtLCBjbWQtXFx1MDAzZXZhcnMubWF4X3JlZ19jbWRzKTtcXG4yNDk4OlxcdFxcdHNlbWFfaW5pdChcXHUwMDI2Y21kLVxcdTAwM2V2YXJzLnBhZ2VzX3NlbSwgMSk7XFxuMjQ5OTpcXHRcXHRzZW1hX2luaXQoXFx1MDAyNmNtZC1cXHUwMDNldmFycy50aHJvdHRsZV9zZW0sIERJVl9ST1VORF9VUChjbWQtXFx1MDAzZXZhcnMubWF4X3JlZ19jbWRzLCAyKSk7XFxuMjUwMDpcXHRcXHRzZW1hX2luaXQoXFx1MDAyNmNtZC1cXHUwMDNldmFycy51bnByaXZpbGVnZWRfc2VtLFxcbjI1MDE6XFx0XFx0XFx0ICBESVZfUk9VTkRfVVAoY21kLVxcdTAwM2V2YXJzLm1heF9yZWdfY21kcywgMikpO1xcbjI1MDI6XFx0XFxuMjUwMzpcXHRcXHR4YV9pbml0KFxcdTAwMjZjbWQtXFx1MDAzZXZhcnMucHJpdmlsZWdlZF91aWRzKTtcXG4yNTA0OlxcdFxcbjI1MDU6XFx0XFx0Y21kLVxcdTAwM2Vwb29sID0gZG1hX3Bvb2xfY3JlYXRlKFxcXCJtbHg1X2NtZFxcXCIsIG1seDVfY29yZV9kbWFfZGV2KGRldiksIHNpemUsIGFsaWduLCAwKTtcXG4yNTA2OlxcdFxcdGlmICghY21kLVxcdTAwM2Vwb29sKSB7XFxuMjUwNzpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjI1MDg6XFx0XFx0XFx0Z290byBlcnJfZGVzdHJveV94YTtcXG4yNTA5OlxcdFxcdH1cXG4yNTEwOlxcdFxcbjI1MTE6XFx0XFx0ZXJyID0gYWxsb2NfY21kX3BhZ2UoZGV2LCBjbWQpO1xcbjI1MTI6XFx0XFx0aWYgKGVycilcXG4yNTEzOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfcG9vbDtcXG4yNTE0OlxcdFxcbjI1MTU6XFx0XFx0Y21kX2ggPSAodTMyKSgodTY0KShjbWQtXFx1MDAzZWRtYSkgXFx1MDAzZVxcdTAwM2UgMzIpO1xcbjI1MTY6XFx0XFx0Y21kX2wgPSAodTMyKShjbWQtXFx1MDAzZWRtYSk7XFxuMjUxNzpcXHRcXHRpZiAoY21kX2wgXFx1MDAyNiAweGZmZikge1xcbjI1MTg6XFx0XFx0XFx0bWx4NV9jb3JlX2VycihkZXYsIFxcXCJpbnZhbGlkIGNvbW1hbmQgcXVldWUgYWRkcmVzc1xcXFxuXFxcIik7XFxuMjUxOTpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjI1MjA6XFx0XFx0XFx0Z290byBlcnJfY21kX3BhZ2U7XFxuMjUyMTpcXHRcXHR9XFxuMjUyMjpcXHRcXG4yNTIzOlxcdFxcdGlvd3JpdGUzMmJlKGNtZF9oLCBcXHUwMDI2ZGV2LVxcdTAwM2Vpc2VnLVxcdTAwM2VjbWRxX2FkZHJfaCk7XFxuMjUyNDpcXHRcXHRpb3dyaXRlMzJiZShjbWRfbCwgXFx1MDAyNmRldi1cXHUwMDNlaXNlZy1cXHUwMDNlY21kcV9hZGRyX2xfc3opO1xcbjI1MjU6XFx0XFxuMjUyNjpcXHRcXHQvKiBNYWtlIHN1cmUgZmlybXdhcmUgc2VlcyB0aGUgY29tcGxldGUgYWRkcmVzcyBiZWZvcmUgd2UgcHJvY2VlZCAqL1xcbjI1Mjc6XFx0XFx0d21iKCk7XFxuMjUyODpcXHRcXG4yNTI5OlxcdFxcdG1seDVfY29yZV9kYmcoZGV2LCBcXFwiZGVzY3JpcHRvciBhdCBkbWEgMHglbGx4XFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKShjbWQtXFx1MDAzZWRtYSkpO1xcbjI1MzA6XFx0XFxuMjUzMTpcXHRcXHRjbWQtXFx1MDAzZW1vZGUgPSBDTURfTU9ERV9QT0xMSU5HO1xcbjI1MzI6XFx0XFx0Y21kLVxcdTAwM2VhbGxvd2VkX29wY29kZSA9IENNRF9BTExPV0VEX09QQ09ERV9BTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMyOjQ2LjQ0MDAwMzI2NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDczNjIyMjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbWx4NV9kYl9hbGxvY19ub2RlYCB3aXRoIHRoZSBQQ0kgRnV6emVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWx4NV9jbWRfaW5pdGAgZnVuY3Rpb24sIGFuZCBpdCBkb2Vzbid0IHNlZW0gdG8gZGlyZWN0bHkgY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gVGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYG1seDVfZGJfYWxsb2Nfbm9kZWAgYW5kIGl0cyBjb21wYW5pb24sIGBtbHg1X2RiX2ZyZWVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzIHRoYXQgaWYgdGhlIFBDSSBmdXp6ZXIgZmFpbHMgZWFybHkgaW4gYHByb2JlX29uZWAsIG1heWJlIGR1ZSB0byBhIGBjbWRpZl9yZXZgIGNoZWNrIG9yIGEgZmFpbHVyZSBkdXJpbmcgYG1seDVfY21kX2luaXRfaGNhYCwgd2Ugd291bGRuJ3QgZXZlbiBnZXQgdG8gdGhlIHF1ZXVlIGNyZWF0aW9uIHN0YWdlLCB0aHVzIGF2b2lkaW5nIHRoZSBjYWxsIHRvIGBtbHg1X2RiX2FsbG9jX25vZGVgLlxuXG5CdXQgdGhlbiwgSSByZW1lbWJlcmVkIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCEgVGhvc2UgYXJlIGNhbGxlZCB3aXRoaW4gYG1seDVfbWRldl9pbml0YCBhbmQgYG1seDVfbWRldl91bmluaXRgIHJlc3BlY3RpdmVseS4gQW5kIHllcywgdGhvc2UgcGF0aHMgKmFyZSogZGVmaW5pdGVseSByZWFjaGFibGUgYnkgdGhlIFBDSSBmdXp6ZXIuIFNvLCBJIG5lZWQgdG8gYWRqdXN0IG15IHRoaW5raW5nOyBpcyB0aGVyZSBzdGlsbCBhIGZ1enppbmcgb3Bwb3J0dW5pdHkgaGVyZT8gVGhpcyBwYXRjaCBjaGFuZ2VzIGhvdyB3ZSBhbGxvY2F0ZSBkb29yYmVsbCBwYWdlcywgbW92aW5nIHRvIGEgRE1BIHBvb2wgaW5zdGVhZCBvZiBhIGN1c3RvbSBwYWdlIGRpcmVjdG9yeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBhbGxvY2F0aW9uLlxuXG5FdmVuIGlmIGBtbHg1X2RiX2FsbG9jX25vZGVgIGlzbid0IHJlYWNoZWQsIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCBhcmUsIHdoaWNoIGFyZSBpbXBvcnRhbnQuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBtbHg1X2RiX2FsbG9jX25vZGVgIGl0c2VsZiBpcyByZWFjaGFibGUuIElmIHRoZSBQQ0kgZnV6emVyIGNhbiBiZSBjbGV2ZXIgZW5vdWdoIHRvIGZha2UgZmlybXdhcmUgcmVzcG9uc2VzLCBpdCAqbWlnaHQqIGdldCBmdXJ0aGVyLiBJIGtub3cgU3l6a2FsbGVyJ3MgUENJIGZ1enplciBpc24ndCBqdXN0IHNwaXR0aW5nIG91dCByYW5kb20gZGF0YTsgaXQncyB1c2luZyBmdXp6aW5nIHRvIGV4cGxvcmUgdGhlIHN0YXRlIHNwYWNlLiBJdCBjb3VsZCBwb3RlbnRpYWxseSBieXBhc3Mgc29tZSBjaGVja3MgaWYgdGhlIGZ1enplciBmaW5kcyB0aGUgcmlnaHQgdmFsdWVzLiBBbHNvLCB0aGVyZSdzIGBzeXpfcGNpX2RldmljZWAsIGJ1dCB0aGF0J3Mgbm90IHRoZSBvbmx5IHJvdXRlLlxuXG5XYWl0LCB3aGF0IGFib3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmU/IFRoZSBwcm9tcHQgaXMgZm9jdXNlZCBvbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBtbHg1IGlzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlciB3aXRoIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIGl0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB0aG9zZSBlbnZpcm9ubWVudHMgKnVubGVzcyogeW91IHVzZSB0aGUgUENJIGZ1enplci4gQnV0IGRvZXMgdGhlIFBDSSBmdXp6ZXIgY291bnQgYXMgXCJzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiPyBZZXMsIGl0IGRvZXMuIFNvLCB3ZSdyZSBiYWNrIHRvIHJlbHlpbmcgb24gdGhlIGZ1enplciB0byBnaXZlIHVzIG1vcmUgY29kZSBjb3ZlcmFnZS5cblxuQnV0LCBpcyBpdCAqcHJhY3RpY2FsbHkqIHJlYWNoYWJsZSB0byB0aGUgcG9pbnQgb2YgZ2V0dGluZyB0byBSRE1BIHF1ZXVlIGNyZWF0aW9uPyBQcm9iYWJseSBub3QuIENvbXBsZXggZGV2aWNlcyBsaWtlIG1seDUgaGF2ZSBjb21wbGV4IGZpcm13YXJlIGludGVyZmFjZXMgKENNRElGKSBhbmQgSSB0aGluayB0aGUgZnV6emVyIHdvdWxkIGhhdmUgYSBoYXJkIHRpbWUgZ2V0dGluZyBwYXN0IHRoZSBwcm9iZSBjaGVja3MuIEhvd2V2ZXIsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHRoYXQgYG1seDVfZGJfcG9vbHNfaW5pdGAgaXMgY2FsbGVkICpiZWZvcmUqIGJvdGggYG1seDVfY21kX2luaXRfaGNhYCAqYW5kKiBgbWx4NV9jbWRfZW5hYmxlYC4gU28sIEkgbmVlZCB0byByZXZpc2l0IGBtbHg1X21kZXZfaW5pdGAgYWdhaW4sIGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MzgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMjo1Ny4xNzYyMjg4NThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwNCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4MDQ6XFx0aW50IG1seDVfbWRldl9pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBwcm9maWxlX2lkeClcXG4xODA1OlxcdHtcXG4xODA2OlxcdFxcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2O1xcbjE4MDc6XFx0XFx0aW50IGVycjtcXG4xODA4OlxcdFxcbjE4MDk6XFx0XFx0bWVtY3B5KFxcdTAwMjZkZXYtXFx1MDAzZXByb2ZpbGUsIFxcdTAwMjZwcm9maWxlW3Byb2ZpbGVfaWR4XSwgc2l6ZW9mKGRldi1cXHUwMDNlcHJvZmlsZSkpO1xcbjE4MTA6XFx0XFx0bG9ja2RlcF9yZWdpc3Rlcl9rZXkoXFx1MDAyNmRldi1cXHUwMDNlbG9ja19rZXkpO1xcbjE4MTE6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VpbnRmX3N0YXRlX211dGV4KTtcXG4xODEyOlxcdFxcdGxvY2tkZXBfc2V0X2NsYXNzKFxcdTAwMjZkZXYtXFx1MDAzZWludGZfc3RhdGVfbXV0ZXgsIFxcdTAwMjZkZXYtXFx1MDAzZWxvY2tfa2V5KTtcXG4xODEzOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmRldi1cXHUwMDNlbWx4NWVfcmVzLnVwbGlua19uZXRkZXZfbG9jayk7XFxuMTgxNDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXdjX3N0YXRlX2xvY2spO1xcbjE4MTU6XFx0XFxuMTgxNjpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3MucmVnX2hlYWQubG9jayk7XFxuMTgxNzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3Mud2NfaGVhZC5sb2NrKTtcXG4xODE4OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3MucmVnX2hlYWQubGlzdCk7XFxuMTgxOTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNlYmZyZWdzLndjX2hlYWQubGlzdCk7XFxuMTgyMDpcXHRcXG4xODIxOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWFsbG9jX211dGV4KTtcXG4xODIyOlxcdFxcbjE4MjM6XFx0XFx0cHJpdi1cXHUwMDNlbnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSk7XFxuMTgyNDpcXHRcXHRwcml2LVxcdTAwM2VkYmcuZGJnX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoZGV2LVxcdTAwM2VkZXZpY2UpLFxcbjE4MjU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0bWx4NV9kZWJ1Z2ZzX3Jvb3QpO1xcbjE4MjY6XFx0XFxuMTgyNzpcXHRcXHRlcnIgPSBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2luaXQoZGV2KTtcXG4xODI4OlxcdFxcdGlmIChlcnIpXFxuMTgyOTpcXHRcXHRcXHRnb3RvIGVycl9mcmFnX2J1Zl9wb29sc19pbml0O1xcbjE4MzA6XFx0XFxuMTgzMTpcXHRcXHRlcnIgPSBtbHg1X2RiX3Bvb2xzX2luaXQoZGV2KTtcXG4xODMyOlxcdFxcdGlmIChlcnIpXFxuMTgzMzpcXHRcXHRcXHRnb3RvIGVycl9kYl9wb29sc19pbml0O1xcbjE4MzQ6XFx0XFxuMTgzNTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHJpdi1cXHUwMDNldHJhcHMpO1xcbjE4MzY6XFx0XFxuMTgzNzpcXHRcXHRlcnIgPSBtbHg1X2NtZF9pbml0KGRldik7XFxuMTgzODpcXHRcXHRpZiAoZXJyKSB7XFxuMTgzOTpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldiwgXFxcIkZhaWxlZCBpbml0aWFsaXppbmcgY21kaWYgU1cgc3RydWN0cywgYWJvcnRpbmdcXFxcblxcXCIpO1xcbjE4NDA6XFx0XFx0XFx0Z290byBlcnJfY21kX2luaXQ7XFxuMTg0MTpcXHRcXHR9XFxuMTg0MjpcXHRcXG4xODQzOlxcdFxcdGVyciA9IG1seDVfdG91dF9pbml0KGRldik7XFxuMTg0NDpcXHRcXHRpZiAoZXJyKSB7XFxuMTg0NTpcXHRcXHRcXHRtbHg1X2NvcmVfZXJyKGRldiwgXFxcIkZhaWxlZCBpbml0aWFsaXppbmcgdGltZW91dHMsIGFib3J0aW5nXFxcXG5cXFwiKTtcXG4xODQ2OlxcdFxcdFxcdGdvdG8gZXJyX3RpbWVvdXRfaW5pdDtcXG4xODQ3OlxcdFxcdH1cXG4xODQ4OlxcdFxcbjE4NDk6XFx0XFx0ZXJyID0gbWx4NV9oZWFsdGhfaW5pdChkZXYpO1xcbjE4NTA6XFx0XFx0aWYgKGVycilcXG4xODUxOlxcdFxcdFxcdGdvdG8gZXJyX2hlYWx0aF9pbml0O1xcbjE4NTI6XFx0XFxuMTg1MzpcXHRcXHRlcnIgPSBtbHg1X3BhZ2VhbGxvY19pbml0KGRldik7XFxuMTg1NDpcXHRcXHRpZiAoZXJyKVxcbjE4NTU6XFx0XFx0XFx0Z290byBlcnJfcGFnZWFsbG9jX2luaXQ7XFxuMTg1NjpcXHRcXG4xODU3OlxcdFxcdGVyciA9IG1seDVfYWRldl9pbml0KGRldik7XFxuMTg1ODpcXHRcXHRpZiAoZXJyKVxcbjE4NTk6XFx0XFx0XFx0Z290byBlcnJfYWRldl9pbml0O1xcbjE4NjA6XFx0XFxuMTg2MTpcXHRcXHRlcnIgPSBtbHg1X2hjYV9jYXBzX2FsbG9jKGRldik7XFxuMTg2MjpcXHRcXHRpZiAoZXJyKVxcbjE4NjM6XFx0XFx0XFx0Z290byBlcnJfaGNhX2NhcHM7XFxuMTg2NDpcXHRcXG4xODY1OlxcdFxcdGVyciA9IG1seDVfbm90aWZpZXJzX2luaXQoZGV2KTtcXG4xODY2OlxcdFxcdGlmIChlcnIpXFxuMTg2NzpcXHRcXHRcXHRnb3RvIGVycl9ub3RpZmllcnNfaW5pdDtcXG4xODY4OlxcdFxcbjE4Njk6XFx0XFx0LyogVGhlIGNvbmp1bmN0aW9uIG9mIHN3X3ZoY2FfaWQgd2l0aCBzd19vd25lcl9pZCB3aWxsIGJlIGEgZ2xvYmFsXFxuMTg3MDpcXHRcXHQgKiB1bmlxdWUgaWQgcGVyIGZ1bmN0aW9uIHdoaWNoIHVzZXMgbWx4NV9jb3JlLlxcbjE4NzE6XFx0XFx0ICogVGhvc2UgdmFsdWVzIGFyZSBzdXBwbGllZCB0byBGVyBhcyBwYXJ0IG9mIHRoZSBpbml0IEhDQSBjb21tYW5kIHRvXFxuMTg3MjpcXHRcXHQgKiBiZSB1c2VkIGJ5IGJvdGggZHJpdmVyIGFuZCBGVyB3aGVuIGl0J3MgYXBwbGljYWJsZS5cXG4xODczOlxcdFxcdCAqL1xcbjE4NzQ6XFx0XFx0ZGV2LVxcdTAwM2Vwcml2LnN3X3ZoY2FfaWQgPSBpZGFfYWxsb2NfcmFuZ2UoXFx1MDAyNnN3X3ZoY2FfaWRhLCAxLFxcbjE4NzU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BWF9TV19WSENBX0lELFxcbjE4NzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEdGUF9LRVJORUwpO1xcbjE4Nzc6XFx0XFx0aWYgKGRldi1cXHUwMDNlcHJpdi5zd192aGNhX2lkIFxcdTAwM2MgMClcXG4xODc4OlxcdFxcdFxcdG1seDVfY29yZV9lcnIoZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHN3X3ZoY2FfaWQsIGVycj0lZFxcXFxuXFxcIixcXG4xODc5OlxcdFxcdFxcdFxcdCAgICAgIGRldi1cXHUwMDNlcHJpdi5zd192aGNhX2lkKTtcXG4xODgwOlxcdFxcbjE4ODE6XFx0XFx0cmV0dXJuIDA7XFxuMTg4MjpcXHRcXG4xODgzOlxcdGVycl9ub3RpZmllcnNfaW5pdDpcXG4xODg0OlxcdFxcdG1seDVfaGNhX2NhcHNfZnJlZShkZXYpO1xcbjE4ODU6XFx0ZXJyX2hjYV9jYXBzOlxcbjE4ODY6XFx0XFx0bWx4NV9hZGV2X2NsZWFudXAoZGV2KTtcXG4xODg3OlxcdGVycl9hZGV2X2luaXQ6XFxuMTg4ODpcXHRcXHRtbHg1X3BhZ2VhbGxvY19jbGVhbnVwKGRldik7XFxuMTg4OTpcXHRlcnJfcGFnZWFsbG9jX2luaXQ6XFxuMTg5MDpcXHRcXHRtbHg1X2hlYWx0aF9jbGVhbnVwKGRldik7XFxuMTg5MTpcXHRlcnJfaGVhbHRoX2luaXQ6XFxuMTg5MjpcXHRcXHRtbHg1X3RvdXRfY2xlYW51cChkZXYpO1xcbjE4OTM6XFx0ZXJyX3RpbWVvdXRfaW5pdDpcXG4xODk0OlxcdFxcdG1seDVfY21kX2NsZWFudXAoZGV2KTtcXG4xODk1OlxcdGVycl9jbWRfaW5pdDpcXG4xODk2OlxcdFxcdG1seDVfZGJfcG9vbHNfY2xlYW51cChkZXYpO1xcbjE4OTc6XFx0ZXJyX2RiX3Bvb2xzX2luaXQ6XFxuMTg5ODpcXHRcXHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG4xODk5OlxcdGVycl9mcmFnX2J1Zl9wb29sc19pbml0OlxcbjE5MDA6XFx0XFx0ZGVidWdmc19yZW1vdmUoZGV2LVxcdTAwM2Vwcml2LmRiZy5kYmdfcm9vdCk7XFxuMTkwMTpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2VhbGxvY19tdXRleCk7XFxuMTkwMjpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2ViZnJlZ3Mud2NfaGVhZC5sb2NrKTtcXG4xOTAzOlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZWJmcmVncy5yZWdfaGVhZC5sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzI6NTcuMTc2MzYwNDY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MzQ5NDE3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGguIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzIGNhbGxlZCB2ZXJ5IGVhcmx5IGR1cmluZyBgbWx4NV9tZGV2X2luaXRgLiBJIGtub3cgdGhhdCBiZWNhdXNlIG9mIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzLiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNyZWF0ZXMgZGVidWdmcyBlbnRyaWVzLCB3aGljaCBpcyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBJIGtub3cgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBQQ0kgZnV6emVyLCB3aGljaCBpcyB0aGUga2V5IGhlcmUuIFRoZSBmdXp6ZXIgdHJpZ2dlcnMgYHByb2JlX29uZWAsIHdoaWNoIHVsdGltYXRlbHkgY2FsbHMgYG1seDVfbWRldl9pbml0YCwgdGh1cyBleGVjdXRpbmcgYG1seDVfZGJfcG9vbHNfaW5pdGAuXG5cblRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBgbWx4NV9kYl9hbGxvY19ub2RlYCByZWFjaGFibGU/IEl0J3MgbGlrZWx5IHRoYXQgaWYgdGhlIFBDSSBmdXp6ZXIgY2FuIHBhc3MgdGhlIGluaXRpYWwgY2hlY2tzLCBpdCAqY291bGQqIHJlYWNoIHRoYXQgZnVuY3Rpb24uIEV2ZW4gaWYgaXQgZG9lc24ndCwgYG1seDVfZGJfcG9vbHNfaW5pdGAgYW5kIGl0cyBjbGVhbnVwIGNvdW50ZXJwYXJ0IHN0aWxsIHJlcHJlc2VudCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugb2YgdGhlIG1lbW9yeSBwb29sIGFsbG9jYXRpb24gYW5kIGRlYnVnZnMgY3JlYXRpb24uIFRoYXQncyBhIGRlZmluaXRlIGNvbnNpZGVyYXRpb24uXG5cbk5vdywgd2FpdCBhIG1pbnV0ZSwgbGV0IG1lIHJlY2FsbCB0aGUgcHJvbXB0IGNvbnN0cmFpbnRzLiBJdCBzYXlzIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc1wiIHNwZWNpZmljIHR5cGVzIG9mIGNoYW5nZXMuIEl0IGxpc3RzIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbid0IGNoYW5nZSBmbG93LCBhbmQgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbkhtbSwgb2theS4gSXMgYG1seDVgIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgaXQgaXMuIFRoZSBQQ0kgZnV6emVyIGlzIHRoZSBhdmVudWUgaGVyZS4gQnV0LCBpcyB0aGUgUENJIGZ1enplciBjb25zaWRlcmVkIFwic29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIj8gSSB0aGluayBpdCBpczsgaXQgZW11bGF0ZXMgUENJIGRldmljZXMgaW4gc29mdHdhcmUuIFNvLCB5ZXMsIGBtbHg1YCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAoYENPTkZJR19NTFg1X0NPUkVgLCBwZXJoYXBzPykgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgcmVsZXZhbnQuIFRoYXQncyB0aGUgbmV4dCBzdGVwIGluIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NjI2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTE6MzM6MDUuOTExMzA1NTUyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ2NDIwNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTFg1X0NPUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo2OmNvbmZpZyBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Mjk6Y29uZmlnIE1MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTExMj1jb25maWcgTUxYNV9UQ19TQU1QTEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMjU6Y29uZmlnIE1MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjYtXFx0Ym9vbCBcXFwiRGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMzc6Y29uZmlnIE1MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzOC1cXHRib29sIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChjb25uZWN0WCBzZXJpZXMpIElQb0lCIG9mZmxvYWRzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjA3Ljk1NzczNTgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODkzMzc0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZWxsYW5veCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY2hhbmdlLCBhbmQgaXQgc2VlbXMgdGhlIGtleSBjb25maWcgdmFyaWFibGUgaW52b2x2ZWQgaXMgYENPTkZJR19NTFg1X0NPUkVgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgYXQgcGxheSBoZXJlLiBUaGlzIGtpbmQgb2Yga2VybmVsIGNvZGUgY2FuIGJlIGNvbXBsZXgsIGFuZCB0aGVyZSBhcmUgb2Z0ZW4gZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyBhbnkgb2YgdGhlIHJlbGF0ZWQgZmlsZXMuXG5cblRoZSBzcGVjaWZpYyBmaWxlIG1vZGlmaWVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuY2AuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgdGhlIE1ha2VmaWxlIGFzc29jaWF0ZWQgd2l0aCBgYWxsb2MuY2AuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmlsZSBpcyBidWlsdCBhbmQgbGlua2VkIGlzIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIE1lbGxhbm94IGRyaXZlci4gR290dGEgZmluZCB0aG9zZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkyMiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjExLjk0NzA3NzE5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA2MjYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvY1xcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgKz0gbWx4NV9jb3JlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMy0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE0Om1seDVfY29yZS15IDo9XFx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNTpcXHRcXHRoZWFsdGgubyBtY2cubyBjcS5vIGFsbG9jLm8gcG9ydC5vIG1yLm8gcGQubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE2LVxcdFxcdHRyYW5zb2JqLm8gdnBvcnQubyBzcmlvdi5vIGZzX2NtZC5vIGZzX2NvcmUubyBwY2lfaXJxLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMzoxMi4wMDcxNDY4OThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMjY2NDk4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYSBNZWxsYW5veCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGFsbG9jLm9gLCB3aGljaCBpcyBhbHdheXMgYnVpbHQgd2hlbiBgQ09ORklHX01MWDVfQ09SRWAgaXMgZW5hYmxlZC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBtbHg1X2RiX3Bvb2xzX2luaXRgLCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYCwgYG1seDVfZGJfYWxsb2Nfbm9kZWAsIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFzb25hYmx5IGZ1enogdGhlc2U/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiB0aGUgUENJIGZ1enplciBjYW4gaGl0IGBtbHg1X2RiX2FsbG9jX25vZGVgLiBJZiB0aGUgUENJIGZ1enplciBmYWlscyBiZWZvcmUgYG1seDVfY21kX2luaXRfaGNhYCwgdGhlbiBgbWx4NV9kYl9hbGxvY19ub2RlYCBpcyB1bnJlYWNoYWJsZS4gSSBoYWQgdG8gY29uc2lkZXIsIGNvdWxkIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWAgZnVuY3Rpb24gZG8gdGhpcywgbWF5YmUgd2l0aCBhIHNwZWNpZmljIGRlc2NyaXB0aW9uIGZvciBtbHg1PyBJIGRpZCBhIHNlYXJjaCBmb3IgYHN5el8uKm1seDVgIGFuZCBkaWRuJ3QgZmluZCBhbnl0aGluZywgYnV0IHN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyBnZW5lcmFsbHkuIFNvIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgdmlhIGdlbmVyaWMgUENJIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZnV6emluZyB0YXJnZXRzLCBJJ2xsIGxpc3QgYG1seDVfZGJfcG9vbHNfaW5pdGAsIGBtbHg1X2RiX3Bvb2xzX2NsZWFudXBgLCBgbWx4NV9kYl9hbGxvY19ub2RlYCwgYW5kIGBtbHg1X2RiX2ZyZWVgIGFzIHRoZSBgRm9jdXNTeW1ib2xzYC4gQW5kIEknbGwgbmVlZCBgRW5hYmxlQ29uZmlnc2A6IGBNTFg1X0NPUkVgLlxuXG5XYWl0LCBpcyB0aGVyZSAqYW55KiBvdGhlciBjb25maWcgaW52b2x2ZWQ/IE5vLCBgTUxYNV9DT1JFYCBpcyBzdWZmaWNpZW50LlxuXG5Ob3csIGNvdWxkIEkgcG90ZW50aWFsbHkgcmVhY2ggYG1seDVfZGJfYWxsb2Nfbm9kZWAgZnJvbSB1c2Vyc3BhY2UgdmlhIFJETUE/IElmIGBDT05GSUdfTUxYNV9JTkZJTklCQU5EYCBpcyBlbmFibGVkLCB0aGVuIHVzZXJzcGFjZSBjYW4gY2FsbCBgbWx4NV9pYl9jcmVhdGVfcXBgLCB3aGljaCAqZG9lcyogY2FsbCBgbWx4NV9kYl9hbGxvY19ub2RlYC4gSG93ZXZlciwgdGhpcyByZXF1aXJlcyBhIHJlYWwgbWx4NSBkZXZpY2UsIG9yLCBtb3JlIHJlYWxpc3RpY2FsbHksIHRoZSBQQ0kgZnV6emVyIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIHRoZSBkZXZpY2UgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBSRE1BIGRldmljZSByZWdpc3RlcnMuIFRoYXQgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gYG1seDVfaWJfcHJvYmVgICh0aGUgYXV4aWxpYXJ5IGRyaXZlciBwcm9iZSkuIFRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBtbHg1X21kZXZfaW5pdGAgdG8gc3VjY2VlZCwgYW5kIHRoZW4gdGhlIGF1eGlsaWFyeSBkZXZpY2UgdG8gYmUgYWRkZWQuIEl0J3MgdW5saWtlbHkgdGhlIFBDSSBmdXp6ZXIgY2FuIGZha2UgdGhhdCAqZW50aXJlKiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0byBnZXQgdGhlIFJETUEgZGV2aWNlIHRvIHJlZ2lzdGVyLiBIb3dldmVyLCBgbWx4NV9kYl9wb29sc19pbml0YCAqaXMqIGNhbGxlZCBlYXJseSBpbiBgbWx4NV9tZGV2X2luaXRgLCBhbmQgdGhhdCAqaXMqIHJlYWNoYWJsZS4gU28gdGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBiZWNhdXNlIGl0IHRvdWNoZXMgdGhlIGluaXRpYWxpemF0aW9uIHBhdGggb2YgYSBQQ0kgZHJpdmVyLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgcmVjYXAgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyByZW1vdmluZyBgbWx4NV9kYl9wZ2RpcmAgYW5kIHVzaW5nIGBtbHg1X2RtYV9wb29sYCBpbnN0ZWFkLiBJdCBhZGRzIGBtbHg1X2RiX3Bvb2xzX2luaXRgIGFuZCBgbWx4NV9kYl9wb29sc19jbGVhbnVwYC4gQW5kIGl0IG1vZGlmaWVzIGBtbHg1X2RiX2FsbG9jX25vZGVgIGFuZCBgbWx4NV9kYl9mcmVlYC4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0IGlzIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBjb3JlIGRyaXZlciwgd2hpY2ggaW1wYWN0cyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHF1ZXVlIGNyZWF0aW9uLCBhbmQgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaXMsIGluIGZhY3QsIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcuXG5cbk9uZSBmaW5hbCBjaGVjaywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgbWx4NV9kbWFfcG9vbGAgaXMgZGVmaW5lZCBpbiBgYWxsb2MuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDI4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjIzLjEzMzc5OTE1OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NjM3ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfZG1hX3Bvb2xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTE6c3RydWN0IG1seDVfZG1hX3Bvb2wge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyLVxcdC8qIFByb3RlY3RzIHBhZ2VfbGlzdCBhbmQgcGVyLXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXBzLiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjA6c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjE6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjItXFx0c3RydWN0IGxpc3RfaGVhZCBwb29sX2xpbms7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz02OD1zdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2OTpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbHNbTUxYNV9GUkFHX0JVRl9QT09MU19OVU1dO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzI6c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTczLVxcdGludCBub2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9ODM9c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTAyOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVzdHJveShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEwODpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTA5LVxcdFxcdFxcdFxcdFxcdFxcdCAgaW50IG5vZGUsIHU4IGJsb2NrX3NoaWZ0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTExOlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMjU6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEyNjptbHg1X2RtYV9wb29sX3BhZ2VfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTI3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMjgtXFx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEyOTpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNTY6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNTc6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjU6c3RhdGljIGludCBtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjY6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY3LVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nICppZHhfb3V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE4MzpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTg0Om1seDVfZG1hX3Bvb2xfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxODY6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTAtXFx0cGFnZSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2cG9vbC1cXHUwMDNlcGFnZV9saXN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlLCBwb29sX2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MjpcXHRpZiAocGFnZSBcXHUwMDI2XFx1MDAyNiAhbWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2UocG9vbCwgcGFnZSwgaWR4X291dCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTkzLVxcdFxcdGdvdG8gdW5sb2NrOyAvKiBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGZyb20gZXhpc3RpbmcgcGFnZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxOTU6XFx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhwb29sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTYtXFx0aWYgKCFwYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTk5LVxcdGxpc3RfYWRkKFxcdTAwMjZwYWdlLVxcdTAwM2Vwb29sX2xpbmssIFxcdTAwMjZwb29sLVxcdTAwM2VwYWdlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIwMDpcXHRtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA3OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZnJlZShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMDg6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjA5LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIxOS1cXHRcXHRsaXN0X2RlbChcXHUwMDI2cGFnZS1cXHUwMDNlcG9vbF9saW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMjA6XFx0XFx0bWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUocG9vbC1cXHUwMDNlZGV2LCBwYWdlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMjEtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzA6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX2dldF9zdGF0cyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzE6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzICpzdGF0cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIzMy1cXHRpbnQgYmxvY2tzX3Blcl9wYWdlID0gQklUKFBBR0VfU0hJRlQgLSBwb29sLVxcdTAwM2VibG9ja19zaGlmdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjM0OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjM1LVxcdHNpemVfdCBmcmVlX2Jsb2NrcyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjUxOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVidWdmc19zdGF0c19wcmludChzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjUyOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjU0OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHN0YXRzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI1NjpcXHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfZ2V0X3N0YXRzKHBvb2wsIFxcdTAwMjZzdGF0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjU3LVxcdHNlcV9wcmludGYoZmlsZSwgXFxcIiU0ZCAgICAgICAlNXp1ICAgICAgJTd6dSAgICAgICAgICAgJTd6dVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNjI6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoc3RydWN0IHNlcV9maWxlICpmaWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0yNjg9bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3koc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3MS1cXHRcXHRpZiAobm9kZV9wb29scy1cXHUwMDNlcG9vbHNbaV0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjcyOlxcdFxcdFxcdG1seDVfZG1hX3Bvb2xfZGVzdHJveShub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjczLVxcdGtmcmVlKG5vZGVfcG9vbHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9Mjc3PW1seDVfZnJhZ19idWZfbm9kZV9wb29sc19jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IG5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg4OlxcdFxcdG5vZGVfcG9vbHMtXFx1MDAzZXBvb2xzW2ldID0gbWx4NV9kbWFfcG9vbF9jcmVhdGUoZGV2LCBub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgYmxvY2tfc2hpZnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzAwPW1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA1OlxcdG1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKGZpbGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxNy1cXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIE1MWDVfRlJBR19CVUZfUE9PTFNfTlVNOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XFx0XFx0XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzIzOlxcdFxcdFxcdG1seDVfZG1hX3Bvb2xfZGVidWdmc19zdGF0c19wcmludChmaWxlLCBwb29sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzgxPWludCBtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4NDpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODUtXFx0aW50IHBvb2xfaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDAyLVxcdFxcdHN0cnVjdCBtbHg1X2J1Zl9saXN0ICpmcmFnID0gXFx1MDAyNmJ1Zi1cXHUwMDNlZnJhZ3NbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDAzOlxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDA0LVxcdFxcdHVuc2lnbmVkIGxvbmcgaWR4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MDY6XFx0XFx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXFx1MDAyNmlkeCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDA3LVxcdFxcdGlmICghcGFnZSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDIwPXZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MjMtXFx0XFx0c3RydWN0IG1seDVfYnVmX2xpc3QgKmZyYWcgPSBcXHUwMDI2YnVmLVxcdTAwM2VmcmFnc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjQ6XFx0XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MjU6XFx0XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxcdFxcdHVuc2lnbmVkIGxvbmcgaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDMzLVxcdFxcdGlkeCA9IChmcmFnLVxcdTAwM2VtYXAgLSBwYWdlLVxcdTAwM2VkbWEpIFxcdTAwM2VcXHUwMDNlIHBvb2wtXFx1MDAzZWJsb2NrX3NoaWZ0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzNDpcXHRcXHRtbHg1X2RtYV9wb29sX2ZyZWUocG9vbCwgcGFnZSwgaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDQwPXN0YXRpYyBpbnQgbWx4NV9kYl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDU6XFx0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDUwLVxcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1MTpcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IGRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NTY6XFx0XFx0bWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KGZpbGUsIHBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00NjM9dm9pZCBtbHg1X2RiX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3Mi1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZGJfbm9kZV9wb29sc1tub2RlXSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NzM6XFx0XFx0XFx0bWx4NV9kbWFfcG9vbF9kZXN0cm95KHByaXYtXFx1MDAzZWRiX25vZGVfcG9vbHNbbm9kZV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ3OT1pbnQgbWx4NV9kYl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00ODgtXFx0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDg5OlxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0OTE6XFx0XFx0cG9vbCA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00OTItXFx0XFx0XFx0XFx0XFx0ICAgIG9yZGVyX2Jhc2VfMihjYWNoZV9saW5lX3NpemUoKSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NTA3PWludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwOTpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxMDpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTEtXFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTYtXFx0cG9vbCA9IGRldi1cXHUwMDNlcHJpdi5kYl9ub2RlX3Bvb2xzW25vZGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxNzpcXHRwYWdlID0gbWx4NV9kbWFfcG9vbF9hbGxvYyhwb29sLCBcXHUwMDI2aWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTgtXFx0aWYgKCFwYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NTMxPXZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUzMzpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlID0gZGItXFx1MDAzZXUucG9vbF9wYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUzNDpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCA9IHBhZ2UtXFx1MDAzZXBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUzNjpcXHRtbHg1X2RtYV9wb29sX2ZyZWUocG9vbCwgcGFnZSwgZGItXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMTozMzoyMy4yNjA0NDIxMjRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1ODU5Mzc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBKdXN0aWZpY2F0aW9uKipcblxuT2theSwgYWZ0ZXIgZXhhbWluaW5nIHRoaXMgcGF0Y2gsIEknbSBjb25maWRlbnQgdGhhdCBpdCdzIGZ1bmN0aW9uYWwgYW5kIHdlIGNhbiByZWFjaCBpdCB3aXRoIFBDSSBmdXp6aW5nLiBUaGF0IHNldHRsZXMgaXQ7IEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBoZXJlIGFyZSBgbWx4NV9kYl9wb29sc19pbml0YCwgYG1seDVfZGJfcG9vbHNfY2xlYW51cGAsIGBtbHg1X2RiX2FsbG9jX25vZGVgLCBhbmQgYG1seDVfZGJfZnJlZWAuIFRoZXNlIGFyZSBnb2luZyB0byBiZSBteSBgRm9jdXNTeW1ib2xzYC5cblxuSSdsbCBlbmFibGUgdGhlIGBNTFg1X0NPUkVgIGNvbmZpZzsgdGhhdCdzIHRoZSByZWxldmFudCBvbmUgZm9yIHRoaXMuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIG1seDUgY29yZSBkcml2ZXIuIEl0J3Mgc3dhcHBpbmcgb3V0IGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5IGZvciBhIERNQSBwb29sLCBhbmQgdGhhdCdzIGdvaW5nIHRvIGltcGFjdCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGhvdyBxdWV1ZXMgYXJlIGNyZWF0ZWQuIENydWNpYWxseSwgdGhlIGluaXRpYWxpemF0aW9uIHBhdGggKmlzKiByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHRob3JvdWdoIHRlc3RpbmcuIFRoaXMgY2hhbmdlIGhhcyBlbm91Z2ggbG93LWxldmVsIGltcGFjdCB0aGF0IGl0J3Mgd29ydGggdGhlIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1NzEsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDExOjMzOjI4LjcxOTAzODI3M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjY3MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNTFg1X0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHg1X2RiX3Bvb2xzX2luaXRcIixcbiAgICBcIm1seDVfZGJfcG9vbHNfY2xlYW51cFwiLFxuICAgIFwibWx4NV9kYl9hbGxvY19ub2RlXCIsXG4gICAgXCJtbHg1X2RiX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZG9vcmJlbGwgcGFnZSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBtbHg1IGNvcmUgZHJpdmVyLCByZXBsYWNpbmcgYSBjdXN0b20gcGFnZSBkaXJlY3Rvcnkgd2l0aCBhIERNQSBwb29sLiBUaGlzIGFmZmVjdHMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBxdWV1ZSBjcmVhdGlvbi4gVGhlIGluaXRpYWxpemF0aW9uIHBhdGggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUxYNV9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWx4NV9kYl9wb29sc19pbml0XCIsXG4gICAgXCJtbHg1X2RiX3Bvb2xzX2NsZWFudXBcIixcbiAgICBcIm1seDVfZGJfYWxsb2Nfbm9kZVwiLFxuICAgIFwibWx4NV9kYl9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRvb3JiZWxsIHBhZ2UgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgbWx4NSBjb3JlIGRyaXZlciwgcmVwbGFjaW5nIGEgY3VzdG9tIHBhZ2UgZGlyZWN0b3J5IHdpdGggYSBETUEgcG9vbC4gVGhpcyBhZmZlY3RzIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgcXVldWUgY3JlYXRpb24uIFRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2dvrj[1] Phase: Succeeded StartedAt: 2026-07-24 11:33:41 +0000 UTC FinishedAt: 2026-07-24 11:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 11:33:41 +0000 UTC FinishedAt: 2026-07-24 11:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2] Phase: Succeeded StartedAt: 2026-07-24 11:33:41 +0000 UTC FinishedAt: 2026-07-24 16:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 11:33:41 +0000 UTC FinishedAt: 2026-07-24 16:15:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 11:33:41 +0000 UTC FinishedAt: 2026-07-24 11:33:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 11:33:41 +0000 UTC FinishedAt: 2026-07-24 11:33:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow2dvrj/series-workflow2dvrj-convert-artifact-1322778785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 11:33:51 +0000 UTC FinishedAt: 2026-07-24 12:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 11:33:51 +0000 UTC FinishedAt: 2026-07-24 12:23:02 +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:*5bda8f48-12f0-47e4-91c9-117ad18529de,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-workflow2dvrj/series-workflow2dvrj-convert-artifact-1322778785/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": "3e7aed14-537f-476d-9a9e-8a8df11aa6c4", "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-workflow2dvrj/series-workflow2dvrj-build-action-794351567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 11:33:51 +0000 UTC FinishedAt: 2026-07-24 12:22:52 +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:*5bda8f48-12f0-47e4-91c9-117ad18529de,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-workflow2dvrj/series-workflow2dvrj-convert-artifact-1322778785/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": "3e7aed14-537f-476d-9a9e-8a8df11aa6c4", "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-workflow2dvrj/series-workflow2dvrj-build-action-794351567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 12:23:02 +0000 UTC FinishedAt: 2026-07-24 12:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 12:23:02 +0000 UTC FinishedAt: 2026-07-24 12:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 12:23:02 +0000 UTC FinishedAt: 2026-07-24 12:23:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 12:23:02 +0000 UTC FinishedAt: 2026-07-24 12:23:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow2dvrj/series-workflow2dvrj-convert-artifact-2417349364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 12:23:12 +0000 UTC FinishedAt: 2026-07-24 12:25:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 12:23:12 +0000 UTC FinishedAt: 2026-07-24 12:25:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3e7aed14-537f-476d-9a9e-8a8df11aa6c4,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-workflow2dvrj/series-workflow2dvrj-build-action-794351567/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-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 12:25:22 +0000 UTC FinishedAt: 2026-07-24 12:25:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 12:25:22 +0000 UTC FinishedAt: 2026-07-24 12:25:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 12:25:22 +0000 UTC FinishedAt: 2026-07-24 13:12:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 12:25:22 +0000 UTC FinishedAt: 2026-07-24 13:12:08 +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:*5bda8f48-12f0-47e4-91c9-117ad18529de,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-workflow2dvrj/series-workflow2dvrj-convert-artifact-2417349364/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": "5d8e4512-a36f-4282-9e6d-3b19852e0a33", "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-workflow2dvrj/series-workflow2dvrj-build-action-1146423232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 12:25:22 +0000 UTC FinishedAt: 2026-07-24 13:11:58 +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:*5bda8f48-12f0-47e4-91c9-117ad18529de,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-workflow2dvrj/series-workflow2dvrj-convert-artifact-2417349364/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": "5d8e4512-a36f-4282-9e6d-3b19852e0a33", "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-workflow2dvrj/series-workflow2dvrj-build-action-1146423232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 13:12:08 +0000 UTC FinishedAt: 2026-07-24 13:12:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 13:12:08 +0000 UTC FinishedAt: 2026-07-24 13:12:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 13:12:08 +0000 UTC FinishedAt: 2026-07-24 13:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 13:12:08 +0000 UTC FinishedAt: 2026-07-24 13:14:00 +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:*5d8e4512-a36f-4282-9e6d-3b19852e0a33,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-workflow2dvrj/series-workflow2dvrj-build-action-1146423232/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-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 13:14:06 +0000 UTC FinishedAt: 2026-07-24 16:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 13:14:06 +0000 UTC FinishedAt: 2026-07-24 16:15:26 +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":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"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:*3e7aed14-537f-476d-9a9e-8a8df11aa6c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d8e4512-a36f-4282-9e6d-3b19852e0a33,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-workflow2dvrj/series-workflow2dvrj-build-action-794351567/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-workflow2dvrj/series-workflow2dvrj-build-action-1146423232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 13:14:06 +0000 UTC FinishedAt: 2026-07-24 13:14:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 13:14:06 +0000 UTC FinishedAt: 2026-07-24 13:14:13 +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":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"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-workflow2dvrj/series-workflow2dvrj-convert-artifact-1622252829/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 13:14:06 +0000 UTC FinishedAt: 2026-07-24 13:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 13:14:06 +0000 UTC FinishedAt: 2026-07-24 13:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 13:14:07 +0000 UTC FinishedAt: 2026-07-24 13:14:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 13:14:17 +0000 UTC FinishedAt: 2026-07-24 16:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2dvrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlx5_db_pools_init","mlx5_db_pools_cleanup","mlx5_db_alloc_node","mlx5_db_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1df10cef2d1e7f9f2fb7eddb67fc70d3abf101f9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLX5_CORE"],"series_id":"00ca0e86-1312-4499-9d21-bf54ca6c033f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 13:14:17 +0000 UTC FinishedAt: 2026-07-24 16:15:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3e7aed14-537f-476d-9a9e-8a8df11aa6c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d8e4512-a36f-4282-9e6d-3b19852e0a33,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-workflow2dvrj/series-workflow2dvrj-build-action-794351567/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-workflow2dvrj/series-workflow2dvrj-build-action-1146423232/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-workflow2dvrj/series-workflow2dvrj-convert-artifact-1622252829/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,}