Name: series-workflow7zbbm Phase: Succeeded StartedAt: 2026-06-29 07:05:24 +0000 UTC FinishedAt: 2026-06-29 09:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[0] Phase: Succeeded StartedAt: 2026-06-29 07:05:24 +0000 UTC FinishedAt: 2026-06-29 07:22:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 07:05:24 +0000 UTC FinishedAt: 2026-06-29 07:22:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "826f11dd-9a30-4aea-a042-99fee73b1446" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "genphy_c45_soft_reset", "genphy_c45_an_setup_master_slave", "genphy_c45_read_master_slave", "rtl8261x_probe", "rtl8261x_get_features", "rtl8261x_read_status", "rtl8261x_verify_firmware", "rtl8261x_fw_execute_entry", "rtl8261x_fw_load", "rtl8261x_config_intr", "rtl8261x_handle_interrupt", "rtl8261x_config_aneg", "rtl8261x_config_init" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2VucGh5X2M0NV9zb2Z0X3Jlc2V0JiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlJiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZ2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3JlYWRfc3RhdHVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9md19leGVjdXRlX2VudHJ5JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2xvYWQmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfY29uZmlnX2ludHImIzM0OywKICAgICYjMzQ7cnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfYW5lZyYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBNYXN0ZXIvU2xhdmUgY29uZmlndXJhdGlvbiBsb2dpYyBmb3IgQ2xhdXNlIDQ1IFBIWXMgYW5kIGludHJvZHVjZXMgYSBuZXcgUmVhbHRlayBQSFkgZHJpdmVyIChSVEw4MjYxQykgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcy4gVGhlc2UgZmVhdHVyZXMgYXJlIHJlYWNoYWJsZSB2aWEgTURJTyBidXMgZW11bGF0aW9uIChlLmcuLCB0aHJvdWdoIFVTQiBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24pIGFuZCBjb250YWluIGNvbXBsZXggbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjIzMTRlNTA0YTkyZWNiYTU5Y2E1NWU0ZmQwZWJjNTU5ZTQ1OTBiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA3OjE4OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXG5pbmRleCAxMjY5NTE3NDE0Mjg4Zi4uZGY2ODJkM2ViZDVhMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXG5AQCAtMzg0LDYgJiM0MzszODQsMTE5IEBAIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0IC0gc29mdHdhcmUgcmVzZXQgdGhlIFBIWSB2aWEgQ2xhdXNlIDQ1IFBNQS9QTUQgY29udHJvbCByZWdpc3RlclxuJiM0MzsgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0LCB2YWw7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsIE1ESU9fQ1RSTDEsXG4mIzQzO1x0XHRcdCAgICAgICBNRElPX0NUUkwxX1JFU0VUKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXG4mIzQzO1x0XHRcdFx0XHQgTURJT19DVFJMMSwgdmFsLFxuJiM0MztcdFx0XHRcdFx0ICEodmFsIFx1MDAyNiBNRElPX0NUUkwxX1JFU0VUKSxcbiYjNDM7XHRcdFx0XHRcdCA1MDAwLCA2MDAwMDAsIHRydWUpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfc29mdF9yZXNldCk7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUgLSBDb25maWd1cmUgTWFzdGVyL1NsYXZlIHNldHRpbmcgZm9yIEM0NSBQSFlzXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKlxuJiM0MzsgKiBEZXNjcmlwdGlvbjogQ29uZmlndXJlIHRoZSBmb3JjZWQgb3IgcHJlZmVycmVkIE1hc3Rlci9TbGF2ZSByb2xlXG4mIzQzOyAqIDEwR0JBU0UtVCBjb250cm9sIHJlZ2lzdGVyIChNTUQgNywgUmVnaXN0ZXIgMHgwMDIwKSBhY2NvcmRpbmcgdG9cbiYjNDM7ICogSUVFRSA4MDIuMyBzdGFuZGFyZHMuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLCAwIGlmIE1hc3Rlci9TbGF2ZSBkaWRuJiMzOTt0IGNoYW5nZSxcbiYjNDM7ICogb3IgMSBpZiBNYXN0ZXIvU2xhdmUgbW9kZXMgY2hhbmdlZC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHUxNiBjdGwgPSAwO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc2V0KSB7XG4mIzQzO1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ6XG4mIzQzO1x0XHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX1BSRUZFUlJFRDpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U6XG4mIzQzO1x0XHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFIHwgTURJT19BTl8xMEdCVF9DVFJMX01TX1ZBTFVFO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOlxuJiM0MztcdFx0Y3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTktOT1dOOlxuJiM0MztcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTlNVUFBPUlRFRDpcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwmIzM0O1Vuc3VwcG9ydGVkIE1hc3Rlci9TbGF2ZSBtb2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fMTBHQlRfQ1RSTCxcbiYjNDM7XHRcdFx0XHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFIHxcbiYjNDM7XHRcdFx0XHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfFxuJiM0MztcdFx0XHRcdCAgICAgIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19QT1JUX1RZUEUsIGN0bCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlIC0gcmVhZCBtYXN0ZXIvc2xhdmUgc3RhdHVzXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKlxuJiM0MzsgKiBEZXNjcmlwdGlvbjogUmVhZCB0aGUgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gYW5kIHN0YXR1c1xuJiM0MzsgKiBmcm9tIDEwR0JBU0UtVCBjb250cm9sL3N0YXR1cyByZWdpc3RlcnMgKE1NRCA3LCBSZWcgMHgwMDIwIGFuZCAweDAwMjEpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdGludCB2YWw7XG4mIzQzO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19VTktOT1dOO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfVU5LTk9XTjtcbiYjNDM7XG4mIzQzO1x0dmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fMTBHQlRfQ1RSTCk7XG4mIzQzO1x0aWYgKHZhbCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiB2YWw7XG4mIzQzO1xuJiM0MztcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUpIHtcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRSlcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9GT1JDRTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAodmFsIFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFKVxuJiM0MztcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX1BSRUZFUlJFRDtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX1BSRUZFUlJFRDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX1NUQVQpO1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAodmFsIFx1MDAyNiBNRElPX0FOXzEwR0JUX1NUQVRfTVNfRkFVTFQpIHtcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSO1xuJiM0MztcdH0gZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWxpbmspIHtcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfU1RBVF9NU19SRVMpXG4mIzQzO1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfTUFTVEVSO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1NMQVZFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1VOS05PV047XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBnZW5waHlfYzQ1X2FuZWdfZG9uZSAtIHJldHVybiBhdXRvLW5lZ290aWF0aW9uIGNvbXBsZXRlIHN0YXR1c1xuICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuQEAgLTExOTIsNiAmIzQzOzEzMDUsMTAgQEAgaW50IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xuIFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0cmV0ID0gZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZShwaHlkZXYpO1xuJiM0MztcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4gXHRcdH1cbiBcbiBcdFx0cGh5X3Jlc29sdmVfYW5lZ19saW5rbW9kZShwaHlkZXYpO1xuQEAgLTEyMjUsNiAmIzQzOzEzNDIsMTQgQEAgaW50IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmIChyZXQgXHUwMDNlIDApXG4gXHRcdGNoYW5nZWQgPSB0cnVlO1xuIFxuJiM0MztcdGlmICghZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XG4mIzQzO1x0XHRyZXQgPSBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZShwaHlkZXYpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRcdGNoYW5nZWQgPSB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHBoeWRldiwgY2hhbmdlZCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfY29uZmlnX2FuZWcpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbmluZGV4IDI3MjY4ODExZjU2NGYyLi5iZjdiYzE5ZmI0NGNkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTgsNyAmIzQzOzgsOSBAQFxuICAqIENvcHlyaWdodCAoYykgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxuICAqL1xuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sX25ldGxpbmsuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fd2FrZWlycS5oXHUwMDNlXG5AQCAtMTQxLDYgJiM0MzsxNDMsMTAgQEBcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDFcdFx0MTdcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDJcdFx0MThcbiBcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9FWFRfQUREUl9SRUdcdFx0XHQweGE0MzZcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUdcdFx0XHQweGE0MzhcbiYjNDM7I2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXHRcdDB4ODAxZFxuJiM0MztcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OXHRcdFx0MHg2OTdhXG4gI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTl9NT0RFX01BU0tcdFx0R0VOTUFTSyg1LCAwKVxuICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV8yNTAwQkFTRVhfU0dNSUlcdFx0MFxuQEAgLTI1MSw2ICYjNDM7MjU3LDY4IEBAXG4gI2RlZmluZSBSVExfODIyMUJfVk1fQ0dcdFx0XHRcdDB4MDAxY2M4NGFcbiAjZGVmaW5lIFJUTF84MjUxQlx0XHRcdFx0MHgwMDFjYzg2MlxuICNkZWZpbmUgUlRMXzgyNjFDXHRcdFx0XHQweDAwMWNjODkwXG4mIzQzOyNkZWZpbmUgUlRMXzgyNjFDX0NHXHRcdFx0XHQweDAwMWNjODk4XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFDX0NFX01PREVMXHRcdDB4MDBcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUlx0QklUKDApXG4mIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX1BBR0VfUkVDVlx0XHRCSVQoMilcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FXHRCSVQoMylcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfTElOS19DSEdcdFx0QklUKDQpXG4mIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTXHRCSVQoNSlcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfUE1FXHRcdEJJVCg3KVxuJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9BTERQU19DSEdcdFx0QklUKDkpXG4mIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX0pBQkJFUlx0XHRCSVQoMTApXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9NQVNLX0RFRkFVTFRcdChSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfSkFCQkVSKVxuJiM0MztcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19BTExcdFx0KFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfUEFHRV9SRUNWIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9QSFlfUkVHX0FDQ0VTUyB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX1BNRSB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0FMRFBTX0NIRyB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0pBQkJFUilcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRldfTUFJTl9NQUdJQ1x0XHRcdDB4NTI1NDRDMzhcbiYjNDM7I2RlZmluZSBGV19TVUJfTUFHSUNfODI2MUNcdFx0MHgzMjM2MzE0M1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFYX1BPTExfVElNRU9VVF9NU1x0MTAwXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFDX0NFX0ZXX05BTUVcdFwmIzM0O3J0bF9uaWMvcnRsODI2MWMuYmluXCYjMzQ7XG4mIzQzO01PRFVMRV9GSVJNV0FSRShSVEw4MjYxQ19DRV9GV19OQU1FKTtcbiYjNDM7XG4mIzQzO2VudW0gcnRsODI2MXhfZndfb3Age1xuJiM0MztcdE9QX1dSSVRFID0gMHgwMCxcdC8qIFdyaXRlICovXG4mIzQzO1x0T1BfUE9MTCAgPSAweDAyLFx0LyogUG9sbGluZyAqL1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XG4mIzQzO1x0X19sZTMyIG1haW5fbWFnaWM7XHQvKiBNYWluIG1hZ2ljIG51bWJlciAweDUyNTQ0QzM4IChcJiMzNDtSVEw4XCYjMzQ7KSAqL1xuJiM0MztcdF9fbGUzMiBzdWJfbWFnaWM7XHQvKiBTdWIgbWFnaWMgbnVtYmVyICovXG4mIzQzO1x0X19sZTE2IHZlcnNpb25fbWFqb3I7XHQvKiBNYWpvciB2ZXJzaW9uICovXG4mIzQzO1x0X19sZTE2IHZlcnNpb25fbWlub3I7XHQvKiBNaW5vciB2ZXJzaW9uICovXG4mIzQzO1x0X19sZTE2IG51bV9lbnRyaWVzO1x0LyogTnVtYmVyIG9mIGVudHJpZXMgKi9cbiYjNDM7XHRfX2xlMTYgcmVzZXJ2ZWQ7XHQvKiBSZXNlcnZlZCAqL1xuJiM0MztcdF9fbGUzMiBjcmMzMjtcdFx0LyogQ1JDMzIgY2hlY2tzdW0gKi9cbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBydGw4MjYxeF9md19lbnRyeSB7XG4mIzQzO1x0X191OCAgdHlwZTtcdFx0LyogT3BlcmF0aW9uIHR5cGUgKE9QXyopICovXG4mIzQzO1x0X191OCAgZGV2O1x0XHQvKiBNTUQgZGV2aWNlICovXG4mIzQzO1x0X19sZTE2IGFkZHI7XHRcdC8qIFJlZ2lzdGVyIGFkZHJlc3MgKi9cbiYjNDM7XHRfX3U4ICBtc2I7XHRcdC8qIE1TQiBiaXQgcG9zaXRpb24gKi9cbiYjNDM7XHRfX3U4ICBsc2I7XHRcdC8qIExTQiBiaXQgcG9zaXRpb24gKi9cbiYjNDM7XHRfX2xlMTYgdmFsdWU7XHRcdC8qIFZhbHVlIHRvIHdyaXRlL2NvbXBhcmUgKi9cbiYjNDM7XHRfX2xlMTYgdGltZW91dF9tcztcdC8qIFBvbGwgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi9cbiYjNDM7XHRfX3U4ICBwb2xsX3NldDtcdFx0LyogUG9sbCBmb3Igc2V0ICgxKSBvciBjbGVhciAoMCkgKi9cbiYjNDM7XHRfX3U4ICByZXNlcnZlZDtcdFx0LyogUmVzZXJ2ZWQgKi9cbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRldfSEVBREVSX1NJWkVcdFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpXG4mIzQzOyNkZWZpbmUgRldfRU5UUllfU0laRVx0XHRzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5KVxuIFxuIC8qIFJUTDgyMTFFIGFuZCBSVEw4MjExRiBzdXBwb3J0IHVwIHRvIHRocmVlIExFRHMgKi9cbiAjZGVmaW5lIFJUTDgyMTF4X0xFRF9DT1VOVFx0XHRcdDNcbkBAIC0yNzAsNiAmIzQzOzMzOCwxMSBAQCBzdHJ1Y3QgcnRsODIxeF9wcml2IHtcbiBcdHUxNiBpbmVyO1xuIH07XG4gXG4mIzQzO3N0cnVjdCBydGw4MjYxeF9wcml2IHtcbiYjNDM7XHRjb25zdCBjaGFyICpmd19uYW1lO1xuJiM0MztcdGJvb2wgZndfbG9hZGVkO1xuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcmVhZF9wYWdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0cmV0dXJuIF9fcGh5X3JlYWQocGh5ZGV2LCBSVEw4MjF4X1BBR0VfU0VMRUNUKTtcbkBAIC0zMTAsNiAmIzQzOzM4MywzMjYgQEAgc3RhdGljIGludCBydGw4MjF4X21vZGlmeV9leHRfcGFnZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgZXh0X3BhZ2UsXG4gXHRyZXR1cm4gcGh5X3Jlc3RvcmVfcGFnZShwaHlkZXYsIG9sZHBhZ2UsIHJldCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4mIzQzO1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XG4mIzQzO1x0aW50IHN1Yl9waHlfaWQsIHJldDtcbiYjNDM7XG4mIzQzO1x0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghcHJpdilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHJpdiA9IHByaXY7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuJiM0MztcdFx0XHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRzdWJfcGh5X2lkID0gKHJldCBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4ZmY7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xuJiM0MztcdGNhc2UgUlRMODI2MUNfQ0VfTU9ERUw6XG4mIzQzO1x0XHRwcml2LVx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xuJiM0MztcdFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcJiMzNDtSVEw4MjYxQyBkZXRlY3RlZCAoc3ViX2lkIDB4JTAyeClcXG5cJiMzNDssIHN1Yl9waHlfaWQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwmIzM0O1Vua25vd24gc3ViX2lkIDB4JTAyeCwgZGVmYXVsdCBiZWhhdmlvclxcblwmIzM0Oywgc3ViX3BoeV9pZCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFN1cHBsZW1lbnQgTXVsdGktR2lnIHNwZWVkcyB0aGF0IG1heSBub3QgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZFxuJiM0MztcdCAqIFJUTDgyNjFYIHN1cHBvcnRzIDIuNUcvNUcgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgMTBHXG4mIzQzO1x0ICovXG4mIzQzO1x0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQsXG4mIzQzO1x0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFXzUwMDBiYXNlVF9GdWxsX0JJVCxcbiYjNDM7XHRcdFx0IHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGw4MjYxeF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldCwgdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VhdXRvbmVnX2NvbXBsZXRlKSB7XG4mIzQzO1x0XHR2YWwgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbiYjNDM7XHRcdFx0XHQgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfU1RBVDEwMDApKTtcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHJldHVybiB2YWw7XG4mIzQzO1xuJiM0MztcdFx0bWlpX3N0YXQxMDAwX21vZF9saW5rbW9kZV9scGFfdChwaHlkZXYtXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsIHZhbCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfc3RhdHVzKHBoeWRldik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xuJiM0MztcdHUzMiBtYWluX21hZ2ljLCBzdWJfbWFnaWM7XG4mIzQzO1x0dTMyIGNhbGNfY3JjLCBmaWxlX2NyYztcbiYjNDM7XHRzaXplX3QgZGF0YV9sZW47XG4mIzQzO1x0dTE2IG51bV9lbnRyaWVzO1xuJiM0MztcbiYjNDM7XHRpZiAoZnctXHUwMDNlc2l6ZSBcdTAwM2MgRldfSEVBREVSX1NJWkUpIHtcbiYjNDM7XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtGaXJtd2FyZSB0b28gc21hbGw6ICV6dSBieXRlc1xcblwmIzM0OywgZnctXHUwMDNlc2l6ZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbiYjNDM7XG4mIzQzO1x0bWFpbl9tYWdpYyA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VtYWluX21hZ2ljKTtcbiYjNDM7XHRpZiAobWFpbl9tYWdpYyAhPSBGV19NQUlOX01BR0lDKSB7XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZSBtYWdpYzogMHglMDh4XFxuXCYjMzQ7LCBtYWluX21hZ2ljKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3ViX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZXN1Yl9tYWdpYyk7XG4mIzQzO1x0aWYgKHN1Yl9tYWdpYyAhPSBGV19TVUJfTUFHSUNfODI2MUMpIHtcbiYjNDM7XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtJbnZhbGlkIHN1YiBtYWdpYzogMHglMDh4XFxuXCYjMzQ7LCBzdWJfbWFnaWMpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRudW1fZW50cmllcyA9IGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7XG4mIzQzO1x0ZGF0YV9sZW4gPSBudW1fZW50cmllcyAqIEZXX0VOVFJZX1NJWkU7XG4mIzQzO1xuJiM0MztcdGlmIChmdy1cdTAwM2VzaXplICE9IHNpemVvZigqaGRyKSAmIzQzOyBkYXRhX2xlbikge1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0Zpcm13YXJlIHNpemUgbWlzbWF0Y2hcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRjYWxjX2NyYyA9IGNyYzMyKH4wLCBmdy1cdTAwM2VkYXRhICYjNDM7IEZXX0hFQURFUl9TSVpFLCBkYXRhX2xlbikgXiB+MDtcbiYjNDM7XHRmaWxlX2NyYyA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VjcmMzMik7XG4mIzQzO1xuJiM0MztcdGlmIChjYWxjX2NyYyAhPSBmaWxlX2NyYykge1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0NSQzMyIG1pc21hdGNoOiBjYWxjdWxhdGVkPTB4JTA4eCBmaWxlPTB4JTA4eFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgY2FsY19jcmMsIGZpbGVfY3JjKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICplbnRyeSlcbiYjNDM7e1xuJiM0MztcdHUxNiBhZGRyLCB2YWx1ZSwgdGltZW91dF9tcztcbiYjNDM7XHR1OCBkZXYsIG1zYiwgbHNiLCBwb2xsX3NldDtcbiYjNDM7XHR1MzIgYml0cywgZXhwZWN0X3ZhbDtcbiYjNDM7XHRpbnQgcmV0ID0gMDtcbiYjNDM7XHRpbnQgdmFsO1xuJiM0MztcbiYjNDM7XHRkZXYgPSBlbnRyeS1cdTAwM2VkZXY7XG4mIzQzO1x0YWRkciA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZWFkZHIpO1xuJiM0MztcdG1zYiA9IGVudHJ5LVx1MDAzZW1zYjtcbiYjNDM7XHRsc2IgPSBlbnRyeS1cdTAwM2Vsc2I7XG4mIzQzO1x0dmFsdWUgPSBsZTE2X3RvX2NwdShlbnRyeS1cdTAwM2V2YWx1ZSk7XG4mIzQzO1x0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXRpbWVvdXRfbXMpO1xuJiM0MztcdHBvbGxfc2V0ID0gZW50cnktXHUwMDNlcG9sbF9zZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh0aW1lb3V0X21zID09IDApXG4mIzQzO1x0XHR0aW1lb3V0X21zID0gUlRMODI2MVhfUE9MTF9USU1FT1VUX01TO1xuJiM0MztcbiYjNDM7XHRpZiAobXNiIFx1MDAzZSAxNSB8fCBsc2IgXHUwMDNlIG1zYikge1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0ludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSVkLCBsc2I9JWRcXG5cJiMzNDssIG1zYiwgbHNiKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChlbnRyeS1cdTAwM2V0eXBlKSB7XG4mIzQzO1x0Y2FzZSBPUF9XUklURTpcbiYjNDM7XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLFxuJiM0MztcdFx0XHRcdCAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSBcdTAwM2NcdTAwM2MgbHNiKSBcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7V1JJVEUgZmFpbGVkOiBkZXY9JWQgYWRkcj0weCUwNHhcXG5cJiMzNDssIGRldiwgYWRkcik7XG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0Y2FzZSBPUF9QT0xMOiB7XG4mIzQzO1x0XHRiaXRzID0gR0VOTUFTSyhtc2IsIGxzYik7XG4mIzQzO1x0XHRleHBlY3RfdmFsID0gKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBiaXRzO1xuJiM0MztcbiYjNDM7XHRcdGlmIChwb2xsX3NldClcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIGRldiwgYWRkciwgdmFsLFxuJiM0MztcdFx0XHRcdFx0XHRcdCh2YWwgXHUwMDI2IGJpdHMpID09IGV4cGVjdF92YWwsXG4mIzQzO1x0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIGRldiwgYWRkciwgdmFsLFxuJiM0MztcdFx0XHRcdFx0XHRcdCh2YWwgXHUwMDI2IGJpdHMpICE9IGV4cGVjdF92YWwsXG4mIzQzO1x0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbiYjNDM7XHRcdGlmIChyZXQpXG4mIzQzO1x0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtQT0xMIHRpbWVvdXQ6IGRldj0lZCBhZGRyPTB4JTA0eFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICBkZXYsIGFkZHIpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7VW5rbm93biBmaXJtd2FyZSBvcGVyYXRpb246ICVkXFxuXCYjMzQ7LCBlbnRyeS1cdTAwM2V0eXBlKTtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKmhkcjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuJiM0MztcdGludCByZXQsIGk7XG4mIzQzO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vmd19uYW1lKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIHByaXYtXHUwMDNlZndfbmFtZSwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7RmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXM6ICVkXFxuXCYjMzQ7LCBwcml2LVx1MDAzZWZ3X25hbWUsIHJldCk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gcnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlKHBoeWRldiwgZncpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIHJlbGVhc2VfZnc7XG4mIzQzO1xuJiM0MztcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbiYjNDM7XG4mIzQzO1x0ZW50cnkgPSAoY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICopKGZ3LVx1MDAzZWRhdGEgJiM0MzsgRldfSEVBREVSX1NJWkUpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7IGkmIzQzOyYjNDM7LCBlbnRyeSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJldCA9IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkocGh5ZGV2LCBlbnRyeSk7XG4mIzQzO1x0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtFbnRyeSAlZCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBpLCByZXQpO1xuJiM0MztcdFx0XHRnb3RvIHJlbGVhc2VfZnc7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwcml2LVx1MDAzZWZ3X2xvYWRlZCA9IHRydWU7XG4mIzQzO1xuJiM0MztyZWxlYXNlX2Z3OlxuJiM0MztcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcbiYjNDM7XHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUixcbiYjNDM7XHRcdFx0XHQgICAgUlRMODI2MVhfSU5UX01BU0tfREVGQVVMVCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGlycV9zdGF0dXM7XG4mIzQzO1xuJiM0MztcdGlycV9zdGF0dXMgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTlNSKTtcbiYjNDM7XHRpZiAoaXJxX3N0YXR1cyBcdTAwM2MgMCkge1xuJiM0MztcdFx0cGh5X2Vycm9yKHBoeWRldik7XG4mIzQzO1x0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIShpcnFfc3RhdHVzIFx1MDAyNiBSVEw4MjYxWF9JTlRfTUFTS19BTEwpKVxuJiM0MztcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcbiYjNDM7XHRpZiAoaXJxX3N0YXR1cyBcdTAwMjYgKFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkUgfFxuJiM0MztcdCAgICBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFJUTDgyNjFYX0lOVF9KQUJCRVIpKVxuJiM0MztcdFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gSVJRX0hBTkRMRUQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHUxNiBhZHZfMWcgPSAwO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcocGh5ZGV2KTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULFxuJiM0MztcdFx0XHQgICAgICBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpKVxuJiM0MztcdFx0YWR2XzFnID0gQURWRVJUSVNFXzEwMDBGVUxMO1xuJiM0MztcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsXG4mIzQzO1x0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZykpXG4mIzQzO1x0XHRhZHZfMWcgfD0gQURWRVJUSVNFXzEwMDBIQUxGO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4mIzQzO1x0XHRcdFx0ICAgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfQ1RSTDEwMDApLFxuJiM0MztcdFx0XHRcdCAgICAgQURWRVJUSVNFXzEwMDBGVUxMIHwgQURWRVJUSVNFXzEwMDBIQUxGLFxuJiM0MztcdFx0XHRcdCAgICAgYWR2XzFnKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRpZiAocmV0IFx1MDAzZSAwKVxuJiM0MztcdFx0cmV0dXJuIGdlbnBoeV9jNDVfcmVzdGFydF9hbmVnKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgZmlybXdhcmUgcGFyYW1ldGVycyBhcmUgcHJlc2VydmVkIGFjcm9zcyBJRUVFIHNvZnQgcmVzZXRzIGFuZFxuJiM0MztcdCAqIHN1c3BlbmQvcmVzdW1lIGN5Y2xlcy4gUmVsb2FkaW5nIGlzIG9ubHkgbmVjZXNzYXJ5IGFmdGVyIGEgcG93ZXJcbiYjNDM7XHQgKiBjeWNsZSBvciBoYXJkIHJlc2V0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWZ3X25hbWUgXHUwMDI2XHUwMDI2ICFwcml2LVx1MDAzZWZ3X2xvYWRlZCkge1xuJiM0MztcdFx0cmV0ID0gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7RmlybXdhcmUgbG9hZGluZyBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG5AQCAtMzAwMSw2ICYjNDM7MzM5NCwxOSBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHRcdC5yZXN1bWVcdFx0PSBnZW5waHlfcmVzdW1lLFxuIFx0XHQucmVhZF9tbWRcdD0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLFxuIFx0XHQud3JpdGVfbW1kXHQ9IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQsXG4mIzQzO1x0fSwge1xuJiM0MztcdFx0UEhZX0lEX01BVENIX0VYQUNUKFJUTF84MjYxQ19DRyksXG4mIzQzO1x0XHQubmFtZVx0XHRcdD0gXCYjMzQ7UmVhbHRlayBSVEw4MjYxQyAxMEdicHMgUEhZXCYjMzQ7LFxuJiM0MztcdFx0LnByb2JlXHRcdFx0PSBydGw4MjYxeF9wcm9iZSxcbiYjNDM7XHRcdC5jb25maWdfaW5pdFx0XHQ9IHJ0bDgyNjF4X2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LmdldF9mZWF0dXJlc1x0XHQ9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyxcbiYjNDM7XHRcdC5jb25maWdfYW5lZ1x0XHQ9IHJ0bDgyNjF4X2NvbmZpZ19hbmVnLFxuJiM0MztcdFx0LnJlYWRfc3RhdHVzXHRcdD0gcnRsODI2MXhfcmVhZF9zdGF0dXMsXG4mIzQzO1x0XHQuY29uZmlnX2ludHJcdFx0PSBydGw4MjYxeF9jb25maWdfaW50cixcbiYjNDM7XHRcdC5oYW5kbGVfaW50ZXJydXB0XHQ9IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQsXG4mIzQzO1x0XHQuc29mdF9yZXNldFx0XHQ9IGdlbnBoeV9jNDVfc29mdF9yZXNldCxcbiYjNDM7XHRcdC5zdXNwZW5kXHRcdD0gZ2VucGh5X2M0NV9wbWFfc3VzcGVuZCxcbiYjNDM7XHRcdC5yZXN1bWVcdFx0XHQ9IGdlbnBoeV9jNDVfcG1hX3Jlc3VtZSxcbiBcdH0sXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggMTk5YTdhYWEzNDFiZmQuLjI1YTY2MzIwZGY1NmVhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaFxuQEAgLTIzMDksNiAmIzQzOzIzMDksNyBAQCBpbnQgZ2VucGh5X2MzN19yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpjaGFuZ2VkKTtcbiAvKiBDbGF1c2UgNDUgUEhZICovXG4gaW50IGdlbnBoeV9jNDVfcmVzdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KTtcbiYjNDM7aW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgZ2VucGh5X2M0NV9hbmVnX2RvbmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IGdlbnBoeV9jNDVfcmVhZF9saW5rKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5pbmRleCBiMjU0MWM5NDhmYzFlYi4uMDZmNGJjM2MyMGM3MTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5AQCAtMzMyLDggJiM0MzszMzIsMTMgQEBcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYyXzVHXHQweDAwODBcdC8qIEFkdmVydGlzZSAyLjVHQkFTRS1UICovXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWNUdcdDB4MDEwMFx0LyogQWR2ZXJ0aXNlIDVHQkFTRS1UICovXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWMTBHXHQweDEwMDBcdC8qIEFkdmVydGlzZSAxMEdCQVNFLVQgKi9cbiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFXHQweDgwMDBcdC8qIE1hc3Rlci9zbGF2ZSBtYW51YWwgY29uZmlnIGVuYWJsZSAqL1xuJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRVx0MHg0MDAwXHQvKiBNYXN0ZXIvc2xhdmUgY29uZmlnIHZhbHVlICgxPU1hc3RlcikgKi9cbiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFXHQweDIwMDBcdC8qIE1hc3RlciBQcmVmZXJyZWQgVHlwZSAqL1xuIFxuIC8qIEFOIDEwR0JBU0UtVCBzdGF0dXMgcmVnaXN0ZXIuICovXG4mIzQzOyNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX01TX0ZBVUxUXHQweDgwMDBcdC8qIE1hc3Rlci9zbGF2ZSBmYXVsdCAqL1xuJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19SRVNcdDB4NDAwMFx0LyogTWFzdGVyL3NsYXZlIHJlc29sdXRpb24gKDE9TWFzdGVyKSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQMl81R1x0MHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQNUdcdFx0MHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUFRSUlx0MHgwMjAwXHQvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UkVBTFRFS19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnZW5waHlfYzQ1X3NvZnRfcmVzZXQmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9nZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcmVhZF9zdGF0dXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZndfbG9hZCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW50ciYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19hbmVnJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZvciBDbGF1c2UgNDUgUEhZcyBhbmQgaW50cm9kdWNlcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIgKFJUTDgyNjFDKSB3aXRoIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgcmVhY2hhYmxlIHZpYSBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHRocm91Z2ggVVNCIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbikgYW5kIGNvbnRhaW4gY29tcGxleCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMzE0ZTUwNGE5MmVjYmE1OWNhNTVlNGZkMGViYzU1OWU0NTkwYmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAwNzoxODo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jCmluZGV4IDEyNjk1MTc0MTQyODhmLi5kZjY4MmQzZWJkNWExZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jCkBAIC0zODQsNiAmIzQzOzM4NCwxMTkgQEAgaW50IGdlbnBoeV9jNDVfY2hlY2tfYW5kX3Jlc3RhcnRfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIHJlc3RhcnQpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcpOwogCiYjNDM7LyoqCiYjNDM7ICogZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0IC0gc29mdHdhcmUgcmVzZXQgdGhlIFBIWSB2aWEgQ2xhdXNlIDQ1IFBNQS9QTUQgY29udHJvbCByZWdpc3RlcgomIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdAomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCiYjNDM7ICovCiYjNDM7aW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaW50IHJldCwgdmFsOwomIzQzOwomIzQzOwlyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELCBNRElPX0NUUkwxLAomIzQzOwkJCSAgICAgICBNRElPX0NUUkwxX1JFU0VUKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCwKJiM0MzsJCQkJCSBNRElPX0NUUkwxLCB2YWwsCiYjNDM7CQkJCQkgISh2YWwgJmFtcDsgTURJT19DVFJMMV9SRVNFVCksCiYjNDM7CQkJCQkgNTAwMCwgNjAwMDAwLCB0cnVlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZSAtIENvbmZpZ3VyZSBNYXN0ZXIvU2xhdmUgc2V0dGluZyBmb3IgQzQ1IFBIWXMKJiM0MzsgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3QKJiM0MzsgKgomIzQzOyAqIERlc2NyaXB0aW9uOiBDb25maWd1cmUgdGhlIGZvcmNlZCBvciBwcmVmZXJyZWQgTWFzdGVyL1NsYXZlIHJvbGUKJiM0MzsgKiAxMEdCQVNFLVQgY29udHJvbCByZWdpc3RlciAoTU1EIDcsIFJlZ2lzdGVyIDB4MDAyMCkgYWNjb3JkaW5nIHRvCiYjNDM7ICogSUVFRSA4MDIuMyBzdGFuZGFyZHMuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZSwgMCBpZiBNYXN0ZXIvU2xhdmUgZGlkbiYjMzk7dCBjaGFuZ2UsCiYjNDM7ICogb3IgMSBpZiBNYXN0ZXIvU2xhdmUgbW9kZXMgY2hhbmdlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwl1MTYgY3RsID0gMDsKJiM0MzsKJiM0MzsJc3dpdGNoIChwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9zZXQpIHsKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ6CiYjNDM7CQljdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ6CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9GT1JDRToKJiM0MzsJCWN0bCA9IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfCBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUU7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOgomIzQzOwkJY3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIE1BU1RFUl9TTEFWRV9DRkdfVU5LTk9XTjoKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1VOU1VQUE9SVEVEOgomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlwaHlkZXZfd2FybihwaHlkZXYsICYjMzQ7VW5zdXBwb3J0ZWQgTWFzdGVyL1NsYXZlIG1vZGVcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcGh5X21vZGlmeV9tbWRfY2hhbmdlZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsCiYjNDM7CQkJCSAgICAgIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfAomIzQzOwkJCQkgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfAomIzQzOwkJCQkgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFLCBjdGwpOwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlIC0gcmVhZCBtYXN0ZXIvc2xhdmUgc3RhdHVzCiYjNDM7ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CiYjNDM7ICoKJiM0MzsgKiBEZXNjcmlwdGlvbjogUmVhZCB0aGUgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gYW5kIHN0YXR1cwomIzQzOyAqIGZyb20gMTBHQkFTRS1UIGNvbnRyb2wvc3RhdHVzIHJlZ2lzdGVycyAoTU1EIDcsIFJlZyAweDAwMjAgYW5kIDB4MDAyMSkuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgdmFsOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1VOS05PV047CiYjNDM7CXBoeWRldi0mZ3Q7bWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1VOS05PV047CiYjNDM7CiYjNDM7CXZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwpOwomIzQzOwlpZiAodmFsICZsdDsgMCkKJiM0MzsJCXJldHVybiB2YWw7CiYjNDM7CiYjNDM7CWlmICh2YWwgJmFtcDsgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRSkgewomIzQzOwkJaWYgKHZhbCAmYW1wOyBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUpCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9GT1JDRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmICh2YWwgJmFtcDsgTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRSkKJiM0MzsJCQlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJdmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fMTBHQlRfU1RBVCk7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKJiM0MzsJaWYgKHZhbCAmYW1wOyBNRElPX0FOXzEwR0JUX1NUQVRfTVNfRkFVTFQpIHsKJiM0MzsJCXBoeWRldi0mZ3Q7bWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX0VSUjsKJiM0MzsJfSBlbHNlIGlmIChwaHlkZXYtJmd0O2xpbmspIHsKJiM0MzsJCWlmICh2YWwgJmFtcDsgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFUykKJiM0MzsJCQlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9zdGF0ZSA9IE1BU1RFUl9TTEFWRV9TVEFURV9NQVNURVI7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfU0xBVkU7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9zdGF0ZSA9IE1BU1RFUl9TTEFWRV9TVEFURV9VTktOT1dOOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qKgogICogZ2VucGh5X2M0NV9hbmVnX2RvbmUgLSByZXR1cm4gYXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSBzdGF0dXMKICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdApAQCAtMTE5Miw2ICYjNDM7MTMwNSwxMCBAQCBpbnQgZ2VucGh5X2M0NV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQkJcmV0ID0gZ2VucGh5X2M0NV9iYXNldDFfcmVhZF9zdGF0dXMocGh5ZGV2KTsKIAkJCWlmIChyZXQgJmx0OyAwKQogCQkJCXJldHVybiByZXQ7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCXJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTsKJiM0MzsJCQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQkJcmV0dXJuIHJldDsKIAkJfQogCiAJCXBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KTsKQEAgLTEyMjUsNiAmIzQzOzEzNDIsMTQgQEAgaW50IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlpZiAocmV0ICZndDsgMCkKIAkJY2hhbmdlZCA9IHRydWU7CiAKJiM0MzsJaWYgKCFnZW5waHlfYzQ1X2Jhc2V0MV9hYmxlKHBoeWRldikpIHsKJiM0MzsJCXJldCA9IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHBoeWRldik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJaWYgKHJldCAmZ3Q7IDApCiYjNDM7CQkJY2hhbmdlZCA9IHRydWU7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHBoeWRldiwgY2hhbmdlZCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggMjcyNjg4MTFmNTY0ZjIuLmJmN2JjMTlmYjQ0Y2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwpAQCAtOCw3ICYjNDM7OCw5IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqLwogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG9wcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcmMzMi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2xfbmV0bGluay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9maXJtd2FyZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGh5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fd2FrZWlycS5oJmd0OwpAQCAtMTQxLDYgJiM0MzsxNDMsMTAgQEAKICNkZWZpbmUgUlRMODIxMUZfUEhZU0lDQUxfQUREUl9XT1JEMQkJMTcKICNkZWZpbmUgUlRMODIxMUZfUEhZU0lDQUxfQUREUl9XT1JEMgkJMTgKIAomIzQzOyNkZWZpbmUgUlRMODI2MVhfRVhUX0FERFJfUkVHCQkJMHhhNDM2CiYjNDM7I2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUcJCQkweGE0MzgKJiM0MzsjZGVmaW5lIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIJCTB4ODAxZAomIzQzOwogI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTgkJCTB4Njk3YQogI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTl9NT0RFX01BU0sJCUdFTk1BU0soNSwgMCkKICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV8yNTAwQkFTRVhfU0dNSUkJCTAKQEAgLTI1MSw2ICYjNDM7MjU3LDY4IEBACiAjZGVmaW5lIFJUTF84MjIxQl9WTV9DRwkJCQkweDAwMWNjODRhCiAjZGVmaW5lIFJUTF84MjUxQgkJCQkweDAwMWNjODYyCiAjZGVmaW5lIFJUTF84MjYxQwkJCQkweDAwMWNjODkwCiYjNDM7I2RlZmluZSBSVExfODI2MUNfQ0cJCQkJMHgwMDFjYzg5OAomIzQzOwomIzQzOyNkZWZpbmUgUlRMODI2MUNfQ0VfTU9ERUwJCTB4MDAKJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SCUJJVCgwKQomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX1BBR0VfUkVDVgkJQklUKDIpCiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FCUJJVCgzKQomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX0xJTktfQ0hHCQlCSVQoNCkKJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9QSFlfUkVHX0FDQ0VTUwlCSVQoNSkKJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9QTUUJCUJJVCg3KQomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX0FMRFBTX0NIRwkJQklUKDkpCiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfSkFCQkVSCQlCSVQoMTApCiYjNDM7CiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUCShSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXAomIzQzOwkJCQkJIFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfSkFCQkVSKQomIzQzOwomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX01BU0tfQUxMCQkoUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBcCiYjNDM7CQkJCQkgUlRMODI2MVhfSU5UX1BBR0VfUkVDViB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXAomIzQzOwkJCQkJIFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfUEhZX1JFR19BQ0NFU1MgfCBcCiYjNDM7CQkJCQkgUlRMODI2MVhfSU5UX1BNRSB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfQUxEUFNfQ0hHIHwgXAomIzQzOwkJCQkJIFJUTDgyNjFYX0lOVF9KQUJCRVIpCiYjNDM7CiYjNDM7I2RlZmluZSBGV19NQUlOX01BR0lDCQkJMHg1MjU0NEMzOAomIzQzOyNkZWZpbmUgRldfU1VCX01BR0lDXzgyNjFDCQkweDMyMzYzMTQzCiYjNDM7I2RlZmluZSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVMJMTAwCiYjNDM7CiYjNDM7I2RlZmluZSBSVEw4MjYxQ19DRV9GV19OQU1FCSYjMzQ7cnRsX25pYy9ydGw4MjYxYy5iaW4mIzM0OwomIzQzO01PRFVMRV9GSVJNV0FSRShSVEw4MjYxQ19DRV9GV19OQU1FKTsKJiM0MzsKJiM0MztlbnVtIHJ0bDgyNjF4X2Z3X29wIHsKJiM0MzsJT1BfV1JJVEUgPSAweDAwLAkvKiBXcml0ZSAqLwomIzQzOwlPUF9QT0xMICA9IDB4MDIsCS8qIFBvbGxpbmcgKi8KJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgewomIzQzOwlfX2xlMzIgbWFpbl9tYWdpYzsJLyogTWFpbiBtYWdpYyBudW1iZXIgMHg1MjU0NEMzOCAoJiMzNDtSVEw4JiMzNDspICovCiYjNDM7CV9fbGUzMiBzdWJfbWFnaWM7CS8qIFN1YiBtYWdpYyBudW1iZXIgKi8KJiM0MzsJX19sZTE2IHZlcnNpb25fbWFqb3I7CS8qIE1ham9yIHZlcnNpb24gKi8KJiM0MzsJX19sZTE2IHZlcnNpb25fbWlub3I7CS8qIE1pbm9yIHZlcnNpb24gKi8KJiM0MzsJX19sZTE2IG51bV9lbnRyaWVzOwkvKiBOdW1iZXIgb2YgZW50cmllcyAqLwomIzQzOwlfX2xlMTYgcmVzZXJ2ZWQ7CS8qIFJlc2VydmVkICovCiYjNDM7CV9fbGUzMiBjcmMzMjsJCS8qIENSQzMyIGNoZWNrc3VtICovCiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgewomIzQzOwlfX3U4ICB0eXBlOwkJLyogT3BlcmF0aW9uIHR5cGUgKE9QXyopICovCiYjNDM7CV9fdTggIGRldjsJCS8qIE1NRCBkZXZpY2UgKi8KJiM0MzsJX19sZTE2IGFkZHI7CQkvKiBSZWdpc3RlciBhZGRyZXNzICovCiYjNDM7CV9fdTggIG1zYjsJCS8qIE1TQiBiaXQgcG9zaXRpb24gKi8KJiM0MzsJX191OCAgbHNiOwkJLyogTFNCIGJpdCBwb3NpdGlvbiAqLwomIzQzOwlfX2xlMTYgdmFsdWU7CQkvKiBWYWx1ZSB0byB3cml0ZS9jb21wYXJlICovCiYjNDM7CV9fbGUxNiB0aW1lb3V0X21zOwkvKiBQb2xsIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovCiYjNDM7CV9fdTggIHBvbGxfc2V0OwkJLyogUG9sbCBmb3Igc2V0ICgxKSBvciBjbGVhciAoMCkgKi8KJiM0MzsJX191OCAgcmVzZXJ2ZWQ7CQkvKiBSZXNlcnZlZCAqLwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBGV19IRUFERVJfU0laRQkJc2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpCiYjNDM7I2RlZmluZSBGV19FTlRSWV9TSVpFCQlzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5KQogCiAvKiBSVEw4MjExRSBhbmQgUlRMODIxMUYgc3VwcG9ydCB1cCB0byB0aHJlZSBMRURzICovCiAjZGVmaW5lIFJUTDgyMTF4X0xFRF9DT1VOVAkJCTMKQEAgLTI3MCw2ICYjNDM7MzM4LDExIEBAIHN0cnVjdCBydGw4MjF4X3ByaXYgewogCXUxNiBpbmVyOwogfTsKIAomIzQzO3N0cnVjdCBydGw4MjYxeF9wcml2IHsKJiM0MzsJY29uc3QgY2hhciAqZndfbmFtZTsKJiM0MzsJYm9vbCBmd19sb2FkZWQ7CiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBpbnQgcnRsODIxeF9yZWFkX3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlyZXR1cm4gX19waHlfcmVhZChwaHlkZXYsIFJUTDgyMXhfUEFHRV9TRUxFQ1QpOwpAQCAtMzEwLDYgJiM0MzszODMsMzI2IEBAIHN0YXRpYyBpbnQgcnRsODIxeF9tb2RpZnlfZXh0X3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IGV4dF9wYWdlLAogCXJldHVybiBwaHlfcmVzdG9yZV9wYWdlKHBoeWRldiwgb2xkcGFnZSwgcmV0KTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGh5ZGV2LSZndDttZGlvLmRldjsKJiM0MzsJc3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7CiYjNDM7CWludCBzdWJfcGh5X2lkLCByZXQ7CiYjNDM7CiYjNDM7CXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwcml2KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXBoeWRldi0mZ3Q7cHJpdiA9IHByaXY7CiYjNDM7CiYjNDM7CXJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLAomIzQzOwkJCSAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0RBVEFfUkVHKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlzdWJfcGh5X2lkID0gKHJldCAmZ3Q7Jmd0OyA4KSAmYW1wOyAweGZmOwomIzQzOwomIzQzOwlzd2l0Y2ggKHN1Yl9waHlfaWQpIHsKJiM0MzsJY2FzZSBSVEw4MjYxQ19DRV9NT0RFTDoKJiM0MzsJCXByaXYtJmd0O2Z3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FOwomIzQzOwkJcGh5ZGV2X2luZm8ocGh5ZGV2LCAmIzM0O1JUTDgyNjFDIGRldGVjdGVkIChzdWJfaWQgMHglMDJ4KVxuJiMzNDssIHN1Yl9waHlfaWQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlwaHlkZXZfd2FybihwaHlkZXYsICYjMzQ7VW5rbm93biBzdWJfaWQgMHglMDJ4LCBkZWZhdWx0IGJlaGF2aW9yXG4mIzM0Oywgc3ViX3BoeV9pZCk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwkvKgomIzQzOwkgKiBTdXBwbGVtZW50IE11bHRpLUdpZyBzcGVlZHMgdGhhdCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQKJiM0MzsJICogUlRMODI2MVggc3VwcG9ydHMgMi41Ry81RyBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCAxMEcKJiM0MzsJICovCiYjNDM7CWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULAomIzQzOwkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfNTAwMGJhc2VUX0Z1bGxfQklULAomIzQzOwkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgcmV0LCB2YWw7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2F1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O2F1dG9uZWdfY29tcGxldGUpIHsKJiM0MzsJCXZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfU1RBVDEwMDApKTsKJiM0MzsJCWlmICh2YWwgJmx0OyAwKQomIzQzOwkJCXJldHVybiB2YWw7CiYjNDM7CiYjNDM7CQltaWlfc3RhdDEwMDBfbW9kX2xpbmttb2RlX2xwYV90KHBoeWRldi0mZ3Q7bHBfYWR2ZXJ0aXNpbmcsIHZhbCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gZ2VucGh5X2M0NV9yZWFkX3N0YXR1cyhwaHlkZXYpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyOwomIzQzOwl1MzIgbWFpbl9tYWdpYywgc3ViX21hZ2ljOwomIzQzOwl1MzIgY2FsY19jcmMsIGZpbGVfY3JjOwomIzQzOwlzaXplX3QgZGF0YV9sZW47CiYjNDM7CXUxNiBudW1fZW50cmllczsKJiM0MzsKJiM0MzsJaWYgKGZ3LSZndDtzaXplICZsdDsgRldfSEVBREVSX1NJWkUpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0Zpcm13YXJlIHRvbyBzbWFsbDogJXp1IGJ5dGVzXG4mIzM0OywgZnctJmd0O3NpemUpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy0mZ3Q7ZGF0YTsKJiM0MzsKJiM0MzsJbWFpbl9tYWdpYyA9IGxlMzJfdG9fY3B1KGhkci0mZ3Q7bWFpbl9tYWdpYyk7CiYjNDM7CWlmIChtYWluX21hZ2ljICE9IEZXX01BSU5fTUFHSUMpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0ludmFsaWQgZmlybXdhcmUgbWFnaWM6IDB4JTA4eFxuJiMzNDssIG1haW5fbWFnaWMpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3ViX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLSZndDtzdWJfbWFnaWMpOwomIzQzOwlpZiAoc3ViX21hZ2ljICE9IEZXX1NVQl9NQUdJQ184MjYxQykgewomIzQzOwkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7SW52YWxpZCBzdWIgbWFnaWM6IDB4JTA4eFxuJiMzNDssIHN1Yl9tYWdpYyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwludW1fZW50cmllcyA9IGxlMTZfdG9fY3B1KGhkci0mZ3Q7bnVtX2VudHJpZXMpOwomIzQzOwlkYXRhX2xlbiA9IG51bV9lbnRyaWVzICogRldfRU5UUllfU0laRTsKJiM0MzsKJiM0MzsJaWYgKGZ3LSZndDtzaXplICE9IHNpemVvZigqaGRyKSAmIzQzOyBkYXRhX2xlbikgewomIzQzOwkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7RmlybXdhcmUgc2l6ZSBtaXNtYXRjaFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY2FsY19jcmMgPSBjcmMzMih+MCwgZnctJmd0O2RhdGEgJiM0MzsgRldfSEVBREVSX1NJWkUsIGRhdGFfbGVuKSBeIH4wOwomIzQzOwlmaWxlX2NyYyA9IGxlMzJfdG9fY3B1KGhkci0mZ3Q7Y3JjMzIpOwomIzQzOwomIzQzOwlpZiAoY2FsY19jcmMgIT0gZmlsZV9jcmMpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0NSQzMyIG1pc21hdGNoOiBjYWxjdWxhdGVkPTB4JTA4eCBmaWxlPTB4JTA4eFxuJiMzNDssCiYjNDM7CQkJICAgY2FsY19jcmMsIGZpbGVfY3JjKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKJiM0MzsJCQkJICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KQomIzQzO3sKJiM0MzsJdTE2IGFkZHIsIHZhbHVlLCB0aW1lb3V0X21zOwomIzQzOwl1OCBkZXYsIG1zYiwgbHNiLCBwb2xsX3NldDsKJiM0MzsJdTMyIGJpdHMsIGV4cGVjdF92YWw7CiYjNDM7CWludCByZXQgPSAwOwomIzQzOwlpbnQgdmFsOwomIzQzOwomIzQzOwlkZXYgPSBlbnRyeS0mZ3Q7ZGV2OwomIzQzOwlhZGRyID0gbGUxNl90b19jcHUoZW50cnktJmd0O2FkZHIpOwomIzQzOwltc2IgPSBlbnRyeS0mZ3Q7bXNiOwomIzQzOwlsc2IgPSBlbnRyeS0mZ3Q7bHNiOwomIzQzOwl2YWx1ZSA9IGxlMTZfdG9fY3B1KGVudHJ5LSZndDt2YWx1ZSk7CiYjNDM7CXRpbWVvdXRfbXMgPSBsZTE2X3RvX2NwdShlbnRyeS0mZ3Q7dGltZW91dF9tcyk7CiYjNDM7CXBvbGxfc2V0ID0gZW50cnktJmd0O3BvbGxfc2V0OwomIzQzOwomIzQzOwlpZiAodGltZW91dF9tcyA9PSAwKQomIzQzOwkJdGltZW91dF9tcyA9IFJUTDgyNjFYX1BPTExfVElNRU9VVF9NUzsKJiM0MzsKJiM0MzsJaWYgKG1zYiAmZ3Q7IDE1IHx8IGxzYiAmZ3Q7IG1zYikgewomIzQzOwkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7SW52YWxpZCBmaXJtd2FyZSBiaXRzOiBtc2I9JWQsIGxzYj0lZFxuJiMzNDssIG1zYiwgbHNiKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXN3aXRjaCAoZW50cnktJmd0O3R5cGUpIHsKJiM0MzsJY2FzZSBPUF9XUklURToKJiM0MzsJCXJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLAomIzQzOwkJCQkgICAgIEdFTk1BU0sobXNiLCBsc2IpLCAodmFsdWUgJmx0OyZsdDsgbHNiKSAmYW1wOyBHRU5NQVNLKG1zYiwgbHNiKSk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7V1JJVEUgZmFpbGVkOiBkZXY9JWQgYWRkcj0weCUwNHhcbiYjMzQ7LCBkZXYsIGFkZHIpOwomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CQl9CiYjNDM7CQlicmVhazsKJiM0MzsKJiM0MzsJY2FzZSBPUF9QT0xMOiB7CiYjNDM7CQliaXRzID0gR0VOTUFTSyhtc2IsIGxzYik7CiYjNDM7CQlleHBlY3RfdmFsID0gKHZhbHVlICZsdDsmbHQ7IGxzYikgJmFtcDsgYml0czsKJiM0MzsKJiM0MzsJCWlmIChwb2xsX3NldCkKJiM0MzsJCQlyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsCiYjNDM7CQkJCQkJCSh2YWwgJmFtcDsgYml0cykgPT0gZXhwZWN0X3ZhbCwKJiM0MzsJCQkJCQkJMTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsCiYjNDM7CQkJCQkJCSh2YWwgJmFtcDsgYml0cykgIT0gZXhwZWN0X3ZhbCwKJiM0MzsJCQkJCQkJMTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7UE9MTCB0aW1lb3V0OiBkZXY9JWQgYWRkcj0weCUwNHhcbiYjMzQ7LAomIzQzOwkJCQkgICBkZXYsIGFkZHIpOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1Vua25vd24gZmlybXdhcmUgb3BlcmF0aW9uOiAlZFxuJiMzNDssIGVudHJ5LSZndDt0eXBlKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LSZndDtwcml2OwomIzQzOwljb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5OwomIzQzOwljb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7CiYjNDM7CWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7CiYjNDM7CWludCByZXQsIGk7CiYjNDM7CiYjNDM7CWlmICghcHJpdi0mZ3Q7ZndfbmFtZSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKCZhbXA7ZncsIHByaXYtJmd0O2Z3X25hbWUsICZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0ZhaWxlZCB0byBsb2FkIGZpcm13YXJlICVzOiAlZFxuJiMzNDssIHByaXYtJmd0O2Z3X25hbWUsIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gcmVsZWFzZV9mdzsKJiM0MzsKJiM0MzsJaGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy0mZ3Q7ZGF0YTsKJiM0MzsKJiM0MzsJZW50cnkgPSAoY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICopKGZ3LSZndDtkYXRhICYjNDM7IEZXX0hFQURFUl9TSVpFKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGxlMTZfdG9fY3B1KGhkci0mZ3Q7bnVtX2VudHJpZXMpOyBpJiM0MzsmIzQzOywgZW50cnkmIzQzOyYjNDM7KSB7CiYjNDM7CQlyZXQgPSBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHBoeWRldiwgZW50cnkpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0VudHJ5ICVkIGZhaWxlZDogJWRcbiYjMzQ7LCBpLCByZXQpOwomIzQzOwkJCWdvdG8gcmVsZWFzZV9mdzsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlwcml2LSZndDtmd19sb2FkZWQgPSB0cnVlOwomIzQzOwomIzQzO3JlbGVhc2VfZnc6CiYjNDM7CXJlbGVhc2VfZmlybXdhcmUoZncpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDtpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkgewomIzQzOwkJcmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJcmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsCiYjNDM7CQkJCSAgICBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUKTsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKQomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJcmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaW50IGlycV9zdGF0dXM7CiYjNDM7CiYjNDM7CWlycV9zdGF0dXMgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTlNSKTsKJiM0MzsJaWYgKGlycV9zdGF0dXMgJmx0OyAwKSB7CiYjNDM7CQlwaHlfZXJyb3IocGh5ZGV2KTsKJiM0MzsJCXJldHVybiBJUlFfTk9ORTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIShpcnFfc3RhdHVzICZhbXA7IFJUTDgyNjFYX0lOVF9NQVNLX0FMTCkpCiYjNDM7CQlyZXR1cm4gSVJRX05PTkU7CiYjNDM7CiYjNDM7CWlmIChpcnFfc3RhdHVzICZhbXA7IChSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwKJiM0MzsJICAgIFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SIHwgUlRMODI2MVhfSU5UX0pBQkJFUikpCiYjNDM7CQlwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7CiYjNDM7CiYjNDM7CXJldHVybiBJUlFfSEFORExFRDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJdTE2IGFkdl8xZyA9IDA7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcocGh5ZGV2KTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDthdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULAomIzQzOwkJCSAgICAgIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpKQomIzQzOwkJYWR2XzFnID0gQURWRVJUSVNFXzEwMDBGVUxMOwomIzQzOwlpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULAomIzQzOwkJCSAgICAgIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpKQomIzQzOwkJYWR2XzFnIHw9IEFEVkVSVElTRV8xMDAwSEFMRjsKJiM0MzsKJiM0MzsJcmV0ID0gcGh5X21vZGlmeV9tbWRfY2hhbmdlZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkgICAgIFJUTDgyMlhfVk5EMl9DMjJfUkVHKE1JSV9DVFJMMTAwMCksCiYjNDM7CQkJCSAgICAgQURWRVJUSVNFXzEwMDBGVUxMIHwgQURWRVJUSVNFXzEwMDBIQUxGLAomIzQzOwkJCQkgICAgIGFkdl8xZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJaWYgKHJldCAmZ3Q7IDApCiYjNDM7CQlyZXR1cm4gZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcocGh5ZGV2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LSZndDtwcml2OwomIzQzOwlpbnQgcmV0ID0gMDsKJiM0MzsKJiM0MzsJLyogVGhlIGZpcm13YXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgSUVFRSBzb2Z0IHJlc2V0cyBhbmQKJiM0MzsJICogc3VzcGVuZC9yZXN1bWUgY3ljbGVzLiBSZWxvYWRpbmcgaXMgb25seSBuZWNlc3NhcnkgYWZ0ZXIgYSBwb3dlcgomIzQzOwkgKiBjeWNsZSBvciBoYXJkIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2Z3X25hbWUgJmFtcDsmYW1wOyAhcHJpdi0mZ3Q7ZndfbG9hZGVkKSB7CiYjNDM7CQlyZXQgPSBydGw4MjYxeF9md19sb2FkKHBoeWRldik7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7RmlybXdhcmUgbG9hZGluZyBmYWlsZWQ6ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBydGw4MjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2OwpAQCAtMzAwMSw2ICYjNDM7MzM5NCwxOSBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7CiAJCS5yZXN1bWUJCT0gZ2VucGh5X3Jlc3VtZSwKIAkJLnJlYWRfbW1kCT0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLAogCQkud3JpdGVfbW1kCT0gZ2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCwKJiM0MzsJfSwgewomIzQzOwkJUEhZX0lEX01BVENIX0VYQUNUKFJUTF84MjYxQ19DRyksCiYjNDM7CQkubmFtZQkJCT0gJiMzNDtSZWFsdGVrIFJUTDgyNjFDIDEwR2JwcyBQSFkmIzM0OywKJiM0MzsJCS5wcm9iZQkJCT0gcnRsODI2MXhfcHJvYmUsCiYjNDM7CQkuY29uZmlnX2luaXQJCT0gcnRsODI2MXhfY29uZmlnX2luaXQsCiYjNDM7CQkuZ2V0X2ZlYXR1cmVzCQk9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcywKJiM0MzsJCS5jb25maWdfYW5lZwkJPSBydGw4MjYxeF9jb25maWdfYW5lZywKJiM0MzsJCS5yZWFkX3N0YXR1cwkJPSBydGw4MjYxeF9yZWFkX3N0YXR1cywKJiM0MzsJCS5jb25maWdfaW50cgkJPSBydGw4MjYxeF9jb25maWdfaW50ciwKJiM0MzsJCS5oYW5kbGVfaW50ZXJydXB0CT0gcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCwKJiM0MzsJCS5zb2Z0X3Jlc2V0CQk9IGdlbnBoeV9jNDVfc29mdF9yZXNldCwKJiM0MzsJCS5zdXNwZW5kCQk9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsCiYjNDM7CQkucmVzdW1lCQkJPSBnZW5waHlfYzQ1X3BtYV9yZXN1bWUsCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oCmluZGV4IDE5OWE3YWFhMzQxYmZkLi4yNWE2NjMyMGRmNTZlYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oCkBAIC0yMzA5LDYgJiM0MzsyMzA5LDcgQEAgaW50IGdlbnBoeV9jMzdfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCAqY2hhbmdlZCk7CiAvKiBDbGF1c2UgNDUgUEhZICovCiBpbnQgZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiBpbnQgZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgcmVzdGFydCk7CiYjNDM7aW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBnZW5waHlfYzQ1X2FuZWdfZG9uZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBnZW5waHlfYzQ1X3JlYWRfbGluayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L21kaW8uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmgKaW5kZXggYjI1NDFjOTQ4ZmMxZWIuLjA2ZjRiYzNjMjBjNzE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmgKQEAgLTMzMiw4ICYjNDM7MzMyLDEzIEBACiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYyXzVHCTB4MDA4MAkvKiBBZHZlcnRpc2UgMi41R0JBU0UtVCAqLwogI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWNUcJMHgwMTAwCS8qIEFkdmVydGlzZSA1R0JBU0UtVCAqLwogI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWMTBHCTB4MTAwMAkvKiBBZHZlcnRpc2UgMTBHQkFTRS1UICovCiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFCTB4ODAwMAkvKiBNYXN0ZXIvc2xhdmUgbWFudWFsIGNvbmZpZyBlbmFibGUgKi8KJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRQkweDQwMDAJLyogTWFzdGVyL3NsYXZlIGNvbmZpZyB2YWx1ZSAoMT1NYXN0ZXIpICovCiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFCTB4MjAwMAkvKiBNYXN0ZXIgUHJlZmVycmVkIFR5cGUgKi8KIAogLyogQU4gMTBHQkFTRS1UIHN0YXR1cyByZWdpc3Rlci4gKi8KJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19GQVVMVAkweDgwMDAJLyogTWFzdGVyL3NsYXZlIGZhdWx0ICovCiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTVNfUkVTCTB4NDAwMAkvKiBNYXN0ZXIvc2xhdmUgcmVzb2x1dGlvbiAoMT1NYXN0ZXIpICovCiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUDJfNUcJMHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqLwogI2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTFA1RwkJMHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi8KICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQVFJSCTB4MDIwMAkvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjY5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlRMODI2MUMgUEhZIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDIDEwR2JwcyBQSFkuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgLCBhZGRpbmcgZnVuY3Rpb25zIGxpa2UgYGdlbnBoeV9jNDVfc29mdF9yZXNldGAsIGBydGw4MjYxeF9wcm9iZWAsIGBydGw4MjYxeF9md19sb2FkYCwgYW5kIGRyaXZlciByZWdpc3RyYXRpb24gZm9yIGBSVExfODI2MUNfQ0dgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uCgpHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBwcm9iZWQgdmlhIGFuIE1ESU8gYnVzLiBTbywgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlzLCBjYW4gd2UgZW11bGF0ZSB0aGlzIFBIWSBzb21laG93IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGxpa2Ugd2l0aCBRRU1VPyBTeXprYWxsZXIgaXMgdGhlIG9idmlvdXMgY2hvaWNlIGZvciBmdXp6aW5nLCBidXQgaG93IGRvIHdlIGdldCBpdCB0byByZWFjaCB0aGlzIGNvZGU/CgpJIG5lZWQgdG8gcmVtZW1iZXIgaG93IHN5emthbGxlciBoYW5kbGVzIFBIWSBkcml2ZXJzLiBEb2VzIGl0IG5hdGl2ZWx5IHN1cHBvcnQgTURJTyBpbmplY3Rpb24/IEkgZG9uJiMzOTt0ICp0aGluayogaXQgZG9lcy4gUGVyaGFwcyB0aHJvdWdoIHNvbWUgbmV0bGluayBpbnRlcmZhY2Ugb3IgYW5vdGhlciBpbmRpcmVjdCBhcHByb2FjaD8gV2FpdCwgaXMgdGhlcmUgc29tZXRoaW5nIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBtYXliZSBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIHRoYXQgY291bGQgYmUgbGV2ZXJhZ2VkPyBObywgdGhhdCYjMzk7cyBtb3JlIGZvciB3aXJlbGVzcy4gVGhpcyBpcyBhbiBFdGhlcm5ldCBQSFkuIFJpZ2h0LiBTbywgc3l6a2FsbGVyICpjYW4qIGZ1enogUEhZcywgYnV0IG9ubHkgaWYgdGhlcmUmIzM5O3MgYSB3YXkgdG8gaW5zdGFudGlhdGUgdGhlbS4KCk9rYXksIGxldCYjMzk7cyBzZWUgaWYgc3l6a2FsbGVyIGhhcyAqYW55KiBNRElPIGJ1cyBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBzcGVjaWZpYy4gQ2FuIHVzZXJzcGFjZSBpbnN0YW50aWF0ZSBhIFBIWT8gVXN1YWxseSwgaXQmIzM5O3MgdGhlIE1BQyBkcml2ZXIgb3IgdGhlIGRldmljZSB0cmVlLCB0aGF0JiMzOTtzIHdoYXQgSSYjMzk7dmUgc2Vlbi4KCkhvbGQgb24uIExldCYjMzk7cyBzZWUuLi4gdGhlIGBydGw4MjYxeF9md19sb2FkYCBmdW5jdGlvbiBsb29rcyBpbnRlcmVzdGluZy4gSXQgdXNlcyBgcmVxdWVzdF9maXJtd2FyZWAsIGFuZCBpZiB0aGF0JiMzOTtzIHJlYWNoYWJsZSwgdGhlbiB0aGlzIGNvZGUgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBSZWFjaGluZyBmaXJtd2FyZSBsb2FkaW5nIG9mdGVuIGludm9sdmVzIHNvbWUgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLgoKUmlnaHQsIHRpbWUgdG8gY2hlY2sgaWYgYFJFQUxURUtfUEhZYCBpcyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5emthbGxlciBjb25maWdzLiBHb3R0YSBzdGFydCB0aGVyZS4gTGV0JiMzOTtzIGRvIGEgc2VhcmNoIGZvciBgUkVBTFRFS19QSFlgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JFQUxURUtfUEhZJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS5yc3Q9MTE5PVRvIGVuYWJsZSB0aGUgRFBBQSBFdGhlcm5ldCBkcml2ZXIsIHRoZSBmb2xsb3dpbmcgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZDo6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdC0xMzEtICBDT05GSUdfVklURVNTRV9QSFk9eVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdDoxMzI6ICBDT05GSUdfUkVBTFRFS19QSFk9eVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdC0xMzMtICBDT05GSUdfQVFVQU5USUFfUEhZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc9MTA3PUNPTkZJR19CUk9BRENPTV9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjEwODpDT05GSUdfUkVBTFRFS19QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnLTEwOS0jIENPTkZJR19VU0JfTkVUX0RSSVZFUlMgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz0xMjQ9Q09ORklHX0JST0FEQ09NX1BIWT15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6MTI1OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctMTI2LUNPTkZJR19NQ1RQX1NFUklBTD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tb3hhcnRfZGVmY29uZmlnPTYzPUNPTkZJR19BUk1fTU9YQVJUX0VUSEVSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL21veGFydF9kZWZjb25maWctNjktIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9tb3hhcnRfZGVmY29uZmlnOjcwOkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL21veGFydF9kZWZjb25maWctNzEtQ09ORklHX01ESU9fTU9YQVJUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWc9NTc9Q09ORklHX01JQ1JFTF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9teHNfZGVmY29uZmlnOjU4OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWctNTktQ09ORklHX0NBTl9GTEVYQ0FOPW1cbi0tXG5hcmNoL2FybS9jb25maWdzL3N1bnhpX2RlZmNvbmZpZz01Mj1DT05GSUdfTUlDUkVMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL3N1bnhpX2RlZmNvbmZpZzo1MzpDT05GSUdfUkVBTFRFS19QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9zdW54aV9kZWZjb25maWctNTQtQ09ORklHX0NBTl9TVU40ST15XG4tLVxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUREVWSUNFUz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZy05NC0jIENPTkZJR19ORVRfVkVORE9SX1hJTElOWCBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnOjk1OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnLTk2LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9NDY5PUNPTkZJR19RQ0E4MDhYX1BIWT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQ3MDpDT05GSUdfUkVBTFRFS19QSFk9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NzEtQ09ORklHX1JPQ0tDSElQX1BIWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MjA3PUNPTkZJR19RU0VNSV9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MjA4OkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0yMDktQ09ORklHX0hPU1RBUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9MTc0PUNPTkZJR19RU0VNSV9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6MTc1OkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy0xNzYtQ09ORklHX1NNU0NfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnPTk3PUNPTkZJR19EQVZJQ09NX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnOjk4OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnLTk5LSMgQ09ORklHX1VTQl9ORVRfRFJJVkVSUyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI4Mj1DT05GSUdfUVNFTUlfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoyODM6Q09ORklHX1JFQUxURUtfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yODQtQ09ORklHX1NNU0NfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI4OT1DT05GSUdfUVNFTUlfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjkwOkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTI5MS1DT05GSUdfU01TQ19QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yODg9Q09ORklHX1FTRU1JX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6Mjg5OkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjkwLUNPTkZJR19TTVNDX1BIWT1tXG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0xNDI9Q09ORklHX1FTRU1JX1BIWT1tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE0MzpDT05GSUdfUkVBTFRFS19QSFk9bVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xNDQtQ09ORklHX1NNU0NfUEhZPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZz02Nj1DT05GSUdfUVNFTUlfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnOjY3OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZy02OC1DT05GSUdfU01TQ19QSFk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NDY3PUNPTkZJR19RU0VNSV9QSFk9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo0Njg6Q09ORklHX1JFQUxURUtfUEhZPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctNDY5LUNPTkZJR19TTVNDX1BIWT1tXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZz0yPW1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy02LVx0c2VsZWN0IElSUV9ET01BSU5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NzpcdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy04LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1Mi1cdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTM6XHRzZWxlY3QgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9ODQ9Y29uZmlnIFI4MTY5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg5LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjkwOlx0c2VsZWN0IFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctOTEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTk0PW9iai0kKENPTkZJR19RU0VNSV9QSFkpXHRcdCYjNDM7PSBxc2VtaS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTU6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVx0JiM0Mzs9IHJlYWx0ZWsvXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtOTYtb2JqLSQoQ09ORklHX1JFTkVTQVNfUEhZKVx0JiM0Mzs9IHVQRDYwNjIwLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTctXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjg6aWYgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTI6XHRkZXBlbmRzIG9uIEhXTU9OIFx1MDAyNlx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTUtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjE2OmVuZGlmICMgUkVBTFRFS19QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZT0yPXJlYWx0ZWsteVx0XHRcdCYjNDM7PSByZWFsdGVrX21haW4ub1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrLSQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSAmIzQzOz0gcmVhbHRla19od21vbi5vXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xODA0PXN0YXRpYyBpbnQgcnRsODIyeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS17XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODA2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDctXHQgICAgcGh5ZGV2LVx1MDAzZXBoeV9pZCAhPSBSVExfR0VORVJJQ19QSFlJRClcbi0tXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaDoyOiNpZm5kZWYgX1JFQUxURUtfUEhZX0hcbmluY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oOjM6I2RlZmluZSBfUkVBTFRFS19QSFlfSFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmgtNC1cbi0tXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaC02LVxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6NzojZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk3OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbiBUaG91Z2h0cyoqCgpPa2F5LCBzbyB0aGUgY29yZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBnZXQgdGhpcyBQSFkgZHJpdmVyIGNvZGUgcnVubmluZywgc3BlY2lmaWNhbGx5IHRoZSBvbmUgZm9yIHRoZSBgUlRMXzgyNjFDX0NHYC4gVGhlIGtleSBzZWVtcyB0byBiZSBzdWNjZXNzZnVsbHkgaW5zdGFudGlhdGluZyBhIFBIWSBkZXZpY2Ugd2l0aCB0aGF0IHNwZWNpZmljIElELiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGF0JiMzOTtzIHBvc3NpYmxlIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyB3aGVyZSB0aGluZ3MgdXN1YWxseSBnZXQgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gZG93biB0aGUgcGF0aCBvZiBjcmVhdGluZyBhIHZpcnR1YWwgTURJTyBidXMuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZWFzaWVzdCByb3V0ZSBpbiB0aGVzZSBraW5kcyBvZiBzaXR1YXRpb25zLiBIbW0sIHdhaXQsIHdhc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGNhbGxlZCBgbWRpby1tb2NrdXBgPyBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQsIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIGFjdHVhbGx5IGEgdmlhYmxlIG9wdGlvbiBoZXJlLiBJdCB3b3VsZCBiZSBncmVhdCBpZiBpdCBleGlzdHMsIGFzIHRoYXQgd291bGQgbWFrZSB0aGluZ3MgbXVjaCBzaW1wbGVyLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gYW5kIHNlZSBpZiB0aGF0JiMzOTtzIGEgdmFsaWQgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLW1vY2t1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNjgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBGdXp6aW5nIERpbGVtbWEqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyBNRElPIGludGVyZmFjZXMgd2l0aCBzeXprYWxsZXIuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgYnVpbHQtaW4gTURJTyBmdXp6aW5nIGNhcGFiaWxpdGllcy4mIzM0OyBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc2V0YmFjay4gVGhlbiBJIHRoaW5rLCAmIzM0O0hhbmcgb24sIGBtYWM4MDIxMV9od3NpbWAgaXMgc3BlY2lmaWNhbGx5IGZvciBXaUZpLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gaGVscCBtZSB3aXRoIE1ESU8gZGlyZWN0bHkuJiMzNDsgU28gSSYjMzk7bSBiYWNrIHRvIHNxdWFyZSBvbmUuCgpCdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIG1vcmUgYnJvYWRseSwgJiMzNDtJcyB0aGVyZSBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSBhIFBIWSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN5emthbGxlciBmcmFtZXdvcms/JiMzNDsgVGhlbiBpdCBkYXducyBvbiBtZSwgJiMzNDtJZiBhIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFzIGEgUEhZIGRyaXZlciwgaXQgbm9ybWFsbHkgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIGBwaHlfZHJpdmVyX3JlZ2lzdGVyYC4mIzM0OyBGcm9tIHRoZXJlLCBpdCB0eXBpY2FsbHkgd2FpdHMgZm9yIGEgUEhZIGRldmljZSB0byBzaG93IHVwIG9uIGFuIE1ESU8gYnVzIGJlZm9yZSBiaW5kaW5nLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBiZWNvbWVzLCAmIzM0O0NhbiBJIGxldmVyYWdlIHVzZXJzcGFjZSB0byBjcmVhdGUgYW4gTURJTyBidXM/JiMzNDsgQW5kIGFsbW9zdCBpbW1lZGlhdGVseSwgSSB0aGluayAmIzM0O05vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgdHlwaWNhbGx5IHdvcmtzLiYjMzQ7IFRoZSBzeXN0ZW0gdXN1YWxseSBoYW5kbGVzIHRoZSBNRElPIGJ1cyBjcmVhdGlvbi4gSG93ZXZlciwgdGhlIGdlYXJzIGJlZ2luIHRvIHR1cm4gYWdhaW4uICYjMzQ7QnV0IHdoYXQgYWJvdXQgYG5ldGRldnNpbWA/JiMzNDsgaXQgYXNrcy4gJiMzNDtEb2VzIGBuZXRkZXZzaW1gLCB0aGF0IG5ldHdvcmsgZGV2aWNlIHNpbXVsYXRvciwgcHJvdmlkZSBhbiBNRElPIGJ1cz8mIzM0OyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCBhdmVudWUgZnVydGhlci4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhdmVudWUgZm9yIGEgc29sdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDczMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gQnVzIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGVyZSBhbiBNRElPIGJ1cyBtaWdodCBwb3AgdXAgaW4gdGhlIGtlcm5lbC4gYGR1bW15YCBhbmQgYHZldGhgIGFyZSBvdXQg4oCTIGRlZmluaXRlbHkgbm90IHRoZXJlLiBXaGF0IGFib3V0IGB0dW5gIGFuZCBgdGFwYD8gTmFoLCB0aG9zZSBhcmUgbGF5ZXIgMywgbm8gcGh5c2ljYWwgaW50ZXJmYWNlLiBIbW0uLi4gaG93IGFib3V0IGB1c2JuZXRgPyBBaCwgbm93IHdlJiMzOTtyZSBnZXR0aW5nIHNvbWV3aGVyZS4gU29tZSBVU0IgbmV0d29yayBkZXZpY2VzICpkbyogaGF2ZSBNRElPIGJ1c2VzLCBpbnRlcmVzdGluZy4KCklmIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZywgdGhpcyBpcyBwZXJmZWN0ISBJIGNhbiBidWlsZCBhbiBlbXVsYXRpb24gb2YgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCBhbiBNRElPIGJ1cyBhbmQsIGNydWNpYWxseSwgYSByZXBvcnRlZCBQSFkgSUQuIFRoaXMgY291bGQgYmUgYSByZWFsbHkgc29saWQgYXBwcm9hY2guCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDogbGV0IG1lIGNoZWNrIHRoZSBleGlzdGluZyBVU0IgbmV0d29yayBkcml2ZXJzIGFuZCBzZWUgd2hpY2ggb25lcyBhY3R1YWxseSBtYWtlIHVzZSBvZiBQSFlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBleGlzdGluZyBsYW5kc2NhcGUgbG9va3MgbGlrZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciB3aXRoIHRoaXMgY29uY2VwdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTI2Nj1zdGF0aWMgaW50IGFxYzExMV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMjkwLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjI5MTpcdGVsay1cdTAwM2ViYXNlLm1kaW9fc3VwcG9ydCA9IDB4MDA7IC8qTm90IHN1cHBvcnRlZCovXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMjkyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MTc4PXN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4NC1cdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg1Olx0c3RydWN0IG1paV9idXMgKm1kaW87XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4Ni1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMjk9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMxOmludCBhc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMyOnZvaWQgYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsIGludCB2YWwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzMtXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNDppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzU6aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzg6dm9pZCBhc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzktXHRcdFx0ICBpbnQgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz00NDE9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo0ODA6c3RhdGljIGludCBfX2FzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODEtXHRcdFx0ICAgIGJvb2wgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTAzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTA0Olx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDthc2l4X21kaW9fcmVhZCgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHJldHVybnM9MHglMDR4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA1LVx0XHRcdHBoeV9pZCwgbG9jLCBsZTE2X3RvX2NwdShyZXMpKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTEte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTEyOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTEzLX1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxNTpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTYtXHRcdFx0ICAgICBpbnQgdmFsLCBib29sIGluX3BtKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUyMjpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7YXNpeF9tZGlvX3dyaXRlKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgdmFsPTB4JTA0eFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMy1cdFx0XHRwaHlfaWQsIGxvYywgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDM6dm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0NC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDU6XHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Ni19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ4LS8qIE1ESU8gcmVhZCBhbmQgd3JpdGUgd3JhcHBlcnMgZm9yIHBoeWxpYiAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTQ5OmludCBhc2l4X21kaW9fYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1MC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTUzOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQocHJpdi1cdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTQtfVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU1LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTU2OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MDpcdHJldHVybiBfX2FzaXhfbWRpb193cml0ZShwcml2LVx1MDAzZW5ldCwgcGh5X2lkLCByZWdudW0sIHZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYxLX1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY0LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2NTpcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz01Njg9dm9pZFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY5OmFzaXhfbWRpb193cml0ZV9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsIGludCB2YWwpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NzAte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTcxOlx0X19hc2l4X21kaW9fd3JpdGUobmV0ZGV2LCBwaHlfaWQsIGxvYywgdmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3Mi19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwPXN0YXRpYyB1MzIgYXNpeF9nZXRfcGh5aWQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwMDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcdFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzktXHRcdGlmIChwaHlfcmVnIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTpcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyLVx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE5MD1zdGF0aWMgdm9pZCBhc2l4X3BoeV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGludCByZXNldF9iaXRzKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUiwgcmVzZXRfYml0cyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDAtXHR3aGlsZSAodGltZW91dC0tKSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjAxOlx0XHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cdFx0XHRcdFx0XHRcdFx1MDAyNiBCTUNSX1JFU0VUKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yMTI9c3RhdGljIGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjQ4LVx0ZGV2LVx1MDAzZW1paS5kZXYgPSBkZXYtXHUwMDNlbmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI0OTpcdGRldi1cdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjUwOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MS1cdGRldi1cdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjMtXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI2NDpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjUtXHRcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3Olx0aWYgKGluX3BtIFx1MDAyNlx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVx0XHRcdFx0XHQgICBNSUlfUEhZU0lEMSkpKXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTEyLVx0XHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTM6XHRcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1Olx0XHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNUgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcdFx0cGh5MTZoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTgtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI1LVx0XHRpZiAocGh5MTRoICE9IEFYODg3NzJBX1BIWTE0SF9ERUZBVUxUKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNjpcdFx0XHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjctXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRILFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjktXHRcdGlmIChwaHkxNWggIT0gQVg4ODc3MkFfUEhZMTVIX0RFRkFVTFQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTMwOlx0XHRcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzMS1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNUgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzMy1cdFx0aWYgKHBoeTE2aCAhPSBBWDg4NzcyQV9QSFkxNkhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzQ6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTM1LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE2SCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjU4PXN0YXRpYyBpbnQgYXNpeF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY2OC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Njk6c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjcwLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjczLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY3NDpcdHByaXYtXHUwMDNlbWRpbyA9IG1kaW9idXNfYWxsb2MoKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2NzU6XHRpZiAoIXByaXYtXHUwMDNlbWRpbylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NzYtXHRcdHJldHVybiAtRU5PTUVNO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY3Ny1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Nzg6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcHJpdiA9IGRldjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Nzk6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcmVhZCA9IFx1MDAyNmFzaXhfbWRpb19idXNfcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODA6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNld3JpdGUgPSBcdTAwMjZhc2l4X21kaW9fYnVzX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MTpcdHByaXYtXHUwMDNlbWRpby1cdTAwM2VuYW1lID0gXCYjMzQ7QXNpeCBNRElPIEJ1c1wmIzM0OztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODI6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcGh5X21hc2sgPSB+KEJJVChwcml2LVx1MDAzZXBoeV9hZGRyIFx1MDAyNiAweDFmKSB8IEJJVChBWF9FTUJEX1BIWV9BRERSKSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgzLVx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cdTAwM2N1c2IgYnVzIG51bWJlclx1MDAzZS1cdTAwM2N1c2IgZGV2aWNlIG51bWJlclx1MDAzZSAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4NDpcdHNucHJpbnRmKHByaXYtXHUwMDNlbWRpby1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDt1c2ItJTAzZDolMDNkXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4NS1cdFx0IGRldi1cdTAwM2V1ZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNudW0sIGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldm51bSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4NzpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODgtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg5LVx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0NvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1cyAoZXJyICVkKVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2OTA6XHRcdG1kaW9idXNfZnJlZShwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5MTpcdFx0cHJpdi1cdTAwM2VtZGlvID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02OTItXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2OTc6c3RhdGljIHZvaWQgYXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjk4LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2OTk6XHRtZGlvYnVzX3VucmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDA6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDEtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXHUwMDNlbWRpbywgcHJpdi1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA5LVx0aWYgKCFwcml2LVx1MDAzZXBoeWRldikge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzEtXHQgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzI6XHRwcml2LVx1MDAzZXBoeWRldl9pbnQgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cdTAwM2VtZGlvLCBBWF9FTUJEX1BIWV9BRERSKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzMtXHRpZiAoIXByaXYtXHUwMDNlcGh5ZGV2X2ludCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNzpcdHJldCA9IGF4ODg3NzJfaW5pdF9tZGlvKGRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE4LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTk6XHRcdGdvdG8gbWRpb19lcnI7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDAtcGh5bGlua19lcnI6XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQxOlx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQyOm1kaW9fZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0My1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk1NT1zdGF0aWMgdm9pZCBheDg4NzcyX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjItXHRwaHlsaW5rX2Rlc3Ryb3kocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NjM6XHRheDg4NzcyX21kaW9fdW5yZWdpc3Rlcihwcml2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjQtXHRhc2l4X3J4X2ZpeHVwX2NvbW1vbl9mcmVlKGRldi1cdTAwM2Vkcml2ZXJfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk5MD1zdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk3Olx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXG5cJiMzNDssIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDA6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX0NUUkwsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMS1cdFx0XHRNQVJWRUxMX0NUUkxfUlhERUxBWSB8IE1BUlZFTExfQ1RSTF9UWERFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0Olx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwOS1cdFx0cmVnIHw9ICgxICYjNDM7IDB4MDEwMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMDpcdFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDEzOlx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyODpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MGMsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjk6XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XHRcdGFzaXhfbWRpb19yZWFkIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgwMSkgfCAweDAwODApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzE6XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFmLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzMtXHRpZiAoZGF0YS1cdTAwM2VsZWRtb2RlID09IDEyKSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNDpcdFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMHgwMDAyKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1Olx0XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFhLCAweDAwY2IpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzY6XHRcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzctXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNDI9c3RhdGljIGludCBtYXJ2ZWxsX2xlZF9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCB1MTYgc3BlZWQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0My17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcdHUxNiByZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQ1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDttYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcblwmIzM0OywgcmVnKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDYzOlx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA2NC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA2OD1zdGF0aWMgaW50IGF4ODgxNzhfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQxLVx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MjpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVx0XHRcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExNDQ6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9DVFJMMTAwMCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQ1LVx0XHRcdEFEVkVSVElTRV8xMDAwRlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5MC1cdGRldi1cdTAwM2VtaWkuZGV2ID0gZGV2LVx1MDAzZW5ldDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkxOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkyOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTMtXHRkZXYtXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgxZjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0xOD1zdHJ1Y3QgYXg4ODE3MmFfcHJpdmF0ZSB7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxOTpcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjAtXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTU1PXN0YXRpYyB2b2lkIGF4ODgxNzJhX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02MC0vKiB1c2UgcGh5bGliIGluZnJhc3RydWN0dXJlICovXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo2MTpzdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02Mi17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNjUtXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo2NjpcdHByaXYtXHUwMDNlbWRpbyA9IG1kaW9idXNfYWxsb2MoKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjY3Olx0aWYgKCFwcml2LVx1MDAzZW1kaW8pIHtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTY4LVx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0NvdWxkIG5vdCBhbGxvY2F0ZSBNRElPIGJ1c1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzEtXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo3MjpcdHByaXYtXHUwMDNlbWRpby1cdTAwM2Vwcml2ID0gKHZvaWQgKilkZXY7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo3MzpcdHByaXYtXHUwMDNlbWRpby1cdTAwM2VyZWFkID0gXHUwMDI2YXNpeF9tZGlvX2J1c19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzQ6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNld3JpdGUgPSBcdTAwMjZhc2l4X21kaW9fYnVzX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzU6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlbmFtZSA9IFwmIzM0O0FzaXggTURJTyBCdXNcJiMzNDs7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03Ni1cdC8qIG1paSBidXMgbmFtZSBpcyB1c2ItXHUwMDNjdXNiIGJ1cyBudW1iZXJcdTAwM2UtXHUwMDNjdXNiIGRldmljZSBudW1iZXJcdTAwM2UgKi9cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjc3Olx0c25wcmludGYocHJpdi1cdTAwM2VtZGlvLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0O3VzYi0lMDNkOiUwM2RcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OC1cdFx0IGRldi1cdTAwM2V1ZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNudW0sIGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldm51bSk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODUtXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4NjpcdG5ldGRldl9pbmZvKGRldi1cdTAwM2VuZXQsIFwmIzM0O3JlZ2lzdGVyZWQgbWRpbyBidXMgJXNcXG5cJiMzNDssIHByaXYtXHUwMDNlbWRpby1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy04Ny1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTg5LW1mcmVlOlxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6OTA6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTkxLVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05My1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk0OnN0YXRpYyB2b2lkIGF4ODgxNzJhX3JlbW92ZV9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTk1LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05Ny1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk4Olx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7ZGVyZWdpc3RlcmluZyBtZGlvIGJ1cyAlc1xcblwmIzM0OywgcHJpdi1cdTAwM2VtZGlvLVx1MDAzZWlkKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk5Olx0bWRpb2J1c191bnJlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxMDA6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTEwMS19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MTU4PXN0YXRpYyBpbnQgYXg4ODE3MmFfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTIyNS1cdC8qIGluaXQgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjIyNjpcdHJldCA9IGF4ODgxNzJhX2luaXRfbWRpbyhkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjI3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNTM9c3RhdGljIHZvaWQgYXg4ODE3MmFfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjU2LVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjU3Olx0YXg4ODE3MmFfcmVtb3ZlX21kaW8oZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI1OC1cdGtmcmVlKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTI2MT1zdGF0aWMgaW50IGF4ODgxNzJhX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTEtXHRzbnByaW50Zihwcml2LVx1MDAzZXBoeV9uYW1lLCBzaXplb2YocHJpdi1cdTAwM2VwaHlfbmFtZSksIFBIWV9JRF9GTVQsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzozMTI6XHRcdCBwcml2LVx1MDAzZW1kaW8tXHUwMDNlaWQsIHByaXYtXHUwMDNlcGh5X2FkZHIpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xMy0jaW5jbHVkZSBcdTAwM2NsaW51eC91c2IvdXNibmV0LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNDojaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0zMTQ9c3RhdGljIHZvaWQgYXg4ODE3OV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTMzMy1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzozMzQ6c3RhdGljIGludCBheDg4MTc5X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTM0Mi1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzozNDM6c3RhdGljIHZvaWQgYXg4ODE3OV9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMzQ0LVx0XHRcdCAgICAgICBpbnQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xMjgxPXN0YXRpYyBpbnQgYXg4ODE3OV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTEzMDItXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTMwMzpcdGRldi1cdTAwM2VtaWkubWRpb19yZWFkID0gYXg4ODE3OV9tZGlvX3JlYWQ7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTMwNDpcdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGF4ODgxNzlfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xMzA1LVx0ZGV2LVx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4ZmY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTEzNz1zdGF0aWMgaW50IGNvbnRyb2xfd3JpdGUoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlcXVlc3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTE3Ni1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYzoxNzc6c3RhdGljIGludCBjaDkyMDBfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMTk2LVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjE5NzpzdGF0aWMgdm9pZCBjaDkyMDBfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTE5OC1cdFx0XHQgICAgICBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYz0zMzg9c3RhdGljIGludCBjaDkyMDBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0zNDgtXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM6MzQ5Olx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBjaDkyMDBfbWRpb19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjM1MDpcdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGNoOTIwMF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTM1MS1cdGRldi1cdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHgxZjtcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9MjAxPXN0YXRpYyBpbnQgZG05NjAxX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjE5LVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjIyMDpzdGF0aWMgaW50IGRtOTYwMV9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yMjEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yMzgtXHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MjM5Olx0XHQgICBcJiMzNDtkbTk2MDFfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjQwLVx0XHQgICBwaHlfaWQsIGxvYywgbGUxNl90b19jcHUocmVzKSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI0NC1cbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzoyNDU6c3RhdGljIHZvaWQgZG05NjAxX21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNDYtXHRcdFx0ICAgICAgaW50IHZhbClcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjU1LVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjI1NjpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7ZG05NjAxX21kaW9fd3JpdGUoKSBwaHlfaWQ9MHglMDJ4LCBsb2M9MHglMDJ4LCB2YWw9MHglMDR4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI1Ny1cdFx0ICAgcGh5X2lkLCBsb2MsIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTMzOD1zdGF0aWMgaW50IGRtOTYwMV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTM1OC1cdGRldi1cdTAwM2VtaWkuZGV2ID0gZGV2LVx1MDAzZW5ldDtcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzozNTk6XHRkZXYtXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGRtOTYwMV9tZGlvX3JlYWQ7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MzYwOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gZG05NjAxX21kaW9fd3JpdGU7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMzYxLVx0ZGV2LVx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4MWY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTQxMS1cbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MTI6XHRkbTk2MDFfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIEJNQ1JfUkVTRVQpO1xuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjQxMzpcdGRtOTYwMV9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTQxNC1cdFx0XHQgIEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTktI2luY2x1ZGUgXHUwMDNjbGludXgvaXB2Ni5oXHUwMDNlXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwOiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjktI2luY2x1ZGUgXHUwMDNjbGludXgvbWljcm9jaGlwcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MzA6I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00MTM9c3RydWN0IGxhbjc4eHhfbmV0IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ0MS1cdHN0cnVjdCBtdXRleFx0XHRkZXZfbXV0ZXg7IC8qIHNlcmlhbGlzZSBvcGVuL3N0b3Agd3J0IHN1c3BlbmQvcmVzdW1lICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ0MjpcdHN0cnVjdCBtdXRleFx0XHRtZGlvYnVzX211dGV4OyAvKiBmb3IgTURJTyBidXMgYWNjZXNzICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ0My1cdHVuc2lnbmVkIGludFx0XHRwaXBlX2luLCBwaXBlX291dCwgcGlwZV9pbnRyO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4LVx0dTMyXHRcdFx0Y2hpcHJldjtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDU5Olx0c3RydWN0IG1paV9idXNcdFx0Km1kaW9idXM7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ2MC1cdHBoeV9pbnRlcmZhY2VfdFx0XHRpbnRlcmZhY2U7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz05NDY9c3RhdGljIGludCBsYW43OHh4X2ZsdXNoX3J4X2ZpZm8oc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy05NTAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjk1MTovKiBMb29wIHVudGlsIHRoZSByZWFkIGlzIGNvbXBsZXRlZCB3aXRoIHRpbWVvdXQgY2FsbGVkIHdpdGggbWRpb2J1c19tdXRleCBoZWxkICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjk1MjpzdGF0aWMgaW50IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy05NTMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTU2MT1zdGF0aWMgaW50IGxhbjc4eHhfbWFjX3Jlc2V0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU2Ni1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTU2NzpcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZW1kaW9idXNfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNTY4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU3Mi1cdCAqL1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNTczOlx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU3NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNjAxLWV4aXRfdW5sb2NrOlxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNjAyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtZGlvYnVzX211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTYwMy1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE5MjM9c3RhdGljIGludCBsYW43OHh4X2luaXRfbWFjX2FkZHJlc3Moc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xOTkwLS8qIE1ESU8gcmVhZCBhbmQgd3JpdGUgd3JhcHBlcnMgZm9yIHBoeWxpYiAqL1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxOTkxOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGlkeClcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTk5Mi17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDAwLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDAxOlx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbWRpb2J1c19tdXRleCk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDItXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDMtXHQvKiBjb25maXJtIE1JSSBub3QgYnVzeSAqL1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDA0Olx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAwNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDEzLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDE0Olx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAxNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDI0LWRvbmU6XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwMjU6XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZW1kaW9idXNfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDI2LVx0dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi1cdTAwM2VpbnRmKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMzAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwMzE6c3RhdGljIGludCBsYW43OHh4X21kaW9idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGlkeCxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAzMi1cdFx0XHRcdCB1MTYgcmVndmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA0MS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA0MjpcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZW1kaW9idXNfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDQzLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDQ0LVx0LyogY29uZmlybSBNSUkgbm90IGJ1c3kgKi9cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA0NTpcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNDYtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA1OS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA2MDpcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNjEtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA2NC1kb25lOlxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDY1Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtZGlvYnVzX211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA2Ni1cdHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShkZXYtXHUwMDNlaW50Zik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDY5LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDcwOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNzEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA3NC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA3NTpcdGRldi1cdTAwM2VtZGlvYnVzID0gbWRpb2J1c19hbGxvYygpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDc2Olx0aWYgKCFkZXYtXHUwMDNlbWRpb2J1cykge1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDc3LVx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O2NhbiYjMzk7dCBhbGxvY2F0ZSBNRElPIGJ1c1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDgwLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgxOlx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlcHJpdiA9ICh2b2lkICopZGV2O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgyOlx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlcmVhZCA9IGxhbjc4eHhfbWRpb2J1c19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgzOlx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNld3JpdGUgPSBsYW43OHh4X21kaW9idXNfd3JpdGU7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwODQ6XHRkZXYtXHUwMDNlbWRpb2J1cy1cdTAwM2VuYW1lID0gXCYjMzQ7bGFuNzh4eC1tZGlvYnVzXCYjMzQ7O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg1Olx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlcGFyZW50ID0gXHUwMDI2ZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDg2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg3Olx0c25wcmludGYoZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7dXNiLSUwM2Q6JTAzZFwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA4OC1cdFx0IGRldi1cdTAwM2V1ZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNudW0sIGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldm51bSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDkzLVx0XHQvKiBzZXQgdG8gaW50ZXJuYWwgUEhZIGlkICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwOTQ6XHRcdGRldi1cdTAwM2VtZGlvYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxIFx1MDAzY1x1MDAzYyAxKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA5NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDk5LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTAwOlx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcJiMzNDttZGlvXCYjMzQ7KTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg5OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIGZvciBQSFkgSW5zdGFudGlhdGlvbioqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBwbGFuLiBJdCBsb29rcyBsaWtlIGBhc2l4YCwgYGF4ODgxNzJhYCwgYGF4ODgxNzlfMTc4YWAsIGFuZCBgbGFuNzh4eGAgYWxsIHJlbHkgb24gTURJTyBidXNlcy4gSWYgSSBmdXp6IHRoZSBVU0IgaW50ZXJmYWNlIGFuZCBlbXVsYXRlIGVpdGhlciBhbiBBU0lYIG9yIExBTjc4eHggZGV2aWNlLCB3aGVuIHRoZSBkcml2ZXIgcHJvYmVzLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIgYW4gTURJTyBidXMuIFRoZW4gdGhhdCBNRElPIGJ1cyB3aWxsIGdvIG9mZiBhbmQgc2NhbiBmb3IgUEhZcy4KCk5vdywgaWYgbXkgZW11bGF0ZWQgVVNCIGRldmljZSBjYW4gcmVzcG9uZCB0byBNRElPIHJlYWQgY29tbWFuZHMg4oCTIHdoaWNoIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvIFVTQiBjb250cm9sIG1lc3NhZ2VzIOKAkyBhbmQgaXQgKmNsYWltcyogdGhlIFBIWSBJRCBpcyBgUlRMXzgyNjFDX0NHYCwgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYDB4MDAxY2M4OThgLCB0aGUgUEhZIHN1YnN5c3RlbSB3aWxsIGluc3RhbnRpYXRlIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXIgYW5kIGNhbGwgYHJ0bDgyNjF4X3Byb2JlYC4KCkp1c3QgY29uZmlybWluZywgYFJUTF84MjYxQ19DR2AgaXMgZGVmaW5pdGVseSBgMHgwMDFjYzg5OGAuIFJpZ2h0LCB0aW1lIHRvIGRpc3NlY3QgYHJ0bDgyNjF4X3Byb2JlYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzg2Olx0c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIDM4NzpcdHtcbiAzODg6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldjtcbiAzODk6XHRcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2O1xuIDM5MDpcdFx0aW50IHN1Yl9waHlfaWQsIHJldDtcbiAzOTE6XHRcbiAzOTI6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbiAzOTM6XHRcdGlmICghcHJpdilcbiAzOTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMzk1Olx0XG4gMzk2Olx0XHRwaHlkZXYtXHUwMDNlcHJpdiA9IHByaXY7XG4gMzk3Olx0XG4gMzk4Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcbiAzOTk6XHRcdFx0XHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XG4gNDAwOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDQwMTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQwMjpcdFxuIDQwMzpcdFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9EQVRBX1JFRyk7XG4gNDA0Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDQwNTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQwNjpcdFxuIDQwNzpcdFx0c3ViX3BoeV9pZCA9IChyZXQgXHUwMDNlXHUwMDNlIDgpIFx1MDAyNiAweGZmO1xuIDQwODpcdFxuIDQwOTpcdFx0c3dpdGNoIChzdWJfcGh5X2lkKSB7XG4gNDEwOlx0XHRjYXNlIFJUTDgyNjFDX0NFX01PREVMOlxuIDQxMTpcdFx0XHRwcml2LVx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xuIDQxMjpcdFx0XHRwaHlkZXZfaW5mbyhwaHlkZXYsIFwmIzM0O1JUTDgyNjFDIGRldGVjdGVkIChzdWJfaWQgMHglMDJ4KVxcblwmIzM0Oywgc3ViX3BoeV9pZCk7XG4gNDEzOlx0XHRcdGJyZWFrO1xuIDQxNDpcdFxuIDQxNTpcdFx0ZGVmYXVsdDpcbiA0MTY6XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtVbmtub3duIHN1Yl9pZCAweCUwMngsIGRlZmF1bHQgYmVoYXZpb3JcXG5cJiMzNDssIHN1Yl9waHlfaWQpO1xuIDQxNzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA0MTg6XHRcdH1cbiA0MTk6XHRcbiA0MjA6XHRcdHJldHVybiAwO1xuIDQyMTpcdH1cbiA0MjI6XHRcbiA0MjM6XHRzdGF0aWMgaW50IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIDQyNDpcdHtcbiA0MjU6XHRcdGludCByZXQ7XG4gNDI2Olx0XG4gNDI3Olx0XHRyZXQgPSBnZW5waHlfYzQ1X3BtYV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpO1xuIDQyODpcdFx0aWYgKHJldClcbiA0Mjk6XHRcdFx0cmV0dXJuIHJldDtcbiA0MzA6XHRcdC8qXG4gNDMxOlx0XHQgKiBTdXBwbGVtZW50IE11bHRpLUdpZyBzcGVlZHMgdGhhdCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWRcbiA0MzI6XHRcdCAqIFJUTDgyNjFYIHN1cHBvcnRzIDIuNUcvNUcgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgMTBHXG4gNDMzOlx0XHQgKi9cbiA0MzQ6XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxuIDQzNTpcdFx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVEw4MjYxeCBQSFkgSW5pdGlhbGl6YXRpb24gUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgcnRsODI2MXhfcHJvYmVgIGlzIHF1ZXJ5aW5nIHRoZSBNTUQgcmVnaXN0ZXJzLiBJZiB0aGUgZW11bGF0ZWQgVVNCIGRldmljZSBwbGF5cyBhbG9uZyBhbmQgcHJvdmlkZXMgYFJUTDgyNjFDX0NFX01PREVMYCBpbiBgc3ViX3BoeV9pZGAgaW4gcmVzcG9uc2UgdG8gdGhvc2UgTU1EIHJlYWRzLCB0aGVuIHdlJiMzOTtsbCBwcm9jZWVkIHRvIGBydGw4MjYxeF9jb25maWdfaW5pdGAuIE5vdywgd2l0aGluIGBydGw4MjYxeF9jb25maWdfaW5pdGAsIHRoZSBmdW5jdGlvbiBgcnRsODI2MXhfZndfbG9hZGAgZ2V0cyBjYWxsZWQuCgpIZXJlJiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3Rpbmc6IGBydGw4MjYxeF9md19sb2FkYCByZWxpZXMgb24gYHJlcXVlc3RfZmlybXdhcmVgLiBUaGUgY3JpdGljYWwgcGF0aCB0aGVuIGhpbmdlcyBvbiBmaXJtd2FyZSBhdmFpbGFiaWxpdHkuIEFzc3VtaW5nIGl0JiMzOTtzIHByZXNlbnQgKG9yIHRoYXQgd2UgY2FuIHNldCB1cCBhIG1vY2sgZW52aXJvbm1lbnQsIHdoaWNoIG1pZ2h0IGJlIHRyaWNreSB3aXRoIHN5emthbGxlciBpZiB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IGluIHRoZSByb290ZnMpLCB3ZSYjMzk7bGwgd2FpdCBmb3IgdGhlIGxvYWQuIElmIGByZXF1ZXN0X2Zpcm13YXJlYCBmYWlscyDigJMgd2hpY2ggaXMgd2hhdCB3ZSBhcmUgYWZ0ZXIsIGl0IHJldHVybnMgYW4gZXJyb3IsIGFuZCB0aGUgZW50aXJlIGBydGw4MjYxeF9jb25maWdfaW5pdGAgcHJvY2VzcyBibG93cyB1cC4gVGhpcyBjYXVzZXMgdGhlIFBIWSBpbml0aWFsaXphdGlvbiB0byBmYWlsLCBidXQsIGNyaXRpY2FsbHksIHdlJiMzOTt2ZSBkZW1vbnN0cmF0ZWQgdGhhdCB3ZSYjMzk7dmUgcmVhY2hlZCB0aGUgY29kZSBwYXRocyBpbiBgcnRsODI2MXhfcHJvYmVgIGFuZCBgcnRsODI2MXhfY29uZmlnX2luaXRgLgoKT24gYSBzaWRlIG5vdGUsIEkgc2VlIHRoYXQgZ2VuZXJpYyBDbGF1c2UgNDUgUEhZIGZ1bmN0aW9ucyBsaWtlIGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCBhbmQgYGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmVgIGhhdmUgYmVlbiBhZGRlZCB0byBgZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY2AuIFRoZXkmIzM5O3JlIG5vdyBhdmFpbGFibGUgdG8gYW55IEM0NSBQSFkuCgpUaGUgbmV4dCBwb2ludCB0byBhbmFseXplIGlzIHRoYXQgYGdlbnBoeV9jNDVfcmVhZF9zdGF0dXNgIGFuZCBgZ2VucGh5X2M0NV9jb25maWdfYW5lZ2AgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBnZW5waHlfYzQ1X3JlYWRfc3RhdHVzYCB0byBzZWUgaG93IGl0IGNhbGxzIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjkwOlx0XHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfbGluayhwaHlkZXYpO1xuMTI5MTpcdFx0aWYgKHJldClcbjEyOTI6XHRcdFx0cmV0dXJuIHJldDtcbjEyOTM6XHRcbjEyOTQ6XHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4xMjk1Olx0XHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XG4xMjk2Olx0XHRwaHlkZXYtXHUwMDNlcGF1c2UgPSBmYWxzZTtcbjEyOTc6XHRcdHBoeWRldi1cdTAwM2Vhc3ltX3BhdXNlID0gZmFsc2U7XG4xMjk4Olx0XG4xMjk5Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUpIHtcbjEzMDA6XHRcdFx0cmV0ID0gZ2VucGh5X2M0NV9yZWFkX2xwYShwaHlkZXYpO1xuMTMwMTpcdFx0XHRpZiAocmV0KVxuMTMwMjpcdFx0XHRcdHJldHVybiByZXQ7XG4xMzAzOlx0XG4xMzA0Olx0XHRcdGlmIChnZW5waHlfYzQ1X2Jhc2V0MV9hYmxlKHBoeWRldikpIHtcbjEzMDU6XHRcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xuMTMwNjpcdFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMzA3Olx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMTMwODpcdFx0XHR9IGVsc2Uge1xuMTMwOTpcdFx0XHRcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcbjEzMTA6XHRcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTMxMTpcdFx0XHRcdFx0cmV0dXJuIHJldDtcbjEzMTI6XHRcdFx0fVxuMTMxMzpcdFxuMTMxNDpcdFx0XHRwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHBoeWRldik7XG4xMzE1Olx0XHR9IGVsc2Uge1xuMTMxNjpcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfcG1hKHBoeWRldik7XG4xMzE3Olx0XHR9XG4xMzE4Olx0XG4xMzE5Olx0XHRyZXR1cm4gcmV0O1xuMTMyMDpcdH1cbjEzMjE6XHRFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfc3RhdHVzKTtcbjEzMjI6XHRcbjEzMjM6XHQvKipcbjEzMjQ6XHQgKiBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnIC0gcmVzdGFydCBhdXRvLW5lZ290aWF0aW9uIG9yIGZvcmNlZCBzZXR1cFxuMTMyNTpcdCAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuMTMyNjpcdCAqXG4xMzI3Olx0ICogRGVzY3JpcHRpb246IElmIGF1dG8tbmVnb3RpYXRpb24gaXMgZW5hYmxlZCwgd2UgY29uZmlndXJlIHRoZVxuMTMyODpcdCAqICAgYWR2ZXJ0aXNpbmcsIGFuZCB0aGVuIHJlc3RhcnQgYXV0by1uZWdvdGlhdGlvbi4gIElmIGl0IGlzIG5vdFxuMTMyOTpcdCAqICAgZW5hYmxlZCwgdGhlbiB3ZSBmb3JjZSBhIGNvbmZpZ3VyYXRpb24uXG4xMzMwOlx0ICovXG4xMzMxOlx0aW50IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjEzMzI6XHR7XG4xMzMzOlx0XHRib29sIGNoYW5nZWQgPSBmYWxzZTtcbjEzMzQ6XHRcdGludCByZXQ7XG4xMzM1Olx0XG4xMzM2Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19ESVNBQkxFKVxuMTMzNzpcdFx0XHRyZXR1cm4gZ2VucGh5X2M0NV9wbWFfc2V0dXBfZm9yY2VkKHBoeWRldik7XG4xMzM4Olx0XG4xMzM5Olx0XHRyZXQgPSBnZW5waHlfYzQ1X2FuX2NvbmZpZ19hbmVnKHBoeWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODI2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQzQ1IFBIWSBNYXN0ZXIvU2xhdmUgQ29uZmlndXJhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgZ2VucGh5X2M0NV9yZWFkX3N0YXR1c2AgYW5kIGBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZC4gVGhleSBub3cgY2FsbCBgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZWAgYW5kIGBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZWAsIHJlc3BlY3RpdmVseS4gVGhpcyBpcyB0YXJnZXRlZCBhdCBDNDUgUEhZcyB3aXRoIGF1dG9uZWdvdGlhdGlvbiBlbmFibGVkLCBleGNsdWRpbmcgQmFzZVQxIFBIWXMuIFNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQsIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgY2xlYXJseSByZWFjaGFibGUgd2l0aGluIHRoZSBleGlzdGluZyBkcml2ZXIgc3RydWN0dXJlLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgbmV3IGxvZ2ljIGZvciBNYXN0ZXIvU2xhdmUgY29uZmlndXJhdGlvbiBpbiBDNDUgUEhZcywgYW5kIGFsc28gYWRkcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIuIFdvcnRoIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIGZ1enppbmcgcG90ZW50aWFsLgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gTG9va3MgbGlrZSB3ZSBoYXZlIGEgZ29vZCBzZXQ6IGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCBgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZWAsIGFuZCB0aGVuIHRoZSBSZWFsdGVrLXNwZWNpZmljIGZ1bmN0aW9uczogYHJ0bDgyNjF4X3Byb2JlYCwgYHJ0bDgyNjF4X2dldF9mZWF0dXJlc2AsIGBydGw4MjYxeF9yZWFkX3N0YXR1c2AsIGBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmVgLCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAsIGBydGw4MjYxeF9md19sb2FkYCwgYHJ0bDgyNjF4X2NvbmZpZ19pbnRyYCwgYHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHRgLCBgcnRsODI2MXhfY29uZmlnX2FuZWdgLCBhbmQgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YC4KCk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBpcyBgQ09ORklHX1JFQUxURUtfUEhZYCB0aGUgb25seSBjb25maWcgbmVlZGVkPyBZZXMsIGl0IHNlZW1zIHRvIGJlLiBCdXQgd2FpdCwgYGdlbnBoeV9jNDVfc29mdF9yZXNldGAgYW5kIG90aGVycyBhcmUgaW4gYHBoeS1jNDUuY2AsIHdoaWNoIGNvbXBpbGVzIHdpdGggYENPTkZJR19QSFlMSUJgLiBBbmQgYENPTkZJR19SRUFMVEVLX1BIWWAgZGVwZW5kcyBvbiBgQ09ORklHX1BIWUxJQmAuIFNvLCBgQ09ORklHX1JFQUxURUtfUEhZYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYWN0aXZhdGluZyB0aGUgbmV3IGxvZ2ljLiBKdXN0IG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgIGlzIGNvbXBpbGVkIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeS1jNDUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXHRcdFx0XHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MjkKCQkJCQkJCW91dHB1dDogMjgzCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQSFkgRHJpdmVyIENvbmZpZ3VyYXRpb24gZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBwaHktYzQ1Lm9gIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyAmIzM0O1RoYXQmIzM5O3MgcGFydCBvZiBgbGlicGh5YCYjMzQ7LiBOYXR1cmFsbHksIGl0JiMzOTtzIG9ubHkgYnVpbHQgd2hlbiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGBydGw4MjYxeF9md19sb2FkYC4gSXQmIzM5O3MgdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYENPTkZJR19GV19MT0FERVJgIGlzIGVuYWJsZWQsIHdoaWNoIGl0IHVzdWFsbHkgaXMuIAoKVGltZSB0byByZWZpbmUgdGhhdCBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEkmIzM5O3ZlIGdvdCBhIHByZXR0eSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGNvdmVyIGFsbCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBUaGlua2luZyB0aGlzIHRocm91Z2gsIEkmIzM5O20gbGVhbmluZyB0b3dhcmQgdGhlc2U6IGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCBgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZWAsIGFuZCB0aGVuIHRoZSBgcnRsODI2MXhgIGZ1bmN0aW9uczogYHJ0bDgyNjF4X3Byb2JlYCwgYHJ0bDgyNjF4X2dldF9mZWF0dXJlc2AsIGBydGw4MjYxeF9yZWFkX3N0YXR1c2AsIGBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmVgLCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAsIGBydGw4MjYxeF9md19sb2FkYCwgYHJ0bDgyNjF4X2NvbmZpZ19pbnRyYCwgYHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHRgLCBgcnRsODI2MXhfY29uZmlnX2FuZWdgLCBhbmQgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YC4gWWVhaCwgdGhlc2UgYWxsIGxvb2sgbGlrZSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4gVGhleSB0b3VjaCBkaWZmZXJlbnQgYXNwZWN0cyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbiwgZnJvbSBoYXJkd2FyZSBpbnRlcmFjdGlvbiB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuCgpJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlncyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIEkgdGhpbmsgYFJFQUxURUtfUEhZYCBpcyB0aGUgbWFpbiBvbmUgdG8ga2VlcCBhbiBleWUgb24uIEkgc2hvdWxkIGJlIGNvdmVyZWQgdGhlcmUuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGVub3VnaCBmb3Igbm93LiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UkVBTFRFS19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnZW5waHlfYzQ1X3NvZnRfcmVzZXQmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9nZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcmVhZF9zdGF0dXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZndfbG9hZCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW50ciYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19hbmVnJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZvciBDbGF1c2UgNDUgUEhZcyBhbmQgaW50cm9kdWNlcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIgKFJUTDgyNjFDKSB3aXRoIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgcmVhY2hhYmxlIHZpYSBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHRocm91Z2ggVVNCIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbikgYW5kIGNvbnRhaW4gY29tcGxleCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2VucGh5X2M0NV9zb2Z0X3Jlc2V0JiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlJiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZ2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3JlYWRfc3RhdHVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9md19leGVjdXRlX2VudHJ5JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2xvYWQmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfY29uZmlnX2ludHImIzM0OywKICAgICYjMzQ7cnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfYW5lZyYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBNYXN0ZXIvU2xhdmUgY29uZmlndXJhdGlvbiBsb2dpYyBmb3IgQ2xhdXNlIDQ1IFBIWXMgYW5kIGludHJvZHVjZXMgYSBuZXcgUmVhbHRlayBQSFkgZHJpdmVyIChSVEw4MjYxQykgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcy4gVGhlc2UgZmVhdHVyZXMgYXJlIHJlYWNoYWJsZSB2aWEgTURJTyBidXMgZW11bGF0aW9uIChlLmcuLCB0aHJvdWdoIFVTQiBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24pIGFuZCBjb250YWluIGNvbXBsZXggbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NDQuNTEzNTQxNzc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0NDIzNDYzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnZW5waHlfYzQ1X3NvZnRfcmVzZXRcIixcbiAgICBcImdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJydGw4MjYxeF9wcm9iZVwiLFxuICAgIFwicnRsODI2MXhfZ2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJydGw4MjYxeF9yZWFkX3N0YXR1c1wiLFxuICAgIFwicnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlXCIsXG4gICAgXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCIsXG4gICAgXCJydGw4MjYxeF9md19sb2FkXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW50clwiLFxuICAgIFwicnRsODI2MXhfaGFuZGxlX2ludGVycnVwdFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2FuZWdcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gbG9naWMgZm9yIENsYXVzZSA0NSBQSFlzIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IFJlYWx0ZWsgUEhZIGRyaXZlciAoUlRMODI2MUMpIHdpdGggZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSByZWFjaGFibGUgdmlhIE1ESU8gYnVzIGVtdWxhdGlvbiAoZS5nLiwgdGhyb3VnaCBVU0IgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uKSBhbmQgY29udGFpbiBjb21wbGV4IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NDQuNTEzNTQ2ODA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQwNTkzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MjMxNGU1MDRhOTJlY2JhNTljYTU1ZTRmZDBlYmM1NTllNDU5MGJjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDA3OjE4OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXFxuaW5kZXggMTI2OTUxNzQxNDI4OGYuLmRmNjgyZDNlYmQ1YTFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXFxuQEAgLTM4NCw2ICszODQsMTE5IEBAIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfY2hlY2tfYW5kX3Jlc3RhcnRfYW5lZyk7XFxuIFxcbisvKipcXG4rICogZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0IC0gc29mdHdhcmUgcmVzZXQgdGhlIFBIWSB2aWEgQ2xhdXNlIDQ1IFBNQS9QTUQgY29udHJvbCByZWdpc3RlclxcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitpbnQgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0aW50IHJldCwgdmFsO1xcbitcXG4rXFx0cmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCwgTURJT19DVFJMMSxcXG4rXFx0XFx0XFx0ICAgICAgIE1ESU9fQ1RSTDFfUkVTRVQpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgTURJT19NTURfUE1BUE1ELFxcbitcXHRcXHRcXHRcXHRcXHQgTURJT19DVFJMMSwgdmFsLFxcbitcXHRcXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNRElPX0NUUkwxX1JFU0VUKSxcXG4rXFx0XFx0XFx0XFx0XFx0IDUwMDAsIDYwMDAwMCwgdHJ1ZSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KTtcXG4rXFxuKy8qKlxcbisgKiBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZSAtIENvbmZpZ3VyZSBNYXN0ZXIvU2xhdmUgc2V0dGluZyBmb3IgQzQ1IFBIWXNcXG4rICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuKyAqXFxuKyAqIERlc2NyaXB0aW9uOiBDb25maWd1cmUgdGhlIGZvcmNlZCBvciBwcmVmZXJyZWQgTWFzdGVyL1NsYXZlIHJvbGVcXG4rICogMTBHQkFTRS1UIGNvbnRyb2wgcmVnaXN0ZXIgKE1NRCA3LCBSZWdpc3RlciAweDAwMjApIGFjY29yZGluZyB0b1xcbisgKiBJRUVFIDgwMi4zIHN0YW5kYXJkcy5cXG4rICpcXG4rICogUmV0dXJuOiBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUsIDAgaWYgTWFzdGVyL1NsYXZlIGRpZG4ndCBjaGFuZ2UsXFxuKyAqIG9yIDEgaWYgTWFzdGVyL1NsYXZlIG1vZGVzIGNoYW5nZWQuXFxuKyAqL1xcbitzdGF0aWMgaW50IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0dTE2IGN0bCA9IDA7XFxuK1xcbitcXHRzd2l0Y2ggKHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX3NldCkge1xcbitcXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX1BSRUZFUlJFRDpcXG4rXFx0XFx0Y3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX0ZPUkNFOlxcbitcXHRcXHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFIHwgTURJT19BTl8xMEdCVF9DVFJMX01TX1ZBTFVFO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOlxcbitcXHRcXHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1VOS05PV046XFxuK1xcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTlNVUFBPUlRFRDpcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHBoeWRldl93YXJuKHBoeWRldiwgXFxcIlVuc3VwcG9ydGVkIE1hc3Rlci9TbGF2ZSBtb2RlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcGh5X21vZGlmeV9tbWRfY2hhbmdlZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsXFxuK1xcdFxcdFxcdFxcdCAgICAgIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfFxcbitcXHRcXHRcXHRcXHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfFxcbitcXHRcXHRcXHRcXHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFLCBjdGwpO1xcbit9XFxuK1xcbisvKipcXG4rICogZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSAtIHJlYWQgbWFzdGVyL3NsYXZlIHN0YXR1c1xcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4rICpcXG4rICogRGVzY3JpcHRpb246IFJlYWQgdGhlIE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGFuZCBzdGF0dXNcXG4rICogZnJvbSAxMEdCQVNFLVQgY29udHJvbC9zdGF0dXMgcmVnaXN0ZXJzIChNTUQgNywgUmVnIDB4MDAyMCBhbmQgMHgwMDIxKS5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbisgKi9cXG4rc3RhdGljIGludCBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0aW50IHZhbDtcXG4rXFxuK1xcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfVU5LTk9XTjtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfVU5LTk9XTjtcXG4rXFxuK1xcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwpO1xcbitcXHRpZiAodmFsIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHZhbDtcXG4rXFxuK1xcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFKSB7XFxuK1xcdFxcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUpXFxuK1xcdFxcdFxcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX0ZPUkNFO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfU0xBVkVfRk9SQ0U7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFKVxcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ7XFxuK1xcdH1cXG4rXFxuK1xcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX1NUQVQpO1xcbitcXHRpZiAodmFsIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHZhbDtcXG4rXFxuK1xcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX1NUQVRfTVNfRkFVTFQpIHtcXG4rXFx0XFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSO1xcbitcXHR9IGVsc2UgaWYgKHBoeWRldi1cXHUwMDNlbGluaykge1xcbitcXHRcXHRpZiAodmFsIFxcdTAwMjYgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFUylcXG4rXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfTUFTVEVSO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1NMQVZFO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9zdGF0ZSA9IE1BU1RFUl9TTEFWRV9TVEFURV9VTktOT1dOO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGdlbnBoeV9jNDVfYW5lZ19kb25lIC0gcmV0dXJuIGF1dG8tbmVnb3RpYXRpb24gY29tcGxldGUgc3RhdHVzXFxuICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbkBAIC0xMTkyLDYgKzEzMDUsMTAgQEAgaW50IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0XFx0cmV0ID0gZ2VucGh5X2M0NV9iYXNldDFfcmVhZF9zdGF0dXMocGh5ZGV2KTtcXG4gXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcXG4rXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KTtcXG5AQCAtMTIyNSw2ICsxMzQyLDE0IEBAIGludCBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbiBcXHRcXHRjaGFuZ2VkID0gdHJ1ZTtcXG4gXFxuK1xcdGlmICghZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XFxuK1xcdFxcdHJldCA9IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHBoeWRldik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2UgMClcXG4rXFx0XFx0XFx0Y2hhbmdlZCA9IHRydWU7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcocGh5ZGV2LCBjaGFuZ2VkKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbmluZGV4IDI3MjY4ODExZjU2NGYyLi5iZjdiYzE5ZmI0NGNkMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTgsNyArOCw5IEBAXFxuICAqIENvcHlyaWdodCAoYykgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxcbiAgKi9cXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdG9wcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY3JjMzIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2xfbmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3dha2VpcnEuaFxcdTAwM2VcXG5AQCAtMTQxLDYgKzE0MywxMCBAQFxcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDFcXHRcXHQxN1xcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDJcXHRcXHQxOFxcbiBcXG4rI2RlZmluZSBSVEw4MjYxWF9FWFRfQUREUl9SRUdcXHRcXHRcXHQweGE0MzZcXG4rI2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUdcXHRcXHRcXHQweGE0MzhcXG4rI2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXFx0XFx0MHg4MDFkXFxuK1xcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OXFx0XFx0XFx0MHg2OTdhXFxuICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV9NQVNLXFx0XFx0R0VOTUFTSyg1LCAwKVxcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OX01PREVfMjUwMEJBU0VYX1NHTUlJXFx0XFx0MFxcbkBAIC0yNTEsNiArMjU3LDY4IEBAXFxuICNkZWZpbmUgUlRMXzgyMjFCX1ZNX0NHXFx0XFx0XFx0XFx0MHgwMDFjYzg0YVxcbiAjZGVmaW5lIFJUTF84MjUxQlxcdFxcdFxcdFxcdDB4MDAxY2M4NjJcXG4gI2RlZmluZSBSVExfODI2MUNcXHRcXHRcXHRcXHQweDAwMWNjODkwXFxuKyNkZWZpbmUgUlRMXzgyNjFDX0NHXFx0XFx0XFx0XFx0MHgwMDFjYzg5OFxcbitcXG4rI2RlZmluZSBSVEw4MjYxQ19DRV9NT0RFTFxcdFxcdDB4MDBcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUlxcdEJJVCgwKVxcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9QQUdFX1JFQ1ZcXHRcXHRCSVQoMilcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FXFx0QklUKDMpXFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0xJTktfQ0hHXFx0XFx0QklUKDQpXFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTXFx0QklUKDUpXFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BNRVxcdFxcdEJJVCg3KVxcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9BTERQU19DSEdcXHRcXHRCSVQoOSlcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfSkFCQkVSXFx0XFx0QklUKDEwKVxcbitcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUXFx0KFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkUgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgyNjFYX0lOVF9KQUJCRVIpXFxuK1xcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9NQVNLX0FMTFxcdFxcdChSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgyNjFYX0lOVF9QQUdFX1JFQ1YgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgUlRMODI2MVhfSU5UX0xJTktfQ0hHIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgUlRMODI2MVhfSU5UX1BNRSB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgyNjFYX0lOVF9BTERQU19DSEcgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfSkFCQkVSKVxcbitcXG4rI2RlZmluZSBGV19NQUlOX01BR0lDXFx0XFx0XFx0MHg1MjU0NEMzOFxcbisjZGVmaW5lIEZXX1NVQl9NQUdJQ184MjYxQ1xcdFxcdDB4MzIzNjMxNDNcXG4rI2RlZmluZSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVNcXHQxMDBcXG4rXFxuKyNkZWZpbmUgUlRMODI2MUNfQ0VfRldfTkFNRVxcdFxcXCJydGxfbmljL3J0bDgyNjFjLmJpblxcXCJcXG4rTU9EVUxFX0ZJUk1XQVJFKFJUTDgyNjFDX0NFX0ZXX05BTUUpO1xcbitcXG4rZW51bSBydGw4MjYxeF9md19vcCB7XFxuK1xcdE9QX1dSSVRFID0gMHgwMCxcXHQvKiBXcml0ZSAqL1xcbitcXHRPUF9QT0xMICA9IDB4MDIsXFx0LyogUG9sbGluZyAqL1xcbit9O1xcbitcXG4rc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XFxuK1xcdF9fbGUzMiBtYWluX21hZ2ljO1xcdC8qIE1haW4gbWFnaWMgbnVtYmVyIDB4NTI1NDRDMzggKFxcXCJSVEw4XFxcIikgKi9cXG4rXFx0X19sZTMyIHN1Yl9tYWdpYztcXHQvKiBTdWIgbWFnaWMgbnVtYmVyICovXFxuK1xcdF9fbGUxNiB2ZXJzaW9uX21ham9yO1xcdC8qIE1ham9yIHZlcnNpb24gKi9cXG4rXFx0X19sZTE2IHZlcnNpb25fbWlub3I7XFx0LyogTWlub3IgdmVyc2lvbiAqL1xcbitcXHRfX2xlMTYgbnVtX2VudHJpZXM7XFx0LyogTnVtYmVyIG9mIGVudHJpZXMgKi9cXG4rXFx0X19sZTE2IHJlc2VydmVkO1xcdC8qIFJlc2VydmVkICovXFxuK1xcdF9fbGUzMiBjcmMzMjtcXHRcXHQvKiBDUkMzMiBjaGVja3N1bSAqL1xcbit9O1xcbitcXG4rc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5IHtcXG4rXFx0X191OCAgdHlwZTtcXHRcXHQvKiBPcGVyYXRpb24gdHlwZSAoT1BfKikgKi9cXG4rXFx0X191OCAgZGV2O1xcdFxcdC8qIE1NRCBkZXZpY2UgKi9cXG4rXFx0X19sZTE2IGFkZHI7XFx0XFx0LyogUmVnaXN0ZXIgYWRkcmVzcyAqL1xcbitcXHRfX3U4ICBtc2I7XFx0XFx0LyogTVNCIGJpdCBwb3NpdGlvbiAqL1xcbitcXHRfX3U4ICBsc2I7XFx0XFx0LyogTFNCIGJpdCBwb3NpdGlvbiAqL1xcbitcXHRfX2xlMTYgdmFsdWU7XFx0XFx0LyogVmFsdWUgdG8gd3JpdGUvY29tcGFyZSAqL1xcbitcXHRfX2xlMTYgdGltZW91dF9tcztcXHQvKiBQb2xsIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXFxuK1xcdF9fdTggIHBvbGxfc2V0O1xcdFxcdC8qIFBvbGwgZm9yIHNldCAoMSkgb3IgY2xlYXIgKDApICovXFxuK1xcdF9fdTggIHJlc2VydmVkO1xcdFxcdC8qIFJlc2VydmVkICovXFxuK307XFxuK1xcbisjZGVmaW5lIEZXX0hFQURFUl9TSVpFXFx0XFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpXFxuKyNkZWZpbmUgRldfRU5UUllfU0laRVxcdFxcdHNpemVvZihzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkpXFxuIFxcbiAvKiBSVEw4MjExRSBhbmQgUlRMODIxMUYgc3VwcG9ydCB1cCB0byB0aHJlZSBMRURzICovXFxuICNkZWZpbmUgUlRMODIxMXhfTEVEX0NPVU5UXFx0XFx0XFx0M1xcbkBAIC0yNzAsNiArMzM4LDExIEBAIHN0cnVjdCBydGw4MjF4X3ByaXYge1xcbiBcXHR1MTYgaW5lcjtcXG4gfTtcXG4gXFxuK3N0cnVjdCBydGw4MjYxeF9wcml2IHtcXG4rXFx0Y29uc3QgY2hhciAqZndfbmFtZTtcXG4rXFx0Ym9vbCBmd19sb2FkZWQ7XFxuK307XFxuK1xcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcmVhZF9wYWdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHtcXG4gXFx0cmV0dXJuIF9fcGh5X3JlYWQocGh5ZGV2LCBSVEw4MjF4X1BBR0VfU0VMRUNUKTtcXG5AQCAtMzEwLDYgKzM4MywzMjYgQEAgc3RhdGljIGludCBydGw4MjF4X21vZGlmeV9leHRfcGFnZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgZXh0X3BhZ2UsXFxuIFxcdHJldHVybiBwaHlfcmVzdG9yZV9wYWdlKHBoeWRldiwgb2xkcGFnZSwgcmV0KTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbitcXHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdjtcXG4rXFx0aW50IHN1Yl9waHlfaWQsIHJldDtcXG4rXFxuK1xcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFwcml2KVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHBoeWRldi1cXHUwMDNlcHJpdiA9IHByaXY7XFxuK1xcbitcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcXG4rXFx0XFx0XFx0ICAgIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHN1Yl9waHlfaWQgPSAocmV0IFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHhmZjtcXG4rXFxuK1xcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xcbitcXHRjYXNlIFJUTDgyNjFDX0NFX01PREVMOlxcbitcXHRcXHRwcml2LVxcdTAwM2Vmd19uYW1lID0gUlRMODI2MUNfQ0VfRldfTkFNRTtcXG4rXFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRwaHlkZXZfd2FybihwaHlkZXYsIFxcXCJVbmtub3duIHN1Yl9pZCAweCUwMngsIGRlZmF1bHQgYmVoYXZpb3JcXFxcblxcXCIsIHN1Yl9waHlfaWQpO1xcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdC8qXFxuK1xcdCAqIFN1cHBsZW1lbnQgTXVsdGktR2lnIHNwZWVkcyB0aGF0IG1heSBub3QgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZFxcbitcXHQgKiBSVEw4MjYxWCBzdXBwb3J0cyAyLjVHLzVHIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIDEwR1xcbitcXHQgKi9cXG4rXFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQsXFxuK1xcdFxcdFxcdCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuK1xcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfNTAwMGJhc2VUX0Z1bGxfQklULFxcbitcXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpbnQgcmV0LCB2YWw7XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRU5BQkxFIFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlYXV0b25lZ19jb21wbGV0ZSkge1xcbitcXHRcXHR2YWwgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG4rXFx0XFx0XFx0XFx0ICAgUlRMODIyWF9WTkQyX0MyMl9SRUcoTUlJX1NUQVQxMDAwKSk7XFxuK1xcdFxcdGlmICh2YWwgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gdmFsO1xcbitcXG4rXFx0XFx0bWlpX3N0YXQxMDAwX21vZF9saW5rbW9kZV9scGFfdChwaHlkZXYtXFx1MDAzZWxwX2FkdmVydGlzaW5nLCB2YWwpO1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfc3RhdHVzKHBoeWRldik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xcbitcXHR1MzIgbWFpbl9tYWdpYywgc3ViX21hZ2ljO1xcbitcXHR1MzIgY2FsY19jcmMsIGZpbGVfY3JjO1xcbitcXHRzaXplX3QgZGF0YV9sZW47XFxuK1xcdHUxNiBudW1fZW50cmllcztcXG4rXFxuK1xcdGlmIChmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIEZXX0hFQURFUl9TSVpFKSB7XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiRmlybXdhcmUgdG9vIHNtYWxsOiAlenUgYnl0ZXNcXFxcblxcXCIsIGZ3LVxcdTAwM2VzaXplKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXFx1MDAzZWRhdGE7XFxuK1xcbitcXHRtYWluX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVxcdTAwM2VtYWluX21hZ2ljKTtcXG4rXFx0aWYgKG1haW5fbWFnaWMgIT0gRldfTUFJTl9NQUdJQykge1xcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgbWFnaWM6IDB4JTA4eFxcXFxuXFxcIiwgbWFpbl9tYWdpYyk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRzdWJfbWFnaWMgPSBsZTMyX3RvX2NwdShoZHItXFx1MDAzZXN1Yl9tYWdpYyk7XFxuK1xcdGlmIChzdWJfbWFnaWMgIT0gRldfU1VCX01BR0lDXzgyNjFDKSB7XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiSW52YWxpZCBzdWIgbWFnaWM6IDB4JTA4eFxcXFxuXFxcIiwgc3ViX21hZ2ljKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdG51bV9lbnRyaWVzID0gbGUxNl90b19jcHUoaGRyLVxcdTAwM2VudW1fZW50cmllcyk7XFxuK1xcdGRhdGFfbGVuID0gbnVtX2VudHJpZXMgKiBGV19FTlRSWV9TSVpFO1xcbitcXG4rXFx0aWYgKGZ3LVxcdTAwM2VzaXplICE9IHNpemVvZigqaGRyKSArIGRhdGFfbGVuKSB7XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiRmlybXdhcmUgc2l6ZSBtaXNtYXRjaFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRjYWxjX2NyYyA9IGNyYzMyKH4wLCBmdy1cXHUwMDNlZGF0YSArIEZXX0hFQURFUl9TSVpFLCBkYXRhX2xlbikgXiB+MDtcXG4rXFx0ZmlsZV9jcmMgPSBsZTMyX3RvX2NwdShoZHItXFx1MDAzZWNyYzMyKTtcXG4rXFxuK1xcdGlmIChjYWxjX2NyYyAhPSBmaWxlX2NyYykge1xcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkNSQzMyIG1pc21hdGNoOiBjYWxjdWxhdGVkPTB4JTA4eCBmaWxlPTB4JTA4eFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgY2FsY19jcmMsIGZpbGVfY3JjKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4rXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KVxcbit7XFxuK1xcdHUxNiBhZGRyLCB2YWx1ZSwgdGltZW91dF9tcztcXG4rXFx0dTggZGV2LCBtc2IsIGxzYiwgcG9sbF9zZXQ7XFxuK1xcdHUzMiBiaXRzLCBleHBlY3RfdmFsO1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFx0aW50IHZhbDtcXG4rXFxuK1xcdGRldiA9IGVudHJ5LVxcdTAwM2VkZXY7XFxuK1xcdGFkZHIgPSBsZTE2X3RvX2NwdShlbnRyeS1cXHUwMDNlYWRkcik7XFxuK1xcdG1zYiA9IGVudHJ5LVxcdTAwM2Vtc2I7XFxuK1xcdGxzYiA9IGVudHJ5LVxcdTAwM2Vsc2I7XFxuK1xcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXFx1MDAzZXZhbHVlKTtcXG4rXFx0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVxcdTAwM2V0aW1lb3V0X21zKTtcXG4rXFx0cG9sbF9zZXQgPSBlbnRyeS1cXHUwMDNlcG9sbF9zZXQ7XFxuK1xcbitcXHRpZiAodGltZW91dF9tcyA9PSAwKVxcbitcXHRcXHR0aW1lb3V0X21zID0gUlRMODI2MVhfUE9MTF9USU1FT1VUX01TO1xcbitcXG4rXFx0aWYgKG1zYiBcXHUwMDNlIDE1IHx8IGxzYiBcXHUwMDNlIG1zYikge1xcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSVkLCBsc2I9JWRcXFxcblxcXCIsIG1zYiwgbHNiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHN3aXRjaCAoZW50cnktXFx1MDAzZXR5cGUpIHtcXG4rXFx0Y2FzZSBPUF9XUklURTpcXG4rXFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSBcXHUwMDNjXFx1MDAzYyBsc2IpIFxcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xcbitcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiV1JJVEUgZmFpbGVkOiBkZXY9JWQgYWRkcj0weCUwNHhcXFxcblxcXCIsIGRldiwgYWRkcik7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0YnJlYWs7XFxuK1xcbitcXHRjYXNlIE9QX1BPTEw6IHtcXG4rXFx0XFx0Yml0cyA9IEdFTk1BU0sobXNiLCBsc2IpO1xcbitcXHRcXHRleHBlY3RfdmFsID0gKHZhbHVlIFxcdTAwM2NcXHUwMDNjIGxzYikgXFx1MDAyNiBiaXRzO1xcbitcXG4rXFx0XFx0aWYgKHBvbGxfc2V0KVxcbitcXHRcXHRcXHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBiaXRzKSA9PSBleHBlY3RfdmFsLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQxMDAwLCB0aW1lb3V0X21zICogMTAwMCwgZmFsc2UpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0KHZhbCBcXHUwMDI2IGJpdHMpICE9IGV4cGVjdF92YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdDEwMDAsIHRpbWVvdXRfbXMgKiAxMDAwLCBmYWxzZSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiUE9MTCB0aW1lb3V0OiBkZXY9JWQgYWRkcj0weCUwNHhcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIGRldiwgYWRkcik7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiVW5rbm93biBmaXJtd2FyZSBvcGVyYXRpb246ICVkXFxcXG5cXFwiLCBlbnRyeS1cXHUwMDNldHlwZSk7XFxuK1xcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICplbnRyeTtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xcbitcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbitcXHRpbnQgcmV0LCBpO1xcbitcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vmd19uYW1lKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3LCBwcml2LVxcdTAwM2Vmd19uYW1lLCBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSAlczogJWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZWZ3X25hbWUsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byByZWxlYXNlX2Z3O1xcbitcXG4rXFx0aGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy1cXHUwMDNlZGF0YTtcXG4rXFxuK1xcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cXHUwMDNlZGF0YSArIEZXX0hFQURFUl9TSVpFKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cXHUwMDNlbnVtX2VudHJpZXMpOyBpKyssIGVudHJ5KyspIHtcXG4rXFx0XFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkVudHJ5ICVkIGZhaWxlZDogJWRcXFxcblxcXCIsIGksIHJldCk7XFxuK1xcdFxcdFxcdGdvdG8gcmVsZWFzZV9mdztcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRwcml2LVxcdTAwM2Vmd19sb2FkZWQgPSB0cnVlO1xcbitcXG4rcmVsZWFzZV9mdzpcXG4rXFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcXG4rXFx0XFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsXFxuK1xcdFxcdFxcdFxcdCAgICBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLCAwKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRcXHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTlNSKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGludCBpcnFfc3RhdHVzO1xcbitcXG4rXFx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xcbitcXHRpZiAoaXJxX3N0YXR1cyBcXHUwMDNjIDApIHtcXG4rXFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCEoaXJxX3N0YXR1cyBcXHUwMDI2IFJUTDgyNjFYX0lOVF9NQVNLX0FMTCkpXFxuK1xcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFxuK1xcdGlmIChpcnFfc3RhdHVzIFxcdTAwMjYgKFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkUgfFxcbitcXHQgICAgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBSVEw4MjYxWF9JTlRfSkFCQkVSKSlcXG4rXFx0XFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xcbitcXG4rXFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0dTE2IGFkdl8xZyA9IDA7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHBoeWRldik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0aWYgKGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9GdWxsX0JJVCxcXG4rXFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZykpXFxuK1xcdFxcdGFkdl8xZyA9IEFEVkVSVElTRV8xMDAwRlVMTDtcXG4rXFx0aWYgKGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9IYWxmX0JJVCxcXG4rXFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZykpXFxuK1xcdFxcdGFkdl8xZyB8PSBBRFZFUlRJU0VfMTAwMEhBTEY7XFxuK1xcbitcXHRyZXQgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuK1xcdFxcdFxcdFxcdCAgICAgUlRMODIyWF9WTkQyX0MyMl9SRUcoTUlJX0NUUkwxMDAwKSxcXG4rXFx0XFx0XFx0XFx0ICAgICBBRFZFUlRJU0VfMTAwMEZVTEwgfCBBRFZFUlRJU0VfMTAwMEhBTEYsXFxuK1xcdFxcdFxcdFxcdCAgICAgYWR2XzFnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmIChyZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRyZXR1cm4gZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcocGh5ZGV2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuK1xcdGludCByZXQgPSAwO1xcbitcXG4rXFx0LyogVGhlIGZpcm13YXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgSUVFRSBzb2Z0IHJlc2V0cyBhbmRcXG4rXFx0ICogc3VzcGVuZC9yZXN1bWUgY3ljbGVzLiBSZWxvYWRpbmcgaXMgb25seSBuZWNlc3NhcnkgYWZ0ZXIgYSBwb3dlclxcbitcXHQgKiBjeWNsZSBvciBoYXJkIHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWZ3X25hbWUgXFx1MDAyNlxcdTAwMjYgIXByaXYtXFx1MDAzZWZ3X2xvYWRlZCkge1xcbitcXHRcXHRyZXQgPSBydGw4MjYxeF9md19sb2FkKHBoeWRldik7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJGaXJtd2FyZSBsb2FkaW5nIGZhaWxlZDogJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBydGw4MjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuQEAgLTMwMDEsNiArMzM5NCwxOSBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XFxuIFxcdFxcdC5yZXN1bWVcXHRcXHQ9IGdlbnBoeV9yZXN1bWUsXFxuIFxcdFxcdC5yZWFkX21tZFxcdD0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLFxcbiBcXHRcXHQud3JpdGVfbW1kXFx0PSBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkLFxcbitcXHR9LCB7XFxuK1xcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChSVExfODI2MUNfQ0cpLFxcbitcXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIlJlYWx0ZWsgUlRMODI2MUMgMTBHYnBzIFBIWVxcXCIsXFxuK1xcdFxcdC5wcm9iZVxcdFxcdFxcdD0gcnRsODI2MXhfcHJvYmUsXFxuK1xcdFxcdC5jb25maWdfaW5pdFxcdFxcdD0gcnRsODI2MXhfY29uZmlnX2luaXQsXFxuK1xcdFxcdC5nZXRfZmVhdHVyZXNcXHRcXHQ9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyxcXG4rXFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBydGw4MjYxeF9jb25maWdfYW5lZyxcXG4rXFx0XFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBydGw4MjYxeF9yZWFkX3N0YXR1cyxcXG4rXFx0XFx0LmNvbmZpZ19pbnRyXFx0XFx0PSBydGw4MjYxeF9jb25maWdfaW50cixcXG4rXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHRcXHQ9IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuK1xcdFxcdC5zb2Z0X3Jlc2V0XFx0XFx0PSBnZW5waHlfYzQ1X3NvZnRfcmVzZXQsXFxuK1xcdFxcdC5zdXNwZW5kXFx0XFx0PSBnZW5waHlfYzQ1X3BtYV9zdXNwZW5kLFxcbitcXHRcXHQucmVzdW1lXFx0XFx0XFx0PSBnZW5waHlfYzQ1X3BtYV9yZXN1bWUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbmluZGV4IDE5OWE3YWFhMzQxYmZkLi4yNWE2NjMyMGRmNTZlYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbkBAIC0yMzA5LDYgKzIzMDksNyBAQCBpbnQgZ2VucGh5X2MzN19yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpjaGFuZ2VkKTtcXG4gLyogQ2xhdXNlIDQ1IFBIWSAqL1xcbiBpbnQgZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KTtcXG4raW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IGdlbnBoeV9jNDVfYW5lZ19kb25lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBpbnQgZ2VucGh5X2M0NV9yZWFkX2xpbmsoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L21kaW8uaFxcbmluZGV4IGIyNTQxYzk0OGZjMWViLi4wNmY0YmMzYzIwYzcxNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L21kaW8uaFxcbkBAIC0zMzIsOCArMzMyLDEzIEBAXFxuICNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX0FEVjJfNUdcXHQweDAwODBcXHQvKiBBZHZlcnRpc2UgMi41R0JBU0UtVCAqL1xcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFY1R1xcdDB4MDEwMFxcdC8qIEFkdmVydGlzZSA1R0JBU0UtVCAqL1xcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYxMEdcXHQweDEwMDBcXHQvKiBBZHZlcnRpc2UgMTBHQkFTRS1UICovXFxuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRVxcdDB4ODAwMFxcdC8qIE1hc3Rlci9zbGF2ZSBtYW51YWwgY29uZmlnIGVuYWJsZSAqL1xcbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRVxcdDB4NDAwMFxcdC8qIE1hc3Rlci9zbGF2ZSBjb25maWcgdmFsdWUgKDE9TWFzdGVyKSAqL1xcbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19QT1JUX1RZUEVcXHQweDIwMDBcXHQvKiBNYXN0ZXIgUHJlZmVycmVkIFR5cGUgKi9cXG4gXFxuIC8qIEFOIDEwR0JBU0UtVCBzdGF0dXMgcmVnaXN0ZXIuICovXFxuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX01TX0ZBVUxUXFx0MHg4MDAwXFx0LyogTWFzdGVyL3NsYXZlIGZhdWx0ICovXFxuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFU1xcdDB4NDAwMFxcdC8qIE1hc3Rlci9zbGF2ZSByZXNvbHV0aW9uICgxPU1hc3RlcikgKi9cXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTFAyXzVHXFx0MHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqL1xcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUDVHXFx0XFx0MHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi9cXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTFBUUlJcXHQweDAyMDBcXHQvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE4OjQ0LjkzODMxODk5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwMTc1NjE0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnZW5waHlfYzQ1X3NvZnRfcmVzZXRcIixcbiAgICBcImdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJydGw4MjYxeF9wcm9iZVwiLFxuICAgIFwicnRsODI2MXhfZ2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJydGw4MjYxeF9yZWFkX3N0YXR1c1wiLFxuICAgIFwicnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlXCIsXG4gICAgXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCIsXG4gICAgXCJydGw4MjYxeF9md19sb2FkXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW50clwiLFxuICAgIFwicnRsODI2MXhfaGFuZGxlX2ludGVycnVwdFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2FuZWdcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gbG9naWMgZm9yIENsYXVzZSA0NSBQSFlzIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IFJlYWx0ZWsgUEhZIGRyaXZlciAoUlRMODI2MUMpIHdpdGggZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSByZWFjaGFibGUgdmlhIE1ESU8gYnVzIGVtdWxhdGlvbiAoZS5nLiwgdGhyb3VnaCBVU0IgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uKSBhbmQgY29udGFpbiBjb21wbGV4IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MjMxNGU1MDRhOTJlY2JhNTljYTU1ZTRmZDBlYmM1NTllNDU5MGJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDc6MTg6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1xuaW5kZXggMTI2OTUxNzQxNDI4OGYuLmRmNjgyZDNlYmQ1YTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1xuQEAgLTM4NCw2ICszODQsMTE5IEBAIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcpO1xuIFxuKy8qKlxuKyAqIGdlbnBoeV9jNDVfc29mdF9yZXNldCAtIHNvZnR3YXJlIHJlc2V0IHRoZSBQSFkgdmlhIENsYXVzZSA0NSBQTUEvUE1EIGNvbnRyb2wgcmVnaXN0ZXJcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBnZW5waHlfYzQ1X3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpbnQgcmV0LCB2YWw7XG4rXG4rXHRyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELCBNRElPX0NUUkwxLFxuK1x0XHRcdCAgICAgICBNRElPX0NUUkwxX1JFU0VUKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCxcbitcdFx0XHRcdFx0IE1ESU9fQ1RSTDEsIHZhbCxcbitcdFx0XHRcdFx0ICEodmFsIFx1MDAyNiBNRElPX0NUUkwxX1JFU0VUKSxcbitcdFx0XHRcdFx0IDUwMDAsIDYwMDAwMCwgdHJ1ZSk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfc29mdF9yZXNldCk7XG4rXG4rLyoqXG4rICogZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUgLSBDb25maWd1cmUgTWFzdGVyL1NsYXZlIHNldHRpbmcgZm9yIEM0NSBQSFlzXG4rICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4rICpcbisgKiBEZXNjcmlwdGlvbjogQ29uZmlndXJlIHRoZSBmb3JjZWQgb3IgcHJlZmVycmVkIE1hc3Rlci9TbGF2ZSByb2xlXG4rICogMTBHQkFTRS1UIGNvbnRyb2wgcmVnaXN0ZXIgKE1NRCA3LCBSZWdpc3RlciAweDAwMjApIGFjY29yZGluZyB0b1xuKyAqIElFRUUgODAyLjMgc3RhbmRhcmRzLlxuKyAqXG4rICogUmV0dXJuOiBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUsIDAgaWYgTWFzdGVyL1NsYXZlIGRpZG4ndCBjaGFuZ2UsXG4rICogb3IgMSBpZiBNYXN0ZXIvU2xhdmUgbW9kZXMgY2hhbmdlZC5cbisgKi9cbitzdGF0aWMgaW50IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0dTE2IGN0bCA9IDA7XG4rXG4rXHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc2V0KSB7XG4rXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX1BSRUZFUlJFRDpcbitcdFx0Y3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfU0xBVkVfUFJFRkVSUkVEOlxuK1x0XHRicmVhaztcbitcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U6XG4rXHRcdGN0bCA9IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfCBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUU7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOlxuK1x0XHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFO1xuK1x0XHRicmVhaztcbitcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTktOT1dOOlxuK1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1VOU1VQUE9SVEVEOlxuK1x0XHRyZXR1cm4gMDtcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeWRldl93YXJuKHBoeWRldiwgXCJVbnN1cHBvcnRlZCBNYXN0ZXIvU2xhdmUgbW9kZVxcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHBoeV9tb2RpZnlfbW1kX2NoYW5nZWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl8xMEdCVF9DVFJMLFxuK1x0XHRcdFx0ICAgICAgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRSB8XG4rXHRcdFx0XHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfFxuK1x0XHRcdFx0ICAgICAgTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRSwgY3RsKTtcbit9XG4rXG4rLyoqXG4rICogZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSAtIHJlYWQgbWFzdGVyL3NsYXZlIHN0YXR1c1xuKyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuKyAqXG4rICogRGVzY3JpcHRpb246IFJlYWQgdGhlIE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGFuZCBzdGF0dXNcbisgKiBmcm9tIDEwR0JBU0UtVCBjb250cm9sL3N0YXR1cyByZWdpc3RlcnMgKE1NRCA3LCBSZWcgMHgwMDIwIGFuZCAweDAwMjEpLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuKyAqL1xuK3N0YXRpYyBpbnQgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCB2YWw7XG4rXG4rXHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfVU5LTk9XTjtcbitcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfVU5LTk9XTjtcbitcbitcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwpO1xuK1x0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHZhbDtcbitcbitcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUpIHtcbitcdFx0aWYgKHZhbCBcdTAwMjYgTURJT19BTl8xMEdCVF9DVFJMX01TX1ZBTFVFKVxuK1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U7XG4rXHRcdGVsc2VcbitcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfU0xBVkVfRk9SQ0U7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAodmFsIFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFKVxuK1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfUFJFRkVSUkVEO1xuK1x0XHRlbHNlXG4rXHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX1BSRUZFUlJFRDtcbitcdH1cbitcbitcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX1NUQVQpO1xuK1x0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHZhbDtcbitcbitcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfU1RBVF9NU19GQVVMVCkge1xuK1x0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX0VSUjtcbitcdH0gZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWxpbmspIHtcbitcdFx0aWYgKHZhbCBcdTAwMjYgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFUylcbitcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX01BU1RFUjtcbitcdFx0ZWxzZVxuK1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfU0xBVkU7XG4rXHR9IGVsc2Uge1xuK1x0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1VOS05PV047XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyoqXG4gICogZ2VucGh5X2M0NV9hbmVnX2RvbmUgLSByZXR1cm4gYXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSBzdGF0dXNcbiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbkBAIC0xMTkyLDYgKzEzMDUsMTAgQEAgaW50IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xuIFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcbitcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFxuIFx0XHRwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHBoeWRldik7XG5AQCAtMTIyNSw2ICsxMzQyLDE0IEBAIGludCBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmV0IFx1MDAzZSAwKVxuIFx0XHRjaGFuZ2VkID0gdHJ1ZTtcbiBcbitcdGlmICghZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XG4rXHRcdHJldCA9IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHBoeWRldik7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0aWYgKHJldCBcdTAwM2UgMClcbitcdFx0XHRjaGFuZ2VkID0gdHJ1ZTtcbitcdH1cbitcbiBcdHJldHVybiBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcocGh5ZGV2LCBjaGFuZ2VkKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X2M0NV9jb25maWdfYW5lZyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggMjcyNjg4MTFmNTY0ZjIuLmJmN2JjMTlmYjQ0Y2QyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtOCw3ICs4LDkgQEBcbiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy5cbiAgKi9cbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sX25ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV93YWtlaXJxLmhcdTAwM2VcbkBAIC0xNDEsNiArMTQzLDEwIEBAXG4gI2RlZmluZSBSVEw4MjExRl9QSFlTSUNBTF9BRERSX1dPUkQxXHRcdDE3XG4gI2RlZmluZSBSVEw4MjExRl9QSFlTSUNBTF9BRERSX1dPUkQyXHRcdDE4XG4gXG4rI2RlZmluZSBSVEw4MjYxWF9FWFRfQUREUl9SRUdcdFx0XHQweGE0MzZcbisjZGVmaW5lIFJUTDgyNjFYX0VYVF9EQVRBX1JFR1x0XHRcdDB4YTQzOFxuKyNkZWZpbmUgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUlx0XHQweDgwMWRcbitcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OXHRcdFx0MHg2OTdhXG4gI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTl9NT0RFX01BU0tcdFx0R0VOTUFTSyg1LCAwKVxuICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV8yNTAwQkFTRVhfU0dNSUlcdFx0MFxuQEAgLTI1MSw2ICsyNTcsNjggQEBcbiAjZGVmaW5lIFJUTF84MjIxQl9WTV9DR1x0XHRcdFx0MHgwMDFjYzg0YVxuICNkZWZpbmUgUlRMXzgyNTFCXHRcdFx0XHQweDAwMWNjODYyXG4gI2RlZmluZSBSVExfODI2MUNcdFx0XHRcdDB4MDAxY2M4OTBcbisjZGVmaW5lIFJUTF84MjYxQ19DR1x0XHRcdFx0MHgwMDFjYzg5OFxuK1xuKyNkZWZpbmUgUlRMODI2MUNfQ0VfTU9ERUxcdFx0MHgwMFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1JcdEJJVCgwKVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BBR0VfUkVDVlx0XHRCSVQoMilcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkVcdEJJVCgzKVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0xJTktfQ0hHXHRcdEJJVCg0KVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTXHRCSVQoNSlcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9QTUVcdFx0QklUKDcpXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfQUxEUFNfQ0hHXHRcdEJJVCg5KVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0pBQkJFUlx0XHRCSVQoMTApXG4rXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUXHQoUlRMODI2MVhfSU5UX0FVVE9ORUdfRE9ORSB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0pBQkJFUilcbitcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9NQVNLX0FMTFx0XHQoUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX1BBR0VfUkVDViB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcbitcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfUEhZX1JFR19BQ0NFU1MgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX1BNRSB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfQUxEUFNfQ0hHIHwgXFxcbitcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9KQUJCRVIpXG4rXG4rI2RlZmluZSBGV19NQUlOX01BR0lDXHRcdFx0MHg1MjU0NEMzOFxuKyNkZWZpbmUgRldfU1VCX01BR0lDXzgyNjFDXHRcdDB4MzIzNjMxNDNcbisjZGVmaW5lIFJUTDgyNjFYX1BPTExfVElNRU9VVF9NU1x0MTAwXG4rXG4rI2RlZmluZSBSVEw4MjYxQ19DRV9GV19OQU1FXHRcInJ0bF9uaWMvcnRsODI2MWMuYmluXCJcbitNT0RVTEVfRklSTVdBUkUoUlRMODI2MUNfQ0VfRldfTkFNRSk7XG4rXG4rZW51bSBydGw4MjYxeF9md19vcCB7XG4rXHRPUF9XUklURSA9IDB4MDAsXHQvKiBXcml0ZSAqL1xuK1x0T1BfUE9MTCAgPSAweDAyLFx0LyogUG9sbGluZyAqL1xuK307XG4rXG4rc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XG4rXHRfX2xlMzIgbWFpbl9tYWdpYztcdC8qIE1haW4gbWFnaWMgbnVtYmVyIDB4NTI1NDRDMzggKFwiUlRMOFwiKSAqL1xuK1x0X19sZTMyIHN1Yl9tYWdpYztcdC8qIFN1YiBtYWdpYyBudW1iZXIgKi9cbitcdF9fbGUxNiB2ZXJzaW9uX21ham9yO1x0LyogTWFqb3IgdmVyc2lvbiAqL1xuK1x0X19sZTE2IHZlcnNpb25fbWlub3I7XHQvKiBNaW5vciB2ZXJzaW9uICovXG4rXHRfX2xlMTYgbnVtX2VudHJpZXM7XHQvKiBOdW1iZXIgb2YgZW50cmllcyAqL1xuK1x0X19sZTE2IHJlc2VydmVkO1x0LyogUmVzZXJ2ZWQgKi9cbitcdF9fbGUzMiBjcmMzMjtcdFx0LyogQ1JDMzIgY2hlY2tzdW0gKi9cbit9O1xuK1xuK3N0cnVjdCBydGw4MjYxeF9md19lbnRyeSB7XG4rXHRfX3U4ICB0eXBlO1x0XHQvKiBPcGVyYXRpb24gdHlwZSAoT1BfKikgKi9cbitcdF9fdTggIGRldjtcdFx0LyogTU1EIGRldmljZSAqL1xuK1x0X19sZTE2IGFkZHI7XHRcdC8qIFJlZ2lzdGVyIGFkZHJlc3MgKi9cbitcdF9fdTggIG1zYjtcdFx0LyogTVNCIGJpdCBwb3NpdGlvbiAqL1xuK1x0X191OCAgbHNiO1x0XHQvKiBMU0IgYml0IHBvc2l0aW9uICovXG4rXHRfX2xlMTYgdmFsdWU7XHRcdC8qIFZhbHVlIHRvIHdyaXRlL2NvbXBhcmUgKi9cbitcdF9fbGUxNiB0aW1lb3V0X21zO1x0LyogUG9sbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAqL1xuK1x0X191OCAgcG9sbF9zZXQ7XHRcdC8qIFBvbGwgZm9yIHNldCAoMSkgb3IgY2xlYXIgKDApICovXG4rXHRfX3U4ICByZXNlcnZlZDtcdFx0LyogUmVzZXJ2ZWQgKi9cbit9O1xuK1xuKyNkZWZpbmUgRldfSEVBREVSX1NJWkVcdFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpXG4rI2RlZmluZSBGV19FTlRSWV9TSVpFXHRcdHNpemVvZihzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkpXG4gXG4gLyogUlRMODIxMUUgYW5kIFJUTDgyMTFGIHN1cHBvcnQgdXAgdG8gdGhyZWUgTEVEcyAqL1xuICNkZWZpbmUgUlRMODIxMXhfTEVEX0NPVU5UXHRcdFx0M1xuQEAgLTI3MCw2ICszMzgsMTEgQEAgc3RydWN0IHJ0bDgyMXhfcHJpdiB7XG4gXHR1MTYgaW5lcjtcbiB9O1xuIFxuK3N0cnVjdCBydGw4MjYxeF9wcml2IHtcbitcdGNvbnN0IGNoYXIgKmZ3X25hbWU7XG4rXHRib29sIGZ3X2xvYWRlZDtcbit9O1xuK1xuIHN0YXRpYyBpbnQgcnRsODIxeF9yZWFkX3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRyZXR1cm4gX19waHlfcmVhZChwaHlkZXYsIFJUTDgyMXhfUEFHRV9TRUxFQ1QpO1xuQEAgLTMxMCw2ICszODMsMzI2IEBAIHN0YXRpYyBpbnQgcnRsODIxeF9tb2RpZnlfZXh0X3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IGV4dF9wYWdlLFxuIFx0cmV0dXJuIHBoeV9yZXN0b3JlX3BhZ2UocGh5ZGV2LCBvbGRwYWdlLCByZXQpO1xuIH1cbiBcbitzdGF0aWMgaW50IHJ0bDgyNjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2O1xuK1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XG4rXHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xuK1xuK1x0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwcml2KVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHBoeWRldi1cdTAwM2Vwcml2ID0gcHJpdjtcbitcbitcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuK1x0XHRcdCAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0RBVEFfUkVHKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRzdWJfcGh5X2lkID0gKHJldCBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4ZmY7XG4rXG4rXHRzd2l0Y2ggKHN1Yl9waHlfaWQpIHtcbitcdGNhc2UgUlRMODI2MUNfQ0VfTU9ERUw6XG4rXHRcdHByaXYtXHUwMDNlZndfbmFtZSA9IFJUTDgyNjFDX0NFX0ZXX05BTUU7XG4rXHRcdHBoeWRldl9pbmZvKHBoeWRldiwgXCJSVEw4MjYxQyBkZXRlY3RlZCAoc3ViX2lkIDB4JTAyeClcXG5cIiwgc3ViX3BoeV9pZCk7XG4rXHRcdGJyZWFrO1xuK1xuK1x0ZGVmYXVsdDpcbitcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcIlVua25vd24gc3ViX2lkIDB4JTAyeCwgZGVmYXVsdCBiZWhhdmlvclxcblwiLCBzdWJfcGh5X2lkKTtcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXHQvKlxuK1x0ICogU3VwcGxlbWVudCBNdWx0aS1HaWcgc3BlZWRzIHRoYXQgbWF5IG5vdCBiZSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkXG4rXHQgKiBSVEw4MjYxWCBzdXBwb3J0cyAyLjVHLzVHIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIDEwR1xuK1x0ICovXG4rXHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFXzI1MDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4rXHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFXzUwMDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCByZXQsIHZhbDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0VOQUJMRSBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWF1dG9uZWdfY29tcGxldGUpIHtcbitcdFx0dmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4rXHRcdFx0XHQgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfU1RBVDEwMDApKTtcbitcdFx0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gdmFsO1xuK1xuK1x0XHRtaWlfc3RhdDEwMDBfbW9kX2xpbmttb2RlX2xwYV90KHBoeWRldi1cdTAwM2VscF9hZHZlcnRpc2luZywgdmFsKTtcbitcdH1cbitcbitcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMocGh5ZGV2KTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XG4rXHR1MzIgbWFpbl9tYWdpYywgc3ViX21hZ2ljO1xuK1x0dTMyIGNhbGNfY3JjLCBmaWxlX2NyYztcbitcdHNpemVfdCBkYXRhX2xlbjtcbitcdHUxNiBudW1fZW50cmllcztcbitcbitcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBGV19IRUFERVJfU0laRSkge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJGaXJtd2FyZSB0b28gc21hbGw6ICV6dSBieXRlc1xcblwiLCBmdy1cdTAwM2VzaXplKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRoZHIgPSAoY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqKWZ3LVx1MDAzZWRhdGE7XG4rXG4rXHRtYWluX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZW1haW5fbWFnaWMpO1xuK1x0aWYgKG1haW5fbWFnaWMgIT0gRldfTUFJTl9NQUdJQykge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJJbnZhbGlkIGZpcm13YXJlIG1hZ2ljOiAweCUwOHhcXG5cIiwgbWFpbl9tYWdpYyk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0c3ViX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZXN1Yl9tYWdpYyk7XG4rXHRpZiAoc3ViX21hZ2ljICE9IEZXX1NVQl9NQUdJQ184MjYxQykge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJJbnZhbGlkIHN1YiBtYWdpYzogMHglMDh4XFxuXCIsIHN1Yl9tYWdpYyk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0bnVtX2VudHJpZXMgPSBsZTE2X3RvX2NwdShoZHItXHUwMDNlbnVtX2VudHJpZXMpO1xuK1x0ZGF0YV9sZW4gPSBudW1fZW50cmllcyAqIEZXX0VOVFJZX1NJWkU7XG4rXG4rXHRpZiAoZnctXHUwMDNlc2l6ZSAhPSBzaXplb2YoKmhkcikgKyBkYXRhX2xlbikge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJGaXJtd2FyZSBzaXplIG1pc21hdGNoXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdGNhbGNfY3JjID0gY3JjMzIofjAsIGZ3LVx1MDAzZWRhdGEgKyBGV19IRUFERVJfU0laRSwgZGF0YV9sZW4pIF4gfjA7XG4rXHRmaWxlX2NyYyA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VjcmMzMik7XG4rXG4rXHRpZiAoY2FsY19jcmMgIT0gZmlsZV9jcmMpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiQ1JDMzIgbWlzbWF0Y2g6IGNhbGN1bGF0ZWQ9MHglMDh4IGZpbGU9MHglMDh4XFxuXCIsXG4rXHRcdFx0ICAgY2FsY19jcmMsIGZpbGVfY3JjKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4rXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqZW50cnkpXG4re1xuK1x0dTE2IGFkZHIsIHZhbHVlLCB0aW1lb3V0X21zO1xuK1x0dTggZGV2LCBtc2IsIGxzYiwgcG9sbF9zZXQ7XG4rXHR1MzIgYml0cywgZXhwZWN0X3ZhbDtcbitcdGludCByZXQgPSAwO1xuK1x0aW50IHZhbDtcbitcbitcdGRldiA9IGVudHJ5LVx1MDAzZWRldjtcbitcdGFkZHIgPSBsZTE2X3RvX2NwdShlbnRyeS1cdTAwM2VhZGRyKTtcbitcdG1zYiA9IGVudHJ5LVx1MDAzZW1zYjtcbitcdGxzYiA9IGVudHJ5LVx1MDAzZWxzYjtcbitcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXHUwMDNldmFsdWUpO1xuK1x0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXRpbWVvdXRfbXMpO1xuK1x0cG9sbF9zZXQgPSBlbnRyeS1cdTAwM2Vwb2xsX3NldDtcbitcbitcdGlmICh0aW1lb3V0X21zID09IDApXG4rXHRcdHRpbWVvdXRfbXMgPSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVM7XG4rXG4rXHRpZiAobXNiIFx1MDAzZSAxNSB8fCBsc2IgXHUwMDNlIG1zYikge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJJbnZhbGlkIGZpcm13YXJlIGJpdHM6IG1zYj0lZCwgbHNiPSVkXFxuXCIsIG1zYiwgbHNiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRzd2l0Y2ggKGVudHJ5LVx1MDAzZXR5cGUpIHtcbitcdGNhc2UgT1BfV1JJVEU6XG4rXHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLFxuK1x0XHRcdFx0ICAgICBHRU5NQVNLKG1zYiwgbHNiKSwgKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBHRU5NQVNLKG1zYiwgbHNiKSk7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJXUklURSBmYWlsZWQ6IGRldj0lZCBhZGRyPTB4JTA0eFxcblwiLCBkZXYsIGFkZHIpO1xuK1x0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdFx0YnJlYWs7XG4rXG4rXHRjYXNlIE9QX1BPTEw6IHtcbitcdFx0Yml0cyA9IEdFTk1BU0sobXNiLCBsc2IpO1xuK1x0XHRleHBlY3RfdmFsID0gKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBiaXRzO1xuK1xuK1x0XHRpZiAocG9sbF9zZXQpXG4rXHRcdFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIGRldiwgYWRkciwgdmFsLFxuK1x0XHRcdFx0XHRcdFx0KHZhbCBcdTAwMjYgYml0cykgPT0gZXhwZWN0X3ZhbCxcbitcdFx0XHRcdFx0XHRcdDEwMDAsIHRpbWVvdXRfbXMgKiAxMDAwLCBmYWxzZSk7XG4rXHRcdGVsc2VcbitcdFx0XHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsXG4rXHRcdFx0XHRcdFx0XHQodmFsIFx1MDAyNiBiaXRzKSAhPSBleHBlY3RfdmFsLFxuK1x0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJQT0xMIHRpbWVvdXQ6IGRldj0lZCBhZGRyPTB4JTA0eFxcblwiLFxuK1x0XHRcdFx0ICAgZGV2LCBhZGRyKTtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXHRkZWZhdWx0OlxuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJVbmtub3duIGZpcm13YXJlIG9wZXJhdGlvbjogJWRcXG5cIiwgZW50cnktXHUwMDNldHlwZSk7XG4rXHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9md19sb2FkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqZW50cnk7XG4rXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XG4rXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuK1x0aW50IHJldCwgaTtcbitcbitcdGlmICghcHJpdi1cdTAwM2Vmd19uYW1lKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIHByaXYtXHUwMDNlZndfbmFtZSwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbitcdGlmIChyZXQpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXM6ICVkXFxuXCIsIHByaXYtXHUwMDNlZndfbmFtZSwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gcmVsZWFzZV9mdztcbitcbitcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbitcbitcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cdTAwM2VkYXRhICsgRldfSEVBREVSX1NJWkUpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGUxNl90b19jcHUoaGRyLVx1MDAzZW51bV9lbnRyaWVzKTsgaSsrLCBlbnRyeSsrKSB7XG4rXHRcdHJldCA9IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkocGh5ZGV2LCBlbnRyeSk7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJFbnRyeSAlZCBmYWlsZWQ6ICVkXFxuXCIsIGksIHJldCk7XG4rXHRcdFx0Z290byByZWxlYXNlX2Z3O1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRwcml2LVx1MDAzZWZ3X2xvYWRlZCA9IHRydWU7XG4rXG4rcmVsZWFzZV9mdzpcbitcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRpZiAocGh5ZGV2LVx1MDAzZWludGVycnVwdHMgPT0gUEhZX0lOVEVSUlVQVF9FTkFCTEVEKSB7XG4rXHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXG4rXHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLFxuK1x0XHRcdFx0ICAgIFJUTDgyNjFYX0lOVF9NQVNLX0RFRkFVTFQpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHR9IGVsc2Uge1xuK1x0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcbitcdFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCBpcnFfc3RhdHVzO1xuK1xuK1x0aXJxX3N0YXR1cyA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuK1x0aWYgKGlycV9zdGF0dXMgXHUwMDNjIDApIHtcbitcdFx0cGh5X2Vycm9yKHBoeWRldik7XG4rXHRcdHJldHVybiBJUlFfTk9ORTtcbitcdH1cbitcbitcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IFJUTDgyNjFYX0lOVF9NQVNLX0FMTCkpXG4rXHRcdHJldHVybiBJUlFfTk9ORTtcbitcbitcdGlmIChpcnFfc3RhdHVzIFx1MDAyNiAoUlRMODI2MVhfSU5UX0xJTktfQ0hHIHwgUlRMODI2MVhfSU5UX0FVVE9ORUdfRE9ORSB8XG4rXHQgICAgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBSVEw4MjYxWF9JTlRfSkFCQkVSKSlcbitcdFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xuK1xuK1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuK31cbitcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0dTE2IGFkdl8xZyA9IDA7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gZ2VucGh5X2M0NV9jb25maWdfYW5lZyhwaHlkZXYpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0aWYgKGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgICAgICBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpKVxuK1x0XHRhZHZfMWcgPSBBRFZFUlRJU0VfMTAwMEZVTEw7XG4rXHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuK1x0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZykpXG4rXHRcdGFkdl8xZyB8PSBBRFZFUlRJU0VfMTAwMEhBTEY7XG4rXG4rXHRyZXQgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4rXHRcdFx0XHQgICAgIFJUTDgyMlhfVk5EMl9DMjJfUkVHKE1JSV9DVFJMMTAwMCksXG4rXHRcdFx0XHQgICAgIEFEVkVSVElTRV8xMDAwRlVMTCB8IEFEVkVSVElTRV8xMDAwSEFMRixcbitcdFx0XHRcdCAgICAgYWR2XzFnKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXHRpZiAocmV0IFx1MDAzZSAwKVxuK1x0XHRyZXR1cm4gZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcocGh5ZGV2KTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGludCByZXQgPSAwO1xuK1xuK1x0LyogVGhlIGZpcm13YXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgSUVFRSBzb2Z0IHJlc2V0cyBhbmRcbitcdCAqIHN1c3BlbmQvcmVzdW1lIGN5Y2xlcy4gUmVsb2FkaW5nIGlzIG9ubHkgbmVjZXNzYXJ5IGFmdGVyIGEgcG93ZXJcbitcdCAqIGN5Y2xlIG9yIGhhcmQgcmVzZXQuXG4rXHQgKi9cbitcdGlmIChwcml2LVx1MDAzZWZ3X25hbWUgXHUwMDI2XHUwMDI2ICFwcml2LVx1MDAzZWZ3X2xvYWRlZCkge1xuK1x0XHRyZXQgPSBydGw4MjYxeF9md19sb2FkKHBoeWRldik7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJGaXJtd2FyZSBsb2FkaW5nIGZhaWxlZDogJWRcXG5cIiwgcmV0KTtcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG5AQCAtMzAwMSw2ICszMzk0LDE5IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4gXHRcdC5yZWFkX21tZFx0PSBnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXG4gXHRcdC53cml0ZV9tbWRcdD0gZ2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbitcdH0sIHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKFJUTF84MjYxQ19DRyksXG4rXHRcdC5uYW1lXHRcdFx0PSBcIlJlYWx0ZWsgUlRMODI2MUMgMTBHYnBzIFBIWVwiLFxuK1x0XHQucHJvYmVcdFx0XHQ9IHJ0bDgyNjF4X3Byb2JlLFxuK1x0XHQuY29uZmlnX2luaXRcdFx0PSBydGw4MjYxeF9jb25maWdfaW5pdCxcbitcdFx0LmdldF9mZWF0dXJlc1x0XHQ9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyxcbitcdFx0LmNvbmZpZ19hbmVnXHRcdD0gcnRsODI2MXhfY29uZmlnX2FuZWcsXG4rXHRcdC5yZWFkX3N0YXR1c1x0XHQ9IHJ0bDgyNjF4X3JlYWRfc3RhdHVzLFxuK1x0XHQuY29uZmlnX2ludHJcdFx0PSBydGw4MjYxeF9jb25maWdfaW50cixcbitcdFx0LmhhbmRsZV9pbnRlcnJ1cHRcdD0gcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCxcbitcdFx0LnNvZnRfcmVzZXRcdFx0PSBnZW5waHlfYzQ1X3NvZnRfcmVzZXQsXG4rXHRcdC5zdXNwZW5kXHRcdD0gZ2VucGh5X2M0NV9wbWFfc3VzcGVuZCxcbitcdFx0LnJlc3VtZVx0XHRcdD0gZ2VucGh5X2M0NV9wbWFfcmVzdW1lLFxuIFx0fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCAxOTlhN2FhYTM0MWJmZC4uMjVhNjYzMjBkZjU2ZWEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjMwOSw2ICsyMzA5LDcgQEAgaW50IGdlbnBoeV9jMzdfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCAqY2hhbmdlZCk7XG4gLyogQ2xhdXNlIDQ1IFBIWSAqL1xuIGludCBnZW5waHlfYzQ1X3Jlc3RhcnRfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgcmVzdGFydCk7XG4raW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgZ2VucGh5X2M0NV9hbmVnX2RvbmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IGdlbnBoeV9jNDVfcmVhZF9saW5rKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5pbmRleCBiMjU0MWM5NDhmYzFlYi4uMDZmNGJjM2MyMGM3MTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5AQCAtMzMyLDggKzMzMiwxMyBAQFxuICNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX0FEVjJfNUdcdDB4MDA4MFx0LyogQWR2ZXJ0aXNlIDIuNUdCQVNFLVQgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFY1R1x0MHgwMTAwXHQvKiBBZHZlcnRpc2UgNUdCQVNFLVQgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYxMEdcdDB4MTAwMFx0LyogQWR2ZXJ0aXNlIDEwR0JBU0UtVCAqL1xuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRVx0MHg4MDAwXHQvKiBNYXN0ZXIvc2xhdmUgbWFudWFsIGNvbmZpZyBlbmFibGUgKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRVx0MHg0MDAwXHQvKiBNYXN0ZXIvc2xhdmUgY29uZmlnIHZhbHVlICgxPU1hc3RlcikgKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19QT1JUX1RZUEVcdDB4MjAwMFx0LyogTWFzdGVyIFByZWZlcnJlZCBUeXBlICovXG4gXG4gLyogQU4gMTBHQkFTRS1UIHN0YXR1cyByZWdpc3Rlci4gKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19GQVVMVFx0MHg4MDAwXHQvKiBNYXN0ZXIvc2xhdmUgZmF1bHQgKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19SRVNcdDB4NDAwMFx0LyogTWFzdGVyL3NsYXZlIHJlc29sdXRpb24gKDE9TWFzdGVyKSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQMl81R1x0MHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQNUdcdFx0MHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUFRSUlx0MHgwMjAwXHQvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxODo0NC45MzgzMjA1NzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODM4NDk5ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRMODI2MUMgUEhZIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMgMTBHYnBzIFBIWS4gSXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYCwgYWRkaW5nIGZ1bmN0aW9ucyBsaWtlIGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgcnRsODI2MXhfcHJvYmVgLCBgcnRsODI2MXhfZndfbG9hZGAsIGFuZCBkcml2ZXIgcmVnaXN0cmF0aW9uIGZvciBgUlRMXzgyNjFDX0NHYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uXG5cbkdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyBQSFkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IHByb2JlZCB2aWEgYW4gTURJTyBidXMuIFNvLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMsIGNhbiB3ZSBlbXVsYXRlIHRoaXMgUEhZIHNvbWVob3cgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgbGlrZSB3aXRoIFFFTVU/IFN5emthbGxlciBpcyB0aGUgb2J2aW91cyBjaG9pY2UgZm9yIGZ1enppbmcsIGJ1dCBob3cgZG8gd2UgZ2V0IGl0IHRvIHJlYWNoIHRoaXMgY29kZT9cblxuSSBuZWVkIHRvIHJlbWVtYmVyIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBQSFkgZHJpdmVycy4gRG9lcyBpdCBuYXRpdmVseSBzdXBwb3J0IE1ESU8gaW5qZWN0aW9uPyBJIGRvbid0ICp0aGluayogaXQgZG9lcy4gUGVyaGFwcyB0aHJvdWdoIHNvbWUgbmV0bGluayBpbnRlcmZhY2Ugb3IgYW5vdGhlciBpbmRpcmVjdCBhcHByb2FjaD8gV2FpdCwgaXMgdGhlcmUgc29tZXRoaW5nIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBtYXliZSBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIHRoYXQgY291bGQgYmUgbGV2ZXJhZ2VkPyBObywgdGhhdCdzIG1vcmUgZm9yIHdpcmVsZXNzLiBUaGlzIGlzIGFuIEV0aGVybmV0IFBIWS4gUmlnaHQuIFNvLCBzeXprYWxsZXIgKmNhbiogZnV6eiBQSFlzLCBidXQgb25seSBpZiB0aGVyZSdzIGEgd2F5IHRvIGluc3RhbnRpYXRlIHRoZW0uXG5cbk9rYXksIGxldCdzIHNlZSBpZiBzeXprYWxsZXIgaGFzICphbnkqIE1ESU8gYnVzIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgc3BlY2lmaWMuIENhbiB1c2Vyc3BhY2UgaW5zdGFudGlhdGUgYSBQSFk/IFVzdWFsbHksIGl0J3MgdGhlIE1BQyBkcml2ZXIgb3IgdGhlIGRldmljZSB0cmVlLCB0aGF0J3Mgd2hhdCBJJ3ZlIHNlZW4uXG5cbkhvbGQgb24uIExldCdzIHNlZS4uLiB0aGUgYHJ0bDgyNjF4X2Z3X2xvYWRgIGZ1bmN0aW9uIGxvb2tzIGludGVyZXN0aW5nLiBJdCB1c2VzIGByZXF1ZXN0X2Zpcm13YXJlYCwgYW5kIGlmIHRoYXQncyByZWFjaGFibGUsIHRoZW4gdGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gUmVhY2hpbmcgZmlybXdhcmUgbG9hZGluZyBvZnRlbiBpbnZvbHZlcyBzb21lIGludGVyZXN0aW5nIGF0dGFjayBzdXJmYWNlcy5cblxuUmlnaHQsIHRpbWUgdG8gY2hlY2sgaWYgYFJFQUxURUtfUEhZYCBpcyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5emthbGxlciBjb25maWdzLiBHb3R0YSBzdGFydCB0aGVyZS4gTGV0J3MgZG8gYSBzZWFyY2ggZm9yIGBSRUFMVEVLX1BIWWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjY5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NTMuNzc2ODIyMzczWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzQ1MjUxMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBTFRFS19QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdD0xMTk9VG8gZW5hYmxlIHRoZSBEUEFBIEV0aGVybmV0IGRyaXZlciwgdGhlIGZvbGxvd2luZyBLY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS5yc3QtMTMxLSAgQ09ORklHX1ZJVEVTU0VfUEhZPXlcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEucnN0OjEzMjogIENPTkZJR19SRUFMVEVLX1BIWT15XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdC0xMzMtICBDT05GSUdfQVFVQU5USUFfUEhZPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz0xMDc9Q09ORklHX0JST0FEQ09NX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjEwODpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0xMDktIyBDT05GSUdfVVNCX05FVF9EUklWRVJTIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz0xMjQ9Q09ORklHX0JST0FEQ09NX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjEyNTpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0xMjYtQ09ORklHX01DVFBfU0VSSUFMPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbW94YXJ0X2RlZmNvbmZpZz02Mz1DT05GSUdfQVJNX01PWEFSVF9FVEhFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL21veGFydF9kZWZjb25maWctNjktIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbW94YXJ0X2RlZmNvbmZpZzo3MDpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbW94YXJ0X2RlZmNvbmZpZy03MS1DT05GSUdfTURJT19NT1hBUlQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9teHNfZGVmY29uZmlnPTU3PUNPTkZJR19NSUNSRUxfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWc6NTg6Q09ORklHX1JFQUxURUtfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWctNTktQ09ORklHX0NBTl9GTEVYQ0FOPW1cXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3VueGlfZGVmY29uZmlnPTUyPUNPTkZJR19NSUNSRUxfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL3N1bnhpX2RlZmNvbmZpZzo1MzpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3VueGlfZGVmY29uZmlnLTU0LUNPTkZJR19DQU5fU1VONEk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnLTk0LSMgQ09ORklHX05FVF9WRU5ET1JfWElMSU5YIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnOjk1OkNPTkZJR19SRUFMVEVLX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZy05Ni0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9NDY5PUNPTkZJR19RQ0E4MDhYX1BIWT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NzA6Q09ORklHX1JFQUxURUtfUEhZPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ3MS1DT05GSUdfUk9DS0NISVBfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTIwNz1DT05GSUdfUVNFTUlfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoyMDg6Q09ORklHX1JFQUxURUtfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0yMDktQ09ORklHX0hPU1RBUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz0xNzQ9Q09ORklHX1FTRU1JX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6MTc1OkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTc2LUNPTkZJR19TTVNDX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnPTk3PUNPTkZJR19EQVZJQ09NX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZzo5ODpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMV9kZWZjb25maWctOTktIyBDT05GSUdfVVNCX05FVF9EUklWRVJTIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yODI9Q09ORklHX1FTRU1JX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI4MzpDT05GSUdfUkVBTFRFS19QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yODQtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9Mjg5PUNPTkZJR19RU0VNSV9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjkwOkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0yOTEtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yODg9Q09ORklHX1FTRU1JX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjI4OTpDT05GSUdfUkVBTFRFS19QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0yOTAtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9MTQyPUNPTkZJR19RU0VNSV9QSFk9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MTQzOkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xNDQtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnPTY2PUNPTkZJR19RU0VNSV9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnOjY3OkNPTkZJR19SRUFMVEVLX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTEyeF9kZWZjb25maWctNjgtQ09ORklHX1NNU0NfUEhZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NDY3PUNPTkZJR19RU0VNSV9QSFk9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6NDY4OkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy00NjktQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc9Mj1tZW51Y29uZmlnIE5FVF9EU0FfUkVBTFRFS1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy02LVxcdHNlbGVjdCBJUlFfRE9NQUlOXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo3OlxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctOC1cXHRzZWxlY3QgUkVHTUFQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1MzpcXHRzZWxlY3QgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTQtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg5LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6OTA6XFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05ND1vYmotJChDT05GSUdfUVNFTUlfUEhZKVxcdFxcdCs9IHFzZW1pLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTU6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVxcdCs9IHJlYWx0ZWsvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk2LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcXHQrPSB1UEQ2MDYyMC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6ODppZiBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctOS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEwOmNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTEtXFx0Ym9vbCBcXFwiSFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXFx1MDAyNlxcdTAwMjYgSFdNT049bSlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFJFQUxURUtfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZT0yPXJlYWx0ZWsteVxcdFxcdFxcdCs9IHJlYWx0ZWtfbWFpbi5vXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrLSQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSArPSByZWFsdGVrX2h3bW9uLm9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcXHQrPSByZWFsdGVrLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE4MDQ9c3RhdGljIGludCBydGw4MjJ4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTgwNjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNy1cXHQgICAgcGh5ZGV2LVxcdTAwM2VwaHlfaWQgIT0gUlRMX0dFTkVSSUNfUEhZSUQpXFxuLS1cXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6MjojaWZuZGVmIF9SRUFMVEVLX1BIWV9IXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6MzojZGVmaW5lIF9SRUFMVEVLX1BIWV9IXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmgtNC1cXG4tLVxcbmluY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oLTYtXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6NzojZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NTYuODExMzUyNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Nzc5NjIxMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0aGlzIFBIWSBkcml2ZXIgY29kZSBydW5uaW5nLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBmb3IgdGhlIGBSVExfODI2MUNfQ0dgLiBUaGUga2V5IHNlZW1zIHRvIGJlIHN1Y2Nlc3NmdWxseSBpbnN0YW50aWF0aW5nIGEgUEhZIGRldmljZSB3aXRoIHRoYXQgc3BlY2lmaWMgSUQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyBwb3NzaWJsZSBmcm9tIHVzZXJzcGFjZSwgd2hpY2ggaXMgd2hlcmUgdGhpbmdzIHVzdWFsbHkgZ2V0IGludGVyZXN0aW5nLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIGRvd24gdGhlIHBhdGggb2YgY3JlYXRpbmcgYSB2aXJ0dWFsIE1ESU8gYnVzLiBUaGF0J3MgdXN1YWxseSB0aGUgZWFzaWVzdCByb3V0ZSBpbiB0aGVzZSBraW5kcyBvZiBzaXR1YXRpb25zLiBIbW0sIHdhaXQsIHdhc24ndCB0aGVyZSBzb21ldGhpbmcgY2FsbGVkIGBtZGlvLW1vY2t1cGA/IEkgdmFndWVseSByZWNhbGwgdGhhdCwgbmVlZCB0byBjb25maXJtIGlmIHRoYXQncyBhY3R1YWxseSBhIHZpYWJsZSBvcHRpb24gaGVyZS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgaXQgZXhpc3RzLCBhcyB0aGF0IHdvdWxkIG1ha2UgdGhpbmdzIG11Y2ggc2ltcGxlci4gTGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBzZWUgaWYgdGhhdCdzIGEgdmFsaWQgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MDMuNTkwOTc1NzA0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDUwNzA2MzMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8tbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxOTowNS43MzYwNTMyMDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODQ2Nzc0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gRnV6emluZyBEaWxlbW1hKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBhcHByb2FjaCBmdXp6aW5nIE1ESU8gaW50ZXJmYWNlcyB3aXRoIHN5emthbGxlci4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgXCJXYWl0LCBzeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55IGJ1aWx0LWluIE1ESU8gZnV6emluZyBjYXBhYmlsaXRpZXMuXCIgVGhhdCdzIGEgYml0IG9mIGEgc2V0YmFjay4gVGhlbiBJIHRoaW5rLCBcIkhhbmcgb24sIGBtYWM4MDIxMV9od3NpbWAgaXMgc3BlY2lmaWNhbGx5IGZvciBXaUZpLCBpdCdzIG5vdCBnb2luZyB0byBoZWxwIG1lIHdpdGggTURJTyBkaXJlY3RseS5cIiBTbyBJJ20gYmFjayB0byBzcXVhcmUgb25lLlxuXG5CdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIG1vcmUgYnJvYWRseSwgXCJJcyB0aGVyZSBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSBhIFBIWSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN5emthbGxlciBmcmFtZXdvcms/XCIgVGhlbiBpdCBkYXducyBvbiBtZSwgXCJJZiBhIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFzIGEgUEhZIGRyaXZlciwgaXQgbm9ybWFsbHkgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIGBwaHlfZHJpdmVyX3JlZ2lzdGVyYC5cIiBGcm9tIHRoZXJlLCBpdCB0eXBpY2FsbHkgd2FpdHMgZm9yIGEgUEhZIGRldmljZSB0byBzaG93IHVwIG9uIGFuIE1ESU8gYnVzIGJlZm9yZSBiaW5kaW5nLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGJlY29tZXMsIFwiQ2FuIEkgbGV2ZXJhZ2UgdXNlcnNwYWNlIHRvIGNyZWF0ZSBhbiBNRElPIGJ1cz9cIiBBbmQgYWxtb3N0IGltbWVkaWF0ZWx5LCBJIHRoaW5rIFwiTm8sIHRoYXQncyBub3QgaG93IGl0IHR5cGljYWxseSB3b3Jrcy5cIiBUaGUgc3lzdGVtIHVzdWFsbHkgaGFuZGxlcyB0aGUgTURJTyBidXMgY3JlYXRpb24uIEhvd2V2ZXIsIHRoZSBnZWFycyBiZWdpbiB0byB0dXJuIGFnYWluLiBcIkJ1dCB3aGF0IGFib3V0IGBuZXRkZXZzaW1gP1wiIGl0IGFza3MuIFwiRG9lcyBgbmV0ZGV2c2ltYCwgdGhhdCBuZXR3b3JrIGRldmljZSBzaW11bGF0b3IsIHByb3ZpZGUgYW4gTURJTyBidXM/XCIgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXZlbnVlIGZ1cnRoZXIuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgYXZlbnVlIGZvciBhIHNvbHV0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI2OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxOToxMS41ODI4MzA1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg5Mjg3NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjExLjY0MzczMDE1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzg0Mzk1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTURJTyBCdXMgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB3aGVyZSBhbiBNRElPIGJ1cyBtaWdodCBwb3AgdXAgaW4gdGhlIGtlcm5lbC4gYGR1bW15YCBhbmQgYHZldGhgIGFyZSBvdXQg4oCTIGRlZmluaXRlbHkgbm90IHRoZXJlLiBXaGF0IGFib3V0IGB0dW5gIGFuZCBgdGFwYD8gTmFoLCB0aG9zZSBhcmUgbGF5ZXIgMywgbm8gcGh5c2ljYWwgaW50ZXJmYWNlLiBIbW0uLi4gaG93IGFib3V0IGB1c2JuZXRgPyBBaCwgbm93IHdlJ3JlIGdldHRpbmcgc29tZXdoZXJlLiBTb21lIFVTQiBuZXR3b3JrIGRldmljZXMgKmRvKiBoYXZlIE1ESU8gYnVzZXMsIGludGVyZXN0aW5nLlxuXG5JZiBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZywgdGhpcyBpcyBwZXJmZWN0ISBJIGNhbiBidWlsZCBhbiBlbXVsYXRpb24gb2YgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCBhbiBNRElPIGJ1cyBhbmQsIGNydWNpYWxseSwgYSByZXBvcnRlZCBQSFkgSUQuIFRoaXMgY291bGQgYmUgYSByZWFsbHkgc29saWQgYXBwcm9hY2guXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwOiBsZXQgbWUgY2hlY2sgdGhlIGV4aXN0aW5nIFVTQiBuZXR3b3JrIGRyaXZlcnMgYW5kIHNlZSB3aGljaCBvbmVzIGFjdHVhbGx5IG1ha2UgdXNlIG9mIFBIWXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGV4aXN0aW5nIGxhbmRzY2FwZSBsb29rcyBsaWtlIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIHdpdGggdGhpcyBjb25jZXB0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDczMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjE1Ljc4MjE3MjY0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0MTExODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTA1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MjY2PXN0YXRpYyBpbnQgYXFjMTExX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTI5MC1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MjkxOlxcdGVsay1cXHUwMDNlYmFzZS5tZGlvX3N1cHBvcnQgPSAweDAwOyAvKk5vdCBzdXBwb3J0ZWQqL1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0yOTItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE3OD1zdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4NC1cXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoxODU6XFx0c3RydWN0IG1paV9idXMgKm1kaW87XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODYtXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MjI5PXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMxOmludCBhc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzMjp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNDppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM1OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjM2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM4OnZvaWQgYXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzOS1cXHRcXHRcXHQgIGludCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9NDQxPXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDgwOnN0YXRpYyBpbnQgX19hc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4MS1cXHRcXHRcXHQgICAgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA1LVxcdFxcdFxcdHBoeV9pZCwgbG9jLCBsZTE2X3RvX2NwdShyZXMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMy19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxNTpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE2LVxcdFxcdFxcdCAgICAgaW50IHZhbCwgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MjI6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb193cml0ZSgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHZhbD0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTIzLVxcdFxcdFxcdHBoeV9pZCwgbG9jLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0Mzp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0NC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTQ1OlxcdF9fYXNpeF9tZGlvX3dyaXRlKG5ldGRldiwgcGh5X2lkLCBsb2MsIHZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Ni19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDgtLyogTURJTyByZWFkIGFuZCB3cml0ZSB3cmFwcGVycyBmb3IgcGh5bGliICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTQ5OmludCBhc2l4X21kaW9fYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU1MzpcXHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChwcml2LVxcdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU0LX1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTUtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTU2OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1OS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NjA6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3dyaXRlKHByaXYtXFx1MDAzZW5ldCwgcGh5X2lkLCByZWdudW0sIHZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2MS19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2NC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY1OlxcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Ni19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz01Njg9dm9pZFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2OTphc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3MC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTcxOlxcdF9fYXNpeF9tZGlvX3dyaXRlKG5ldGRldiwgcGh5X2lkLCBsb2MsIHZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTcyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MD1zdGF0aWMgdTMyIGFzaXhfZ2V0X3BoeWlkKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTAwOyBpKyspIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Nzg6XFx0XFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzktXFx0XFx0aWYgKHBoeV9yZWcgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTpcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05Mi1cXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTkwPXN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTQ6XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSLCByZXNldF9iaXRzKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cXHR3aGlsZSAodGltZW91dC0tKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcXHRcXHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2IEJNQ1JfUkVTRVQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MjEyPXN0YXRpYyBpbnQgYXg4ODE3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjQ4LVxcdGRldi1cXHUwMDNlbWlpLmRldiA9IGRldi1cXHUwMDNlbmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNDk6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1MDpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTEtXFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2My1cXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjQ6XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2NS1cXHRcXHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpe1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTQ1Nj1zdGF0aWMgaW50IGF4ODg3NzJhX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDk3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXFx0XFx0LyogQ2hlY2sgaWYgdGhlIFBIWSByZWdpc3RlcnMgaGF2ZSBkZWZhdWx0IHNldHRpbmdzICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcXHRcXHRwaHkxNGggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNTpcXHRcXHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcXHRcXHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE2SCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI1LVxcdFxcdGlmIChwaHkxNGggIT0gQVg4ODc3MkFfUEhZMTRIX0RFRkFVTFQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNjpcXHRcXHRcXHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjctXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNEgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI5LVxcdFxcdGlmIChwaHkxNWggIT0gQVg4ODc3MkFfUEhZMTVIX0RFRkFVTFQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzMDpcXHRcXHRcXHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzEtXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNUgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMzLVxcdFxcdGlmIChwaHkxNmggIT0gQVg4ODc3MkFfUEhZMTZIX0RFRkFVTFQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzNDpcXHRcXHRcXHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzUtXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNkgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjU4PXN0YXRpYyBpbnQgYXNpeF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Njk6c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY3MC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjczLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2NzQ6XFx0cHJpdi1cXHUwMDNlbWRpbyA9IG1kaW9idXNfYWxsb2MoKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njc1OlxcdGlmICghcHJpdi1cXHUwMDNlbWRpbylcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjc2LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NzctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY3ODpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2Vwcml2ID0gZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Nzk6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlcmVhZCA9IFxcdTAwMjZhc2l4X21kaW9fYnVzX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MDpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2V3cml0ZSA9IFxcdTAwMjZhc2l4X21kaW9fYnVzX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODE6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlbmFtZSA9IFxcXCJBc2l4IE1ESU8gQnVzXFxcIjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjgyOlxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZXBoeV9tYXNrID0gfihCSVQocHJpdi1cXHUwMDNlcGh5X2FkZHIgXFx1MDAyNiAweDFmKSB8IEJJVChBWF9FTUJEX1BIWV9BRERSKSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4My1cXHQvKiBtaWkgYnVzIG5hbWUgaXMgdXNiLVxcdTAwM2N1c2IgYnVzIG51bWJlclxcdTAwM2UtXFx1MDAzY3VzYiBkZXZpY2UgbnVtYmVyXFx1MDAzZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODQ6XFx0c25wcmludGYocHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcInVzYi0lMDNkOiUwM2RcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODUtXFx0XFx0IGRldi1cXHUwMDNldWRldi1cXHUwMDNlYnVzLVxcdTAwM2VidXNudW0sIGRldi1cXHUwMDNldWRldi1cXHUwMDNlZGV2bnVtKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg5LVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgcmVnaXN0ZXIgTURJTyBidXMgKGVyciAlZClcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5MDpcXHRcXHRtZGlvYnVzX2ZyZWUocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5MTpcXHRcXHRwcml2LVxcdTAwM2VtZGlvID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjkyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5NzpzdGF0aWMgdm9pZCBheDg4NzcyX21kaW9fdW5yZWdpc3RlcihzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjk4LXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njk5OlxcdG1kaW9idXNfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzAwOlxcdG1kaW9idXNfZnJlZShwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzAxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgcHJpdi1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDktXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzEtXFx0ICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMjpcXHRwcml2LVxcdTAwM2VwaHlkZXZfaW50ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXFx1MDAzZW1kaW8sIEFYX0VNQkRfUEhZX0FERFIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzMtXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXZfaW50KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9ODI5PXN0YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTc6XFx0cmV0ID0gYXg4ODc3Ml9pbml0X21kaW8oZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE4LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOTpcXHRcXHRnb3RvIG1kaW9fZXJyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQwLXBoeWxpbmtfZXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NDE6XFx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk0MjptZGlvX2VycjpcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQzLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYyLVxcdHBoeWxpbmtfZGVzdHJveShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYzOlxcdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjQtXFx0YXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShkZXYtXFx1MDAzZWRyaXZlcl9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDAwOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9DVFJMLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAxLVxcdFxcdFxcdE1BUlZFTExfQ1RSTF9SWERFTEFZIHwgTUFSVkVMTF9DVFJMX1RYREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDMtXFx0aWYgKGRhdGEtXFx1MDAzZWxlZG1vZGUpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAwNDpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA5LVxcdFxcdHJlZyB8PSAoMSArIDB4MDEwMCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTA6XFx0XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjg6XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDBjLCAwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlID09IDEyKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzQ6XFx0XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1OlxcdFxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxYSwgMHgwMGNiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcXHRcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDM3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcXHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA2MzpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMLCByZWcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNjg9c3RhdGljIGludCBheDg4MTc4X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQxLVxcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQyOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVxcdFxcdFxcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQ0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQ1RSTDEwMDAsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNDUtXFx0XFx0XFx0QURWRVJUSVNFXzEwMDBGVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMjcxPXN0YXRpYyBpbnQgYXg4ODE3OF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5MC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5MTpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5MjpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkzLVxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgxZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxOTpcXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yMC1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9NTU9c3RhdGljIHZvaWQgYXg4ODE3MmFfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNjAtLyogdXNlIHBoeWxpYiBpbmZyYXN0cnVjdHVyZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjYxOnN0YXRpYyBpbnQgYXg4ODE3MmFfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02Mi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02NS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo2NjpcXHRwcml2LVxcdTAwM2VtZGlvID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjY3OlxcdGlmICghcHJpdi1cXHUwMDNlbWRpbykge1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTY4LVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgYWxsb2NhdGUgTURJTyBidXNcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzEtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzI6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlcHJpdiA9ICh2b2lkICopZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjczOlxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZXJlYWQgPSBcXHUwMDI2YXNpeF9tZGlvX2J1c19yZWFkO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjc0OlxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZXdyaXRlID0gXFx1MDAyNmFzaXhfbWRpb19idXNfd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzU6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlbmFtZSA9IFxcXCJBc2l4IE1ESU8gQnVzXFxcIjtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03Ni1cXHQvKiBtaWkgYnVzIG5hbWUgaXMgdXNiLVxcdTAwM2N1c2IgYnVzIG51bWJlclxcdTAwM2UtXFx1MDAzY3VzYiBkZXZpY2UgbnVtYmVyXFx1MDAzZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjc3OlxcdHNucHJpbnRmKHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCJ1c2ItJTAzZDolMDNkXFxcIixcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OC1cXHRcXHQgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c251bSwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXZudW0pO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTc5LVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODUtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6ODY6XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyZWdpc3RlcmVkIG1kaW8gYnVzICVzXFxcXG5cXFwiLCBwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODctXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy04OS1tZnJlZTpcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo5MDpcXHRtZGlvYnVzX2ZyZWUocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtOTEtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTkzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk0OnN0YXRpYyB2b2lkIGF4ODgxNzJhX3JlbW92ZV9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05NS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05Ny1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo5ODpcXHRuZXRkZXZfaW5mbyhkZXYtXFx1MDAzZW5ldCwgXFxcImRlcmVnaXN0ZXJpbmcgbWRpbyBidXMgJXNcXFxcblxcXCIsIHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo5OTpcXHRtZGlvYnVzX3VucmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MTAwOlxcdG1kaW9idXNfZnJlZShwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0xMDEtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MTU4PXN0YXRpYyBpbnQgYXg4ODE3MmFfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjI1LVxcdC8qIGluaXQgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoyMjY6XFx0cmV0ID0gYXg4ODE3MmFfaW5pdF9tZGlvKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjI3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNTM9c3RhdGljIHZvaWQgYXg4ODE3MmFfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yNTYtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjU3OlxcdGF4ODgxNzJhX3JlbW92ZV9tZGlvKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjU4LVxcdGtmcmVlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzExLVxcdHNucHJpbnRmKHByaXYtXFx1MDAzZXBoeV9uYW1lLCBzaXplb2YocHJpdi1cXHUwMDNlcGh5X25hbWUpLCBQSFlfSURfRk1ULFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxMjpcXHRcXHQgcHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlaWQsIHByaXYtXFx1MDAzZXBoeV9hZGRyKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi91c2JuZXQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTQ6I2luY2x1ZGUgXFx1MDAzY3VhcGkvbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0zMTQ9c3RhdGljIHZvaWQgYXg4ODE3OV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzozMzQ6c3RhdGljIGludCBheDg4MTc5X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0zMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTM0Mi1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MzQzOnN0YXRpYyB2b2lkIGF4ODgxNzlfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0zNDQtXFx0XFx0XFx0ICAgICAgIGludCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTI4MT1zdGF0aWMgaW50IGF4ODgxNzlfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTEzMDItXFx0ZGV2LVxcdTAwM2VtaWkuZGV2ID0gZGV2LVxcdTAwM2VuZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjEzMDM6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXg4ODE3OV9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjEzMDQ6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGF4ODgxNzlfbWRpb193cml0ZTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTMwNS1cXHRkZXYtXFx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9MTM3PXN0YXRpYyBpbnQgY29udHJvbF93cml0ZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0xNzYtXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjE3NzpzdGF0aWMgaW50IGNoOTIwMF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0xOTYtXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjE5NzpzdGF0aWMgdm9pZCBjaDkyMDBfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0xOTgtXFx0XFx0XFx0ICAgICAgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYz0zMzg9c3RhdGljIGludCBjaDkyMDBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTM0OC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM6MzQ5OlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGNoOTIwMF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjM1MDpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gY2g5MjAwX21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTM1MS1cXHRkZXYtXFx1MDAzZW1paS5yZWdfbnVtX21hc2sgPSAweDFmO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTIwMT1zdGF0aWMgaW50IGRtOTYwMV9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzoyMjA6c3RhdGljIGludCBkbTk2MDFfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTIyMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjM4LVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjIzOTpcXHRcXHQgICBcXFwiZG05NjAxX21kaW9fcmVhZCgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHJldHVybnM9MHglMDR4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNDAtXFx0XFx0ICAgcGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI0NC1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MjQ1OnN0YXRpYyB2b2lkIGRtOTYwMV9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI0Ni1cXHRcXHRcXHQgICAgICBpbnQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI1NS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MjU2OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJkbTk2MDFfbWRpb193cml0ZSgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHZhbD0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI1Ny1cXHRcXHQgICBwaHlfaWQsIGxvYywgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYz0zMzg9c3RhdGljIGludCBkbTk2MDFfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTM1OC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MzU5OlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGRtOTYwMV9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjM2MDpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gZG05NjAxX21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTM2MS1cXHRkZXYtXFx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4MWY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDExLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MTI6XFx0ZG05NjAxX21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIEJNQ1JfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MTM6XFx0ZG05NjAxX21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDE0LVxcdFxcdFxcdCAgQURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNFX1BBVVNFX0NBUCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcHY2LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDojaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWljcm9jaGlwcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMDojaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00MTM9c3RydWN0IGxhbjc4eHhfbmV0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDQxLVxcdHN0cnVjdCBtdXRleFxcdFxcdGRldl9tdXRleDsgLyogc2VyaWFsaXNlIG9wZW4vc3RvcCB3cnQgc3VzcGVuZC9yZXN1bWUgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ0MjpcXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRtZGlvYnVzX211dGV4OyAvKiBmb3IgTURJTyBidXMgYWNjZXNzICovXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NDMtXFx0dW5zaWduZWQgaW50XFx0XFx0cGlwZV9pbiwgcGlwZV9vdXQsIHBpcGVfaW50cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4LVxcdHUzMlxcdFxcdFxcdGNoaXByZXY7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0NTk6XFx0c3RydWN0IG1paV9idXNcXHRcXHQqbWRpb2J1cztcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ2MC1cXHRwaHlfaW50ZXJmYWNlX3RcXHRcXHRpbnRlcmZhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTk0Nj1zdGF0aWMgaW50IGxhbjc4eHhfZmx1c2hfcnhfZmlmbyhzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOTUwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6OTUxOi8qIExvb3AgdW50aWwgdGhlIHJlYWQgaXMgY29tcGxldGVkIHdpdGggdGltZW91dCBjYWxsZWQgd2l0aCBtZGlvYnVzX211dGV4IGhlbGQgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjk1MjpzdGF0aWMgaW50IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTU2MT1zdGF0aWMgaW50IGxhbjc4eHhfbWFjX3Jlc2V0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNTY2LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTU2NzpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1kaW9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU3Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE1NzM6XFx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE1NzQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE2MDEtZXhpdF91bmxvY2s6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNjAyOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtZGlvYnVzX211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE2MDMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE5MjM9c3RhdGljIGludCBsYW43OHh4X2luaXRfbWFjX2FkZHJlc3Moc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE5OTAtLyogTURJTyByZWFkIGFuZCB3cml0ZSB3cmFwcGVycyBmb3IgcGh5bGliICovXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxOTkxOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGlkeClcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE5OTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDAwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjAwMTpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1kaW9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAwMi1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDMtXFx0LyogY29uZmlybSBNSUkgbm90IGJ1c3kgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwMDQ6XFx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMTMtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDE0OlxcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDE1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDI0LWRvbmU6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDI1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtZGlvYnVzX211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMjYtXFx0dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi1cXHUwMDNlaW50Zik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMzAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDMxOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCBpZHgsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDMyLVxcdFxcdFxcdFxcdCB1MTYgcmVndmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDQxLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA0MjpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1kaW9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA0My1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNDQtXFx0LyogY29uZmlybSBNSUkgbm90IGJ1c3kgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwNDU6XFx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNDYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNTktXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDYwOlxcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDYxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDY0LWRvbmU6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDY1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtZGlvYnVzX211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNjYtXFx0dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi1cXHUwMDNlaW50Zik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNjktXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDcwOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA3NC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwNzU6XFx0ZGV2LVxcdTAwM2VtZGlvYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA3NjpcXHRpZiAoIWRldi1cXHUwMDNlbWRpb2J1cykge1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA3Ny1cXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiY2FuJ3QgYWxsb2NhdGUgTURJTyBidXNcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDgwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA4MTpcXHRkZXYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXByaXYgPSAodm9pZCAqKWRldjtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwODI6XFx0ZGV2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VyZWFkID0gbGFuNzh4eF9tZGlvYnVzX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgzOlxcdGRldi1cXHUwMDNlbWRpb2J1cy1cXHUwMDNld3JpdGUgPSBsYW43OHh4X21kaW9idXNfd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg0OlxcdGRldi1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlbmFtZSA9IFxcXCJsYW43OHh4LW1kaW9idXNcXFwiO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA4NTpcXHRkZXYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXBhcmVudCA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwODYtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg3OlxcdHNucHJpbnRmKGRldi1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcInVzYi0lMDNkOiUwM2RcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA4OC1cXHRcXHQgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c251bSwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXZudW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDkzLVxcdFxcdC8qIHNldCB0byBpbnRlcm5hbCBQSFkgaWQgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwOTQ6XFx0XFx0ZGV2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VwaHlfbWFzayA9IH4oMSBcXHUwMDNjXFx1MDAzYyAxKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwOTUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwOTktXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTAwOlxcdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxOToxNS44NDA1ODgyMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNTIyNTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGZvciBQSFkgSW5zdGFudGlhdGlvbioqXG5cbk9rYXksIGhlcmUncyB0aGUgcGxhbi4gSXQgbG9va3MgbGlrZSBgYXNpeGAsIGBheDg4MTcyYWAsIGBheDg4MTc5XzE3OGFgLCBhbmQgYGxhbjc4eHhgIGFsbCByZWx5IG9uIE1ESU8gYnVzZXMuIElmIEkgZnV6eiB0aGUgVVNCIGludGVyZmFjZSBhbmQgZW11bGF0ZSBlaXRoZXIgYW4gQVNJWCBvciBMQU43OHh4IGRldmljZSwgd2hlbiB0aGUgZHJpdmVyIHByb2JlcywgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIGFuIE1ESU8gYnVzLiBUaGVuIHRoYXQgTURJTyBidXMgd2lsbCBnbyBvZmYgYW5kIHNjYW4gZm9yIFBIWXMuXG5cbk5vdywgaWYgbXkgZW11bGF0ZWQgVVNCIGRldmljZSBjYW4gcmVzcG9uZCB0byBNRElPIHJlYWQgY29tbWFuZHMg4oCTIHdoaWNoIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvIFVTQiBjb250cm9sIG1lc3NhZ2VzIOKAkyBhbmQgaXQgKmNsYWltcyogdGhlIFBIWSBJRCBpcyBgUlRMXzgyNjFDX0NHYCwgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYDB4MDAxY2M4OThgLCB0aGUgUEhZIHN1YnN5c3RlbSB3aWxsIGluc3RhbnRpYXRlIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXIgYW5kIGNhbGwgYHJ0bDgyNjF4X3Byb2JlYC5cblxuSnVzdCBjb25maXJtaW5nLCBgUlRMXzgyNjFDX0NHYCBpcyBkZWZpbml0ZWx5IGAweDAwMWNjODk4YC4gUmlnaHQsIHRpbWUgdG8gZGlzc2VjdCBgcnRsODI2MXhfcHJvYmVgLiBMZXQncyBzZWUgd2hhdCB0aGF0IGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODk4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjIxLjE2NTgxNjIxM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzg2LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzg2OlxcdHN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gMzg3OlxcdHtcXG4gMzg4OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbiAzODk6XFx0XFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XFxuIDM5MDpcXHRcXHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xcbiAzOTE6XFx0XFxuIDM5MjpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuIDM5MzpcXHRcXHRpZiAoIXByaXYpXFxuIDM5NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzk1OlxcdFxcbiAzOTY6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gMzk3OlxcdFxcbiAzOTg6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfQUREUl9SRUcsXFxuIDM5OTpcXHRcXHRcXHRcXHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XFxuIDQwMDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNDAxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQwMjpcXHRcXG4gNDAzOlxcdFxcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xcbiA0MDQ6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQwNTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MDY6XFx0XFxuIDQwNzpcXHRcXHRzdWJfcGh5X2lkID0gKHJldCBcXHUwMDNlXFx1MDAzZSA4KSBcXHUwMDI2IDB4ZmY7XFxuIDQwODpcXHRcXG4gNDA5OlxcdFxcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xcbiA0MTA6XFx0XFx0Y2FzZSBSVEw4MjYxQ19DRV9NT0RFTDpcXG4gNDExOlxcdFxcdFxcdHByaXYtXFx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xcbiA0MTI6XFx0XFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDEzOlxcdFxcdFxcdGJyZWFrO1xcbiA0MTQ6XFx0XFxuIDQxNTpcXHRcXHRkZWZhdWx0OlxcbiA0MTY6XFx0XFx0XFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcXFwiVW5rbm93biBzdWJfaWQgMHglMDJ4LCBkZWZhdWx0IGJlaGF2aW9yXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDE3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA0MTg6XFx0XFx0fVxcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRyZXR1cm4gMDtcXG4gNDIxOlxcdH1cXG4gNDIyOlxcdFxcbiA0MjM6XFx0c3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gNDI0OlxcdHtcXG4gNDI1OlxcdFxcdGludCByZXQ7XFxuIDQyNjpcXHRcXG4gNDI3OlxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuIDQyODpcXHRcXHRpZiAocmV0KVxcbiA0Mjk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDMwOlxcdFxcdC8qXFxuIDQzMTpcXHRcXHQgKiBTdXBwbGVtZW50IE11bHRpLUdpZyBzcGVlZHMgdGhhdCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWRcXG4gNDMyOlxcdFxcdCAqIFJUTDgyNjFYIHN1cHBvcnRzIDIuNUcvNUcgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgMTBHXFxuIDQzMzpcXHRcXHQgKi9cXG4gNDM0OlxcdFxcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxcbiA0MzU6XFx0XFx0XFx0XFx0IHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MjEuMTY2MDc2ODczWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MzM4NjI1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSVEw4MjYxeCBQSFkgSW5pdGlhbGl6YXRpb24gUGF0aCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHJ0bDgyNjF4X3Byb2JlYCBpcyBxdWVyeWluZyB0aGUgTU1EIHJlZ2lzdGVycy4gSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgcGxheXMgYWxvbmcgYW5kIHByb3ZpZGVzIGBSVEw4MjYxQ19DRV9NT0RFTGAgaW4gYHN1Yl9waHlfaWRgIGluIHJlc3BvbnNlIHRvIHRob3NlIE1NRCByZWFkcywgdGhlbiB3ZSdsbCBwcm9jZWVkIHRvIGBydGw4MjYxeF9jb25maWdfaW5pdGAuIE5vdywgd2l0aGluIGBydGw4MjYxeF9jb25maWdfaW5pdGAsIHRoZSBmdW5jdGlvbiBgcnRsODI2MXhfZndfbG9hZGAgZ2V0cyBjYWxsZWQuXG5cbkhlcmUncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nOiBgcnRsODI2MXhfZndfbG9hZGAgcmVsaWVzIG9uIGByZXF1ZXN0X2Zpcm13YXJlYC4gVGhlIGNyaXRpY2FsIHBhdGggdGhlbiBoaW5nZXMgb24gZmlybXdhcmUgYXZhaWxhYmlsaXR5LiBBc3N1bWluZyBpdCdzIHByZXNlbnQgKG9yIHRoYXQgd2UgY2FuIHNldCB1cCBhIG1vY2sgZW52aXJvbm1lbnQsIHdoaWNoIG1pZ2h0IGJlIHRyaWNreSB3aXRoIHN5emthbGxlciBpZiB0aGUgZmlybXdhcmUgaXNuJ3QgaW4gdGhlIHJvb3RmcyksIHdlJ2xsIHdhaXQgZm9yIHRoZSBsb2FkLiBJZiBgcmVxdWVzdF9maXJtd2FyZWAgZmFpbHMg4oCTIHdoaWNoIGlzIHdoYXQgd2UgYXJlIGFmdGVyLCBpdCByZXR1cm5zIGFuIGVycm9yLCBhbmQgdGhlIGVudGlyZSBgcnRsODI2MXhfY29uZmlnX2luaXRgIHByb2Nlc3MgYmxvd3MgdXAuIFRoaXMgY2F1c2VzIHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gdG8gZmFpbCwgYnV0LCBjcml0aWNhbGx5LCB3ZSd2ZSBkZW1vbnN0cmF0ZWQgdGhhdCB3ZSd2ZSByZWFjaGVkIHRoZSBjb2RlIHBhdGhzIGluIGBydGw4MjYxeF9wcm9iZWAgYW5kIGBydGw4MjYxeF9jb25maWdfaW5pdGAuXG5cbk9uIGEgc2lkZSBub3RlLCBJIHNlZSB0aGF0IGdlbmVyaWMgQ2xhdXNlIDQ1IFBIWSBmdW5jdGlvbnMgbGlrZSBgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0YCwgYGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlYCwgYW5kIGBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlYCBoYXZlIGJlZW4gYWRkZWQgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgLiBUaGV5J3JlIG5vdyBhdmFpbGFibGUgdG8gYW55IEM0NSBQSFkuXG5cblRoZSBuZXh0IHBvaW50IHRvIGFuYWx5emUgaXMgdGhhdCBgZ2VucGh5X2M0NV9yZWFkX3N0YXR1c2AgYW5kIGBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnYCBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYGdlbnBoeV9jNDVfcmVhZF9zdGF0dXNgIHRvIHNlZSBob3cgaXQgY2FsbHMgdGhlIG5ldyBoZWxwZXIgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIxNCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjI5LjA5OTk0Mjk1NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjkwOlxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9saW5rKHBoeWRldik7XFxuMTI5MTpcXHRcXHRpZiAocmV0KVxcbjEyOTI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMjkzOlxcdFxcbjEyOTQ6XFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XFxuMTI5NTpcXHRcXHRwaHlkZXYtXFx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbjEyOTY6XFx0XFx0cGh5ZGV2LVxcdTAwM2VwYXVzZSA9IGZhbHNlO1xcbjEyOTc6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vhc3ltX3BhdXNlID0gZmFsc2U7XFxuMTI5ODpcXHRcXG4xMjk5OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUpIHtcXG4xMzAwOlxcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9scGEocGh5ZGV2KTtcXG4xMzAxOlxcdFxcdFxcdGlmIChyZXQpXFxuMTMwMjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMDM6XFx0XFxuMTMwNDpcXHRcXHRcXHRpZiAoZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XFxuMTMwNTpcXHRcXHRcXHRcXHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xcbjEzMDY6XFx0XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTMwNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMDg6XFx0XFx0XFx0fSBlbHNlIHtcXG4xMzA5OlxcdFxcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcXG4xMzEwOlxcdFxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEzMTE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzEyOlxcdFxcdFxcdH1cXG4xMzEzOlxcdFxcbjEzMTQ6XFx0XFx0XFx0cGh5X3Jlc29sdmVfYW5lZ19saW5rbW9kZShwaHlkZXYpO1xcbjEzMTU6XFx0XFx0fSBlbHNlIHtcXG4xMzE2OlxcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9wbWEocGh5ZGV2KTtcXG4xMzE3OlxcdFxcdH1cXG4xMzE4OlxcdFxcbjEzMTk6XFx0XFx0cmV0dXJuIHJldDtcXG4xMzIwOlxcdH1cXG4xMzIxOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMpO1xcbjEzMjI6XFx0XFxuMTMyMzpcXHQvKipcXG4xMzI0OlxcdCAqIGdlbnBoeV9jNDVfY29uZmlnX2FuZWcgLSByZXN0YXJ0IGF1dG8tbmVnb3RpYXRpb24gb3IgZm9yY2VkIHNldHVwXFxuMTMyNTpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xMzI2OlxcdCAqXFxuMTMyNzpcXHQgKiBEZXNjcmlwdGlvbjogSWYgYXV0by1uZWdvdGlhdGlvbiBpcyBlbmFibGVkLCB3ZSBjb25maWd1cmUgdGhlXFxuMTMyODpcXHQgKiAgIGFkdmVydGlzaW5nLCBhbmQgdGhlbiByZXN0YXJ0IGF1dG8tbmVnb3RpYXRpb24uICBJZiBpdCBpcyBub3RcXG4xMzI5OlxcdCAqICAgZW5hYmxlZCwgdGhlbiB3ZSBmb3JjZSBhIGNvbmZpZ3VyYXRpb24uXFxuMTMzMDpcXHQgKi9cXG4xMzMxOlxcdGludCBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTMzMjpcXHR7XFxuMTMzMzpcXHRcXHRib29sIGNoYW5nZWQgPSBmYWxzZTtcXG4xMzM0OlxcdFxcdGludCByZXQ7XFxuMTMzNTpcXHRcXG4xMzM2OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19ESVNBQkxFKVxcbjEzMzc6XFx0XFx0XFx0cmV0dXJuIGdlbnBoeV9jNDVfcG1hX3NldHVwX2ZvcmNlZChwaHlkZXYpO1xcbjEzMzg6XFx0XFxuMTMzOTpcXHRcXHRyZXQgPSBnZW5waHlfYzQ1X2FuX2NvbmZpZ19hbmVnKHBoeWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjI5LjEwMDEzODEzNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDAwMzc1NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQzQ1IFBIWSBNYXN0ZXIvU2xhdmUgQ29uZmlndXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgYGdlbnBoeV9jNDVfcmVhZF9zdGF0dXNgIGFuZCBgZ2VucGh5X2M0NV9jb25maWdfYW5lZ2AgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQuIFRoZXkgbm93IGNhbGwgYGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmVgIGFuZCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCByZXNwZWN0aXZlbHkuIFRoaXMgaXMgdGFyZ2V0ZWQgYXQgQzQ1IFBIWXMgd2l0aCBhdXRvbmVnb3RpYXRpb24gZW5hYmxlZCwgZXhjbHVkaW5nIEJhc2VUMSBQSFlzLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGNsZWFybHkgcmVhY2hhYmxlIHdpdGhpbiB0aGUgZXhpc3RpbmcgZHJpdmVyIHN0cnVjdHVyZS4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBsb2dpYyBmb3IgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gaW4gQzQ1IFBIWXMsIGFuZCBhbHNvIGFkZHMgYSBuZXcgUmVhbHRlayBQSFkgZHJpdmVyLiBXb3J0aCBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGZvciBmdXp6aW5nIHBvdGVudGlhbC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUgc3BlY2lmaWMgc3ltYm9scyB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIHdlIGhhdmUgYSBnb29kIHNldDogYGdlbnBoeV9jNDVfc29mdF9yZXNldGAsIGBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZWAsIGBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlYCwgYW5kIHRoZW4gdGhlIFJlYWx0ZWstc3BlY2lmaWMgZnVuY3Rpb25zOiBgcnRsODI2MXhfcHJvYmVgLCBgcnRsODI2MXhfZ2V0X2ZlYXR1cmVzYCwgYHJ0bDgyNjF4X3JlYWRfc3RhdHVzYCwgYHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZWAsIGBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5YCwgYHJ0bDgyNjF4X2Z3X2xvYWRgLCBgcnRsODI2MXhfY29uZmlnX2ludHJgLCBgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdGAsIGBydGw4MjYxeF9jb25maWdfYW5lZ2AsIGFuZCBgcnRsODI2MXhfY29uZmlnX2luaXRgLlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExldCdzIHNlZS4uLiBpcyBgQ09ORklHX1JFQUxURUtfUEhZYCB0aGUgb25seSBjb25maWcgbmVlZGVkPyBZZXMsIGl0IHNlZW1zIHRvIGJlLiBCdXQgd2FpdCwgYGdlbnBoeV9jNDVfc29mdF9yZXNldGAgYW5kIG90aGVycyBhcmUgaW4gYHBoeS1jNDUuY2AsIHdoaWNoIGNvbXBpbGVzIHdpdGggYENPTkZJR19QSFlMSUJgLiBBbmQgYENPTkZJR19SRUFMVEVLX1BIWWAgZGVwZW5kcyBvbiBgQ09ORklHX1BIWUxJQmAuIFNvLCBgQ09ORklHX1JFQUxURUtfUEhZYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYWN0aXZhdGluZyB0aGUgbmV3IGxvZ2ljLiBKdXN0IG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgIGlzIGNvbXBpbGVkIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODI2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MzcuNTAwNTE1NDgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDc3ODYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHktYzQ1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVxcdFxcdFxcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXFx0XFx0XFx0XFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MzcuNTYxMzAwMzQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMjA5ODY2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwaHktYzQ1Lm9gIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcIlRoYXQncyBwYXJ0IG9mIGBsaWJwaHlgXCIuIE5hdHVyYWxseSwgaXQncyBvbmx5IGJ1aWx0IHdoZW4gYENPTkZJR19QSFlMSUJgIGlzIGVuYWJsZWQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYHJ0bDgyNjF4X2Z3X2xvYWRgLiBJdCdzIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfRldfTE9BREVSYCBpcyBlbmFibGVkLCB3aGljaCBpdCB1c3VhbGx5IGlzLiBcblxuVGltZSB0byByZWZpbmUgdGhhdCBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEkndmUgZ290IGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgY292ZXIgYWxsIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIFRoaW5raW5nIHRoaXMgdGhyb3VnaCwgSSdtIGxlYW5pbmcgdG93YXJkIHRoZXNlOiBgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0YCwgYGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlYCwgYGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmVgLCBhbmQgdGhlbiB0aGUgYHJ0bDgyNjF4YCBmdW5jdGlvbnM6IGBydGw4MjYxeF9wcm9iZWAsIGBydGw4MjYxeF9nZXRfZmVhdHVyZXNgLCBgcnRsODI2MXhfcmVhZF9zdGF0dXNgLCBgcnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlYCwgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgLCBgcnRsODI2MXhfZndfbG9hZGAsIGBydGw4MjYxeF9jb25maWdfaW50cmAsIGBydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0YCwgYHJ0bDgyNjF4X2NvbmZpZ19hbmVnYCwgYW5kIGBydGw4MjYxeF9jb25maWdfaW5pdGAuIFllYWgsIHRoZXNlIGFsbCBsb29rIGxpa2UgZXhjZWxsZW50IGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuIFRoZXkgdG91Y2ggZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlIGRyaXZlcidzIG9wZXJhdGlvbiwgZnJvbSBoYXJkd2FyZSBpbnRlcmFjdGlvbiB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuXG5cbkknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlncyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIEkgdGhpbmsgYFJFQUxURUtfUEhZYCBpcyB0aGUgbWFpbiBvbmUgdG8ga2VlcCBhbiBleWUgb24uIEkgc2hvdWxkIGJlIGNvdmVyZWQgdGhlcmUuXG5cbkFscmlnaHQsIHRoYXQncyBlbm91Z2ggZm9yIG5vdy4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTkyOSwiT3V0cHV0VG9rZW5zIjoyODMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6NDUuODgyMjg5NzIxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM1ODY5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJFQUxURUtfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0XCIsXG4gICAgXCJnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZVwiLFxuICAgIFwiZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZVwiLFxuICAgIFwicnRsODI2MXhfcHJvYmVcIixcbiAgICBcInJ0bDgyNjF4X2dldF9mZWF0dXJlc1wiLFxuICAgIFwicnRsODI2MXhfcmVhZF9zdGF0dXNcIixcbiAgICBcInJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZVwiLFxuICAgIFwicnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeVwiLFxuICAgIFwicnRsODI2MXhfZndfbG9hZFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2ludHJcIixcbiAgICBcInJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHRcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19hbmVnXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZvciBDbGF1c2UgNDUgUEhZcyBhbmQgaW50cm9kdWNlcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIgKFJUTDgyNjFDKSB3aXRoIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgcmVhY2hhYmxlIHZpYSBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHRocm91Z2ggVVNCIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbikgYW5kIGNvbnRhaW4gY29tcGxleCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnZW5waHlfYzQ1X3NvZnRfcmVzZXRcIixcbiAgICBcImdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJydGw4MjYxeF9wcm9iZVwiLFxuICAgIFwicnRsODI2MXhfZ2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJydGw4MjYxeF9yZWFkX3N0YXR1c1wiLFxuICAgIFwicnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlXCIsXG4gICAgXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCIsXG4gICAgXCJydGw4MjYxeF9md19sb2FkXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW50clwiLFxuICAgIFwicnRsODI2MXhfaGFuZGxlX2ludGVycnVwdFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2FuZWdcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gbG9naWMgZm9yIENsYXVzZSA0NSBQSFlzIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IFJlYWx0ZWsgUEhZIGRyaXZlciAoUlRMODI2MUMpIHdpdGggZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSByZWFjaGFibGUgdmlhIE1ESU8gYnVzIGVtdWxhdGlvbiAoZS5nLiwgdGhyb3VnaCBVU0IgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uKSBhbmQgY29udGFpbiBjb21wbGV4IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 07:05:24 +0000 UTC FinishedAt: 2026-06-29 07:19:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "826f11dd-9a30-4aea-a042-99fee73b1446" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "genphy_c45_soft_reset", "genphy_c45_an_setup_master_slave", "genphy_c45_read_master_slave", "rtl8261x_probe", "rtl8261x_get_features", "rtl8261x_read_status", "rtl8261x_verify_firmware", "rtl8261x_fw_execute_entry", "rtl8261x_fw_load", "rtl8261x_config_intr", "rtl8261x_handle_interrupt", "rtl8261x_config_aneg", "rtl8261x_config_init" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2VucGh5X2M0NV9zb2Z0X3Jlc2V0JiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlJiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZ2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3JlYWRfc3RhdHVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9md19leGVjdXRlX2VudHJ5JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2xvYWQmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfY29uZmlnX2ludHImIzM0OywKICAgICYjMzQ7cnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfYW5lZyYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBNYXN0ZXIvU2xhdmUgY29uZmlndXJhdGlvbiBsb2dpYyBmb3IgQ2xhdXNlIDQ1IFBIWXMgYW5kIGludHJvZHVjZXMgYSBuZXcgUmVhbHRlayBQSFkgZHJpdmVyIChSVEw4MjYxQykgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcy4gVGhlc2UgZmVhdHVyZXMgYXJlIHJlYWNoYWJsZSB2aWEgTURJTyBidXMgZW11bGF0aW9uIChlLmcuLCB0aHJvdWdoIFVTQiBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24pIGFuZCBjb250YWluIGNvbXBsZXggbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjIzMTRlNTA0YTkyZWNiYTU5Y2E1NWU0ZmQwZWJjNTU5ZTQ1OTBiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA3OjE4OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXG5pbmRleCAxMjY5NTE3NDE0Mjg4Zi4uZGY2ODJkM2ViZDVhMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXG5AQCAtMzg0LDYgJiM0MzszODQsMTE5IEBAIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0IC0gc29mdHdhcmUgcmVzZXQgdGhlIFBIWSB2aWEgQ2xhdXNlIDQ1IFBNQS9QTUQgY29udHJvbCByZWdpc3RlclxuJiM0MzsgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0LCB2YWw7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsIE1ESU9fQ1RSTDEsXG4mIzQzO1x0XHRcdCAgICAgICBNRElPX0NUUkwxX1JFU0VUKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXG4mIzQzO1x0XHRcdFx0XHQgTURJT19DVFJMMSwgdmFsLFxuJiM0MztcdFx0XHRcdFx0ICEodmFsIFx1MDAyNiBNRElPX0NUUkwxX1JFU0VUKSxcbiYjNDM7XHRcdFx0XHRcdCA1MDAwLCA2MDAwMDAsIHRydWUpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfc29mdF9yZXNldCk7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUgLSBDb25maWd1cmUgTWFzdGVyL1NsYXZlIHNldHRpbmcgZm9yIEM0NSBQSFlzXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKlxuJiM0MzsgKiBEZXNjcmlwdGlvbjogQ29uZmlndXJlIHRoZSBmb3JjZWQgb3IgcHJlZmVycmVkIE1hc3Rlci9TbGF2ZSByb2xlXG4mIzQzOyAqIDEwR0JBU0UtVCBjb250cm9sIHJlZ2lzdGVyIChNTUQgNywgUmVnaXN0ZXIgMHgwMDIwKSBhY2NvcmRpbmcgdG9cbiYjNDM7ICogSUVFRSA4MDIuMyBzdGFuZGFyZHMuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLCAwIGlmIE1hc3Rlci9TbGF2ZSBkaWRuJiMzOTt0IGNoYW5nZSxcbiYjNDM7ICogb3IgMSBpZiBNYXN0ZXIvU2xhdmUgbW9kZXMgY2hhbmdlZC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHUxNiBjdGwgPSAwO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc2V0KSB7XG4mIzQzO1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ6XG4mIzQzO1x0XHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX1BSRUZFUlJFRDpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U6XG4mIzQzO1x0XHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFIHwgTURJT19BTl8xMEdCVF9DVFJMX01TX1ZBTFVFO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOlxuJiM0MztcdFx0Y3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTktOT1dOOlxuJiM0MztcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTlNVUFBPUlRFRDpcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwmIzM0O1Vuc3VwcG9ydGVkIE1hc3Rlci9TbGF2ZSBtb2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fMTBHQlRfQ1RSTCxcbiYjNDM7XHRcdFx0XHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFIHxcbiYjNDM7XHRcdFx0XHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfFxuJiM0MztcdFx0XHRcdCAgICAgIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19QT1JUX1RZUEUsIGN0bCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlIC0gcmVhZCBtYXN0ZXIvc2xhdmUgc3RhdHVzXG4mIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuJiM0MzsgKlxuJiM0MzsgKiBEZXNjcmlwdGlvbjogUmVhZCB0aGUgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gYW5kIHN0YXR1c1xuJiM0MzsgKiBmcm9tIDEwR0JBU0UtVCBjb250cm9sL3N0YXR1cyByZWdpc3RlcnMgKE1NRCA3LCBSZWcgMHgwMDIwIGFuZCAweDAwMjEpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdGludCB2YWw7XG4mIzQzO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19VTktOT1dOO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfVU5LTk9XTjtcbiYjNDM7XG4mIzQzO1x0dmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fMTBHQlRfQ1RSTCk7XG4mIzQzO1x0aWYgKHZhbCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiB2YWw7XG4mIzQzO1xuJiM0MztcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUpIHtcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRSlcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9GT1JDRTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAodmFsIFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFKVxuJiM0MztcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX1BSRUZFUlJFRDtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX1BSRUZFUlJFRDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX1NUQVQpO1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAodmFsIFx1MDAyNiBNRElPX0FOXzEwR0JUX1NUQVRfTVNfRkFVTFQpIHtcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSO1xuJiM0MztcdH0gZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWxpbmspIHtcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfU1RBVF9NU19SRVMpXG4mIzQzO1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfTUFTVEVSO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1NMQVZFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1VOS05PV047XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBnZW5waHlfYzQ1X2FuZWdfZG9uZSAtIHJldHVybiBhdXRvLW5lZ290aWF0aW9uIGNvbXBsZXRlIHN0YXR1c1xuICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuQEAgLTExOTIsNiAmIzQzOzEzMDUsMTAgQEAgaW50IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xuIFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0cmV0ID0gZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZShwaHlkZXYpO1xuJiM0MztcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4gXHRcdH1cbiBcbiBcdFx0cGh5X3Jlc29sdmVfYW5lZ19saW5rbW9kZShwaHlkZXYpO1xuQEAgLTEyMjUsNiAmIzQzOzEzNDIsMTQgQEAgaW50IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmIChyZXQgXHUwMDNlIDApXG4gXHRcdGNoYW5nZWQgPSB0cnVlO1xuIFxuJiM0MztcdGlmICghZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XG4mIzQzO1x0XHRyZXQgPSBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZShwaHlkZXYpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRcdGNoYW5nZWQgPSB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHBoeWRldiwgY2hhbmdlZCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfY29uZmlnX2FuZWcpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbmluZGV4IDI3MjY4ODExZjU2NGYyLi5iZjdiYzE5ZmI0NGNkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTgsNyAmIzQzOzgsOSBAQFxuICAqIENvcHlyaWdodCAoYykgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxuICAqL1xuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sX25ldGxpbmsuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fd2FrZWlycS5oXHUwMDNlXG5AQCAtMTQxLDYgJiM0MzsxNDMsMTAgQEBcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDFcdFx0MTdcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDJcdFx0MThcbiBcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9FWFRfQUREUl9SRUdcdFx0XHQweGE0MzZcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUdcdFx0XHQweGE0MzhcbiYjNDM7I2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXHRcdDB4ODAxZFxuJiM0MztcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OXHRcdFx0MHg2OTdhXG4gI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTl9NT0RFX01BU0tcdFx0R0VOTUFTSyg1LCAwKVxuICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV8yNTAwQkFTRVhfU0dNSUlcdFx0MFxuQEAgLTI1MSw2ICYjNDM7MjU3LDY4IEBAXG4gI2RlZmluZSBSVExfODIyMUJfVk1fQ0dcdFx0XHRcdDB4MDAxY2M4NGFcbiAjZGVmaW5lIFJUTF84MjUxQlx0XHRcdFx0MHgwMDFjYzg2MlxuICNkZWZpbmUgUlRMXzgyNjFDXHRcdFx0XHQweDAwMWNjODkwXG4mIzQzOyNkZWZpbmUgUlRMXzgyNjFDX0NHXHRcdFx0XHQweDAwMWNjODk4XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFDX0NFX01PREVMXHRcdDB4MDBcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUlx0QklUKDApXG4mIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX1BBR0VfUkVDVlx0XHRCSVQoMilcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FXHRCSVQoMylcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfTElOS19DSEdcdFx0QklUKDQpXG4mIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTXHRCSVQoNSlcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfUE1FXHRcdEJJVCg3KVxuJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9BTERQU19DSEdcdFx0QklUKDkpXG4mIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX0pBQkJFUlx0XHRCSVQoMTApXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9NQVNLX0RFRkFVTFRcdChSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfSkFCQkVSKVxuJiM0MztcbiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19BTExcdFx0KFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfUEFHRV9SRUNWIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9QSFlfUkVHX0FDQ0VTUyB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX1BNRSB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0FMRFBTX0NIRyB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0pBQkJFUilcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRldfTUFJTl9NQUdJQ1x0XHRcdDB4NTI1NDRDMzhcbiYjNDM7I2RlZmluZSBGV19TVUJfTUFHSUNfODI2MUNcdFx0MHgzMjM2MzE0M1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFYX1BPTExfVElNRU9VVF9NU1x0MTAwXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUTDgyNjFDX0NFX0ZXX05BTUVcdFwmIzM0O3J0bF9uaWMvcnRsODI2MWMuYmluXCYjMzQ7XG4mIzQzO01PRFVMRV9GSVJNV0FSRShSVEw4MjYxQ19DRV9GV19OQU1FKTtcbiYjNDM7XG4mIzQzO2VudW0gcnRsODI2MXhfZndfb3Age1xuJiM0MztcdE9QX1dSSVRFID0gMHgwMCxcdC8qIFdyaXRlICovXG4mIzQzO1x0T1BfUE9MTCAgPSAweDAyLFx0LyogUG9sbGluZyAqL1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XG4mIzQzO1x0X19sZTMyIG1haW5fbWFnaWM7XHQvKiBNYWluIG1hZ2ljIG51bWJlciAweDUyNTQ0QzM4IChcJiMzNDtSVEw4XCYjMzQ7KSAqL1xuJiM0MztcdF9fbGUzMiBzdWJfbWFnaWM7XHQvKiBTdWIgbWFnaWMgbnVtYmVyICovXG4mIzQzO1x0X19sZTE2IHZlcnNpb25fbWFqb3I7XHQvKiBNYWpvciB2ZXJzaW9uICovXG4mIzQzO1x0X19sZTE2IHZlcnNpb25fbWlub3I7XHQvKiBNaW5vciB2ZXJzaW9uICovXG4mIzQzO1x0X19sZTE2IG51bV9lbnRyaWVzO1x0LyogTnVtYmVyIG9mIGVudHJpZXMgKi9cbiYjNDM7XHRfX2xlMTYgcmVzZXJ2ZWQ7XHQvKiBSZXNlcnZlZCAqL1xuJiM0MztcdF9fbGUzMiBjcmMzMjtcdFx0LyogQ1JDMzIgY2hlY2tzdW0gKi9cbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBydGw4MjYxeF9md19lbnRyeSB7XG4mIzQzO1x0X191OCAgdHlwZTtcdFx0LyogT3BlcmF0aW9uIHR5cGUgKE9QXyopICovXG4mIzQzO1x0X191OCAgZGV2O1x0XHQvKiBNTUQgZGV2aWNlICovXG4mIzQzO1x0X19sZTE2IGFkZHI7XHRcdC8qIFJlZ2lzdGVyIGFkZHJlc3MgKi9cbiYjNDM7XHRfX3U4ICBtc2I7XHRcdC8qIE1TQiBiaXQgcG9zaXRpb24gKi9cbiYjNDM7XHRfX3U4ICBsc2I7XHRcdC8qIExTQiBiaXQgcG9zaXRpb24gKi9cbiYjNDM7XHRfX2xlMTYgdmFsdWU7XHRcdC8qIFZhbHVlIHRvIHdyaXRlL2NvbXBhcmUgKi9cbiYjNDM7XHRfX2xlMTYgdGltZW91dF9tcztcdC8qIFBvbGwgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi9cbiYjNDM7XHRfX3U4ICBwb2xsX3NldDtcdFx0LyogUG9sbCBmb3Igc2V0ICgxKSBvciBjbGVhciAoMCkgKi9cbiYjNDM7XHRfX3U4ICByZXNlcnZlZDtcdFx0LyogUmVzZXJ2ZWQgKi9cbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRldfSEVBREVSX1NJWkVcdFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpXG4mIzQzOyNkZWZpbmUgRldfRU5UUllfU0laRVx0XHRzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5KVxuIFxuIC8qIFJUTDgyMTFFIGFuZCBSVEw4MjExRiBzdXBwb3J0IHVwIHRvIHRocmVlIExFRHMgKi9cbiAjZGVmaW5lIFJUTDgyMTF4X0xFRF9DT1VOVFx0XHRcdDNcbkBAIC0yNzAsNiAmIzQzOzMzOCwxMSBAQCBzdHJ1Y3QgcnRsODIxeF9wcml2IHtcbiBcdHUxNiBpbmVyO1xuIH07XG4gXG4mIzQzO3N0cnVjdCBydGw4MjYxeF9wcml2IHtcbiYjNDM7XHRjb25zdCBjaGFyICpmd19uYW1lO1xuJiM0MztcdGJvb2wgZndfbG9hZGVkO1xuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcmVhZF9wYWdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0cmV0dXJuIF9fcGh5X3JlYWQocGh5ZGV2LCBSVEw4MjF4X1BBR0VfU0VMRUNUKTtcbkBAIC0zMTAsNiAmIzQzOzM4MywzMjYgQEAgc3RhdGljIGludCBydGw4MjF4X21vZGlmeV9leHRfcGFnZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgZXh0X3BhZ2UsXG4gXHRyZXR1cm4gcGh5X3Jlc3RvcmVfcGFnZShwaHlkZXYsIG9sZHBhZ2UsIHJldCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4mIzQzO1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XG4mIzQzO1x0aW50IHN1Yl9waHlfaWQsIHJldDtcbiYjNDM7XG4mIzQzO1x0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghcHJpdilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHJpdiA9IHByaXY7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuJiM0MztcdFx0XHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRzdWJfcGh5X2lkID0gKHJldCBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4ZmY7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xuJiM0MztcdGNhc2UgUlRMODI2MUNfQ0VfTU9ERUw6XG4mIzQzO1x0XHRwcml2LVx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xuJiM0MztcdFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcJiMzNDtSVEw4MjYxQyBkZXRlY3RlZCAoc3ViX2lkIDB4JTAyeClcXG5cJiMzNDssIHN1Yl9waHlfaWQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwmIzM0O1Vua25vd24gc3ViX2lkIDB4JTAyeCwgZGVmYXVsdCBiZWhhdmlvclxcblwmIzM0Oywgc3ViX3BoeV9pZCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFN1cHBsZW1lbnQgTXVsdGktR2lnIHNwZWVkcyB0aGF0IG1heSBub3QgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZFxuJiM0MztcdCAqIFJUTDgyNjFYIHN1cHBvcnRzIDIuNUcvNUcgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgMTBHXG4mIzQzO1x0ICovXG4mIzQzO1x0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQsXG4mIzQzO1x0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFXzUwMDBiYXNlVF9GdWxsX0JJVCxcbiYjNDM7XHRcdFx0IHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGw4MjYxeF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldCwgdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VhdXRvbmVnX2NvbXBsZXRlKSB7XG4mIzQzO1x0XHR2YWwgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbiYjNDM7XHRcdFx0XHQgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfU1RBVDEwMDApKTtcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHJldHVybiB2YWw7XG4mIzQzO1xuJiM0MztcdFx0bWlpX3N0YXQxMDAwX21vZF9saW5rbW9kZV9scGFfdChwaHlkZXYtXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsIHZhbCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfc3RhdHVzKHBoeWRldik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xuJiM0MztcdHUzMiBtYWluX21hZ2ljLCBzdWJfbWFnaWM7XG4mIzQzO1x0dTMyIGNhbGNfY3JjLCBmaWxlX2NyYztcbiYjNDM7XHRzaXplX3QgZGF0YV9sZW47XG4mIzQzO1x0dTE2IG51bV9lbnRyaWVzO1xuJiM0MztcbiYjNDM7XHRpZiAoZnctXHUwMDNlc2l6ZSBcdTAwM2MgRldfSEVBREVSX1NJWkUpIHtcbiYjNDM7XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtGaXJtd2FyZSB0b28gc21hbGw6ICV6dSBieXRlc1xcblwmIzM0OywgZnctXHUwMDNlc2l6ZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbiYjNDM7XG4mIzQzO1x0bWFpbl9tYWdpYyA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VtYWluX21hZ2ljKTtcbiYjNDM7XHRpZiAobWFpbl9tYWdpYyAhPSBGV19NQUlOX01BR0lDKSB7XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZSBtYWdpYzogMHglMDh4XFxuXCYjMzQ7LCBtYWluX21hZ2ljKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3ViX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZXN1Yl9tYWdpYyk7XG4mIzQzO1x0aWYgKHN1Yl9tYWdpYyAhPSBGV19TVUJfTUFHSUNfODI2MUMpIHtcbiYjNDM7XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtJbnZhbGlkIHN1YiBtYWdpYzogMHglMDh4XFxuXCYjMzQ7LCBzdWJfbWFnaWMpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRudW1fZW50cmllcyA9IGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7XG4mIzQzO1x0ZGF0YV9sZW4gPSBudW1fZW50cmllcyAqIEZXX0VOVFJZX1NJWkU7XG4mIzQzO1xuJiM0MztcdGlmIChmdy1cdTAwM2VzaXplICE9IHNpemVvZigqaGRyKSAmIzQzOyBkYXRhX2xlbikge1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0Zpcm13YXJlIHNpemUgbWlzbWF0Y2hcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRjYWxjX2NyYyA9IGNyYzMyKH4wLCBmdy1cdTAwM2VkYXRhICYjNDM7IEZXX0hFQURFUl9TSVpFLCBkYXRhX2xlbikgXiB+MDtcbiYjNDM7XHRmaWxlX2NyYyA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VjcmMzMik7XG4mIzQzO1xuJiM0MztcdGlmIChjYWxjX2NyYyAhPSBmaWxlX2NyYykge1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0NSQzMyIG1pc21hdGNoOiBjYWxjdWxhdGVkPTB4JTA4eCBmaWxlPTB4JTA4eFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgY2FsY19jcmMsIGZpbGVfY3JjKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICplbnRyeSlcbiYjNDM7e1xuJiM0MztcdHUxNiBhZGRyLCB2YWx1ZSwgdGltZW91dF9tcztcbiYjNDM7XHR1OCBkZXYsIG1zYiwgbHNiLCBwb2xsX3NldDtcbiYjNDM7XHR1MzIgYml0cywgZXhwZWN0X3ZhbDtcbiYjNDM7XHRpbnQgcmV0ID0gMDtcbiYjNDM7XHRpbnQgdmFsO1xuJiM0MztcbiYjNDM7XHRkZXYgPSBlbnRyeS1cdTAwM2VkZXY7XG4mIzQzO1x0YWRkciA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZWFkZHIpO1xuJiM0MztcdG1zYiA9IGVudHJ5LVx1MDAzZW1zYjtcbiYjNDM7XHRsc2IgPSBlbnRyeS1cdTAwM2Vsc2I7XG4mIzQzO1x0dmFsdWUgPSBsZTE2X3RvX2NwdShlbnRyeS1cdTAwM2V2YWx1ZSk7XG4mIzQzO1x0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXRpbWVvdXRfbXMpO1xuJiM0MztcdHBvbGxfc2V0ID0gZW50cnktXHUwMDNlcG9sbF9zZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh0aW1lb3V0X21zID09IDApXG4mIzQzO1x0XHR0aW1lb3V0X21zID0gUlRMODI2MVhfUE9MTF9USU1FT1VUX01TO1xuJiM0MztcbiYjNDM7XHRpZiAobXNiIFx1MDAzZSAxNSB8fCBsc2IgXHUwMDNlIG1zYikge1xuJiM0MztcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0ludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSVkLCBsc2I9JWRcXG5cJiMzNDssIG1zYiwgbHNiKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChlbnRyeS1cdTAwM2V0eXBlKSB7XG4mIzQzO1x0Y2FzZSBPUF9XUklURTpcbiYjNDM7XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLFxuJiM0MztcdFx0XHRcdCAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSBcdTAwM2NcdTAwM2MgbHNiKSBcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7V1JJVEUgZmFpbGVkOiBkZXY9JWQgYWRkcj0weCUwNHhcXG5cJiMzNDssIGRldiwgYWRkcik7XG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0Y2FzZSBPUF9QT0xMOiB7XG4mIzQzO1x0XHRiaXRzID0gR0VOTUFTSyhtc2IsIGxzYik7XG4mIzQzO1x0XHRleHBlY3RfdmFsID0gKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBiaXRzO1xuJiM0MztcbiYjNDM7XHRcdGlmIChwb2xsX3NldClcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIGRldiwgYWRkciwgdmFsLFxuJiM0MztcdFx0XHRcdFx0XHRcdCh2YWwgXHUwMDI2IGJpdHMpID09IGV4cGVjdF92YWwsXG4mIzQzO1x0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIGRldiwgYWRkciwgdmFsLFxuJiM0MztcdFx0XHRcdFx0XHRcdCh2YWwgXHUwMDI2IGJpdHMpICE9IGV4cGVjdF92YWwsXG4mIzQzO1x0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbiYjNDM7XHRcdGlmIChyZXQpXG4mIzQzO1x0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtQT0xMIHRpbWVvdXQ6IGRldj0lZCBhZGRyPTB4JTA0eFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICBkZXYsIGFkZHIpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7VW5rbm93biBmaXJtd2FyZSBvcGVyYXRpb246ICVkXFxuXCYjMzQ7LCBlbnRyeS1cdTAwM2V0eXBlKTtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKmhkcjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuJiM0MztcdGludCByZXQsIGk7XG4mIzQzO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vmd19uYW1lKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIHByaXYtXHUwMDNlZndfbmFtZSwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7RmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXM6ICVkXFxuXCYjMzQ7LCBwcml2LVx1MDAzZWZ3X25hbWUsIHJldCk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gcnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlKHBoeWRldiwgZncpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIHJlbGVhc2VfZnc7XG4mIzQzO1xuJiM0MztcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbiYjNDM7XG4mIzQzO1x0ZW50cnkgPSAoY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICopKGZ3LVx1MDAzZWRhdGEgJiM0MzsgRldfSEVBREVSX1NJWkUpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7IGkmIzQzOyYjNDM7LCBlbnRyeSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJldCA9IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkocGh5ZGV2LCBlbnRyeSk7XG4mIzQzO1x0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtFbnRyeSAlZCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBpLCByZXQpO1xuJiM0MztcdFx0XHRnb3RvIHJlbGVhc2VfZnc7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwcml2LVx1MDAzZWZ3X2xvYWRlZCA9IHRydWU7XG4mIzQzO1xuJiM0MztyZWxlYXNlX2Z3OlxuJiM0MztcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcbiYjNDM7XHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUixcbiYjNDM7XHRcdFx0XHQgICAgUlRMODI2MVhfSU5UX01BU0tfREVGQVVMVCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGlycV9zdGF0dXM7XG4mIzQzO1xuJiM0MztcdGlycV9zdGF0dXMgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTlNSKTtcbiYjNDM7XHRpZiAoaXJxX3N0YXR1cyBcdTAwM2MgMCkge1xuJiM0MztcdFx0cGh5X2Vycm9yKHBoeWRldik7XG4mIzQzO1x0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIShpcnFfc3RhdHVzIFx1MDAyNiBSVEw4MjYxWF9JTlRfTUFTS19BTEwpKVxuJiM0MztcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcbiYjNDM7XHRpZiAoaXJxX3N0YXR1cyBcdTAwMjYgKFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkUgfFxuJiM0MztcdCAgICBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFJUTDgyNjFYX0lOVF9KQUJCRVIpKVxuJiM0MztcdFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gSVJRX0hBTkRMRUQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHUxNiBhZHZfMWcgPSAwO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcocGh5ZGV2KTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULFxuJiM0MztcdFx0XHQgICAgICBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpKVxuJiM0MztcdFx0YWR2XzFnID0gQURWRVJUSVNFXzEwMDBGVUxMO1xuJiM0MztcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsXG4mIzQzO1x0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZykpXG4mIzQzO1x0XHRhZHZfMWcgfD0gQURWRVJUSVNFXzEwMDBIQUxGO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4mIzQzO1x0XHRcdFx0ICAgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfQ1RSTDEwMDApLFxuJiM0MztcdFx0XHRcdCAgICAgQURWRVJUSVNFXzEwMDBGVUxMIHwgQURWRVJUSVNFXzEwMDBIQUxGLFxuJiM0MztcdFx0XHRcdCAgICAgYWR2XzFnKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRpZiAocmV0IFx1MDAzZSAwKVxuJiM0MztcdFx0cmV0dXJuIGdlbnBoeV9jNDVfcmVzdGFydF9hbmVnKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgZmlybXdhcmUgcGFyYW1ldGVycyBhcmUgcHJlc2VydmVkIGFjcm9zcyBJRUVFIHNvZnQgcmVzZXRzIGFuZFxuJiM0MztcdCAqIHN1c3BlbmQvcmVzdW1lIGN5Y2xlcy4gUmVsb2FkaW5nIGlzIG9ubHkgbmVjZXNzYXJ5IGFmdGVyIGEgcG93ZXJcbiYjNDM7XHQgKiBjeWNsZSBvciBoYXJkIHJlc2V0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWZ3X25hbWUgXHUwMDI2XHUwMDI2ICFwcml2LVx1MDAzZWZ3X2xvYWRlZCkge1xuJiM0MztcdFx0cmV0ID0gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7RmlybXdhcmUgbG9hZGluZyBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG5AQCAtMzAwMSw2ICYjNDM7MzM5NCwxOSBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHRcdC5yZXN1bWVcdFx0PSBnZW5waHlfcmVzdW1lLFxuIFx0XHQucmVhZF9tbWRcdD0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLFxuIFx0XHQud3JpdGVfbW1kXHQ9IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQsXG4mIzQzO1x0fSwge1xuJiM0MztcdFx0UEhZX0lEX01BVENIX0VYQUNUKFJUTF84MjYxQ19DRyksXG4mIzQzO1x0XHQubmFtZVx0XHRcdD0gXCYjMzQ7UmVhbHRlayBSVEw4MjYxQyAxMEdicHMgUEhZXCYjMzQ7LFxuJiM0MztcdFx0LnByb2JlXHRcdFx0PSBydGw4MjYxeF9wcm9iZSxcbiYjNDM7XHRcdC5jb25maWdfaW5pdFx0XHQ9IHJ0bDgyNjF4X2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LmdldF9mZWF0dXJlc1x0XHQ9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyxcbiYjNDM7XHRcdC5jb25maWdfYW5lZ1x0XHQ9IHJ0bDgyNjF4X2NvbmZpZ19hbmVnLFxuJiM0MztcdFx0LnJlYWRfc3RhdHVzXHRcdD0gcnRsODI2MXhfcmVhZF9zdGF0dXMsXG4mIzQzO1x0XHQuY29uZmlnX2ludHJcdFx0PSBydGw4MjYxeF9jb25maWdfaW50cixcbiYjNDM7XHRcdC5oYW5kbGVfaW50ZXJydXB0XHQ9IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQsXG4mIzQzO1x0XHQuc29mdF9yZXNldFx0XHQ9IGdlbnBoeV9jNDVfc29mdF9yZXNldCxcbiYjNDM7XHRcdC5zdXNwZW5kXHRcdD0gZ2VucGh5X2M0NV9wbWFfc3VzcGVuZCxcbiYjNDM7XHRcdC5yZXN1bWVcdFx0XHQ9IGdlbnBoeV9jNDVfcG1hX3Jlc3VtZSxcbiBcdH0sXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggMTk5YTdhYWEzNDFiZmQuLjI1YTY2MzIwZGY1NmVhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaFxuQEAgLTIzMDksNiAmIzQzOzIzMDksNyBAQCBpbnQgZ2VucGh5X2MzN19yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpjaGFuZ2VkKTtcbiAvKiBDbGF1c2UgNDUgUEhZICovXG4gaW50IGdlbnBoeV9jNDVfcmVzdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KTtcbiYjNDM7aW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgZ2VucGh5X2M0NV9hbmVnX2RvbmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IGdlbnBoeV9jNDVfcmVhZF9saW5rKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5pbmRleCBiMjU0MWM5NDhmYzFlYi4uMDZmNGJjM2MyMGM3MTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5AQCAtMzMyLDggJiM0MzszMzIsMTMgQEBcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYyXzVHXHQweDAwODBcdC8qIEFkdmVydGlzZSAyLjVHQkFTRS1UICovXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWNUdcdDB4MDEwMFx0LyogQWR2ZXJ0aXNlIDVHQkFTRS1UICovXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWMTBHXHQweDEwMDBcdC8qIEFkdmVydGlzZSAxMEdCQVNFLVQgKi9cbiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFXHQweDgwMDBcdC8qIE1hc3Rlci9zbGF2ZSBtYW51YWwgY29uZmlnIGVuYWJsZSAqL1xuJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRVx0MHg0MDAwXHQvKiBNYXN0ZXIvc2xhdmUgY29uZmlnIHZhbHVlICgxPU1hc3RlcikgKi9cbiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFXHQweDIwMDBcdC8qIE1hc3RlciBQcmVmZXJyZWQgVHlwZSAqL1xuIFxuIC8qIEFOIDEwR0JBU0UtVCBzdGF0dXMgcmVnaXN0ZXIuICovXG4mIzQzOyNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX01TX0ZBVUxUXHQweDgwMDBcdC8qIE1hc3Rlci9zbGF2ZSBmYXVsdCAqL1xuJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19SRVNcdDB4NDAwMFx0LyogTWFzdGVyL3NsYXZlIHJlc29sdXRpb24gKDE9TWFzdGVyKSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQMl81R1x0MHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQNUdcdFx0MHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUFRSUlx0MHgwMjAwXHQvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UkVBTFRFS19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnZW5waHlfYzQ1X3NvZnRfcmVzZXQmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9nZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcmVhZF9zdGF0dXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZndfbG9hZCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW50ciYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19hbmVnJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZvciBDbGF1c2UgNDUgUEhZcyBhbmQgaW50cm9kdWNlcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIgKFJUTDgyNjFDKSB3aXRoIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgcmVhY2hhYmxlIHZpYSBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHRocm91Z2ggVVNCIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbikgYW5kIGNvbnRhaW4gY29tcGxleCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMzE0ZTUwNGE5MmVjYmE1OWNhNTVlNGZkMGViYzU1OWU0NTkwYmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAwNzoxODo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jCmluZGV4IDEyNjk1MTc0MTQyODhmLi5kZjY4MmQzZWJkNWExZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jCkBAIC0zODQsNiAmIzQzOzM4NCwxMTkgQEAgaW50IGdlbnBoeV9jNDVfY2hlY2tfYW5kX3Jlc3RhcnRfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIHJlc3RhcnQpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcpOwogCiYjNDM7LyoqCiYjNDM7ICogZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0IC0gc29mdHdhcmUgcmVzZXQgdGhlIFBIWSB2aWEgQ2xhdXNlIDQ1IFBNQS9QTUQgY29udHJvbCByZWdpc3RlcgomIzQzOyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdAomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCiYjNDM7ICovCiYjNDM7aW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaW50IHJldCwgdmFsOwomIzQzOwomIzQzOwlyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELCBNRElPX0NUUkwxLAomIzQzOwkJCSAgICAgICBNRElPX0NUUkwxX1JFU0VUKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCwKJiM0MzsJCQkJCSBNRElPX0NUUkwxLCB2YWwsCiYjNDM7CQkJCQkgISh2YWwgJmFtcDsgTURJT19DVFJMMV9SRVNFVCksCiYjNDM7CQkJCQkgNTAwMCwgNjAwMDAwLCB0cnVlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZSAtIENvbmZpZ3VyZSBNYXN0ZXIvU2xhdmUgc2V0dGluZyBmb3IgQzQ1IFBIWXMKJiM0MzsgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3QKJiM0MzsgKgomIzQzOyAqIERlc2NyaXB0aW9uOiBDb25maWd1cmUgdGhlIGZvcmNlZCBvciBwcmVmZXJyZWQgTWFzdGVyL1NsYXZlIHJvbGUKJiM0MzsgKiAxMEdCQVNFLVQgY29udHJvbCByZWdpc3RlciAoTU1EIDcsIFJlZ2lzdGVyIDB4MDAyMCkgYWNjb3JkaW5nIHRvCiYjNDM7ICogSUVFRSA4MDIuMyBzdGFuZGFyZHMuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZSwgMCBpZiBNYXN0ZXIvU2xhdmUgZGlkbiYjMzk7dCBjaGFuZ2UsCiYjNDM7ICogb3IgMSBpZiBNYXN0ZXIvU2xhdmUgbW9kZXMgY2hhbmdlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwl1MTYgY3RsID0gMDsKJiM0MzsKJiM0MzsJc3dpdGNoIChwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9zZXQpIHsKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ6CiYjNDM7CQljdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ6CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9GT1JDRToKJiM0MzsJCWN0bCA9IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfCBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUU7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOgomIzQzOwkJY3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIE1BU1RFUl9TTEFWRV9DRkdfVU5LTk9XTjoKJiM0MzsJY2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1VOU1VQUE9SVEVEOgomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlwaHlkZXZfd2FybihwaHlkZXYsICYjMzQ7VW5zdXBwb3J0ZWQgTWFzdGVyL1NsYXZlIG1vZGVcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcGh5X21vZGlmeV9tbWRfY2hhbmdlZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsCiYjNDM7CQkJCSAgICAgIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfAomIzQzOwkJCQkgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfAomIzQzOwkJCQkgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFLCBjdGwpOwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlIC0gcmVhZCBtYXN0ZXIvc2xhdmUgc3RhdHVzCiYjNDM7ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CiYjNDM7ICoKJiM0MzsgKiBEZXNjcmlwdGlvbjogUmVhZCB0aGUgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gYW5kIHN0YXR1cwomIzQzOyAqIGZyb20gMTBHQkFTRS1UIGNvbnRyb2wvc3RhdHVzIHJlZ2lzdGVycyAoTU1EIDcsIFJlZyAweDAwMjAgYW5kIDB4MDAyMSkuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgdmFsOwomIzQzOwomIzQzOwlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1VOS05PV047CiYjNDM7CXBoeWRldi0mZ3Q7bWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1VOS05PV047CiYjNDM7CiYjNDM7CXZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwpOwomIzQzOwlpZiAodmFsICZsdDsgMCkKJiM0MzsJCXJldHVybiB2YWw7CiYjNDM7CiYjNDM7CWlmICh2YWwgJmFtcDsgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRSkgewomIzQzOwkJaWYgKHZhbCAmYW1wOyBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUpCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9GT1JDRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmICh2YWwgJmFtcDsgTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRSkKJiM0MzsJCQlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJdmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fMTBHQlRfU1RBVCk7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKJiM0MzsJaWYgKHZhbCAmYW1wOyBNRElPX0FOXzEwR0JUX1NUQVRfTVNfRkFVTFQpIHsKJiM0MzsJCXBoeWRldi0mZ3Q7bWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX0VSUjsKJiM0MzsJfSBlbHNlIGlmIChwaHlkZXYtJmd0O2xpbmspIHsKJiM0MzsJCWlmICh2YWwgJmFtcDsgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFUykKJiM0MzsJCQlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9zdGF0ZSA9IE1BU1RFUl9TTEFWRV9TVEFURV9NQVNURVI7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5ZGV2LSZndDttYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfU0xBVkU7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlwaHlkZXYtJmd0O21hc3Rlcl9zbGF2ZV9zdGF0ZSA9IE1BU1RFUl9TTEFWRV9TVEFURV9VTktOT1dOOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qKgogICogZ2VucGh5X2M0NV9hbmVnX2RvbmUgLSByZXR1cm4gYXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSBzdGF0dXMKICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdApAQCAtMTE5Miw2ICYjNDM7MTMwNSwxMCBAQCBpbnQgZ2VucGh5X2M0NV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQkJcmV0ID0gZ2VucGh5X2M0NV9iYXNldDFfcmVhZF9zdGF0dXMocGh5ZGV2KTsKIAkJCWlmIChyZXQgJmx0OyAwKQogCQkJCXJldHVybiByZXQ7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCXJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTsKJiM0MzsJCQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQkJcmV0dXJuIHJldDsKIAkJfQogCiAJCXBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KTsKQEAgLTEyMjUsNiAmIzQzOzEzNDIsMTQgQEAgaW50IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlpZiAocmV0ICZndDsgMCkKIAkJY2hhbmdlZCA9IHRydWU7CiAKJiM0MzsJaWYgKCFnZW5waHlfYzQ1X2Jhc2V0MV9hYmxlKHBoeWRldikpIHsKJiM0MzsJCXJldCA9IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHBoeWRldik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJaWYgKHJldCAmZ3Q7IDApCiYjNDM7CQkJY2hhbmdlZCA9IHRydWU7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHBoeWRldiwgY2hhbmdlZCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggMjcyNjg4MTFmNTY0ZjIuLmJmN2JjMTlmYjQ0Y2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwpAQCAtOCw3ICYjNDM7OCw5IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqLwogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG9wcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcmMzMi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2xfbmV0bGluay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9maXJtd2FyZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGh5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fd2FrZWlycS5oJmd0OwpAQCAtMTQxLDYgJiM0MzsxNDMsMTAgQEAKICNkZWZpbmUgUlRMODIxMUZfUEhZU0lDQUxfQUREUl9XT1JEMQkJMTcKICNkZWZpbmUgUlRMODIxMUZfUEhZU0lDQUxfQUREUl9XT1JEMgkJMTgKIAomIzQzOyNkZWZpbmUgUlRMODI2MVhfRVhUX0FERFJfUkVHCQkJMHhhNDM2CiYjNDM7I2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUcJCQkweGE0MzgKJiM0MzsjZGVmaW5lIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIJCTB4ODAxZAomIzQzOwogI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTgkJCTB4Njk3YQogI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTl9NT0RFX01BU0sJCUdFTk1BU0soNSwgMCkKICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV8yNTAwQkFTRVhfU0dNSUkJCTAKQEAgLTI1MSw2ICYjNDM7MjU3LDY4IEBACiAjZGVmaW5lIFJUTF84MjIxQl9WTV9DRwkJCQkweDAwMWNjODRhCiAjZGVmaW5lIFJUTF84MjUxQgkJCQkweDAwMWNjODYyCiAjZGVmaW5lIFJUTF84MjYxQwkJCQkweDAwMWNjODkwCiYjNDM7I2RlZmluZSBSVExfODI2MUNfQ0cJCQkJMHgwMDFjYzg5OAomIzQzOwomIzQzOyNkZWZpbmUgUlRMODI2MUNfQ0VfTU9ERUwJCTB4MDAKJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SCUJJVCgwKQomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX1BBR0VfUkVDVgkJQklUKDIpCiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FCUJJVCgzKQomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX0xJTktfQ0hHCQlCSVQoNCkKJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9QSFlfUkVHX0FDQ0VTUwlCSVQoNSkKJiM0MzsjZGVmaW5lIFJUTDgyNjFYX0lOVF9QTUUJCUJJVCg3KQomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX0FMRFBTX0NIRwkJQklUKDkpCiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfSkFCQkVSCQlCSVQoMTApCiYjNDM7CiYjNDM7I2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUCShSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXAomIzQzOwkJCQkJIFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfSkFCQkVSKQomIzQzOwomIzQzOyNkZWZpbmUgUlRMODI2MVhfSU5UX01BU0tfQUxMCQkoUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBcCiYjNDM7CQkJCQkgUlRMODI2MVhfSU5UX1BBR0VfUkVDViB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXAomIzQzOwkJCQkJIFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfUEhZX1JFR19BQ0NFU1MgfCBcCiYjNDM7CQkJCQkgUlRMODI2MVhfSU5UX1BNRSB8IFwKJiM0MzsJCQkJCSBSVEw4MjYxWF9JTlRfQUxEUFNfQ0hHIHwgXAomIzQzOwkJCQkJIFJUTDgyNjFYX0lOVF9KQUJCRVIpCiYjNDM7CiYjNDM7I2RlZmluZSBGV19NQUlOX01BR0lDCQkJMHg1MjU0NEMzOAomIzQzOyNkZWZpbmUgRldfU1VCX01BR0lDXzgyNjFDCQkweDMyMzYzMTQzCiYjNDM7I2RlZmluZSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVMJMTAwCiYjNDM7CiYjNDM7I2RlZmluZSBSVEw4MjYxQ19DRV9GV19OQU1FCSYjMzQ7cnRsX25pYy9ydGw4MjYxYy5iaW4mIzM0OwomIzQzO01PRFVMRV9GSVJNV0FSRShSVEw4MjYxQ19DRV9GV19OQU1FKTsKJiM0MzsKJiM0MztlbnVtIHJ0bDgyNjF4X2Z3X29wIHsKJiM0MzsJT1BfV1JJVEUgPSAweDAwLAkvKiBXcml0ZSAqLwomIzQzOwlPUF9QT0xMICA9IDB4MDIsCS8qIFBvbGxpbmcgKi8KJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgewomIzQzOwlfX2xlMzIgbWFpbl9tYWdpYzsJLyogTWFpbiBtYWdpYyBudW1iZXIgMHg1MjU0NEMzOCAoJiMzNDtSVEw4JiMzNDspICovCiYjNDM7CV9fbGUzMiBzdWJfbWFnaWM7CS8qIFN1YiBtYWdpYyBudW1iZXIgKi8KJiM0MzsJX19sZTE2IHZlcnNpb25fbWFqb3I7CS8qIE1ham9yIHZlcnNpb24gKi8KJiM0MzsJX19sZTE2IHZlcnNpb25fbWlub3I7CS8qIE1pbm9yIHZlcnNpb24gKi8KJiM0MzsJX19sZTE2IG51bV9lbnRyaWVzOwkvKiBOdW1iZXIgb2YgZW50cmllcyAqLwomIzQzOwlfX2xlMTYgcmVzZXJ2ZWQ7CS8qIFJlc2VydmVkICovCiYjNDM7CV9fbGUzMiBjcmMzMjsJCS8qIENSQzMyIGNoZWNrc3VtICovCiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgewomIzQzOwlfX3U4ICB0eXBlOwkJLyogT3BlcmF0aW9uIHR5cGUgKE9QXyopICovCiYjNDM7CV9fdTggIGRldjsJCS8qIE1NRCBkZXZpY2UgKi8KJiM0MzsJX19sZTE2IGFkZHI7CQkvKiBSZWdpc3RlciBhZGRyZXNzICovCiYjNDM7CV9fdTggIG1zYjsJCS8qIE1TQiBiaXQgcG9zaXRpb24gKi8KJiM0MzsJX191OCAgbHNiOwkJLyogTFNCIGJpdCBwb3NpdGlvbiAqLwomIzQzOwlfX2xlMTYgdmFsdWU7CQkvKiBWYWx1ZSB0byB3cml0ZS9jb21wYXJlICovCiYjNDM7CV9fbGUxNiB0aW1lb3V0X21zOwkvKiBQb2xsIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovCiYjNDM7CV9fdTggIHBvbGxfc2V0OwkJLyogUG9sbCBmb3Igc2V0ICgxKSBvciBjbGVhciAoMCkgKi8KJiM0MzsJX191OCAgcmVzZXJ2ZWQ7CQkvKiBSZXNlcnZlZCAqLwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBGV19IRUFERVJfU0laRQkJc2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpCiYjNDM7I2RlZmluZSBGV19FTlRSWV9TSVpFCQlzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5KQogCiAvKiBSVEw4MjExRSBhbmQgUlRMODIxMUYgc3VwcG9ydCB1cCB0byB0aHJlZSBMRURzICovCiAjZGVmaW5lIFJUTDgyMTF4X0xFRF9DT1VOVAkJCTMKQEAgLTI3MCw2ICYjNDM7MzM4LDExIEBAIHN0cnVjdCBydGw4MjF4X3ByaXYgewogCXUxNiBpbmVyOwogfTsKIAomIzQzO3N0cnVjdCBydGw4MjYxeF9wcml2IHsKJiM0MzsJY29uc3QgY2hhciAqZndfbmFtZTsKJiM0MzsJYm9vbCBmd19sb2FkZWQ7CiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBpbnQgcnRsODIxeF9yZWFkX3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlyZXR1cm4gX19waHlfcmVhZChwaHlkZXYsIFJUTDgyMXhfUEFHRV9TRUxFQ1QpOwpAQCAtMzEwLDYgJiM0MzszODMsMzI2IEBAIHN0YXRpYyBpbnQgcnRsODIxeF9tb2RpZnlfZXh0X3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IGV4dF9wYWdlLAogCXJldHVybiBwaHlfcmVzdG9yZV9wYWdlKHBoeWRldiwgb2xkcGFnZSwgcmV0KTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGh5ZGV2LSZndDttZGlvLmRldjsKJiM0MzsJc3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7CiYjNDM7CWludCBzdWJfcGh5X2lkLCByZXQ7CiYjNDM7CiYjNDM7CXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwcml2KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXBoeWRldi0mZ3Q7cHJpdiA9IHByaXY7CiYjNDM7CiYjNDM7CXJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLAomIzQzOwkJCSAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0RBVEFfUkVHKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlzdWJfcGh5X2lkID0gKHJldCAmZ3Q7Jmd0OyA4KSAmYW1wOyAweGZmOwomIzQzOwomIzQzOwlzd2l0Y2ggKHN1Yl9waHlfaWQpIHsKJiM0MzsJY2FzZSBSVEw4MjYxQ19DRV9NT0RFTDoKJiM0MzsJCXByaXYtJmd0O2Z3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FOwomIzQzOwkJcGh5ZGV2X2luZm8ocGh5ZGV2LCAmIzM0O1JUTDgyNjFDIGRldGVjdGVkIChzdWJfaWQgMHglMDJ4KVxuJiMzNDssIHN1Yl9waHlfaWQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlwaHlkZXZfd2FybihwaHlkZXYsICYjMzQ7VW5rbm93biBzdWJfaWQgMHglMDJ4LCBkZWZhdWx0IGJlaGF2aW9yXG4mIzM0Oywgc3ViX3BoeV9pZCk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwkvKgomIzQzOwkgKiBTdXBwbGVtZW50IE11bHRpLUdpZyBzcGVlZHMgdGhhdCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQKJiM0MzsJICogUlRMODI2MVggc3VwcG9ydHMgMi41Ry81RyBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCAxMEcKJiM0MzsJICovCiYjNDM7CWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULAomIzQzOwkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfNTAwMGJhc2VUX0Z1bGxfQklULAomIzQzOwkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgcmV0LCB2YWw7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2F1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O2F1dG9uZWdfY29tcGxldGUpIHsKJiM0MzsJCXZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfU1RBVDEwMDApKTsKJiM0MzsJCWlmICh2YWwgJmx0OyAwKQomIzQzOwkJCXJldHVybiB2YWw7CiYjNDM7CiYjNDM7CQltaWlfc3RhdDEwMDBfbW9kX2xpbmttb2RlX2xwYV90KHBoeWRldi0mZ3Q7bHBfYWR2ZXJ0aXNpbmcsIHZhbCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gZ2VucGh5X2M0NV9yZWFkX3N0YXR1cyhwaHlkZXYpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyOwomIzQzOwl1MzIgbWFpbl9tYWdpYywgc3ViX21hZ2ljOwomIzQzOwl1MzIgY2FsY19jcmMsIGZpbGVfY3JjOwomIzQzOwlzaXplX3QgZGF0YV9sZW47CiYjNDM7CXUxNiBudW1fZW50cmllczsKJiM0MzsKJiM0MzsJaWYgKGZ3LSZndDtzaXplICZsdDsgRldfSEVBREVSX1NJWkUpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0Zpcm13YXJlIHRvbyBzbWFsbDogJXp1IGJ5dGVzXG4mIzM0OywgZnctJmd0O3NpemUpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy0mZ3Q7ZGF0YTsKJiM0MzsKJiM0MzsJbWFpbl9tYWdpYyA9IGxlMzJfdG9fY3B1KGhkci0mZ3Q7bWFpbl9tYWdpYyk7CiYjNDM7CWlmIChtYWluX21hZ2ljICE9IEZXX01BSU5fTUFHSUMpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0ludmFsaWQgZmlybXdhcmUgbWFnaWM6IDB4JTA4eFxuJiMzNDssIG1haW5fbWFnaWMpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3ViX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLSZndDtzdWJfbWFnaWMpOwomIzQzOwlpZiAoc3ViX21hZ2ljICE9IEZXX1NVQl9NQUdJQ184MjYxQykgewomIzQzOwkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7SW52YWxpZCBzdWIgbWFnaWM6IDB4JTA4eFxuJiMzNDssIHN1Yl9tYWdpYyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwludW1fZW50cmllcyA9IGxlMTZfdG9fY3B1KGhkci0mZ3Q7bnVtX2VudHJpZXMpOwomIzQzOwlkYXRhX2xlbiA9IG51bV9lbnRyaWVzICogRldfRU5UUllfU0laRTsKJiM0MzsKJiM0MzsJaWYgKGZ3LSZndDtzaXplICE9IHNpemVvZigqaGRyKSAmIzQzOyBkYXRhX2xlbikgewomIzQzOwkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7RmlybXdhcmUgc2l6ZSBtaXNtYXRjaFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY2FsY19jcmMgPSBjcmMzMih+MCwgZnctJmd0O2RhdGEgJiM0MzsgRldfSEVBREVSX1NJWkUsIGRhdGFfbGVuKSBeIH4wOwomIzQzOwlmaWxlX2NyYyA9IGxlMzJfdG9fY3B1KGhkci0mZ3Q7Y3JjMzIpOwomIzQzOwomIzQzOwlpZiAoY2FsY19jcmMgIT0gZmlsZV9jcmMpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0NSQzMyIG1pc21hdGNoOiBjYWxjdWxhdGVkPTB4JTA4eCBmaWxlPTB4JTA4eFxuJiMzNDssCiYjNDM7CQkJICAgY2FsY19jcmMsIGZpbGVfY3JjKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKJiM0MzsJCQkJICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KQomIzQzO3sKJiM0MzsJdTE2IGFkZHIsIHZhbHVlLCB0aW1lb3V0X21zOwomIzQzOwl1OCBkZXYsIG1zYiwgbHNiLCBwb2xsX3NldDsKJiM0MzsJdTMyIGJpdHMsIGV4cGVjdF92YWw7CiYjNDM7CWludCByZXQgPSAwOwomIzQzOwlpbnQgdmFsOwomIzQzOwomIzQzOwlkZXYgPSBlbnRyeS0mZ3Q7ZGV2OwomIzQzOwlhZGRyID0gbGUxNl90b19jcHUoZW50cnktJmd0O2FkZHIpOwomIzQzOwltc2IgPSBlbnRyeS0mZ3Q7bXNiOwomIzQzOwlsc2IgPSBlbnRyeS0mZ3Q7bHNiOwomIzQzOwl2YWx1ZSA9IGxlMTZfdG9fY3B1KGVudHJ5LSZndDt2YWx1ZSk7CiYjNDM7CXRpbWVvdXRfbXMgPSBsZTE2X3RvX2NwdShlbnRyeS0mZ3Q7dGltZW91dF9tcyk7CiYjNDM7CXBvbGxfc2V0ID0gZW50cnktJmd0O3BvbGxfc2V0OwomIzQzOwomIzQzOwlpZiAodGltZW91dF9tcyA9PSAwKQomIzQzOwkJdGltZW91dF9tcyA9IFJUTDgyNjFYX1BPTExfVElNRU9VVF9NUzsKJiM0MzsKJiM0MzsJaWYgKG1zYiAmZ3Q7IDE1IHx8IGxzYiAmZ3Q7IG1zYikgewomIzQzOwkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7SW52YWxpZCBmaXJtd2FyZSBiaXRzOiBtc2I9JWQsIGxzYj0lZFxuJiMzNDssIG1zYiwgbHNiKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXN3aXRjaCAoZW50cnktJmd0O3R5cGUpIHsKJiM0MzsJY2FzZSBPUF9XUklURToKJiM0MzsJCXJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLAomIzQzOwkJCQkgICAgIEdFTk1BU0sobXNiLCBsc2IpLCAodmFsdWUgJmx0OyZsdDsgbHNiKSAmYW1wOyBHRU5NQVNLKG1zYiwgbHNiKSk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7V1JJVEUgZmFpbGVkOiBkZXY9JWQgYWRkcj0weCUwNHhcbiYjMzQ7LCBkZXYsIGFkZHIpOwomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CQl9CiYjNDM7CQlicmVhazsKJiM0MzsKJiM0MzsJY2FzZSBPUF9QT0xMOiB7CiYjNDM7CQliaXRzID0gR0VOTUFTSyhtc2IsIGxzYik7CiYjNDM7CQlleHBlY3RfdmFsID0gKHZhbHVlICZsdDsmbHQ7IGxzYikgJmFtcDsgYml0czsKJiM0MzsKJiM0MzsJCWlmIChwb2xsX3NldCkKJiM0MzsJCQlyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsCiYjNDM7CQkJCQkJCSh2YWwgJmFtcDsgYml0cykgPT0gZXhwZWN0X3ZhbCwKJiM0MzsJCQkJCQkJMTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsCiYjNDM7CQkJCQkJCSh2YWwgJmFtcDsgYml0cykgIT0gZXhwZWN0X3ZhbCwKJiM0MzsJCQkJCQkJMTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7UE9MTCB0aW1lb3V0OiBkZXY9JWQgYWRkcj0weCUwNHhcbiYjMzQ7LAomIzQzOwkJCQkgICBkZXYsIGFkZHIpOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1Vua25vd24gZmlybXdhcmUgb3BlcmF0aW9uOiAlZFxuJiMzNDssIGVudHJ5LSZndDt0eXBlKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LSZndDtwcml2OwomIzQzOwljb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5OwomIzQzOwljb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7CiYjNDM7CWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7CiYjNDM7CWludCByZXQsIGk7CiYjNDM7CiYjNDM7CWlmICghcHJpdi0mZ3Q7ZndfbmFtZSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKCZhbXA7ZncsIHByaXYtJmd0O2Z3X25hbWUsICZhbXA7cGh5ZGV2LSZndDttZGlvLmRldik7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0ZhaWxlZCB0byBsb2FkIGZpcm13YXJlICVzOiAlZFxuJiMzNDssIHByaXYtJmd0O2Z3X25hbWUsIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gcmVsZWFzZV9mdzsKJiM0MzsKJiM0MzsJaGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy0mZ3Q7ZGF0YTsKJiM0MzsKJiM0MzsJZW50cnkgPSAoY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICopKGZ3LSZndDtkYXRhICYjNDM7IEZXX0hFQURFUl9TSVpFKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGxlMTZfdG9fY3B1KGhkci0mZ3Q7bnVtX2VudHJpZXMpOyBpJiM0MzsmIzQzOywgZW50cnkmIzQzOyYjNDM7KSB7CiYjNDM7CQlyZXQgPSBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHBoeWRldiwgZW50cnkpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O0VudHJ5ICVkIGZhaWxlZDogJWRcbiYjMzQ7LCBpLCByZXQpOwomIzQzOwkJCWdvdG8gcmVsZWFzZV9mdzsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlwcml2LSZndDtmd19sb2FkZWQgPSB0cnVlOwomIzQzOwomIzQzO3JlbGVhc2VfZnc6CiYjNDM7CXJlbGVhc2VfZmlybXdhcmUoZncpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDtpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkgewomIzQzOwkJcmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJcmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsCiYjNDM7CQkJCSAgICBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUKTsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKQomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJcmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJaW50IGlycV9zdGF0dXM7CiYjNDM7CiYjNDM7CWlycV9zdGF0dXMgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTlNSKTsKJiM0MzsJaWYgKGlycV9zdGF0dXMgJmx0OyAwKSB7CiYjNDM7CQlwaHlfZXJyb3IocGh5ZGV2KTsKJiM0MzsJCXJldHVybiBJUlFfTk9ORTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIShpcnFfc3RhdHVzICZhbXA7IFJUTDgyNjFYX0lOVF9NQVNLX0FMTCkpCiYjNDM7CQlyZXR1cm4gSVJRX05PTkU7CiYjNDM7CiYjNDM7CWlmIChpcnFfc3RhdHVzICZhbXA7IChSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwKJiM0MzsJICAgIFJUTDgyNjFYX0lOVF9BVVRPTkVHX0VSUk9SIHwgUlRMODI2MVhfSU5UX0pBQkJFUikpCiYjNDM7CQlwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7CiYjNDM7CiYjNDM7CXJldHVybiBJUlFfSEFORExFRDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJdTE2IGFkdl8xZyA9IDA7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcocGh5ZGV2KTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDthdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULAomIzQzOwkJCSAgICAgIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpKQomIzQzOwkJYWR2XzFnID0gQURWRVJUSVNFXzEwMDBGVUxMOwomIzQzOwlpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULAomIzQzOwkJCSAgICAgIHBoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpKQomIzQzOwkJYWR2XzFnIHw9IEFEVkVSVElTRV8xMDAwSEFMRjsKJiM0MzsKJiM0MzsJcmV0ID0gcGh5X21vZGlmeV9tbWRfY2hhbmdlZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkgICAgIFJUTDgyMlhfVk5EMl9DMjJfUkVHKE1JSV9DVFJMMTAwMCksCiYjNDM7CQkJCSAgICAgQURWRVJUSVNFXzEwMDBGVUxMIHwgQURWRVJUSVNFXzEwMDBIQUxGLAomIzQzOwkJCQkgICAgIGFkdl8xZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJaWYgKHJldCAmZ3Q7IDApCiYjNDM7CQlyZXR1cm4gZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcocGh5ZGV2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LSZndDtwcml2OwomIzQzOwlpbnQgcmV0ID0gMDsKJiM0MzsKJiM0MzsJLyogVGhlIGZpcm13YXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgSUVFRSBzb2Z0IHJlc2V0cyBhbmQKJiM0MzsJICogc3VzcGVuZC9yZXN1bWUgY3ljbGVzLiBSZWxvYWRpbmcgaXMgb25seSBuZWNlc3NhcnkgYWZ0ZXIgYSBwb3dlcgomIzQzOwkgKiBjeWNsZSBvciBoYXJkIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2Z3X25hbWUgJmFtcDsmYW1wOyAhcHJpdi0mZ3Q7ZndfbG9hZGVkKSB7CiYjNDM7CQlyZXQgPSBydGw4MjYxeF9md19sb2FkKHBoeWRldik7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJcGh5ZGV2X2VycihwaHlkZXYsICYjMzQ7RmlybXdhcmUgbG9hZGluZyBmYWlsZWQ6ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBydGw4MjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2OwpAQCAtMzAwMSw2ICYjNDM7MzM5NCwxOSBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7CiAJCS5yZXN1bWUJCT0gZ2VucGh5X3Jlc3VtZSwKIAkJLnJlYWRfbW1kCT0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLAogCQkud3JpdGVfbW1kCT0gZ2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCwKJiM0MzsJfSwgewomIzQzOwkJUEhZX0lEX01BVENIX0VYQUNUKFJUTF84MjYxQ19DRyksCiYjNDM7CQkubmFtZQkJCT0gJiMzNDtSZWFsdGVrIFJUTDgyNjFDIDEwR2JwcyBQSFkmIzM0OywKJiM0MzsJCS5wcm9iZQkJCT0gcnRsODI2MXhfcHJvYmUsCiYjNDM7CQkuY29uZmlnX2luaXQJCT0gcnRsODI2MXhfY29uZmlnX2luaXQsCiYjNDM7CQkuZ2V0X2ZlYXR1cmVzCQk9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcywKJiM0MzsJCS5jb25maWdfYW5lZwkJPSBydGw4MjYxeF9jb25maWdfYW5lZywKJiM0MzsJCS5yZWFkX3N0YXR1cwkJPSBydGw4MjYxeF9yZWFkX3N0YXR1cywKJiM0MzsJCS5jb25maWdfaW50cgkJPSBydGw4MjYxeF9jb25maWdfaW50ciwKJiM0MzsJCS5oYW5kbGVfaW50ZXJydXB0CT0gcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCwKJiM0MzsJCS5zb2Z0X3Jlc2V0CQk9IGdlbnBoeV9jNDVfc29mdF9yZXNldCwKJiM0MzsJCS5zdXNwZW5kCQk9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsCiYjNDM7CQkucmVzdW1lCQkJPSBnZW5waHlfYzQ1X3BtYV9yZXN1bWUsCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oCmluZGV4IDE5OWE3YWFhMzQxYmZkLi4yNWE2NjMyMGRmNTZlYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oCkBAIC0yMzA5LDYgJiM0MzsyMzA5LDcgQEAgaW50IGdlbnBoeV9jMzdfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCAqY2hhbmdlZCk7CiAvKiBDbGF1c2UgNDUgUEhZICovCiBpbnQgZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiBpbnQgZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgcmVzdGFydCk7CiYjNDM7aW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBnZW5waHlfYzQ1X2FuZWdfZG9uZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBnZW5waHlfYzQ1X3JlYWRfbGluayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L21kaW8uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmgKaW5kZXggYjI1NDFjOTQ4ZmMxZWIuLjA2ZjRiYzNjMjBjNzE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmgKQEAgLTMzMiw4ICYjNDM7MzMyLDEzIEBACiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYyXzVHCTB4MDA4MAkvKiBBZHZlcnRpc2UgMi41R0JBU0UtVCAqLwogI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWNUcJMHgwMTAwCS8qIEFkdmVydGlzZSA1R0JBU0UtVCAqLwogI2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfQURWMTBHCTB4MTAwMAkvKiBBZHZlcnRpc2UgMTBHQkFTRS1UICovCiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFCTB4ODAwMAkvKiBNYXN0ZXIvc2xhdmUgbWFudWFsIGNvbmZpZyBlbmFibGUgKi8KJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRQkweDQwMDAJLyogTWFzdGVyL3NsYXZlIGNvbmZpZyB2YWx1ZSAoMT1NYXN0ZXIpICovCiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFCTB4MjAwMAkvKiBNYXN0ZXIgUHJlZmVycmVkIFR5cGUgKi8KIAogLyogQU4gMTBHQkFTRS1UIHN0YXR1cyByZWdpc3Rlci4gKi8KJiM0MzsjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19GQVVMVAkweDgwMDAJLyogTWFzdGVyL3NsYXZlIGZhdWx0ICovCiYjNDM7I2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTVNfUkVTCTB4NDAwMAkvKiBNYXN0ZXIvc2xhdmUgcmVzb2x1dGlvbiAoMT1NYXN0ZXIpICovCiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUDJfNUcJMHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqLwogI2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTFA1RwkJMHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi8KICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQVFJSCTB4MDIwMAkvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjY5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlRMODI2MUMgUEhZIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDIDEwR2JwcyBQSFkuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgLCBhZGRpbmcgZnVuY3Rpb25zIGxpa2UgYGdlbnBoeV9jNDVfc29mdF9yZXNldGAsIGBydGw4MjYxeF9wcm9iZWAsIGBydGw4MjYxeF9md19sb2FkYCwgYW5kIGRyaXZlciByZWdpc3RyYXRpb24gZm9yIGBSVExfODI2MUNfQ0dgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uCgpHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBwcm9iZWQgdmlhIGFuIE1ESU8gYnVzLiBTbywgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlzLCBjYW4gd2UgZW11bGF0ZSB0aGlzIFBIWSBzb21laG93IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGxpa2Ugd2l0aCBRRU1VPyBTeXprYWxsZXIgaXMgdGhlIG9idmlvdXMgY2hvaWNlIGZvciBmdXp6aW5nLCBidXQgaG93IGRvIHdlIGdldCBpdCB0byByZWFjaCB0aGlzIGNvZGU/CgpJIG5lZWQgdG8gcmVtZW1iZXIgaG93IHN5emthbGxlciBoYW5kbGVzIFBIWSBkcml2ZXJzLiBEb2VzIGl0IG5hdGl2ZWx5IHN1cHBvcnQgTURJTyBpbmplY3Rpb24/IEkgZG9uJiMzOTt0ICp0aGluayogaXQgZG9lcy4gUGVyaGFwcyB0aHJvdWdoIHNvbWUgbmV0bGluayBpbnRlcmZhY2Ugb3IgYW5vdGhlciBpbmRpcmVjdCBhcHByb2FjaD8gV2FpdCwgaXMgdGhlcmUgc29tZXRoaW5nIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBtYXliZSBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIHRoYXQgY291bGQgYmUgbGV2ZXJhZ2VkPyBObywgdGhhdCYjMzk7cyBtb3JlIGZvciB3aXJlbGVzcy4gVGhpcyBpcyBhbiBFdGhlcm5ldCBQSFkuIFJpZ2h0LiBTbywgc3l6a2FsbGVyICpjYW4qIGZ1enogUEhZcywgYnV0IG9ubHkgaWYgdGhlcmUmIzM5O3MgYSB3YXkgdG8gaW5zdGFudGlhdGUgdGhlbS4KCk9rYXksIGxldCYjMzk7cyBzZWUgaWYgc3l6a2FsbGVyIGhhcyAqYW55KiBNRElPIGJ1cyBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBzcGVjaWZpYy4gQ2FuIHVzZXJzcGFjZSBpbnN0YW50aWF0ZSBhIFBIWT8gVXN1YWxseSwgaXQmIzM5O3MgdGhlIE1BQyBkcml2ZXIgb3IgdGhlIGRldmljZSB0cmVlLCB0aGF0JiMzOTtzIHdoYXQgSSYjMzk7dmUgc2Vlbi4KCkhvbGQgb24uIExldCYjMzk7cyBzZWUuLi4gdGhlIGBydGw4MjYxeF9md19sb2FkYCBmdW5jdGlvbiBsb29rcyBpbnRlcmVzdGluZy4gSXQgdXNlcyBgcmVxdWVzdF9maXJtd2FyZWAsIGFuZCBpZiB0aGF0JiMzOTtzIHJlYWNoYWJsZSwgdGhlbiB0aGlzIGNvZGUgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBSZWFjaGluZyBmaXJtd2FyZSBsb2FkaW5nIG9mdGVuIGludm9sdmVzIHNvbWUgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLgoKUmlnaHQsIHRpbWUgdG8gY2hlY2sgaWYgYFJFQUxURUtfUEhZYCBpcyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5emthbGxlciBjb25maWdzLiBHb3R0YSBzdGFydCB0aGVyZS4gTGV0JiMzOTtzIGRvIGEgc2VhcmNoIGZvciBgUkVBTFRFS19QSFlgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JFQUxURUtfUEhZJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS5yc3Q9MTE5PVRvIGVuYWJsZSB0aGUgRFBBQSBFdGhlcm5ldCBkcml2ZXIsIHRoZSBmb2xsb3dpbmcgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZDo6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdC0xMzEtICBDT05GSUdfVklURVNTRV9QSFk9eVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdDoxMzI6ICBDT05GSUdfUkVBTFRFS19QSFk9eVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdC0xMzMtICBDT05GSUdfQVFVQU5USUFfUEhZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc9MTA3PUNPTkZJR19CUk9BRENPTV9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjEwODpDT05GSUdfUkVBTFRFS19QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnLTEwOS0jIENPTkZJR19VU0JfTkVUX0RSSVZFUlMgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz0xMjQ9Q09ORklHX0JST0FEQ09NX1BIWT15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6MTI1OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctMTI2LUNPTkZJR19NQ1RQX1NFUklBTD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tb3hhcnRfZGVmY29uZmlnPTYzPUNPTkZJR19BUk1fTU9YQVJUX0VUSEVSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL21veGFydF9kZWZjb25maWctNjktIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9tb3hhcnRfZGVmY29uZmlnOjcwOkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL21veGFydF9kZWZjb25maWctNzEtQ09ORklHX01ESU9fTU9YQVJUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWc9NTc9Q09ORklHX01JQ1JFTF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9teHNfZGVmY29uZmlnOjU4OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWctNTktQ09ORklHX0NBTl9GTEVYQ0FOPW1cbi0tXG5hcmNoL2FybS9jb25maWdzL3N1bnhpX2RlZmNvbmZpZz01Mj1DT05GSUdfTUlDUkVMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL3N1bnhpX2RlZmNvbmZpZzo1MzpDT05GSUdfUkVBTFRFS19QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9zdW54aV9kZWZjb25maWctNTQtQ09ORklHX0NBTl9TVU40ST15XG4tLVxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUREVWSUNFUz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZy05NC0jIENPTkZJR19ORVRfVkVORE9SX1hJTElOWCBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnOjk1OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnLTk2LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9NDY5PUNPTkZJR19RQ0E4MDhYX1BIWT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQ3MDpDT05GSUdfUkVBTFRFS19QSFk9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NzEtQ09ORklHX1JPQ0tDSElQX1BIWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MjA3PUNPTkZJR19RU0VNSV9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MjA4OkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0yMDktQ09ORklHX0hPU1RBUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9MTc0PUNPTkZJR19RU0VNSV9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6MTc1OkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy0xNzYtQ09ORklHX1NNU0NfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnPTk3PUNPTkZJR19EQVZJQ09NX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnOjk4OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnLTk5LSMgQ09ORklHX1VTQl9ORVRfRFJJVkVSUyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI4Mj1DT05GSUdfUVNFTUlfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoyODM6Q09ORklHX1JFQUxURUtfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yODQtQ09ORklHX1NNU0NfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI4OT1DT05GSUdfUVNFTUlfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjkwOkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTI5MS1DT05GSUdfU01TQ19QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yODg9Q09ORklHX1FTRU1JX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6Mjg5OkNPTkZJR19SRUFMVEVLX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjkwLUNPTkZJR19TTVNDX1BIWT1tXG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0xNDI9Q09ORklHX1FTRU1JX1BIWT1tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE0MzpDT05GSUdfUkVBTFRFS19QSFk9bVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xNDQtQ09ORklHX1NNU0NfUEhZPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZz02Nj1DT05GSUdfUVNFTUlfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnOjY3OkNPTkZJR19SRUFMVEVLX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZy02OC1DT05GSUdfU01TQ19QSFk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NDY3PUNPTkZJR19RU0VNSV9QSFk9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo0Njg6Q09ORklHX1JFQUxURUtfUEhZPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctNDY5LUNPTkZJR19TTVNDX1BIWT1tXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZz0yPW1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy02LVx0c2VsZWN0IElSUV9ET01BSU5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NzpcdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy04LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1Mi1cdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTM6XHRzZWxlY3QgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9ODQ9Y29uZmlnIFI4MTY5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg5LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjkwOlx0c2VsZWN0IFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctOTEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTk0PW9iai0kKENPTkZJR19RU0VNSV9QSFkpXHRcdCYjNDM7PSBxc2VtaS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTU6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVx0JiM0Mzs9IHJlYWx0ZWsvXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtOTYtb2JqLSQoQ09ORklHX1JFTkVTQVNfUEhZKVx0JiM0Mzs9IHVQRDYwNjIwLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTctXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjg6aWYgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTI6XHRkZXBlbmRzIG9uIEhXTU9OIFx1MDAyNlx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTUtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjE2OmVuZGlmICMgUkVBTFRFS19QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZT0yPXJlYWx0ZWsteVx0XHRcdCYjNDM7PSByZWFsdGVrX21haW4ub1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrLSQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSAmIzQzOz0gcmVhbHRla19od21vbi5vXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xODA0PXN0YXRpYyBpbnQgcnRsODIyeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS17XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODA2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDctXHQgICAgcGh5ZGV2LVx1MDAzZXBoeV9pZCAhPSBSVExfR0VORVJJQ19QSFlJRClcbi0tXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaDoyOiNpZm5kZWYgX1JFQUxURUtfUEhZX0hcbmluY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oOjM6I2RlZmluZSBfUkVBTFRFS19QSFlfSFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmgtNC1cbi0tXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaC02LVxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6NzojZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk3OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbiBUaG91Z2h0cyoqCgpPa2F5LCBzbyB0aGUgY29yZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBnZXQgdGhpcyBQSFkgZHJpdmVyIGNvZGUgcnVubmluZywgc3BlY2lmaWNhbGx5IHRoZSBvbmUgZm9yIHRoZSBgUlRMXzgyNjFDX0NHYC4gVGhlIGtleSBzZWVtcyB0byBiZSBzdWNjZXNzZnVsbHkgaW5zdGFudGlhdGluZyBhIFBIWSBkZXZpY2Ugd2l0aCB0aGF0IHNwZWNpZmljIElELiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGF0JiMzOTtzIHBvc3NpYmxlIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyB3aGVyZSB0aGluZ3MgdXN1YWxseSBnZXQgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gZG93biB0aGUgcGF0aCBvZiBjcmVhdGluZyBhIHZpcnR1YWwgTURJTyBidXMuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZWFzaWVzdCByb3V0ZSBpbiB0aGVzZSBraW5kcyBvZiBzaXR1YXRpb25zLiBIbW0sIHdhaXQsIHdhc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGNhbGxlZCBgbWRpby1tb2NrdXBgPyBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQsIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIGFjdHVhbGx5IGEgdmlhYmxlIG9wdGlvbiBoZXJlLiBJdCB3b3VsZCBiZSBncmVhdCBpZiBpdCBleGlzdHMsIGFzIHRoYXQgd291bGQgbWFrZSB0aGluZ3MgbXVjaCBzaW1wbGVyLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gYW5kIHNlZSBpZiB0aGF0JiMzOTtzIGEgdmFsaWQgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLW1vY2t1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNjgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBGdXp6aW5nIERpbGVtbWEqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyBNRElPIGludGVyZmFjZXMgd2l0aCBzeXprYWxsZXIuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgYnVpbHQtaW4gTURJTyBmdXp6aW5nIGNhcGFiaWxpdGllcy4mIzM0OyBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc2V0YmFjay4gVGhlbiBJIHRoaW5rLCAmIzM0O0hhbmcgb24sIGBtYWM4MDIxMV9od3NpbWAgaXMgc3BlY2lmaWNhbGx5IGZvciBXaUZpLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gaGVscCBtZSB3aXRoIE1ESU8gZGlyZWN0bHkuJiMzNDsgU28gSSYjMzk7bSBiYWNrIHRvIHNxdWFyZSBvbmUuCgpCdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIG1vcmUgYnJvYWRseSwgJiMzNDtJcyB0aGVyZSBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSBhIFBIWSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN5emthbGxlciBmcmFtZXdvcms/JiMzNDsgVGhlbiBpdCBkYXducyBvbiBtZSwgJiMzNDtJZiBhIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFzIGEgUEhZIGRyaXZlciwgaXQgbm9ybWFsbHkgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIGBwaHlfZHJpdmVyX3JlZ2lzdGVyYC4mIzM0OyBGcm9tIHRoZXJlLCBpdCB0eXBpY2FsbHkgd2FpdHMgZm9yIGEgUEhZIGRldmljZSB0byBzaG93IHVwIG9uIGFuIE1ESU8gYnVzIGJlZm9yZSBiaW5kaW5nLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBiZWNvbWVzLCAmIzM0O0NhbiBJIGxldmVyYWdlIHVzZXJzcGFjZSB0byBjcmVhdGUgYW4gTURJTyBidXM/JiMzNDsgQW5kIGFsbW9zdCBpbW1lZGlhdGVseSwgSSB0aGluayAmIzM0O05vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgdHlwaWNhbGx5IHdvcmtzLiYjMzQ7IFRoZSBzeXN0ZW0gdXN1YWxseSBoYW5kbGVzIHRoZSBNRElPIGJ1cyBjcmVhdGlvbi4gSG93ZXZlciwgdGhlIGdlYXJzIGJlZ2luIHRvIHR1cm4gYWdhaW4uICYjMzQ7QnV0IHdoYXQgYWJvdXQgYG5ldGRldnNpbWA/JiMzNDsgaXQgYXNrcy4gJiMzNDtEb2VzIGBuZXRkZXZzaW1gLCB0aGF0IG5ldHdvcmsgZGV2aWNlIHNpbXVsYXRvciwgcHJvdmlkZSBhbiBNRElPIGJ1cz8mIzM0OyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCBhdmVudWUgZnVydGhlci4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhdmVudWUgZm9yIGEgc29sdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDczMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gQnVzIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGVyZSBhbiBNRElPIGJ1cyBtaWdodCBwb3AgdXAgaW4gdGhlIGtlcm5lbC4gYGR1bW15YCBhbmQgYHZldGhgIGFyZSBvdXQg4oCTIGRlZmluaXRlbHkgbm90IHRoZXJlLiBXaGF0IGFib3V0IGB0dW5gIGFuZCBgdGFwYD8gTmFoLCB0aG9zZSBhcmUgbGF5ZXIgMywgbm8gcGh5c2ljYWwgaW50ZXJmYWNlLiBIbW0uLi4gaG93IGFib3V0IGB1c2JuZXRgPyBBaCwgbm93IHdlJiMzOTtyZSBnZXR0aW5nIHNvbWV3aGVyZS4gU29tZSBVU0IgbmV0d29yayBkZXZpY2VzICpkbyogaGF2ZSBNRElPIGJ1c2VzLCBpbnRlcmVzdGluZy4KCklmIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZywgdGhpcyBpcyBwZXJmZWN0ISBJIGNhbiBidWlsZCBhbiBlbXVsYXRpb24gb2YgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCBhbiBNRElPIGJ1cyBhbmQsIGNydWNpYWxseSwgYSByZXBvcnRlZCBQSFkgSUQuIFRoaXMgY291bGQgYmUgYSByZWFsbHkgc29saWQgYXBwcm9hY2guCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDogbGV0IG1lIGNoZWNrIHRoZSBleGlzdGluZyBVU0IgbmV0d29yayBkcml2ZXJzIGFuZCBzZWUgd2hpY2ggb25lcyBhY3R1YWxseSBtYWtlIHVzZSBvZiBQSFlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBleGlzdGluZyBsYW5kc2NhcGUgbG9va3MgbGlrZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciB3aXRoIHRoaXMgY29uY2VwdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTI2Nj1zdGF0aWMgaW50IGFxYzExMV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMjkwLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjI5MTpcdGVsay1cdTAwM2ViYXNlLm1kaW9fc3VwcG9ydCA9IDB4MDA7IC8qTm90IHN1cHBvcnRlZCovXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMjkyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MTc4PXN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4NC1cdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg1Olx0c3RydWN0IG1paV9idXMgKm1kaW87XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4Ni1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMjk9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMxOmludCBhc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMyOnZvaWQgYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsIGludCB2YWwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzMtXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNDppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzU6aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzg6dm9pZCBhc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzktXHRcdFx0ICBpbnQgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz00NDE9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo0ODA6c3RhdGljIGludCBfX2FzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODEtXHRcdFx0ICAgIGJvb2wgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTAzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTA0Olx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDthc2l4X21kaW9fcmVhZCgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHJldHVybnM9MHglMDR4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA1LVx0XHRcdHBoeV9pZCwgbG9jLCBsZTE2X3RvX2NwdShyZXMpKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTEte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTEyOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTEzLX1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxNTpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTYtXHRcdFx0ICAgICBpbnQgdmFsLCBib29sIGluX3BtKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUyMjpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7YXNpeF9tZGlvX3dyaXRlKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgdmFsPTB4JTA0eFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMy1cdFx0XHRwaHlfaWQsIGxvYywgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDM6dm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0NC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDU6XHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Ni19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ4LS8qIE1ESU8gcmVhZCBhbmQgd3JpdGUgd3JhcHBlcnMgZm9yIHBoeWxpYiAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTQ5OmludCBhc2l4X21kaW9fYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1MC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTUzOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQocHJpdi1cdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTQtfVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU1LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTU2OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MDpcdHJldHVybiBfX2FzaXhfbWRpb193cml0ZShwcml2LVx1MDAzZW5ldCwgcGh5X2lkLCByZWdudW0sIHZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYxLX1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY0LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2NTpcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz01Njg9dm9pZFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY5OmFzaXhfbWRpb193cml0ZV9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsIGludCB2YWwpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NzAte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTcxOlx0X19hc2l4X21kaW9fd3JpdGUobmV0ZGV2LCBwaHlfaWQsIGxvYywgdmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3Mi19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwPXN0YXRpYyB1MzIgYXNpeF9nZXRfcGh5aWQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwMDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcdFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzktXHRcdGlmIChwaHlfcmVnIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTpcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyLVx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE5MD1zdGF0aWMgdm9pZCBhc2l4X3BoeV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGludCByZXNldF9iaXRzKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUiwgcmVzZXRfYml0cyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDAtXHR3aGlsZSAodGltZW91dC0tKSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjAxOlx0XHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cdFx0XHRcdFx0XHRcdFx1MDAyNiBCTUNSX1JFU0VUKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yMTI9c3RhdGljIGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjQ4LVx0ZGV2LVx1MDAzZW1paS5kZXYgPSBkZXYtXHUwMDNlbmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI0OTpcdGRldi1cdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjUwOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MS1cdGRldi1cdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjMtXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI2NDpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjUtXHRcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3Olx0aWYgKGluX3BtIFx1MDAyNlx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVx0XHRcdFx0XHQgICBNSUlfUEhZU0lEMSkpKXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTEyLVx0XHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTM6XHRcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1Olx0XHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNUgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcdFx0cGh5MTZoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTgtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI1LVx0XHRpZiAocGh5MTRoICE9IEFYODg3NzJBX1BIWTE0SF9ERUZBVUxUKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNjpcdFx0XHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjctXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRILFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjktXHRcdGlmIChwaHkxNWggIT0gQVg4ODc3MkFfUEhZMTVIX0RFRkFVTFQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTMwOlx0XHRcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzMS1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNUgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzMy1cdFx0aWYgKHBoeTE2aCAhPSBBWDg4NzcyQV9QSFkxNkhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzQ6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTM1LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE2SCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjU4PXN0YXRpYyBpbnQgYXNpeF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY2OC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Njk6c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjcwLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjczLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY3NDpcdHByaXYtXHUwMDNlbWRpbyA9IG1kaW9idXNfYWxsb2MoKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2NzU6XHRpZiAoIXByaXYtXHUwMDNlbWRpbylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NzYtXHRcdHJldHVybiAtRU5PTUVNO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY3Ny1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Nzg6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcHJpdiA9IGRldjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Nzk6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcmVhZCA9IFx1MDAyNmFzaXhfbWRpb19idXNfcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODA6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNld3JpdGUgPSBcdTAwMjZhc2l4X21kaW9fYnVzX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MTpcdHByaXYtXHUwMDNlbWRpby1cdTAwM2VuYW1lID0gXCYjMzQ7QXNpeCBNRElPIEJ1c1wmIzM0OztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODI6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcGh5X21hc2sgPSB+KEJJVChwcml2LVx1MDAzZXBoeV9hZGRyIFx1MDAyNiAweDFmKSB8IEJJVChBWF9FTUJEX1BIWV9BRERSKSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgzLVx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cdTAwM2N1c2IgYnVzIG51bWJlclx1MDAzZS1cdTAwM2N1c2IgZGV2aWNlIG51bWJlclx1MDAzZSAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4NDpcdHNucHJpbnRmKHByaXYtXHUwMDNlbWRpby1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDt1c2ItJTAzZDolMDNkXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4NS1cdFx0IGRldi1cdTAwM2V1ZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNudW0sIGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldm51bSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4NzpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODgtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg5LVx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0NvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1cyAoZXJyICVkKVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2OTA6XHRcdG1kaW9idXNfZnJlZShwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5MTpcdFx0cHJpdi1cdTAwM2VtZGlvID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02OTItXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2OTc6c3RhdGljIHZvaWQgYXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjk4LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2OTk6XHRtZGlvYnVzX3VucmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDA6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDEtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXHUwMDNlbWRpbywgcHJpdi1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA5LVx0aWYgKCFwcml2LVx1MDAzZXBoeWRldikge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzEtXHQgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzI6XHRwcml2LVx1MDAzZXBoeWRldl9pbnQgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cdTAwM2VtZGlvLCBBWF9FTUJEX1BIWV9BRERSKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzMtXHRpZiAoIXByaXYtXHUwMDNlcGh5ZGV2X2ludCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNzpcdHJldCA9IGF4ODg3NzJfaW5pdF9tZGlvKGRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE4LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTk6XHRcdGdvdG8gbWRpb19lcnI7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDAtcGh5bGlua19lcnI6XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQxOlx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTQyOm1kaW9fZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0My1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk1NT1zdGF0aWMgdm9pZCBheDg4NzcyX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjItXHRwaHlsaW5rX2Rlc3Ryb3kocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NjM6XHRheDg4NzcyX21kaW9fdW5yZWdpc3Rlcihwcml2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjQtXHRhc2l4X3J4X2ZpeHVwX2NvbW1vbl9mcmVlKGRldi1cdTAwM2Vkcml2ZXJfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk5MD1zdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk3Olx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXG5cJiMzNDssIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDA6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX0NUUkwsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMS1cdFx0XHRNQVJWRUxMX0NUUkxfUlhERUxBWSB8IE1BUlZFTExfQ1RSTF9UWERFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0Olx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwOS1cdFx0cmVnIHw9ICgxICYjNDM7IDB4MDEwMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMDpcdFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDEzOlx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyODpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MGMsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjk6XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XHRcdGFzaXhfbWRpb19yZWFkIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgwMSkgfCAweDAwODApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzE6XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFmLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzMtXHRpZiAoZGF0YS1cdTAwM2VsZWRtb2RlID09IDEyKSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNDpcdFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMHgwMDAyKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1Olx0XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFhLCAweDAwY2IpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzY6XHRcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzctXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNDI9c3RhdGljIGludCBtYXJ2ZWxsX2xlZF9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCB1MTYgc3BlZWQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0My17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcdHUxNiByZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQ1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDttYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcblwmIzM0OywgcmVnKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDYzOlx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA2NC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA2OD1zdGF0aWMgaW50IGF4ODgxNzhfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQxLVx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MjpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVx0XHRcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExNDQ6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9DVFJMMTAwMCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQ1LVx0XHRcdEFEVkVSVElTRV8xMDAwRlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5MC1cdGRldi1cdTAwM2VtaWkuZGV2ID0gZGV2LVx1MDAzZW5ldDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkxOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkyOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTMtXHRkZXYtXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgxZjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0xOD1zdHJ1Y3QgYXg4ODE3MmFfcHJpdmF0ZSB7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxOTpcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjAtXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTU1PXN0YXRpYyB2b2lkIGF4ODgxNzJhX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02MC0vKiB1c2UgcGh5bGliIGluZnJhc3RydWN0dXJlICovXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo2MTpzdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02Mi17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNjUtXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo2NjpcdHByaXYtXHUwMDNlbWRpbyA9IG1kaW9idXNfYWxsb2MoKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjY3Olx0aWYgKCFwcml2LVx1MDAzZW1kaW8pIHtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTY4LVx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0NvdWxkIG5vdCBhbGxvY2F0ZSBNRElPIGJ1c1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzEtXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo3MjpcdHByaXYtXHUwMDNlbWRpby1cdTAwM2Vwcml2ID0gKHZvaWQgKilkZXY7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo3MzpcdHByaXYtXHUwMDNlbWRpby1cdTAwM2VyZWFkID0gXHUwMDI2YXNpeF9tZGlvX2J1c19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzQ6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNld3JpdGUgPSBcdTAwMjZhc2l4X21kaW9fYnVzX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzU6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlbmFtZSA9IFwmIzM0O0FzaXggTURJTyBCdXNcJiMzNDs7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03Ni1cdC8qIG1paSBidXMgbmFtZSBpcyB1c2ItXHUwMDNjdXNiIGJ1cyBudW1iZXJcdTAwM2UtXHUwMDNjdXNiIGRldmljZSBudW1iZXJcdTAwM2UgKi9cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjc3Olx0c25wcmludGYocHJpdi1cdTAwM2VtZGlvLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0O3VzYi0lMDNkOiUwM2RcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OC1cdFx0IGRldi1cdTAwM2V1ZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNudW0sIGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldm51bSk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODUtXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4NjpcdG5ldGRldl9pbmZvKGRldi1cdTAwM2VuZXQsIFwmIzM0O3JlZ2lzdGVyZWQgbWRpbyBidXMgJXNcXG5cJiMzNDssIHByaXYtXHUwMDNlbWRpby1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy04Ny1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTg5LW1mcmVlOlxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6OTA6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTkxLVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05My1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk0OnN0YXRpYyB2b2lkIGF4ODgxNzJhX3JlbW92ZV9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTk1LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05Ny1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk4Olx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7ZGVyZWdpc3RlcmluZyBtZGlvIGJ1cyAlc1xcblwmIzM0OywgcHJpdi1cdTAwM2VtZGlvLVx1MDAzZWlkKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk5Olx0bWRpb2J1c191bnJlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxMDA6XHRtZGlvYnVzX2ZyZWUocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTEwMS19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MTU4PXN0YXRpYyBpbnQgYXg4ODE3MmFfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTIyNS1cdC8qIGluaXQgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjIyNjpcdHJldCA9IGF4ODgxNzJhX2luaXRfbWRpbyhkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjI3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNTM9c3RhdGljIHZvaWQgYXg4ODE3MmFfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjU2LVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjU3Olx0YXg4ODE3MmFfcmVtb3ZlX21kaW8oZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI1OC1cdGtmcmVlKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTI2MT1zdGF0aWMgaW50IGF4ODgxNzJhX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTEtXHRzbnByaW50Zihwcml2LVx1MDAzZXBoeV9uYW1lLCBzaXplb2YocHJpdi1cdTAwM2VwaHlfbmFtZSksIFBIWV9JRF9GTVQsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzozMTI6XHRcdCBwcml2LVx1MDAzZW1kaW8tXHUwMDNlaWQsIHByaXYtXHUwMDNlcGh5X2FkZHIpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xMy0jaW5jbHVkZSBcdTAwM2NsaW51eC91c2IvdXNibmV0LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNDojaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0zMTQ9c3RhdGljIHZvaWQgYXg4ODE3OV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTMzMy1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzozMzQ6c3RhdGljIGludCBheDg4MTc5X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTM0Mi1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzozNDM6c3RhdGljIHZvaWQgYXg4ODE3OV9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMzQ0LVx0XHRcdCAgICAgICBpbnQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xMjgxPXN0YXRpYyBpbnQgYXg4ODE3OV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTEzMDItXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTMwMzpcdGRldi1cdTAwM2VtaWkubWRpb19yZWFkID0gYXg4ODE3OV9tZGlvX3JlYWQ7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTMwNDpcdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGF4ODgxNzlfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xMzA1LVx0ZGV2LVx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4ZmY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTEzNz1zdGF0aWMgaW50IGNvbnRyb2xfd3JpdGUoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlcXVlc3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTE3Ni1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYzoxNzc6c3RhdGljIGludCBjaDkyMDBfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMTk2LVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjE5NzpzdGF0aWMgdm9pZCBjaDkyMDBfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTE5OC1cdFx0XHQgICAgICBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYz0zMzg9c3RhdGljIGludCBjaDkyMDBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0zNDgtXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM6MzQ5Olx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBjaDkyMDBfbWRpb19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjM1MDpcdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGNoOTIwMF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTM1MS1cdGRldi1cdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHgxZjtcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9MjAxPXN0YXRpYyBpbnQgZG05NjAxX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjE5LVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjIyMDpzdGF0aWMgaW50IGRtOTYwMV9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yMjEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yMzgtXHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MjM5Olx0XHQgICBcJiMzNDtkbTk2MDFfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjQwLVx0XHQgICBwaHlfaWQsIGxvYywgbGUxNl90b19jcHUocmVzKSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI0NC1cbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzoyNDU6c3RhdGljIHZvaWQgZG05NjAxX21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNDYtXHRcdFx0ICAgICAgaW50IHZhbClcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjU1LVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjI1NjpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7ZG05NjAxX21kaW9fd3JpdGUoKSBwaHlfaWQ9MHglMDJ4LCBsb2M9MHglMDJ4LCB2YWw9MHglMDR4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI1Ny1cdFx0ICAgcGh5X2lkLCBsb2MsIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTMzOD1zdGF0aWMgaW50IGRtOTYwMV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTM1OC1cdGRldi1cdTAwM2VtaWkuZGV2ID0gZGV2LVx1MDAzZW5ldDtcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzozNTk6XHRkZXYtXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGRtOTYwMV9tZGlvX3JlYWQ7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MzYwOlx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gZG05NjAxX21kaW9fd3JpdGU7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMzYxLVx0ZGV2LVx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4MWY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTQxMS1cbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MTI6XHRkbTk2MDFfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIEJNQ1JfUkVTRVQpO1xuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjQxMzpcdGRtOTYwMV9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTQxNC1cdFx0XHQgIEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTktI2luY2x1ZGUgXHUwMDNjbGludXgvaXB2Ni5oXHUwMDNlXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwOiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjktI2luY2x1ZGUgXHUwMDNjbGludXgvbWljcm9jaGlwcGh5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MzA6I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00MTM9c3RydWN0IGxhbjc4eHhfbmV0IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ0MS1cdHN0cnVjdCBtdXRleFx0XHRkZXZfbXV0ZXg7IC8qIHNlcmlhbGlzZSBvcGVuL3N0b3Agd3J0IHN1c3BlbmQvcmVzdW1lICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ0MjpcdHN0cnVjdCBtdXRleFx0XHRtZGlvYnVzX211dGV4OyAvKiBmb3IgTURJTyBidXMgYWNjZXNzICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ0My1cdHVuc2lnbmVkIGludFx0XHRwaXBlX2luLCBwaXBlX291dCwgcGlwZV9pbnRyO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4LVx0dTMyXHRcdFx0Y2hpcHJldjtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6NDU5Olx0c3RydWN0IG1paV9idXNcdFx0Km1kaW9idXM7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ2MC1cdHBoeV9pbnRlcmZhY2VfdFx0XHRpbnRlcmZhY2U7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz05NDY9c3RhdGljIGludCBsYW43OHh4X2ZsdXNoX3J4X2ZpZm8oc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy05NTAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjk1MTovKiBMb29wIHVudGlsIHRoZSByZWFkIGlzIGNvbXBsZXRlZCB3aXRoIHRpbWVvdXQgY2FsbGVkIHdpdGggbWRpb2J1c19tdXRleCBoZWxkICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjk1MjpzdGF0aWMgaW50IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy05NTMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTU2MT1zdGF0aWMgaW50IGxhbjc4eHhfbWFjX3Jlc2V0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU2Ni1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTU2NzpcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZW1kaW9idXNfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNTY4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU3Mi1cdCAqL1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNTczOlx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU3NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNjAxLWV4aXRfdW5sb2NrOlxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNjAyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtZGlvYnVzX211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTYwMy1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE5MjM9c3RhdGljIGludCBsYW43OHh4X2luaXRfbWFjX2FkZHJlc3Moc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xOTkwLS8qIE1ESU8gcmVhZCBhbmQgd3JpdGUgd3JhcHBlcnMgZm9yIHBoeWxpYiAqL1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxOTkxOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGlkeClcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTk5Mi17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDAwLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDAxOlx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbWRpb2J1c19tdXRleCk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDItXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDMtXHQvKiBjb25maXJtIE1JSSBub3QgYnVzeSAqL1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDA0Olx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAwNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDEzLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDE0Olx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAxNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDI0LWRvbmU6XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwMjU6XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZW1kaW9idXNfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDI2LVx0dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi1cdTAwM2VpbnRmKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMzAtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwMzE6c3RhdGljIGludCBsYW43OHh4X21kaW9idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGlkeCxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAzMi1cdFx0XHRcdCB1MTYgcmVndmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA0MS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA0MjpcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZW1kaW9idXNfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDQzLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDQ0LVx0LyogY29uZmlybSBNSUkgbm90IGJ1c3kgKi9cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA0NTpcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNDYtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA1OS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA2MDpcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNjEtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA2NC1kb25lOlxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDY1Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtZGlvYnVzX211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA2Ni1cdHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShkZXYtXHUwMDNlaW50Zik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDY5LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDcwOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNzEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA3NC1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA3NTpcdGRldi1cdTAwM2VtZGlvYnVzID0gbWRpb2J1c19hbGxvYygpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDc2Olx0aWYgKCFkZXYtXHUwMDNlbWRpb2J1cykge1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDc3LVx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O2NhbiYjMzk7dCBhbGxvY2F0ZSBNRElPIGJ1c1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDgwLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgxOlx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlcHJpdiA9ICh2b2lkICopZGV2O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgyOlx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlcmVhZCA9IGxhbjc4eHhfbWRpb2J1c19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgzOlx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNld3JpdGUgPSBsYW43OHh4X21kaW9idXNfd3JpdGU7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwODQ6XHRkZXYtXHUwMDNlbWRpb2J1cy1cdTAwM2VuYW1lID0gXCYjMzQ7bGFuNzh4eC1tZGlvYnVzXCYjMzQ7O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg1Olx0ZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlcGFyZW50ID0gXHUwMDI2ZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDg2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg3Olx0c25wcmludGYoZGV2LVx1MDAzZW1kaW9idXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7dXNiLSUwM2Q6JTAzZFwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA4OC1cdFx0IGRldi1cdTAwM2V1ZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNudW0sIGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldm51bSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDkzLVx0XHQvKiBzZXQgdG8gaW50ZXJuYWwgUEhZIGlkICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwOTQ6XHRcdGRldi1cdTAwM2VtZGlvYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxIFx1MDAzY1x1MDAzYyAxKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA5NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDk5LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTAwOlx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcJiMzNDttZGlvXCYjMzQ7KTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg5OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIGZvciBQSFkgSW5zdGFudGlhdGlvbioqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBwbGFuLiBJdCBsb29rcyBsaWtlIGBhc2l4YCwgYGF4ODgxNzJhYCwgYGF4ODgxNzlfMTc4YWAsIGFuZCBgbGFuNzh4eGAgYWxsIHJlbHkgb24gTURJTyBidXNlcy4gSWYgSSBmdXp6IHRoZSBVU0IgaW50ZXJmYWNlIGFuZCBlbXVsYXRlIGVpdGhlciBhbiBBU0lYIG9yIExBTjc4eHggZGV2aWNlLCB3aGVuIHRoZSBkcml2ZXIgcHJvYmVzLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIgYW4gTURJTyBidXMuIFRoZW4gdGhhdCBNRElPIGJ1cyB3aWxsIGdvIG9mZiBhbmQgc2NhbiBmb3IgUEhZcy4KCk5vdywgaWYgbXkgZW11bGF0ZWQgVVNCIGRldmljZSBjYW4gcmVzcG9uZCB0byBNRElPIHJlYWQgY29tbWFuZHMg4oCTIHdoaWNoIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvIFVTQiBjb250cm9sIG1lc3NhZ2VzIOKAkyBhbmQgaXQgKmNsYWltcyogdGhlIFBIWSBJRCBpcyBgUlRMXzgyNjFDX0NHYCwgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYDB4MDAxY2M4OThgLCB0aGUgUEhZIHN1YnN5c3RlbSB3aWxsIGluc3RhbnRpYXRlIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXIgYW5kIGNhbGwgYHJ0bDgyNjF4X3Byb2JlYC4KCkp1c3QgY29uZmlybWluZywgYFJUTF84MjYxQ19DR2AgaXMgZGVmaW5pdGVseSBgMHgwMDFjYzg5OGAuIFJpZ2h0LCB0aW1lIHRvIGRpc3NlY3QgYHJ0bDgyNjF4X3Byb2JlYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzg2Olx0c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIDM4NzpcdHtcbiAzODg6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldjtcbiAzODk6XHRcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2O1xuIDM5MDpcdFx0aW50IHN1Yl9waHlfaWQsIHJldDtcbiAzOTE6XHRcbiAzOTI6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbiAzOTM6XHRcdGlmICghcHJpdilcbiAzOTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMzk1Olx0XG4gMzk2Olx0XHRwaHlkZXYtXHUwMDNlcHJpdiA9IHByaXY7XG4gMzk3Olx0XG4gMzk4Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcbiAzOTk6XHRcdFx0XHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XG4gNDAwOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDQwMTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQwMjpcdFxuIDQwMzpcdFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9EQVRBX1JFRyk7XG4gNDA0Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDQwNTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQwNjpcdFxuIDQwNzpcdFx0c3ViX3BoeV9pZCA9IChyZXQgXHUwMDNlXHUwMDNlIDgpIFx1MDAyNiAweGZmO1xuIDQwODpcdFxuIDQwOTpcdFx0c3dpdGNoIChzdWJfcGh5X2lkKSB7XG4gNDEwOlx0XHRjYXNlIFJUTDgyNjFDX0NFX01PREVMOlxuIDQxMTpcdFx0XHRwcml2LVx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xuIDQxMjpcdFx0XHRwaHlkZXZfaW5mbyhwaHlkZXYsIFwmIzM0O1JUTDgyNjFDIGRldGVjdGVkIChzdWJfaWQgMHglMDJ4KVxcblwmIzM0Oywgc3ViX3BoeV9pZCk7XG4gNDEzOlx0XHRcdGJyZWFrO1xuIDQxNDpcdFxuIDQxNTpcdFx0ZGVmYXVsdDpcbiA0MTY6XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtVbmtub3duIHN1Yl9pZCAweCUwMngsIGRlZmF1bHQgYmVoYXZpb3JcXG5cJiMzNDssIHN1Yl9waHlfaWQpO1xuIDQxNzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA0MTg6XHRcdH1cbiA0MTk6XHRcbiA0MjA6XHRcdHJldHVybiAwO1xuIDQyMTpcdH1cbiA0MjI6XHRcbiA0MjM6XHRzdGF0aWMgaW50IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIDQyNDpcdHtcbiA0MjU6XHRcdGludCByZXQ7XG4gNDI2Olx0XG4gNDI3Olx0XHRyZXQgPSBnZW5waHlfYzQ1X3BtYV9yZWFkX2FiaWxpdGllcyhwaHlkZXYpO1xuIDQyODpcdFx0aWYgKHJldClcbiA0Mjk6XHRcdFx0cmV0dXJuIHJldDtcbiA0MzA6XHRcdC8qXG4gNDMxOlx0XHQgKiBTdXBwbGVtZW50IE11bHRpLUdpZyBzcGVlZHMgdGhhdCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWRcbiA0MzI6XHRcdCAqIFJUTDgyNjFYIHN1cHBvcnRzIDIuNUcvNUcgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgMTBHXG4gNDMzOlx0XHQgKi9cbiA0MzQ6XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxuIDQzNTpcdFx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVEw4MjYxeCBQSFkgSW5pdGlhbGl6YXRpb24gUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgcnRsODI2MXhfcHJvYmVgIGlzIHF1ZXJ5aW5nIHRoZSBNTUQgcmVnaXN0ZXJzLiBJZiB0aGUgZW11bGF0ZWQgVVNCIGRldmljZSBwbGF5cyBhbG9uZyBhbmQgcHJvdmlkZXMgYFJUTDgyNjFDX0NFX01PREVMYCBpbiBgc3ViX3BoeV9pZGAgaW4gcmVzcG9uc2UgdG8gdGhvc2UgTU1EIHJlYWRzLCB0aGVuIHdlJiMzOTtsbCBwcm9jZWVkIHRvIGBydGw4MjYxeF9jb25maWdfaW5pdGAuIE5vdywgd2l0aGluIGBydGw4MjYxeF9jb25maWdfaW5pdGAsIHRoZSBmdW5jdGlvbiBgcnRsODI2MXhfZndfbG9hZGAgZ2V0cyBjYWxsZWQuCgpIZXJlJiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3Rpbmc6IGBydGw4MjYxeF9md19sb2FkYCByZWxpZXMgb24gYHJlcXVlc3RfZmlybXdhcmVgLiBUaGUgY3JpdGljYWwgcGF0aCB0aGVuIGhpbmdlcyBvbiBmaXJtd2FyZSBhdmFpbGFiaWxpdHkuIEFzc3VtaW5nIGl0JiMzOTtzIHByZXNlbnQgKG9yIHRoYXQgd2UgY2FuIHNldCB1cCBhIG1vY2sgZW52aXJvbm1lbnQsIHdoaWNoIG1pZ2h0IGJlIHRyaWNreSB3aXRoIHN5emthbGxlciBpZiB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IGluIHRoZSByb290ZnMpLCB3ZSYjMzk7bGwgd2FpdCBmb3IgdGhlIGxvYWQuIElmIGByZXF1ZXN0X2Zpcm13YXJlYCBmYWlscyDigJMgd2hpY2ggaXMgd2hhdCB3ZSBhcmUgYWZ0ZXIsIGl0IHJldHVybnMgYW4gZXJyb3IsIGFuZCB0aGUgZW50aXJlIGBydGw4MjYxeF9jb25maWdfaW5pdGAgcHJvY2VzcyBibG93cyB1cC4gVGhpcyBjYXVzZXMgdGhlIFBIWSBpbml0aWFsaXphdGlvbiB0byBmYWlsLCBidXQsIGNyaXRpY2FsbHksIHdlJiMzOTt2ZSBkZW1vbnN0cmF0ZWQgdGhhdCB3ZSYjMzk7dmUgcmVhY2hlZCB0aGUgY29kZSBwYXRocyBpbiBgcnRsODI2MXhfcHJvYmVgIGFuZCBgcnRsODI2MXhfY29uZmlnX2luaXRgLgoKT24gYSBzaWRlIG5vdGUsIEkgc2VlIHRoYXQgZ2VuZXJpYyBDbGF1c2UgNDUgUEhZIGZ1bmN0aW9ucyBsaWtlIGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCBhbmQgYGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmVgIGhhdmUgYmVlbiBhZGRlZCB0byBgZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY2AuIFRoZXkmIzM5O3JlIG5vdyBhdmFpbGFibGUgdG8gYW55IEM0NSBQSFkuCgpUaGUgbmV4dCBwb2ludCB0byBhbmFseXplIGlzIHRoYXQgYGdlbnBoeV9jNDVfcmVhZF9zdGF0dXNgIGFuZCBgZ2VucGh5X2M0NV9jb25maWdfYW5lZ2AgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBnZW5waHlfYzQ1X3JlYWRfc3RhdHVzYCB0byBzZWUgaG93IGl0IGNhbGxzIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjkwOlx0XHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfbGluayhwaHlkZXYpO1xuMTI5MTpcdFx0aWYgKHJldClcbjEyOTI6XHRcdFx0cmV0dXJuIHJldDtcbjEyOTM6XHRcbjEyOTQ6XHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4xMjk1Olx0XHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XG4xMjk2Olx0XHRwaHlkZXYtXHUwMDNlcGF1c2UgPSBmYWxzZTtcbjEyOTc6XHRcdHBoeWRldi1cdTAwM2Vhc3ltX3BhdXNlID0gZmFsc2U7XG4xMjk4Olx0XG4xMjk5Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUpIHtcbjEzMDA6XHRcdFx0cmV0ID0gZ2VucGh5X2M0NV9yZWFkX2xwYShwaHlkZXYpO1xuMTMwMTpcdFx0XHRpZiAocmV0KVxuMTMwMjpcdFx0XHRcdHJldHVybiByZXQ7XG4xMzAzOlx0XG4xMzA0Olx0XHRcdGlmIChnZW5waHlfYzQ1X2Jhc2V0MV9hYmxlKHBoeWRldikpIHtcbjEzMDU6XHRcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xuMTMwNjpcdFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMzA3Olx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMTMwODpcdFx0XHR9IGVsc2Uge1xuMTMwOTpcdFx0XHRcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcbjEzMTA6XHRcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTMxMTpcdFx0XHRcdFx0cmV0dXJuIHJldDtcbjEzMTI6XHRcdFx0fVxuMTMxMzpcdFxuMTMxNDpcdFx0XHRwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHBoeWRldik7XG4xMzE1Olx0XHR9IGVsc2Uge1xuMTMxNjpcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfcG1hKHBoeWRldik7XG4xMzE3Olx0XHR9XG4xMzE4Olx0XG4xMzE5Olx0XHRyZXR1cm4gcmV0O1xuMTMyMDpcdH1cbjEzMjE6XHRFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfc3RhdHVzKTtcbjEzMjI6XHRcbjEzMjM6XHQvKipcbjEzMjQ6XHQgKiBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnIC0gcmVzdGFydCBhdXRvLW5lZ290aWF0aW9uIG9yIGZvcmNlZCBzZXR1cFxuMTMyNTpcdCAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuMTMyNjpcdCAqXG4xMzI3Olx0ICogRGVzY3JpcHRpb246IElmIGF1dG8tbmVnb3RpYXRpb24gaXMgZW5hYmxlZCwgd2UgY29uZmlndXJlIHRoZVxuMTMyODpcdCAqICAgYWR2ZXJ0aXNpbmcsIGFuZCB0aGVuIHJlc3RhcnQgYXV0by1uZWdvdGlhdGlvbi4gIElmIGl0IGlzIG5vdFxuMTMyOTpcdCAqICAgZW5hYmxlZCwgdGhlbiB3ZSBmb3JjZSBhIGNvbmZpZ3VyYXRpb24uXG4xMzMwOlx0ICovXG4xMzMxOlx0aW50IGdlbnBoeV9jNDVfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjEzMzI6XHR7XG4xMzMzOlx0XHRib29sIGNoYW5nZWQgPSBmYWxzZTtcbjEzMzQ6XHRcdGludCByZXQ7XG4xMzM1Olx0XG4xMzM2Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19ESVNBQkxFKVxuMTMzNzpcdFx0XHRyZXR1cm4gZ2VucGh5X2M0NV9wbWFfc2V0dXBfZm9yY2VkKHBoeWRldik7XG4xMzM4Olx0XG4xMzM5Olx0XHRyZXQgPSBnZW5waHlfYzQ1X2FuX2NvbmZpZ19hbmVnKHBoeWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODI2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQzQ1IFBIWSBNYXN0ZXIvU2xhdmUgQ29uZmlndXJhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgZ2VucGh5X2M0NV9yZWFkX3N0YXR1c2AgYW5kIGBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZC4gVGhleSBub3cgY2FsbCBgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZWAgYW5kIGBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZWAsIHJlc3BlY3RpdmVseS4gVGhpcyBpcyB0YXJnZXRlZCBhdCBDNDUgUEhZcyB3aXRoIGF1dG9uZWdvdGlhdGlvbiBlbmFibGVkLCBleGNsdWRpbmcgQmFzZVQxIFBIWXMuIFNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQsIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgY2xlYXJseSByZWFjaGFibGUgd2l0aGluIHRoZSBleGlzdGluZyBkcml2ZXIgc3RydWN0dXJlLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgbmV3IGxvZ2ljIGZvciBNYXN0ZXIvU2xhdmUgY29uZmlndXJhdGlvbiBpbiBDNDUgUEhZcywgYW5kIGFsc28gYWRkcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIuIFdvcnRoIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIGZ1enppbmcgcG90ZW50aWFsLgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gTG9va3MgbGlrZSB3ZSBoYXZlIGEgZ29vZCBzZXQ6IGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCBgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZWAsIGFuZCB0aGVuIHRoZSBSZWFsdGVrLXNwZWNpZmljIGZ1bmN0aW9uczogYHJ0bDgyNjF4X3Byb2JlYCwgYHJ0bDgyNjF4X2dldF9mZWF0dXJlc2AsIGBydGw4MjYxeF9yZWFkX3N0YXR1c2AsIGBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmVgLCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAsIGBydGw4MjYxeF9md19sb2FkYCwgYHJ0bDgyNjF4X2NvbmZpZ19pbnRyYCwgYHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHRgLCBgcnRsODI2MXhfY29uZmlnX2FuZWdgLCBhbmQgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YC4KCk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBpcyBgQ09ORklHX1JFQUxURUtfUEhZYCB0aGUgb25seSBjb25maWcgbmVlZGVkPyBZZXMsIGl0IHNlZW1zIHRvIGJlLiBCdXQgd2FpdCwgYGdlbnBoeV9jNDVfc29mdF9yZXNldGAgYW5kIG90aGVycyBhcmUgaW4gYHBoeS1jNDUuY2AsIHdoaWNoIGNvbXBpbGVzIHdpdGggYENPTkZJR19QSFlMSUJgLiBBbmQgYENPTkZJR19SRUFMVEVLX1BIWWAgZGVwZW5kcyBvbiBgQ09ORklHX1BIWUxJQmAuIFNvLCBgQ09ORklHX1JFQUxURUtfUEhZYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYWN0aXZhdGluZyB0aGUgbmV3IGxvZ2ljLiBKdXN0IG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgIGlzIGNvbXBpbGVkIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeS1jNDUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXHRcdFx0XHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MjkKCQkJCQkJCW91dHB1dDogMjgzCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQSFkgRHJpdmVyIENvbmZpZ3VyYXRpb24gZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBwaHktYzQ1Lm9gIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyAmIzM0O1RoYXQmIzM5O3MgcGFydCBvZiBgbGlicGh5YCYjMzQ7LiBOYXR1cmFsbHksIGl0JiMzOTtzIG9ubHkgYnVpbHQgd2hlbiBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGBydGw4MjYxeF9md19sb2FkYC4gSXQmIzM5O3MgdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYENPTkZJR19GV19MT0FERVJgIGlzIGVuYWJsZWQsIHdoaWNoIGl0IHVzdWFsbHkgaXMuIAoKVGltZSB0byByZWZpbmUgdGhhdCBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEkmIzM5O3ZlIGdvdCBhIHByZXR0eSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGNvdmVyIGFsbCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBUaGlua2luZyB0aGlzIHRocm91Z2gsIEkmIzM5O20gbGVhbmluZyB0b3dhcmQgdGhlc2U6IGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCBgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZWAsIGFuZCB0aGVuIHRoZSBgcnRsODI2MXhgIGZ1bmN0aW9uczogYHJ0bDgyNjF4X3Byb2JlYCwgYHJ0bDgyNjF4X2dldF9mZWF0dXJlc2AsIGBydGw4MjYxeF9yZWFkX3N0YXR1c2AsIGBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmVgLCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAsIGBydGw4MjYxeF9md19sb2FkYCwgYHJ0bDgyNjF4X2NvbmZpZ19pbnRyYCwgYHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHRgLCBgcnRsODI2MXhfY29uZmlnX2FuZWdgLCBhbmQgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YC4gWWVhaCwgdGhlc2UgYWxsIGxvb2sgbGlrZSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4gVGhleSB0b3VjaCBkaWZmZXJlbnQgYXNwZWN0cyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbiwgZnJvbSBoYXJkd2FyZSBpbnRlcmFjdGlvbiB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuCgpJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlncyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIEkgdGhpbmsgYFJFQUxURUtfUEhZYCBpcyB0aGUgbWFpbiBvbmUgdG8ga2VlcCBhbiBleWUgb24uIEkgc2hvdWxkIGJlIGNvdmVyZWQgdGhlcmUuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGVub3VnaCBmb3Igbm93LiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UkVBTFRFS19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnZW5waHlfYzQ1X3NvZnRfcmVzZXQmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7Z2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9nZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcmVhZF9zdGF0dXMmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZndfbG9hZCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW50ciYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19hbmVnJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2NvbmZpZ19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZvciBDbGF1c2UgNDUgUEhZcyBhbmQgaW50cm9kdWNlcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIgKFJUTDgyNjFDKSB3aXRoIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgcmVhY2hhYmxlIHZpYSBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHRocm91Z2ggVVNCIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbikgYW5kIGNvbnRhaW4gY29tcGxleCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2VucGh5X2M0NV9zb2Z0X3Jlc2V0JiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlJiMzNDssCiAgICAmIzM0O2dlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfZ2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3JlYWRfc3RhdHVzJiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9md19leGVjdXRlX2VudHJ5JiMzNDssCiAgICAmIzM0O3J0bDgyNjF4X2Z3X2xvYWQmIzM0OywKICAgICYjMzQ7cnRsODI2MXhfY29uZmlnX2ludHImIzM0OywKICAgICYjMzQ7cnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfYW5lZyYjMzQ7LAogICAgJiMzNDtydGw4MjYxeF9jb25maWdfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBNYXN0ZXIvU2xhdmUgY29uZmlndXJhdGlvbiBsb2dpYyBmb3IgQ2xhdXNlIDQ1IFBIWXMgYW5kIGludHJvZHVjZXMgYSBuZXcgUmVhbHRlayBQSFkgZHJpdmVyIChSVEw4MjYxQykgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcy4gVGhlc2UgZmVhdHVyZXMgYXJlIHJlYWNoYWJsZSB2aWEgTURJTyBidXMgZW11bGF0aW9uIChlLmcuLCB0aHJvdWdoIFVTQiBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24pIGFuZCBjb250YWluIGNvbXBsZXggbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NDQuNTEzNTQxNzc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0NDIzNDYzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnZW5waHlfYzQ1X3NvZnRfcmVzZXRcIixcbiAgICBcImdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJydGw4MjYxeF9wcm9iZVwiLFxuICAgIFwicnRsODI2MXhfZ2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJydGw4MjYxeF9yZWFkX3N0YXR1c1wiLFxuICAgIFwicnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlXCIsXG4gICAgXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCIsXG4gICAgXCJydGw4MjYxeF9md19sb2FkXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW50clwiLFxuICAgIFwicnRsODI2MXhfaGFuZGxlX2ludGVycnVwdFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2FuZWdcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gbG9naWMgZm9yIENsYXVzZSA0NSBQSFlzIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IFJlYWx0ZWsgUEhZIGRyaXZlciAoUlRMODI2MUMpIHdpdGggZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSByZWFjaGFibGUgdmlhIE1ESU8gYnVzIGVtdWxhdGlvbiAoZS5nLiwgdGhyb3VnaCBVU0IgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uKSBhbmQgY29udGFpbiBjb21wbGV4IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NDQuNTEzNTQ2ODA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQwNTkzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MjMxNGU1MDRhOTJlY2JhNTljYTU1ZTRmZDBlYmM1NTllNDU5MGJjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDA3OjE4OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXFxuaW5kZXggMTI2OTUxNzQxNDI4OGYuLmRmNjgyZDNlYmQ1YTFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXFxuQEAgLTM4NCw2ICszODQsMTE5IEBAIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfY2hlY2tfYW5kX3Jlc3RhcnRfYW5lZyk7XFxuIFxcbisvKipcXG4rICogZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0IC0gc29mdHdhcmUgcmVzZXQgdGhlIFBIWSB2aWEgQ2xhdXNlIDQ1IFBNQS9QTUQgY29udHJvbCByZWdpc3RlclxcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitpbnQgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0aW50IHJldCwgdmFsO1xcbitcXG4rXFx0cmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCwgTURJT19DVFJMMSxcXG4rXFx0XFx0XFx0ICAgICAgIE1ESU9fQ1RSTDFfUkVTRVQpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgTURJT19NTURfUE1BUE1ELFxcbitcXHRcXHRcXHRcXHRcXHQgTURJT19DVFJMMSwgdmFsLFxcbitcXHRcXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNRElPX0NUUkwxX1JFU0VUKSxcXG4rXFx0XFx0XFx0XFx0XFx0IDUwMDAsIDYwMDAwMCwgdHJ1ZSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0KTtcXG4rXFxuKy8qKlxcbisgKiBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZSAtIENvbmZpZ3VyZSBNYXN0ZXIvU2xhdmUgc2V0dGluZyBmb3IgQzQ1IFBIWXNcXG4rICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuKyAqXFxuKyAqIERlc2NyaXB0aW9uOiBDb25maWd1cmUgdGhlIGZvcmNlZCBvciBwcmVmZXJyZWQgTWFzdGVyL1NsYXZlIHJvbGVcXG4rICogMTBHQkFTRS1UIGNvbnRyb2wgcmVnaXN0ZXIgKE1NRCA3LCBSZWdpc3RlciAweDAwMjApIGFjY29yZGluZyB0b1xcbisgKiBJRUVFIDgwMi4zIHN0YW5kYXJkcy5cXG4rICpcXG4rICogUmV0dXJuOiBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUsIDAgaWYgTWFzdGVyL1NsYXZlIGRpZG4ndCBjaGFuZ2UsXFxuKyAqIG9yIDEgaWYgTWFzdGVyL1NsYXZlIG1vZGVzIGNoYW5nZWQuXFxuKyAqL1xcbitzdGF0aWMgaW50IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0dTE2IGN0bCA9IDA7XFxuK1xcbitcXHRzd2l0Y2ggKHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX3NldCkge1xcbitcXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX1BSRUZFUlJFRDpcXG4rXFx0XFx0Y3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX0ZPUkNFOlxcbitcXHRcXHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFIHwgTURJT19BTl8xMEdCVF9DVFJMX01TX1ZBTFVFO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOlxcbitcXHRcXHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1VOS05PV046XFxuK1xcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTlNVUFBPUlRFRDpcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHBoeWRldl93YXJuKHBoeWRldiwgXFxcIlVuc3VwcG9ydGVkIE1hc3Rlci9TbGF2ZSBtb2RlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcGh5X21vZGlmeV9tbWRfY2hhbmdlZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsXFxuK1xcdFxcdFxcdFxcdCAgICAgIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfFxcbitcXHRcXHRcXHRcXHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfFxcbitcXHRcXHRcXHRcXHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFLCBjdGwpO1xcbit9XFxuK1xcbisvKipcXG4rICogZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSAtIHJlYWQgbWFzdGVyL3NsYXZlIHN0YXR1c1xcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4rICpcXG4rICogRGVzY3JpcHRpb246IFJlYWQgdGhlIE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGFuZCBzdGF0dXNcXG4rICogZnJvbSAxMEdCQVNFLVQgY29udHJvbC9zdGF0dXMgcmVnaXN0ZXJzIChNTUQgNywgUmVnIDB4MDAyMCBhbmQgMHgwMDIxKS5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbisgKi9cXG4rc3RhdGljIGludCBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0aW50IHZhbDtcXG4rXFxuK1xcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfVU5LTk9XTjtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfVU5LTk9XTjtcXG4rXFxuK1xcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwpO1xcbitcXHRpZiAodmFsIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHZhbDtcXG4rXFxuK1xcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFKSB7XFxuK1xcdFxcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUpXFxuK1xcdFxcdFxcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX0ZPUkNFO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfU0xBVkVfRk9SQ0U7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFKVxcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQ7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19TTEFWRV9QUkVGRVJSRUQ7XFxuK1xcdH1cXG4rXFxuK1xcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX1NUQVQpO1xcbitcXHRpZiAodmFsIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHZhbDtcXG4rXFxuK1xcdGlmICh2YWwgXFx1MDAyNiBNRElPX0FOXzEwR0JUX1NUQVRfTVNfRkFVTFQpIHtcXG4rXFx0XFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSO1xcbitcXHR9IGVsc2UgaWYgKHBoeWRldi1cXHUwMDNlbGluaykge1xcbitcXHRcXHRpZiAodmFsIFxcdTAwMjYgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFUylcXG4rXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfTUFTVEVSO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBoeWRldi1cXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1NMQVZFO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9zdGF0ZSA9IE1BU1RFUl9TTEFWRV9TVEFURV9VTktOT1dOO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGdlbnBoeV9jNDVfYW5lZ19kb25lIC0gcmV0dXJuIGF1dG8tbmVnb3RpYXRpb24gY29tcGxldGUgc3RhdHVzXFxuICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbkBAIC0xMTkyLDYgKzEzMDUsMTAgQEAgaW50IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0XFx0cmV0ID0gZ2VucGh5X2M0NV9iYXNldDFfcmVhZF9zdGF0dXMocGh5ZGV2KTtcXG4gXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcXG4rXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KTtcXG5AQCAtMTIyNSw2ICsxMzQyLDE0IEBAIGludCBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbiBcXHRcXHRjaGFuZ2VkID0gdHJ1ZTtcXG4gXFxuK1xcdGlmICghZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XFxuK1xcdFxcdHJldCA9IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHBoeWRldik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2UgMClcXG4rXFx0XFx0XFx0Y2hhbmdlZCA9IHRydWU7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcocGh5ZGV2LCBjaGFuZ2VkKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbmluZGV4IDI3MjY4ODExZjU2NGYyLi5iZjdiYzE5ZmI0NGNkMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTgsNyArOCw5IEBAXFxuICAqIENvcHlyaWdodCAoYykgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxcbiAgKi9cXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdG9wcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY3JjMzIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2xfbmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3dha2VpcnEuaFxcdTAwM2VcXG5AQCAtMTQxLDYgKzE0MywxMCBAQFxcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDFcXHRcXHQxN1xcbiAjZGVmaW5lIFJUTDgyMTFGX1BIWVNJQ0FMX0FERFJfV09SRDJcXHRcXHQxOFxcbiBcXG4rI2RlZmluZSBSVEw4MjYxWF9FWFRfQUREUl9SRUdcXHRcXHRcXHQweGE0MzZcXG4rI2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUdcXHRcXHRcXHQweGE0MzhcXG4rI2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXFx0XFx0MHg4MDFkXFxuK1xcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OXFx0XFx0XFx0MHg2OTdhXFxuICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV9NQVNLXFx0XFx0R0VOTUFTSyg1LCAwKVxcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OX01PREVfMjUwMEJBU0VYX1NHTUlJXFx0XFx0MFxcbkBAIC0yNTEsNiArMjU3LDY4IEBAXFxuICNkZWZpbmUgUlRMXzgyMjFCX1ZNX0NHXFx0XFx0XFx0XFx0MHgwMDFjYzg0YVxcbiAjZGVmaW5lIFJUTF84MjUxQlxcdFxcdFxcdFxcdDB4MDAxY2M4NjJcXG4gI2RlZmluZSBSVExfODI2MUNcXHRcXHRcXHRcXHQweDAwMWNjODkwXFxuKyNkZWZpbmUgUlRMXzgyNjFDX0NHXFx0XFx0XFx0XFx0MHgwMDFjYzg5OFxcbitcXG4rI2RlZmluZSBSVEw4MjYxQ19DRV9NT0RFTFxcdFxcdDB4MDBcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUlxcdEJJVCgwKVxcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9QQUdFX1JFQ1ZcXHRcXHRCSVQoMilcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FXFx0QklUKDMpXFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0xJTktfQ0hHXFx0XFx0QklUKDQpXFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTXFx0QklUKDUpXFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BNRVxcdFxcdEJJVCg3KVxcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9BTERQU19DSEdcXHRcXHRCSVQoOSlcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfSkFCQkVSXFx0XFx0QklUKDEwKVxcbitcXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUXFx0KFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkUgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgyNjFYX0lOVF9KQUJCRVIpXFxuK1xcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9NQVNLX0FMTFxcdFxcdChSVEw4MjYxWF9JTlRfQVVUT05FR19FUlJPUiB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgyNjFYX0lOVF9QQUdFX1JFQ1YgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgUlRMODI2MVhfSU5UX0xJTktfQ0hHIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgUlRMODI2MVhfSU5UX1BNRSB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgyNjFYX0lOVF9BTERQU19DSEcgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBSVEw4MjYxWF9JTlRfSkFCQkVSKVxcbitcXG4rI2RlZmluZSBGV19NQUlOX01BR0lDXFx0XFx0XFx0MHg1MjU0NEMzOFxcbisjZGVmaW5lIEZXX1NVQl9NQUdJQ184MjYxQ1xcdFxcdDB4MzIzNjMxNDNcXG4rI2RlZmluZSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVNcXHQxMDBcXG4rXFxuKyNkZWZpbmUgUlRMODI2MUNfQ0VfRldfTkFNRVxcdFxcXCJydGxfbmljL3J0bDgyNjFjLmJpblxcXCJcXG4rTU9EVUxFX0ZJUk1XQVJFKFJUTDgyNjFDX0NFX0ZXX05BTUUpO1xcbitcXG4rZW51bSBydGw4MjYxeF9md19vcCB7XFxuK1xcdE9QX1dSSVRFID0gMHgwMCxcXHQvKiBXcml0ZSAqL1xcbitcXHRPUF9QT0xMICA9IDB4MDIsXFx0LyogUG9sbGluZyAqL1xcbit9O1xcbitcXG4rc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XFxuK1xcdF9fbGUzMiBtYWluX21hZ2ljO1xcdC8qIE1haW4gbWFnaWMgbnVtYmVyIDB4NTI1NDRDMzggKFxcXCJSVEw4XFxcIikgKi9cXG4rXFx0X19sZTMyIHN1Yl9tYWdpYztcXHQvKiBTdWIgbWFnaWMgbnVtYmVyICovXFxuK1xcdF9fbGUxNiB2ZXJzaW9uX21ham9yO1xcdC8qIE1ham9yIHZlcnNpb24gKi9cXG4rXFx0X19sZTE2IHZlcnNpb25fbWlub3I7XFx0LyogTWlub3IgdmVyc2lvbiAqL1xcbitcXHRfX2xlMTYgbnVtX2VudHJpZXM7XFx0LyogTnVtYmVyIG9mIGVudHJpZXMgKi9cXG4rXFx0X19sZTE2IHJlc2VydmVkO1xcdC8qIFJlc2VydmVkICovXFxuK1xcdF9fbGUzMiBjcmMzMjtcXHRcXHQvKiBDUkMzMiBjaGVja3N1bSAqL1xcbit9O1xcbitcXG4rc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5IHtcXG4rXFx0X191OCAgdHlwZTtcXHRcXHQvKiBPcGVyYXRpb24gdHlwZSAoT1BfKikgKi9cXG4rXFx0X191OCAgZGV2O1xcdFxcdC8qIE1NRCBkZXZpY2UgKi9cXG4rXFx0X19sZTE2IGFkZHI7XFx0XFx0LyogUmVnaXN0ZXIgYWRkcmVzcyAqL1xcbitcXHRfX3U4ICBtc2I7XFx0XFx0LyogTVNCIGJpdCBwb3NpdGlvbiAqL1xcbitcXHRfX3U4ICBsc2I7XFx0XFx0LyogTFNCIGJpdCBwb3NpdGlvbiAqL1xcbitcXHRfX2xlMTYgdmFsdWU7XFx0XFx0LyogVmFsdWUgdG8gd3JpdGUvY29tcGFyZSAqL1xcbitcXHRfX2xlMTYgdGltZW91dF9tcztcXHQvKiBQb2xsIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXFxuK1xcdF9fdTggIHBvbGxfc2V0O1xcdFxcdC8qIFBvbGwgZm9yIHNldCAoMSkgb3IgY2xlYXIgKDApICovXFxuK1xcdF9fdTggIHJlc2VydmVkO1xcdFxcdC8qIFJlc2VydmVkICovXFxuK307XFxuK1xcbisjZGVmaW5lIEZXX0hFQURFUl9TSVpFXFx0XFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpXFxuKyNkZWZpbmUgRldfRU5UUllfU0laRVxcdFxcdHNpemVvZihzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkpXFxuIFxcbiAvKiBSVEw4MjExRSBhbmQgUlRMODIxMUYgc3VwcG9ydCB1cCB0byB0aHJlZSBMRURzICovXFxuICNkZWZpbmUgUlRMODIxMXhfTEVEX0NPVU5UXFx0XFx0XFx0M1xcbkBAIC0yNzAsNiArMzM4LDExIEBAIHN0cnVjdCBydGw4MjF4X3ByaXYge1xcbiBcXHR1MTYgaW5lcjtcXG4gfTtcXG4gXFxuK3N0cnVjdCBydGw4MjYxeF9wcml2IHtcXG4rXFx0Y29uc3QgY2hhciAqZndfbmFtZTtcXG4rXFx0Ym9vbCBmd19sb2FkZWQ7XFxuK307XFxuK1xcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcmVhZF9wYWdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHtcXG4gXFx0cmV0dXJuIF9fcGh5X3JlYWQocGh5ZGV2LCBSVEw4MjF4X1BBR0VfU0VMRUNUKTtcXG5AQCAtMzEwLDYgKzM4MywzMjYgQEAgc3RhdGljIGludCBydGw4MjF4X21vZGlmeV9leHRfcGFnZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgZXh0X3BhZ2UsXFxuIFxcdHJldHVybiBwaHlfcmVzdG9yZV9wYWdlKHBoeWRldiwgb2xkcGFnZSwgcmV0KTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbitcXHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdjtcXG4rXFx0aW50IHN1Yl9waHlfaWQsIHJldDtcXG4rXFxuK1xcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFwcml2KVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHBoeWRldi1cXHUwMDNlcHJpdiA9IHByaXY7XFxuK1xcbitcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcXG4rXFx0XFx0XFx0ICAgIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHN1Yl9waHlfaWQgPSAocmV0IFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHhmZjtcXG4rXFxuK1xcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xcbitcXHRjYXNlIFJUTDgyNjFDX0NFX01PREVMOlxcbitcXHRcXHRwcml2LVxcdTAwM2Vmd19uYW1lID0gUlRMODI2MUNfQ0VfRldfTkFNRTtcXG4rXFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRwaHlkZXZfd2FybihwaHlkZXYsIFxcXCJVbmtub3duIHN1Yl9pZCAweCUwMngsIGRlZmF1bHQgYmVoYXZpb3JcXFxcblxcXCIsIHN1Yl9waHlfaWQpO1xcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdC8qXFxuK1xcdCAqIFN1cHBsZW1lbnQgTXVsdGktR2lnIHNwZWVkcyB0aGF0IG1heSBub3QgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZFxcbitcXHQgKiBSVEw4MjYxWCBzdXBwb3J0cyAyLjVHLzVHIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIDEwR1xcbitcXHQgKi9cXG4rXFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQsXFxuK1xcdFxcdFxcdCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuK1xcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfNTAwMGJhc2VUX0Z1bGxfQklULFxcbitcXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpbnQgcmV0LCB2YWw7XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRU5BQkxFIFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlYXV0b25lZ19jb21wbGV0ZSkge1xcbitcXHRcXHR2YWwgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG4rXFx0XFx0XFx0XFx0ICAgUlRMODIyWF9WTkQyX0MyMl9SRUcoTUlJX1NUQVQxMDAwKSk7XFxuK1xcdFxcdGlmICh2YWwgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gdmFsO1xcbitcXG4rXFx0XFx0bWlpX3N0YXQxMDAwX21vZF9saW5rbW9kZV9scGFfdChwaHlkZXYtXFx1MDAzZWxwX2FkdmVydGlzaW5nLCB2YWwpO1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBnZW5waHlfYzQ1X3JlYWRfc3RhdHVzKHBoeWRldik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xcbitcXHR1MzIgbWFpbl9tYWdpYywgc3ViX21hZ2ljO1xcbitcXHR1MzIgY2FsY19jcmMsIGZpbGVfY3JjO1xcbitcXHRzaXplX3QgZGF0YV9sZW47XFxuK1xcdHUxNiBudW1fZW50cmllcztcXG4rXFxuK1xcdGlmIChmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIEZXX0hFQURFUl9TSVpFKSB7XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiRmlybXdhcmUgdG9vIHNtYWxsOiAlenUgYnl0ZXNcXFxcblxcXCIsIGZ3LVxcdTAwM2VzaXplKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXFx1MDAzZWRhdGE7XFxuK1xcbitcXHRtYWluX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVxcdTAwM2VtYWluX21hZ2ljKTtcXG4rXFx0aWYgKG1haW5fbWFnaWMgIT0gRldfTUFJTl9NQUdJQykge1xcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgbWFnaWM6IDB4JTA4eFxcXFxuXFxcIiwgbWFpbl9tYWdpYyk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRzdWJfbWFnaWMgPSBsZTMyX3RvX2NwdShoZHItXFx1MDAzZXN1Yl9tYWdpYyk7XFxuK1xcdGlmIChzdWJfbWFnaWMgIT0gRldfU1VCX01BR0lDXzgyNjFDKSB7XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiSW52YWxpZCBzdWIgbWFnaWM6IDB4JTA4eFxcXFxuXFxcIiwgc3ViX21hZ2ljKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdG51bV9lbnRyaWVzID0gbGUxNl90b19jcHUoaGRyLVxcdTAwM2VudW1fZW50cmllcyk7XFxuK1xcdGRhdGFfbGVuID0gbnVtX2VudHJpZXMgKiBGV19FTlRSWV9TSVpFO1xcbitcXG4rXFx0aWYgKGZ3LVxcdTAwM2VzaXplICE9IHNpemVvZigqaGRyKSArIGRhdGFfbGVuKSB7XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiRmlybXdhcmUgc2l6ZSBtaXNtYXRjaFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRjYWxjX2NyYyA9IGNyYzMyKH4wLCBmdy1cXHUwMDNlZGF0YSArIEZXX0hFQURFUl9TSVpFLCBkYXRhX2xlbikgXiB+MDtcXG4rXFx0ZmlsZV9jcmMgPSBsZTMyX3RvX2NwdShoZHItXFx1MDAzZWNyYzMyKTtcXG4rXFxuK1xcdGlmIChjYWxjX2NyYyAhPSBmaWxlX2NyYykge1xcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkNSQzMyIG1pc21hdGNoOiBjYWxjdWxhdGVkPTB4JTA4eCBmaWxlPTB4JTA4eFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgY2FsY19jcmMsIGZpbGVfY3JjKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4rXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KVxcbit7XFxuK1xcdHUxNiBhZGRyLCB2YWx1ZSwgdGltZW91dF9tcztcXG4rXFx0dTggZGV2LCBtc2IsIGxzYiwgcG9sbF9zZXQ7XFxuK1xcdHUzMiBiaXRzLCBleHBlY3RfdmFsO1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFx0aW50IHZhbDtcXG4rXFxuK1xcdGRldiA9IGVudHJ5LVxcdTAwM2VkZXY7XFxuK1xcdGFkZHIgPSBsZTE2X3RvX2NwdShlbnRyeS1cXHUwMDNlYWRkcik7XFxuK1xcdG1zYiA9IGVudHJ5LVxcdTAwM2Vtc2I7XFxuK1xcdGxzYiA9IGVudHJ5LVxcdTAwM2Vsc2I7XFxuK1xcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXFx1MDAzZXZhbHVlKTtcXG4rXFx0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVxcdTAwM2V0aW1lb3V0X21zKTtcXG4rXFx0cG9sbF9zZXQgPSBlbnRyeS1cXHUwMDNlcG9sbF9zZXQ7XFxuK1xcbitcXHRpZiAodGltZW91dF9tcyA9PSAwKVxcbitcXHRcXHR0aW1lb3V0X21zID0gUlRMODI2MVhfUE9MTF9USU1FT1VUX01TO1xcbitcXG4rXFx0aWYgKG1zYiBcXHUwMDNlIDE1IHx8IGxzYiBcXHUwMDNlIG1zYikge1xcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSVkLCBsc2I9JWRcXFxcblxcXCIsIG1zYiwgbHNiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHN3aXRjaCAoZW50cnktXFx1MDAzZXR5cGUpIHtcXG4rXFx0Y2FzZSBPUF9XUklURTpcXG4rXFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSBcXHUwMDNjXFx1MDAzYyBsc2IpIFxcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xcbitcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiV1JJVEUgZmFpbGVkOiBkZXY9JWQgYWRkcj0weCUwNHhcXFxcblxcXCIsIGRldiwgYWRkcik7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0YnJlYWs7XFxuK1xcbitcXHRjYXNlIE9QX1BPTEw6IHtcXG4rXFx0XFx0Yml0cyA9IEdFTk1BU0sobXNiLCBsc2IpO1xcbitcXHRcXHRleHBlY3RfdmFsID0gKHZhbHVlIFxcdTAwM2NcXHUwMDNjIGxzYikgXFx1MDAyNiBiaXRzO1xcbitcXG4rXFx0XFx0aWYgKHBvbGxfc2V0KVxcbitcXHRcXHRcXHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBiaXRzKSA9PSBleHBlY3RfdmFsLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQxMDAwLCB0aW1lb3V0X21zICogMTAwMCwgZmFsc2UpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0KHZhbCBcXHUwMDI2IGJpdHMpICE9IGV4cGVjdF92YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdDEwMDAsIHRpbWVvdXRfbXMgKiAxMDAwLCBmYWxzZSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiUE9MTCB0aW1lb3V0OiBkZXY9JWQgYWRkcj0weCUwNHhcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIGRldiwgYWRkcik7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiVW5rbm93biBmaXJtd2FyZSBvcGVyYXRpb246ICVkXFxcXG5cXFwiLCBlbnRyeS1cXHUwMDNldHlwZSk7XFxuK1xcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICplbnRyeTtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xcbitcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbitcXHRpbnQgcmV0LCBpO1xcbitcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vmd19uYW1lKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3LCBwcml2LVxcdTAwM2Vmd19uYW1lLCBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSAlczogJWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZWZ3X25hbWUsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byByZWxlYXNlX2Z3O1xcbitcXG4rXFx0aGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy1cXHUwMDNlZGF0YTtcXG4rXFxuK1xcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cXHUwMDNlZGF0YSArIEZXX0hFQURFUl9TSVpFKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cXHUwMDNlbnVtX2VudHJpZXMpOyBpKyssIGVudHJ5KyspIHtcXG4rXFx0XFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkVudHJ5ICVkIGZhaWxlZDogJWRcXFxcblxcXCIsIGksIHJldCk7XFxuK1xcdFxcdFxcdGdvdG8gcmVsZWFzZV9mdztcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRwcml2LVxcdTAwM2Vmd19sb2FkZWQgPSB0cnVlO1xcbitcXG4rcmVsZWFzZV9mdzpcXG4rXFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcXG4rXFx0XFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsXFxuK1xcdFxcdFxcdFxcdCAgICBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLCAwKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRcXHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTlNSKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdGludCBpcnFfc3RhdHVzO1xcbitcXG4rXFx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xcbitcXHRpZiAoaXJxX3N0YXR1cyBcXHUwMDNjIDApIHtcXG4rXFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCEoaXJxX3N0YXR1cyBcXHUwMDI2IFJUTDgyNjFYX0lOVF9NQVNLX0FMTCkpXFxuK1xcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFxuK1xcdGlmIChpcnFfc3RhdHVzIFxcdTAwMjYgKFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkUgfFxcbitcXHQgICAgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBSVEw4MjYxWF9JTlRfSkFCQkVSKSlcXG4rXFx0XFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xcbitcXG4rXFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0dTE2IGFkdl8xZyA9IDA7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHBoeWRldik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0aWYgKGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9GdWxsX0JJVCxcXG4rXFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZykpXFxuK1xcdFxcdGFkdl8xZyA9IEFEVkVSVElTRV8xMDAwRlVMTDtcXG4rXFx0aWYgKGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9IYWxmX0JJVCxcXG4rXFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZykpXFxuK1xcdFxcdGFkdl8xZyB8PSBBRFZFUlRJU0VfMTAwMEhBTEY7XFxuK1xcbitcXHRyZXQgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuK1xcdFxcdFxcdFxcdCAgICAgUlRMODIyWF9WTkQyX0MyMl9SRUcoTUlJX0NUUkwxMDAwKSxcXG4rXFx0XFx0XFx0XFx0ICAgICBBRFZFUlRJU0VfMTAwMEZVTEwgfCBBRFZFUlRJU0VfMTAwMEhBTEYsXFxuK1xcdFxcdFxcdFxcdCAgICAgYWR2XzFnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmIChyZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRyZXR1cm4gZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcocGh5ZGV2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuK1xcdGludCByZXQgPSAwO1xcbitcXG4rXFx0LyogVGhlIGZpcm13YXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgSUVFRSBzb2Z0IHJlc2V0cyBhbmRcXG4rXFx0ICogc3VzcGVuZC9yZXN1bWUgY3ljbGVzLiBSZWxvYWRpbmcgaXMgb25seSBuZWNlc3NhcnkgYWZ0ZXIgYSBwb3dlclxcbitcXHQgKiBjeWNsZSBvciBoYXJkIHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWZ3X25hbWUgXFx1MDAyNlxcdTAwMjYgIXByaXYtXFx1MDAzZWZ3X2xvYWRlZCkge1xcbitcXHRcXHRyZXQgPSBydGw4MjYxeF9md19sb2FkKHBoeWRldik7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJGaXJtd2FyZSBsb2FkaW5nIGZhaWxlZDogJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBydGw4MjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuQEAgLTMwMDEsNiArMzM5NCwxOSBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XFxuIFxcdFxcdC5yZXN1bWVcXHRcXHQ9IGdlbnBoeV9yZXN1bWUsXFxuIFxcdFxcdC5yZWFkX21tZFxcdD0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLFxcbiBcXHRcXHQud3JpdGVfbW1kXFx0PSBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkLFxcbitcXHR9LCB7XFxuK1xcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChSVExfODI2MUNfQ0cpLFxcbitcXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIlJlYWx0ZWsgUlRMODI2MUMgMTBHYnBzIFBIWVxcXCIsXFxuK1xcdFxcdC5wcm9iZVxcdFxcdFxcdD0gcnRsODI2MXhfcHJvYmUsXFxuK1xcdFxcdC5jb25maWdfaW5pdFxcdFxcdD0gcnRsODI2MXhfY29uZmlnX2luaXQsXFxuK1xcdFxcdC5nZXRfZmVhdHVyZXNcXHRcXHQ9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyxcXG4rXFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBydGw4MjYxeF9jb25maWdfYW5lZyxcXG4rXFx0XFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBydGw4MjYxeF9yZWFkX3N0YXR1cyxcXG4rXFx0XFx0LmNvbmZpZ19pbnRyXFx0XFx0PSBydGw4MjYxeF9jb25maWdfaW50cixcXG4rXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHRcXHQ9IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuK1xcdFxcdC5zb2Z0X3Jlc2V0XFx0XFx0PSBnZW5waHlfYzQ1X3NvZnRfcmVzZXQsXFxuK1xcdFxcdC5zdXNwZW5kXFx0XFx0PSBnZW5waHlfYzQ1X3BtYV9zdXNwZW5kLFxcbitcXHRcXHQucmVzdW1lXFx0XFx0XFx0PSBnZW5waHlfYzQ1X3BtYV9yZXN1bWUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbmluZGV4IDE5OWE3YWFhMzQxYmZkLi4yNWE2NjMyMGRmNTZlYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbkBAIC0yMzA5LDYgKzIzMDksNyBAQCBpbnQgZ2VucGh5X2MzN19yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpjaGFuZ2VkKTtcXG4gLyogQ2xhdXNlIDQ1IFBIWSAqL1xcbiBpbnQgZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KTtcXG4raW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IGdlbnBoeV9jNDVfYW5lZ19kb25lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBpbnQgZ2VucGh5X2M0NV9yZWFkX2xpbmsoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L21kaW8uaFxcbmluZGV4IGIyNTQxYzk0OGZjMWViLi4wNmY0YmMzYzIwYzcxNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L21kaW8uaFxcbkBAIC0zMzIsOCArMzMyLDEzIEBAXFxuICNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX0FEVjJfNUdcXHQweDAwODBcXHQvKiBBZHZlcnRpc2UgMi41R0JBU0UtVCAqL1xcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFY1R1xcdDB4MDEwMFxcdC8qIEFkdmVydGlzZSA1R0JBU0UtVCAqL1xcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYxMEdcXHQweDEwMDBcXHQvKiBBZHZlcnRpc2UgMTBHQkFTRS1UICovXFxuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRVxcdDB4ODAwMFxcdC8qIE1hc3Rlci9zbGF2ZSBtYW51YWwgY29uZmlnIGVuYWJsZSAqL1xcbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRVxcdDB4NDAwMFxcdC8qIE1hc3Rlci9zbGF2ZSBjb25maWcgdmFsdWUgKDE9TWFzdGVyKSAqL1xcbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19QT1JUX1RZUEVcXHQweDIwMDBcXHQvKiBNYXN0ZXIgUHJlZmVycmVkIFR5cGUgKi9cXG4gXFxuIC8qIEFOIDEwR0JBU0UtVCBzdGF0dXMgcmVnaXN0ZXIuICovXFxuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX01TX0ZBVUxUXFx0MHg4MDAwXFx0LyogTWFzdGVyL3NsYXZlIGZhdWx0ICovXFxuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFU1xcdDB4NDAwMFxcdC8qIE1hc3Rlci9zbGF2ZSByZXNvbHV0aW9uICgxPU1hc3RlcikgKi9cXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTFAyXzVHXFx0MHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqL1xcbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUDVHXFx0XFx0MHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi9cXG4gI2RlZmluZSBNRElPX0FOXzEwR0JUX1NUQVRfTFBUUlJcXHQweDAyMDBcXHQvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE4OjQ0LjkzODMxODk5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwMTc1NjE0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnZW5waHlfYzQ1X3NvZnRfcmVzZXRcIixcbiAgICBcImdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJydGw4MjYxeF9wcm9iZVwiLFxuICAgIFwicnRsODI2MXhfZ2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJydGw4MjYxeF9yZWFkX3N0YXR1c1wiLFxuICAgIFwicnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlXCIsXG4gICAgXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCIsXG4gICAgXCJydGw4MjYxeF9md19sb2FkXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW50clwiLFxuICAgIFwicnRsODI2MXhfaGFuZGxlX2ludGVycnVwdFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2FuZWdcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gbG9naWMgZm9yIENsYXVzZSA0NSBQSFlzIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IFJlYWx0ZWsgUEhZIGRyaXZlciAoUlRMODI2MUMpIHdpdGggZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSByZWFjaGFibGUgdmlhIE1ESU8gYnVzIGVtdWxhdGlvbiAoZS5nLiwgdGhyb3VnaCBVU0IgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uKSBhbmQgY29udGFpbiBjb21wbGV4IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MjMxNGU1MDRhOTJlY2JhNTljYTU1ZTRmZDBlYmM1NTllNDU5MGJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDc6MTg6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1xuaW5kZXggMTI2OTUxNzQxNDI4OGYuLmRmNjgyZDNlYmQ1YTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1xuQEAgLTM4NCw2ICszODQsMTE5IEBAIGludCBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCByZXN0YXJ0KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcpO1xuIFxuKy8qKlxuKyAqIGdlbnBoeV9jNDVfc29mdF9yZXNldCAtIHNvZnR3YXJlIHJlc2V0IHRoZSBQSFkgdmlhIENsYXVzZSA0NSBQTUEvUE1EIGNvbnRyb2wgcmVnaXN0ZXJcbisgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBnZW5waHlfYzQ1X3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpbnQgcmV0LCB2YWw7XG4rXG4rXHRyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELCBNRElPX0NUUkwxLFxuK1x0XHRcdCAgICAgICBNRElPX0NUUkwxX1JFU0VUKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCxcbitcdFx0XHRcdFx0IE1ESU9fQ1RSTDEsIHZhbCxcbitcdFx0XHRcdFx0ICEodmFsIFx1MDAyNiBNRElPX0NUUkwxX1JFU0VUKSxcbitcdFx0XHRcdFx0IDUwMDAsIDYwMDAwMCwgdHJ1ZSk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfc29mdF9yZXNldCk7XG4rXG4rLyoqXG4rICogZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmUgLSBDb25maWd1cmUgTWFzdGVyL1NsYXZlIHNldHRpbmcgZm9yIEM0NSBQSFlzXG4rICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4rICpcbisgKiBEZXNjcmlwdGlvbjogQ29uZmlndXJlIHRoZSBmb3JjZWQgb3IgcHJlZmVycmVkIE1hc3Rlci9TbGF2ZSByb2xlXG4rICogMTBHQkFTRS1UIGNvbnRyb2wgcmVnaXN0ZXIgKE1NRCA3LCBSZWdpc3RlciAweDAwMjApIGFjY29yZGluZyB0b1xuKyAqIElFRUUgODAyLjMgc3RhbmRhcmRzLlxuKyAqXG4rICogUmV0dXJuOiBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUsIDAgaWYgTWFzdGVyL1NsYXZlIGRpZG4ndCBjaGFuZ2UsXG4rICogb3IgMSBpZiBNYXN0ZXIvU2xhdmUgbW9kZXMgY2hhbmdlZC5cbisgKi9cbitzdGF0aWMgaW50IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0dTE2IGN0bCA9IDA7XG4rXG4rXHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc2V0KSB7XG4rXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfTUFTVEVSX1BSRUZFUlJFRDpcbitcdFx0Y3RsID0gTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIE1BU1RFUl9TTEFWRV9DRkdfU0xBVkVfUFJFRkVSUkVEOlxuK1x0XHRicmVhaztcbitcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U6XG4rXHRcdGN0bCA9IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUgfCBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUU7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX0ZPUkNFOlxuK1x0XHRjdGwgPSBNRElPX0FOXzEwR0JUX0NUUkxfTVNfRU5BQkxFO1xuK1x0XHRicmVhaztcbitcdGNhc2UgTUFTVEVSX1NMQVZFX0NGR19VTktOT1dOOlxuK1x0Y2FzZSBNQVNURVJfU0xBVkVfQ0ZHX1VOU1VQUE9SVEVEOlxuK1x0XHRyZXR1cm4gMDtcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeWRldl93YXJuKHBoeWRldiwgXCJVbnN1cHBvcnRlZCBNYXN0ZXIvU2xhdmUgbW9kZVxcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHBoeV9tb2RpZnlfbW1kX2NoYW5nZWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl8xMEdCVF9DVFJMLFxuK1x0XHRcdFx0ICAgICAgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRSB8XG4rXHRcdFx0XHQgICAgICBNRElPX0FOXzEwR0JUX0NUUkxfTVNfVkFMVUUgfFxuK1x0XHRcdFx0ICAgICAgTURJT19BTl8xMEdCVF9DVFJMX01TX1BPUlRfVFlQRSwgY3RsKTtcbit9XG4rXG4rLyoqXG4rICogZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZSAtIHJlYWQgbWFzdGVyL3NsYXZlIHN0YXR1c1xuKyAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuKyAqXG4rICogRGVzY3JpcHRpb246IFJlYWQgdGhlIE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGFuZCBzdGF0dXNcbisgKiBmcm9tIDEwR0JBU0UtVCBjb250cm9sL3N0YXR1cyByZWdpc3RlcnMgKE1NRCA3LCBSZWcgMHgwMDIwIGFuZCAweDAwMjEpLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuKyAqL1xuK3N0YXRpYyBpbnQgZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCB2YWw7XG4rXG4rXHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfVU5LTk9XTjtcbitcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfVU5LTk9XTjtcbitcbitcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwpO1xuK1x0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHZhbDtcbitcbitcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19FTkFCTEUpIHtcbitcdFx0aWYgKHZhbCBcdTAwMjYgTURJT19BTl8xMEdCVF9DVFJMX01TX1ZBTFVFKVxuK1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfRk9SQ0U7XG4rXHRcdGVsc2VcbitcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX2dldCA9IE1BU1RFUl9TTEFWRV9DRkdfU0xBVkVfRk9SQ0U7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAodmFsIFx1MDAyNiBNRElPX0FOXzEwR0JUX0NUUkxfTVNfUE9SVF9UWVBFKVxuK1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfZ2V0ID0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfUFJFRkVSUkVEO1xuK1x0XHRlbHNlXG4rXHRcdFx0cGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9nZXQgPSBNQVNURVJfU0xBVkVfQ0ZHX1NMQVZFX1BSRUZFUlJFRDtcbitcdH1cbitcbitcdHZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX1NUQVQpO1xuK1x0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHZhbDtcbitcbitcdGlmICh2YWwgXHUwMDI2IE1ESU9fQU5fMTBHQlRfU1RBVF9NU19GQVVMVCkge1xuK1x0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX0VSUjtcbitcdH0gZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWxpbmspIHtcbitcdFx0aWYgKHZhbCBcdTAwMjYgTURJT19BTl8xMEdCVF9TVEFUX01TX1JFUylcbitcdFx0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX01BU1RFUjtcbitcdFx0ZWxzZVxuK1x0XHRcdHBoeWRldi1cdTAwM2VtYXN0ZXJfc2xhdmVfc3RhdGUgPSBNQVNURVJfU0xBVkVfU1RBVEVfU0xBVkU7XG4rXHR9IGVsc2Uge1xuK1x0XHRwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3N0YXRlID0gTUFTVEVSX1NMQVZFX1NUQVRFX1VOS05PV047XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyoqXG4gICogZ2VucGh5X2M0NV9hbmVnX2RvbmUgLSByZXR1cm4gYXV0by1uZWdvdGlhdGlvbiBjb21wbGV0ZSBzdGF0dXNcbiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbkBAIC0xMTkyLDYgKzEzMDUsMTAgQEAgaW50IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xuIFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcbitcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFxuIFx0XHRwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHBoeWRldik7XG5AQCAtMTIyNSw2ICsxMzQyLDE0IEBAIGludCBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmV0IFx1MDAzZSAwKVxuIFx0XHRjaGFuZ2VkID0gdHJ1ZTtcbiBcbitcdGlmICghZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XG4rXHRcdHJldCA9IGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlKHBoeWRldik7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0aWYgKHJldCBcdTAwM2UgMClcbitcdFx0XHRjaGFuZ2VkID0gdHJ1ZTtcbitcdH1cbitcbiBcdHJldHVybiBnZW5waHlfYzQ1X2NoZWNrX2FuZF9yZXN0YXJ0X2FuZWcocGh5ZGV2LCBjaGFuZ2VkKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X2M0NV9jb25maWdfYW5lZyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggMjcyNjg4MTFmNTY0ZjIuLmJmN2JjMTlmYjQ0Y2QyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtOCw3ICs4LDkgQEBcbiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy5cbiAgKi9cbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sX25ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV93YWtlaXJxLmhcdTAwM2VcbkBAIC0xNDEsNiArMTQzLDEwIEBAXG4gI2RlZmluZSBSVEw4MjExRl9QSFlTSUNBTF9BRERSX1dPUkQxXHRcdDE3XG4gI2RlZmluZSBSVEw4MjExRl9QSFlTSUNBTF9BRERSX1dPUkQyXHRcdDE4XG4gXG4rI2RlZmluZSBSVEw4MjYxWF9FWFRfQUREUl9SRUdcdFx0XHQweGE0MzZcbisjZGVmaW5lIFJUTDgyNjFYX0VYVF9EQVRBX1JFR1x0XHRcdDB4YTQzOFxuKyNkZWZpbmUgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUlx0XHQweDgwMWRcbitcbiAjZGVmaW5lIFJUTDgyMlhfVk5EMV9TRVJERVNfT1BUSU9OXHRcdFx0MHg2OTdhXG4gI2RlZmluZSBSVEw4MjJYX1ZORDFfU0VSREVTX09QVElPTl9NT0RFX01BU0tcdFx0R0VOTUFTSyg1LCAwKVxuICNkZWZpbmUgUlRMODIyWF9WTkQxX1NFUkRFU19PUFRJT05fTU9ERV8yNTAwQkFTRVhfU0dNSUlcdFx0MFxuQEAgLTI1MSw2ICsyNTcsNjggQEBcbiAjZGVmaW5lIFJUTF84MjIxQl9WTV9DR1x0XHRcdFx0MHgwMDFjYzg0YVxuICNkZWZpbmUgUlRMXzgyNTFCXHRcdFx0XHQweDAwMWNjODYyXG4gI2RlZmluZSBSVExfODI2MUNcdFx0XHRcdDB4MDAxY2M4OTBcbisjZGVmaW5lIFJUTF84MjYxQ19DR1x0XHRcdFx0MHgwMDFjYzg5OFxuK1xuKyNkZWZpbmUgUlRMODI2MUNfQ0VfTU9ERUxcdFx0MHgwMFxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1JcdEJJVCgwKVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BBR0VfUkVDVlx0XHRCSVQoMilcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9BVVRPTkVHX0RPTkVcdEJJVCgzKVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0xJTktfQ0hHXHRcdEJJVCg0KVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX1BIWV9SRUdfQUNDRVNTXHRCSVQoNSlcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9QTUVcdFx0QklUKDcpXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfQUxEUFNfQ0hHXHRcdEJJVCg5KVxuKyNkZWZpbmUgUlRMODI2MVhfSU5UX0pBQkJFUlx0XHRCSVQoMTApXG4rXG4rI2RlZmluZSBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUXHQoUlRMODI2MVhfSU5UX0FVVE9ORUdfRE9ORSB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfTElOS19DSEcgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX0pBQkJFUilcbitcbisjZGVmaW5lIFJUTDgyNjFYX0lOVF9NQVNLX0FMTFx0XHQoUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX1BBR0VfUkVDViB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfQVVUT05FR19ET05FIHwgXFxcbitcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9MSU5LX0NIRyB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfUEhZX1JFR19BQ0NFU1MgfCBcXFxuK1x0XHRcdFx0XHQgUlRMODI2MVhfSU5UX1BNRSB8IFxcXG4rXHRcdFx0XHRcdCBSVEw4MjYxWF9JTlRfQUxEUFNfQ0hHIHwgXFxcbitcdFx0XHRcdFx0IFJUTDgyNjFYX0lOVF9KQUJCRVIpXG4rXG4rI2RlZmluZSBGV19NQUlOX01BR0lDXHRcdFx0MHg1MjU0NEMzOFxuKyNkZWZpbmUgRldfU1VCX01BR0lDXzgyNjFDXHRcdDB4MzIzNjMxNDNcbisjZGVmaW5lIFJUTDgyNjFYX1BPTExfVElNRU9VVF9NU1x0MTAwXG4rXG4rI2RlZmluZSBSVEw4MjYxQ19DRV9GV19OQU1FXHRcInJ0bF9uaWMvcnRsODI2MWMuYmluXCJcbitNT0RVTEVfRklSTVdBUkUoUlRMODI2MUNfQ0VfRldfTkFNRSk7XG4rXG4rZW51bSBydGw4MjYxeF9md19vcCB7XG4rXHRPUF9XUklURSA9IDB4MDAsXHQvKiBXcml0ZSAqL1xuK1x0T1BfUE9MTCAgPSAweDAyLFx0LyogUG9sbGluZyAqL1xuK307XG4rXG4rc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XG4rXHRfX2xlMzIgbWFpbl9tYWdpYztcdC8qIE1haW4gbWFnaWMgbnVtYmVyIDB4NTI1NDRDMzggKFwiUlRMOFwiKSAqL1xuK1x0X19sZTMyIHN1Yl9tYWdpYztcdC8qIFN1YiBtYWdpYyBudW1iZXIgKi9cbitcdF9fbGUxNiB2ZXJzaW9uX21ham9yO1x0LyogTWFqb3IgdmVyc2lvbiAqL1xuK1x0X19sZTE2IHZlcnNpb25fbWlub3I7XHQvKiBNaW5vciB2ZXJzaW9uICovXG4rXHRfX2xlMTYgbnVtX2VudHJpZXM7XHQvKiBOdW1iZXIgb2YgZW50cmllcyAqL1xuK1x0X19sZTE2IHJlc2VydmVkO1x0LyogUmVzZXJ2ZWQgKi9cbitcdF9fbGUzMiBjcmMzMjtcdFx0LyogQ1JDMzIgY2hlY2tzdW0gKi9cbit9O1xuK1xuK3N0cnVjdCBydGw4MjYxeF9md19lbnRyeSB7XG4rXHRfX3U4ICB0eXBlO1x0XHQvKiBPcGVyYXRpb24gdHlwZSAoT1BfKikgKi9cbitcdF9fdTggIGRldjtcdFx0LyogTU1EIGRldmljZSAqL1xuK1x0X19sZTE2IGFkZHI7XHRcdC8qIFJlZ2lzdGVyIGFkZHJlc3MgKi9cbitcdF9fdTggIG1zYjtcdFx0LyogTVNCIGJpdCBwb3NpdGlvbiAqL1xuK1x0X191OCAgbHNiO1x0XHQvKiBMU0IgYml0IHBvc2l0aW9uICovXG4rXHRfX2xlMTYgdmFsdWU7XHRcdC8qIFZhbHVlIHRvIHdyaXRlL2NvbXBhcmUgKi9cbitcdF9fbGUxNiB0aW1lb3V0X21zO1x0LyogUG9sbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAqL1xuK1x0X191OCAgcG9sbF9zZXQ7XHRcdC8qIFBvbGwgZm9yIHNldCAoMSkgb3IgY2xlYXIgKDApICovXG4rXHRfX3U4ICByZXNlcnZlZDtcdFx0LyogUmVzZXJ2ZWQgKi9cbit9O1xuK1xuKyNkZWZpbmUgRldfSEVBREVSX1NJWkVcdFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIpXG4rI2RlZmluZSBGV19FTlRSWV9TSVpFXHRcdHNpemVvZihzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkpXG4gXG4gLyogUlRMODIxMUUgYW5kIFJUTDgyMTFGIHN1cHBvcnQgdXAgdG8gdGhyZWUgTEVEcyAqL1xuICNkZWZpbmUgUlRMODIxMXhfTEVEX0NPVU5UXHRcdFx0M1xuQEAgLTI3MCw2ICszMzgsMTEgQEAgc3RydWN0IHJ0bDgyMXhfcHJpdiB7XG4gXHR1MTYgaW5lcjtcbiB9O1xuIFxuK3N0cnVjdCBydGw4MjYxeF9wcml2IHtcbitcdGNvbnN0IGNoYXIgKmZ3X25hbWU7XG4rXHRib29sIGZ3X2xvYWRlZDtcbit9O1xuK1xuIHN0YXRpYyBpbnQgcnRsODIxeF9yZWFkX3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRyZXR1cm4gX19waHlfcmVhZChwaHlkZXYsIFJUTDgyMXhfUEFHRV9TRUxFQ1QpO1xuQEAgLTMxMCw2ICszODMsMzI2IEBAIHN0YXRpYyBpbnQgcnRsODIxeF9tb2RpZnlfZXh0X3BhZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IGV4dF9wYWdlLFxuIFx0cmV0dXJuIHBoeV9yZXN0b3JlX3BhZ2UocGh5ZGV2LCBvbGRwYWdlLCByZXQpO1xuIH1cbiBcbitzdGF0aWMgaW50IHJ0bDgyNjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2O1xuK1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XG4rXHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xuK1xuK1x0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwcml2KVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHBoeWRldi1cdTAwM2Vwcml2ID0gcHJpdjtcbitcbitcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuK1x0XHRcdCAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0RBVEFfUkVHKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRzdWJfcGh5X2lkID0gKHJldCBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4ZmY7XG4rXG4rXHRzd2l0Y2ggKHN1Yl9waHlfaWQpIHtcbitcdGNhc2UgUlRMODI2MUNfQ0VfTU9ERUw6XG4rXHRcdHByaXYtXHUwMDNlZndfbmFtZSA9IFJUTDgyNjFDX0NFX0ZXX05BTUU7XG4rXHRcdHBoeWRldl9pbmZvKHBoeWRldiwgXCJSVEw4MjYxQyBkZXRlY3RlZCAoc3ViX2lkIDB4JTAyeClcXG5cIiwgc3ViX3BoeV9pZCk7XG4rXHRcdGJyZWFrO1xuK1xuK1x0ZGVmYXVsdDpcbitcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcIlVua25vd24gc3ViX2lkIDB4JTAyeCwgZGVmYXVsdCBiZWhhdmlvclxcblwiLCBzdWJfcGh5X2lkKTtcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXHQvKlxuK1x0ICogU3VwcGxlbWVudCBNdWx0aS1HaWcgc3BlZWRzIHRoYXQgbWF5IG5vdCBiZSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkXG4rXHQgKiBSVEw4MjYxWCBzdXBwb3J0cyAyLjVHLzVHIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIDEwR1xuK1x0ICovXG4rXHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFXzI1MDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4rXHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFXzUwMDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCByZXQsIHZhbDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0VOQUJMRSBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWF1dG9uZWdfY29tcGxldGUpIHtcbitcdFx0dmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4rXHRcdFx0XHQgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhNSUlfU1RBVDEwMDApKTtcbitcdFx0aWYgKHZhbCBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gdmFsO1xuK1xuK1x0XHRtaWlfc3RhdDEwMDBfbW9kX2xpbmttb2RlX2xwYV90KHBoeWRldi1cdTAwM2VscF9hZHZlcnRpc2luZywgdmFsKTtcbitcdH1cbitcbitcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMocGh5ZGV2KTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XG4rXHR1MzIgbWFpbl9tYWdpYywgc3ViX21hZ2ljO1xuK1x0dTMyIGNhbGNfY3JjLCBmaWxlX2NyYztcbitcdHNpemVfdCBkYXRhX2xlbjtcbitcdHUxNiBudW1fZW50cmllcztcbitcbitcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBGV19IRUFERVJfU0laRSkge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJGaXJtd2FyZSB0b28gc21hbGw6ICV6dSBieXRlc1xcblwiLCBmdy1cdTAwM2VzaXplKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRoZHIgPSAoY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqKWZ3LVx1MDAzZWRhdGE7XG4rXG4rXHRtYWluX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZW1haW5fbWFnaWMpO1xuK1x0aWYgKG1haW5fbWFnaWMgIT0gRldfTUFJTl9NQUdJQykge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJJbnZhbGlkIGZpcm13YXJlIG1hZ2ljOiAweCUwOHhcXG5cIiwgbWFpbl9tYWdpYyk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0c3ViX21hZ2ljID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZXN1Yl9tYWdpYyk7XG4rXHRpZiAoc3ViX21hZ2ljICE9IEZXX1NVQl9NQUdJQ184MjYxQykge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJJbnZhbGlkIHN1YiBtYWdpYzogMHglMDh4XFxuXCIsIHN1Yl9tYWdpYyk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0bnVtX2VudHJpZXMgPSBsZTE2X3RvX2NwdShoZHItXHUwMDNlbnVtX2VudHJpZXMpO1xuK1x0ZGF0YV9sZW4gPSBudW1fZW50cmllcyAqIEZXX0VOVFJZX1NJWkU7XG4rXG4rXHRpZiAoZnctXHUwMDNlc2l6ZSAhPSBzaXplb2YoKmhkcikgKyBkYXRhX2xlbikge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJGaXJtd2FyZSBzaXplIG1pc21hdGNoXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdGNhbGNfY3JjID0gY3JjMzIofjAsIGZ3LVx1MDAzZWRhdGEgKyBGV19IRUFERVJfU0laRSwgZGF0YV9sZW4pIF4gfjA7XG4rXHRmaWxlX2NyYyA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VjcmMzMik7XG4rXG4rXHRpZiAoY2FsY19jcmMgIT0gZmlsZV9jcmMpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiQ1JDMzIgbWlzbWF0Y2g6IGNhbGN1bGF0ZWQ9MHglMDh4IGZpbGU9MHglMDh4XFxuXCIsXG4rXHRcdFx0ICAgY2FsY19jcmMsIGZpbGVfY3JjKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4rXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqZW50cnkpXG4re1xuK1x0dTE2IGFkZHIsIHZhbHVlLCB0aW1lb3V0X21zO1xuK1x0dTggZGV2LCBtc2IsIGxzYiwgcG9sbF9zZXQ7XG4rXHR1MzIgYml0cywgZXhwZWN0X3ZhbDtcbitcdGludCByZXQgPSAwO1xuK1x0aW50IHZhbDtcbitcbitcdGRldiA9IGVudHJ5LVx1MDAzZWRldjtcbitcdGFkZHIgPSBsZTE2X3RvX2NwdShlbnRyeS1cdTAwM2VhZGRyKTtcbitcdG1zYiA9IGVudHJ5LVx1MDAzZW1zYjtcbitcdGxzYiA9IGVudHJ5LVx1MDAzZWxzYjtcbitcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXHUwMDNldmFsdWUpO1xuK1x0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXRpbWVvdXRfbXMpO1xuK1x0cG9sbF9zZXQgPSBlbnRyeS1cdTAwM2Vwb2xsX3NldDtcbitcbitcdGlmICh0aW1lb3V0X21zID09IDApXG4rXHRcdHRpbWVvdXRfbXMgPSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVM7XG4rXG4rXHRpZiAobXNiIFx1MDAzZSAxNSB8fCBsc2IgXHUwMDNlIG1zYikge1xuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJJbnZhbGlkIGZpcm13YXJlIGJpdHM6IG1zYj0lZCwgbHNiPSVkXFxuXCIsIG1zYiwgbHNiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRzd2l0Y2ggKGVudHJ5LVx1MDAzZXR5cGUpIHtcbitcdGNhc2UgT1BfV1JJVEU6XG4rXHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLFxuK1x0XHRcdFx0ICAgICBHRU5NQVNLKG1zYiwgbHNiKSwgKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBHRU5NQVNLKG1zYiwgbHNiKSk7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJXUklURSBmYWlsZWQ6IGRldj0lZCBhZGRyPTB4JTA0eFxcblwiLCBkZXYsIGFkZHIpO1xuK1x0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdFx0YnJlYWs7XG4rXG4rXHRjYXNlIE9QX1BPTEw6IHtcbitcdFx0Yml0cyA9IEdFTk1BU0sobXNiLCBsc2IpO1xuK1x0XHRleHBlY3RfdmFsID0gKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBiaXRzO1xuK1xuK1x0XHRpZiAocG9sbF9zZXQpXG4rXHRcdFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIGRldiwgYWRkciwgdmFsLFxuK1x0XHRcdFx0XHRcdFx0KHZhbCBcdTAwMjYgYml0cykgPT0gZXhwZWN0X3ZhbCxcbitcdFx0XHRcdFx0XHRcdDEwMDAsIHRpbWVvdXRfbXMgKiAxMDAwLCBmYWxzZSk7XG4rXHRcdGVsc2VcbitcdFx0XHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsXG4rXHRcdFx0XHRcdFx0XHQodmFsIFx1MDAyNiBiaXRzKSAhPSBleHBlY3RfdmFsLFxuK1x0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJQT0xMIHRpbWVvdXQ6IGRldj0lZCBhZGRyPTB4JTA0eFxcblwiLFxuK1x0XHRcdFx0ICAgZGV2LCBhZGRyKTtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXHRkZWZhdWx0OlxuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJVbmtub3duIGZpcm13YXJlIG9wZXJhdGlvbjogJWRcXG5cIiwgZW50cnktXHUwMDNldHlwZSk7XG4rXHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9md19sb2FkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqZW50cnk7XG4rXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XG4rXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuK1x0aW50IHJldCwgaTtcbitcbitcdGlmICghcHJpdi1cdTAwM2Vmd19uYW1lKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIHByaXYtXHUwMDNlZndfbmFtZSwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbitcdGlmIChyZXQpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXM6ICVkXFxuXCIsIHByaXYtXHUwMDNlZndfbmFtZSwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gcmVsZWFzZV9mdztcbitcbitcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbitcbitcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cdTAwM2VkYXRhICsgRldfSEVBREVSX1NJWkUpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGUxNl90b19jcHUoaGRyLVx1MDAzZW51bV9lbnRyaWVzKTsgaSsrLCBlbnRyeSsrKSB7XG4rXHRcdHJldCA9IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkocGh5ZGV2LCBlbnRyeSk7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJFbnRyeSAlZCBmYWlsZWQ6ICVkXFxuXCIsIGksIHJldCk7XG4rXHRcdFx0Z290byByZWxlYXNlX2Z3O1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRwcml2LVx1MDAzZWZ3X2xvYWRlZCA9IHRydWU7XG4rXG4rcmVsZWFzZV9mdzpcbitcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MjYxeF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRpZiAocGh5ZGV2LVx1MDAzZWludGVycnVwdHMgPT0gUEhZX0lOVEVSUlVQVF9FTkFCTEVEKSB7XG4rXHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXG4rXHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLFxuK1x0XHRcdFx0ICAgIFJUTDgyNjFYX0lOVF9NQVNLX0RFRkFVTFQpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHR9IGVsc2Uge1xuK1x0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcbitcdFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5TUik7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdGludCBpcnFfc3RhdHVzO1xuK1xuK1x0aXJxX3N0YXR1cyA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lOU1IpO1xuK1x0aWYgKGlycV9zdGF0dXMgXHUwMDNjIDApIHtcbitcdFx0cGh5X2Vycm9yKHBoeWRldik7XG4rXHRcdHJldHVybiBJUlFfTk9ORTtcbitcdH1cbitcbitcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IFJUTDgyNjFYX0lOVF9NQVNLX0FMTCkpXG4rXHRcdHJldHVybiBJUlFfTk9ORTtcbitcbitcdGlmIChpcnFfc3RhdHVzIFx1MDAyNiAoUlRMODI2MVhfSU5UX0xJTktfQ0hHIHwgUlRMODI2MVhfSU5UX0FVVE9ORUdfRE9ORSB8XG4rXHQgICAgUlRMODI2MVhfSU5UX0FVVE9ORUdfRVJST1IgfCBSVEw4MjYxWF9JTlRfSkFCQkVSKSlcbitcdFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xuK1xuK1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuK31cbitcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0dTE2IGFkdl8xZyA9IDA7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gZ2VucGh5X2M0NV9jb25maWdfYW5lZyhwaHlkZXYpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0aWYgKGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgICAgICBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpKVxuK1x0XHRhZHZfMWcgPSBBRFZFUlRJU0VfMTAwMEZVTEw7XG4rXHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuK1x0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZykpXG4rXHRcdGFkdl8xZyB8PSBBRFZFUlRJU0VfMTAwMEhBTEY7XG4rXG4rXHRyZXQgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4rXHRcdFx0XHQgICAgIFJUTDgyMlhfVk5EMl9DMjJfUkVHKE1JSV9DVFJMMTAwMCksXG4rXHRcdFx0XHQgICAgIEFEVkVSVElTRV8xMDAwRlVMTCB8IEFEVkVSVElTRV8xMDAwSEFMRixcbitcdFx0XHRcdCAgICAgYWR2XzFnKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXHRpZiAocmV0IFx1MDAzZSAwKVxuK1x0XHRyZXR1cm4gZ2VucGh5X2M0NV9yZXN0YXJ0X2FuZWcocGh5ZGV2KTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGludCByZXQgPSAwO1xuK1xuK1x0LyogVGhlIGZpcm13YXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgSUVFRSBzb2Z0IHJlc2V0cyBhbmRcbitcdCAqIHN1c3BlbmQvcmVzdW1lIGN5Y2xlcy4gUmVsb2FkaW5nIGlzIG9ubHkgbmVjZXNzYXJ5IGFmdGVyIGEgcG93ZXJcbitcdCAqIGN5Y2xlIG9yIGhhcmQgcmVzZXQuXG4rXHQgKi9cbitcdGlmIChwcml2LVx1MDAzZWZ3X25hbWUgXHUwMDI2XHUwMDI2ICFwcml2LVx1MDAzZWZ3X2xvYWRlZCkge1xuK1x0XHRyZXQgPSBydGw4MjYxeF9md19sb2FkKHBoeWRldik7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJGaXJtd2FyZSBsb2FkaW5nIGZhaWxlZDogJWRcXG5cIiwgcmV0KTtcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBzdGF0aWMgaW50IHJ0bDgyMXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG5AQCAtMzAwMSw2ICszMzk0LDE5IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4gXHRcdC5yZWFkX21tZFx0PSBnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXG4gXHRcdC53cml0ZV9tbWRcdD0gZ2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbitcdH0sIHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKFJUTF84MjYxQ19DRyksXG4rXHRcdC5uYW1lXHRcdFx0PSBcIlJlYWx0ZWsgUlRMODI2MUMgMTBHYnBzIFBIWVwiLFxuK1x0XHQucHJvYmVcdFx0XHQ9IHJ0bDgyNjF4X3Byb2JlLFxuK1x0XHQuY29uZmlnX2luaXRcdFx0PSBydGw4MjYxeF9jb25maWdfaW5pdCxcbitcdFx0LmdldF9mZWF0dXJlc1x0XHQ9IHJ0bDgyNjF4X2dldF9mZWF0dXJlcyxcbitcdFx0LmNvbmZpZ19hbmVnXHRcdD0gcnRsODI2MXhfY29uZmlnX2FuZWcsXG4rXHRcdC5yZWFkX3N0YXR1c1x0XHQ9IHJ0bDgyNjF4X3JlYWRfc3RhdHVzLFxuK1x0XHQuY29uZmlnX2ludHJcdFx0PSBydGw4MjYxeF9jb25maWdfaW50cixcbitcdFx0LmhhbmRsZV9pbnRlcnJ1cHRcdD0gcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdCxcbitcdFx0LnNvZnRfcmVzZXRcdFx0PSBnZW5waHlfYzQ1X3NvZnRfcmVzZXQsXG4rXHRcdC5zdXNwZW5kXHRcdD0gZ2VucGh5X2M0NV9wbWFfc3VzcGVuZCxcbitcdFx0LnJlc3VtZVx0XHRcdD0gZ2VucGh5X2M0NV9wbWFfcmVzdW1lLFxuIFx0fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCAxOTlhN2FhYTM0MWJmZC4uMjVhNjYzMjBkZjU2ZWEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjMwOSw2ICsyMzA5LDcgQEAgaW50IGdlbnBoeV9jMzdfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCAqY2hhbmdlZCk7XG4gLyogQ2xhdXNlIDQ1IFBIWSAqL1xuIGludCBnZW5waHlfYzQ1X3Jlc3RhcnRfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgZ2VucGh5X2M0NV9jaGVja19hbmRfcmVzdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgcmVzdGFydCk7XG4raW50IGdlbnBoeV9jNDVfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgZ2VucGh5X2M0NV9hbmVnX2RvbmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IGdlbnBoeV9jNDVfcmVhZF9saW5rKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBnZW5waHlfYzQ1X3JlYWRfbHBhKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9tZGlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5pbmRleCBiMjU0MWM5NDhmYzFlYi4uMDZmNGJjM2MyMGM3MTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbWRpby5oXG5AQCAtMzMyLDggKzMzMiwxMyBAQFxuICNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX0FEVjJfNUdcdDB4MDA4MFx0LyogQWR2ZXJ0aXNlIDIuNUdCQVNFLVQgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFY1R1x0MHgwMTAwXHQvKiBBZHZlcnRpc2UgNUdCQVNFLVQgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9BRFYxMEdcdDB4MTAwMFx0LyogQWR2ZXJ0aXNlIDEwR0JBU0UtVCAqL1xuKyNkZWZpbmUgTURJT19BTl8xMEdCVF9DVFJMX01TX0VOQUJMRVx0MHg4MDAwXHQvKiBNYXN0ZXIvc2xhdmUgbWFudWFsIGNvbmZpZyBlbmFibGUgKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19WQUxVRVx0MHg0MDAwXHQvKiBNYXN0ZXIvc2xhdmUgY29uZmlnIHZhbHVlICgxPU1hc3RlcikgKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfQ1RSTF9NU19QT1JUX1RZUEVcdDB4MjAwMFx0LyogTWFzdGVyIFByZWZlcnJlZCBUeXBlICovXG4gXG4gLyogQU4gMTBHQkFTRS1UIHN0YXR1cyByZWdpc3Rlci4gKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19GQVVMVFx0MHg4MDAwXHQvKiBNYXN0ZXIvc2xhdmUgZmF1bHQgKi9cbisjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9NU19SRVNcdDB4NDAwMFx0LyogTWFzdGVyL3NsYXZlIHJlc29sdXRpb24gKDE9TWFzdGVyKSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQMl81R1x0MHgwMDIwICAvKiBMUCBpcyAyLjVHQlQgY2FwYWJsZSAqL1xuICNkZWZpbmUgTURJT19BTl8xMEdCVF9TVEFUX0xQNUdcdFx0MHgwMDQwICAvKiBMUCBpcyA1R0JUIGNhcGFibGUgKi9cbiAjZGVmaW5lIE1ESU9fQU5fMTBHQlRfU1RBVF9MUFRSUlx0MHgwMjAwXHQvKiBMUCB0cmFpbmluZyByZXNldCByZXEuICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxODo0NC45MzgzMjA1NzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODM4NDk5ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRMODI2MUMgUEhZIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMgMTBHYnBzIFBIWS4gSXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYCwgYWRkaW5nIGZ1bmN0aW9ucyBsaWtlIGBnZW5waHlfYzQ1X3NvZnRfcmVzZXRgLCBgcnRsODI2MXhfcHJvYmVgLCBgcnRsODI2MXhfZndfbG9hZGAsIGFuZCBkcml2ZXIgcmVnaXN0cmF0aW9uIGZvciBgUlRMXzgyNjFDX0NHYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uXG5cbkdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyBQSFkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IHByb2JlZCB2aWEgYW4gTURJTyBidXMuIFNvLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMsIGNhbiB3ZSBlbXVsYXRlIHRoaXMgUEhZIHNvbWVob3cgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgbGlrZSB3aXRoIFFFTVU/IFN5emthbGxlciBpcyB0aGUgb2J2aW91cyBjaG9pY2UgZm9yIGZ1enppbmcsIGJ1dCBob3cgZG8gd2UgZ2V0IGl0IHRvIHJlYWNoIHRoaXMgY29kZT9cblxuSSBuZWVkIHRvIHJlbWVtYmVyIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBQSFkgZHJpdmVycy4gRG9lcyBpdCBuYXRpdmVseSBzdXBwb3J0IE1ESU8gaW5qZWN0aW9uPyBJIGRvbid0ICp0aGluayogaXQgZG9lcy4gUGVyaGFwcyB0aHJvdWdoIHNvbWUgbmV0bGluayBpbnRlcmZhY2Ugb3IgYW5vdGhlciBpbmRpcmVjdCBhcHByb2FjaD8gV2FpdCwgaXMgdGhlcmUgc29tZXRoaW5nIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBtYXliZSBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIHRoYXQgY291bGQgYmUgbGV2ZXJhZ2VkPyBObywgdGhhdCdzIG1vcmUgZm9yIHdpcmVsZXNzLiBUaGlzIGlzIGFuIEV0aGVybmV0IFBIWS4gUmlnaHQuIFNvLCBzeXprYWxsZXIgKmNhbiogZnV6eiBQSFlzLCBidXQgb25seSBpZiB0aGVyZSdzIGEgd2F5IHRvIGluc3RhbnRpYXRlIHRoZW0uXG5cbk9rYXksIGxldCdzIHNlZSBpZiBzeXprYWxsZXIgaGFzICphbnkqIE1ESU8gYnVzIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgc3BlY2lmaWMuIENhbiB1c2Vyc3BhY2UgaW5zdGFudGlhdGUgYSBQSFk/IFVzdWFsbHksIGl0J3MgdGhlIE1BQyBkcml2ZXIgb3IgdGhlIGRldmljZSB0cmVlLCB0aGF0J3Mgd2hhdCBJJ3ZlIHNlZW4uXG5cbkhvbGQgb24uIExldCdzIHNlZS4uLiB0aGUgYHJ0bDgyNjF4X2Z3X2xvYWRgIGZ1bmN0aW9uIGxvb2tzIGludGVyZXN0aW5nLiBJdCB1c2VzIGByZXF1ZXN0X2Zpcm13YXJlYCwgYW5kIGlmIHRoYXQncyByZWFjaGFibGUsIHRoZW4gdGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gUmVhY2hpbmcgZmlybXdhcmUgbG9hZGluZyBvZnRlbiBpbnZvbHZlcyBzb21lIGludGVyZXN0aW5nIGF0dGFjayBzdXJmYWNlcy5cblxuUmlnaHQsIHRpbWUgdG8gY2hlY2sgaWYgYFJFQUxURUtfUEhZYCBpcyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5emthbGxlciBjb25maWdzLiBHb3R0YSBzdGFydCB0aGVyZS4gTGV0J3MgZG8gYSBzZWFyY2ggZm9yIGBSRUFMVEVLX1BIWWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjY5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NTMuNzc2ODIyMzczWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzQ1MjUxMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBTFRFS19QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdD0xMTk9VG8gZW5hYmxlIHRoZSBEUEFBIEV0aGVybmV0IGRyaXZlciwgdGhlIGZvbGxvd2luZyBLY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS5yc3QtMTMxLSAgQ09ORklHX1ZJVEVTU0VfUEhZPXlcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEucnN0OjEzMjogIENPTkZJR19SRUFMVEVLX1BIWT15XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhLnJzdC0xMzMtICBDT05GSUdfQVFVQU5USUFfUEhZPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz0xMDc9Q09ORklHX0JST0FEQ09NX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjEwODpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0xMDktIyBDT05GSUdfVVNCX05FVF9EUklWRVJTIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz0xMjQ9Q09ORklHX0JST0FEQ09NX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjEyNTpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0xMjYtQ09ORklHX01DVFBfU0VSSUFMPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbW94YXJ0X2RlZmNvbmZpZz02Mz1DT05GSUdfQVJNX01PWEFSVF9FVEhFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL21veGFydF9kZWZjb25maWctNjktIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbW94YXJ0X2RlZmNvbmZpZzo3MDpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbW94YXJ0X2RlZmNvbmZpZy03MS1DT05GSUdfTURJT19NT1hBUlQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9teHNfZGVmY29uZmlnPTU3PUNPTkZJR19NSUNSRUxfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWc6NTg6Q09ORklHX1JFQUxURUtfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL214c19kZWZjb25maWctNTktQ09ORklHX0NBTl9GTEVYQ0FOPW1cXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3VueGlfZGVmY29uZmlnPTUyPUNPTkZJR19NSUNSRUxfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL3N1bnhpX2RlZmNvbmZpZzo1MzpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3VueGlfZGVmY29uZmlnLTU0LUNPTkZJR19DQU5fU1VONEk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnLTk0LSMgQ09ORklHX05FVF9WRU5ET1JfWElMSU5YIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnOjk1OkNPTkZJR19SRUFMVEVLX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZy05Ni0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9NDY5PUNPTkZJR19RQ0E4MDhYX1BIWT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NzA6Q09ORklHX1JFQUxURUtfUEhZPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ3MS1DT05GSUdfUk9DS0NISVBfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTIwNz1DT05GSUdfUVNFTUlfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoyMDg6Q09ORklHX1JFQUxURUtfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0yMDktQ09ORklHX0hPU1RBUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz0xNzQ9Q09ORklHX1FTRU1JX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6MTc1OkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTc2LUNPTkZJR19TTVNDX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnPTk3PUNPTkZJR19EQVZJQ09NX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZzo5ODpDT05GSUdfUkVBTFRFS19QSFk9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMV9kZWZjb25maWctOTktIyBDT05GSUdfVVNCX05FVF9EUklWRVJTIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yODI9Q09ORklHX1FTRU1JX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI4MzpDT05GSUdfUkVBTFRFS19QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yODQtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9Mjg5PUNPTkZJR19RU0VNSV9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjkwOkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0yOTEtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yODg9Q09ORklHX1FTRU1JX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjI4OTpDT05GSUdfUkVBTFRFS19QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0yOTAtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9MTQyPUNPTkZJR19RU0VNSV9QSFk9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MTQzOkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xNDQtQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnPTY2PUNPTkZJR19RU0VNSV9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnOjY3OkNPTkZJR19SRUFMVEVLX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTEyeF9kZWZjb25maWctNjgtQ09ORklHX1NNU0NfUEhZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NDY3PUNPTkZJR19RU0VNSV9QSFk9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6NDY4OkNPTkZJR19SRUFMVEVLX1BIWT1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy00NjktQ09ORklHX1NNU0NfUEhZPW1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc9Mj1tZW51Y29uZmlnIE5FVF9EU0FfUkVBTFRFS1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy02LVxcdHNlbGVjdCBJUlFfRE9NQUlOXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo3OlxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctOC1cXHRzZWxlY3QgUkVHTUFQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1MzpcXHRzZWxlY3QgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTQtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg5LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6OTA6XFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05ND1vYmotJChDT05GSUdfUVNFTUlfUEhZKVxcdFxcdCs9IHFzZW1pLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTU6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVxcdCs9IHJlYWx0ZWsvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk2LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcXHQrPSB1UEQ2MDYyMC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6ODppZiBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctOS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEwOmNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTEtXFx0Ym9vbCBcXFwiSFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXFx1MDAyNlxcdTAwMjYgSFdNT049bSlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFJFQUxURUtfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZT0yPXJlYWx0ZWsteVxcdFxcdFxcdCs9IHJlYWx0ZWtfbWFpbi5vXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrLSQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSArPSByZWFsdGVrX2h3bW9uLm9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcXHQrPSByZWFsdGVrLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE4MDQ9c3RhdGljIGludCBydGw4MjJ4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTgwNjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNy1cXHQgICAgcGh5ZGV2LVxcdTAwM2VwaHlfaWQgIT0gUlRMX0dFTkVSSUNfUEhZSUQpXFxuLS1cXG5pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6MjojaWZuZGVmIF9SRUFMVEVLX1BIWV9IXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6MzojZGVmaW5lIF9SRUFMVEVLX1BIWV9IXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmgtNC1cXG4tLVxcbmluY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oLTYtXFxuaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5Lmg6NzojZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTg6NTYuODExMzUyNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Nzc5NjIxMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0aGlzIFBIWSBkcml2ZXIgY29kZSBydW5uaW5nLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBmb3IgdGhlIGBSVExfODI2MUNfQ0dgLiBUaGUga2V5IHNlZW1zIHRvIGJlIHN1Y2Nlc3NmdWxseSBpbnN0YW50aWF0aW5nIGEgUEhZIGRldmljZSB3aXRoIHRoYXQgc3BlY2lmaWMgSUQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyBwb3NzaWJsZSBmcm9tIHVzZXJzcGFjZSwgd2hpY2ggaXMgd2hlcmUgdGhpbmdzIHVzdWFsbHkgZ2V0IGludGVyZXN0aW5nLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIGRvd24gdGhlIHBhdGggb2YgY3JlYXRpbmcgYSB2aXJ0dWFsIE1ESU8gYnVzLiBUaGF0J3MgdXN1YWxseSB0aGUgZWFzaWVzdCByb3V0ZSBpbiB0aGVzZSBraW5kcyBvZiBzaXR1YXRpb25zLiBIbW0sIHdhaXQsIHdhc24ndCB0aGVyZSBzb21ldGhpbmcgY2FsbGVkIGBtZGlvLW1vY2t1cGA/IEkgdmFndWVseSByZWNhbGwgdGhhdCwgbmVlZCB0byBjb25maXJtIGlmIHRoYXQncyBhY3R1YWxseSBhIHZpYWJsZSBvcHRpb24gaGVyZS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgaXQgZXhpc3RzLCBhcyB0aGF0IHdvdWxkIG1ha2UgdGhpbmdzIG11Y2ggc2ltcGxlci4gTGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBzZWUgaWYgdGhhdCdzIGEgdmFsaWQgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MDMuNTkwOTc1NzA0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDUwNzA2MzMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8tbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxOTowNS43MzYwNTMyMDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODQ2Nzc0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gRnV6emluZyBEaWxlbW1hKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBhcHByb2FjaCBmdXp6aW5nIE1ESU8gaW50ZXJmYWNlcyB3aXRoIHN5emthbGxlci4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgXCJXYWl0LCBzeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55IGJ1aWx0LWluIE1ESU8gZnV6emluZyBjYXBhYmlsaXRpZXMuXCIgVGhhdCdzIGEgYml0IG9mIGEgc2V0YmFjay4gVGhlbiBJIHRoaW5rLCBcIkhhbmcgb24sIGBtYWM4MDIxMV9od3NpbWAgaXMgc3BlY2lmaWNhbGx5IGZvciBXaUZpLCBpdCdzIG5vdCBnb2luZyB0byBoZWxwIG1lIHdpdGggTURJTyBkaXJlY3RseS5cIiBTbyBJJ20gYmFjayB0byBzcXVhcmUgb25lLlxuXG5CdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIG1vcmUgYnJvYWRseSwgXCJJcyB0aGVyZSBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSBhIFBIWSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN5emthbGxlciBmcmFtZXdvcms/XCIgVGhlbiBpdCBkYXducyBvbiBtZSwgXCJJZiBhIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFzIGEgUEhZIGRyaXZlciwgaXQgbm9ybWFsbHkgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIGBwaHlfZHJpdmVyX3JlZ2lzdGVyYC5cIiBGcm9tIHRoZXJlLCBpdCB0eXBpY2FsbHkgd2FpdHMgZm9yIGEgUEhZIGRldmljZSB0byBzaG93IHVwIG9uIGFuIE1ESU8gYnVzIGJlZm9yZSBiaW5kaW5nLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGJlY29tZXMsIFwiQ2FuIEkgbGV2ZXJhZ2UgdXNlcnNwYWNlIHRvIGNyZWF0ZSBhbiBNRElPIGJ1cz9cIiBBbmQgYWxtb3N0IGltbWVkaWF0ZWx5LCBJIHRoaW5rIFwiTm8sIHRoYXQncyBub3QgaG93IGl0IHR5cGljYWxseSB3b3Jrcy5cIiBUaGUgc3lzdGVtIHVzdWFsbHkgaGFuZGxlcyB0aGUgTURJTyBidXMgY3JlYXRpb24uIEhvd2V2ZXIsIHRoZSBnZWFycyBiZWdpbiB0byB0dXJuIGFnYWluLiBcIkJ1dCB3aGF0IGFib3V0IGBuZXRkZXZzaW1gP1wiIGl0IGFza3MuIFwiRG9lcyBgbmV0ZGV2c2ltYCwgdGhhdCBuZXR3b3JrIGRldmljZSBzaW11bGF0b3IsIHByb3ZpZGUgYW4gTURJTyBidXM/XCIgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXZlbnVlIGZ1cnRoZXIuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgYXZlbnVlIGZvciBhIHNvbHV0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI2OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxOToxMS41ODI4MzA1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg5Mjg3NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjExLjY0MzczMDE1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzg0Mzk1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTURJTyBCdXMgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB3aGVyZSBhbiBNRElPIGJ1cyBtaWdodCBwb3AgdXAgaW4gdGhlIGtlcm5lbC4gYGR1bW15YCBhbmQgYHZldGhgIGFyZSBvdXQg4oCTIGRlZmluaXRlbHkgbm90IHRoZXJlLiBXaGF0IGFib3V0IGB0dW5gIGFuZCBgdGFwYD8gTmFoLCB0aG9zZSBhcmUgbGF5ZXIgMywgbm8gcGh5c2ljYWwgaW50ZXJmYWNlLiBIbW0uLi4gaG93IGFib3V0IGB1c2JuZXRgPyBBaCwgbm93IHdlJ3JlIGdldHRpbmcgc29tZXdoZXJlLiBTb21lIFVTQiBuZXR3b3JrIGRldmljZXMgKmRvKiBoYXZlIE1ESU8gYnVzZXMsIGludGVyZXN0aW5nLlxuXG5JZiBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZywgdGhpcyBpcyBwZXJmZWN0ISBJIGNhbiBidWlsZCBhbiBlbXVsYXRpb24gb2YgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCBhbiBNRElPIGJ1cyBhbmQsIGNydWNpYWxseSwgYSByZXBvcnRlZCBQSFkgSUQuIFRoaXMgY291bGQgYmUgYSByZWFsbHkgc29saWQgYXBwcm9hY2guXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwOiBsZXQgbWUgY2hlY2sgdGhlIGV4aXN0aW5nIFVTQiBuZXR3b3JrIGRyaXZlcnMgYW5kIHNlZSB3aGljaCBvbmVzIGFjdHVhbGx5IG1ha2UgdXNlIG9mIFBIWXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGV4aXN0aW5nIGxhbmRzY2FwZSBsb29rcyBsaWtlIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIHdpdGggdGhpcyBjb25jZXB0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDczMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjE1Ljc4MjE3MjY0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0MTExODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTA1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MjY2PXN0YXRpYyBpbnQgYXFjMTExX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTI5MC1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MjkxOlxcdGVsay1cXHUwMDNlYmFzZS5tZGlvX3N1cHBvcnQgPSAweDAwOyAvKk5vdCBzdXBwb3J0ZWQqL1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0yOTItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE3OD1zdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4NC1cXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoxODU6XFx0c3RydWN0IG1paV9idXMgKm1kaW87XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODYtXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MjI5PXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMxOmludCBhc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzMjp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNDppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM1OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjM2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM4OnZvaWQgYXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzOS1cXHRcXHRcXHQgIGludCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9NDQxPXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDgwOnN0YXRpYyBpbnQgX19hc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4MS1cXHRcXHRcXHQgICAgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA1LVxcdFxcdFxcdHBoeV9pZCwgbG9jLCBsZTE2X3RvX2NwdShyZXMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMy19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxNTpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE2LVxcdFxcdFxcdCAgICAgaW50IHZhbCwgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MjI6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb193cml0ZSgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHZhbD0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTIzLVxcdFxcdFxcdHBoeV9pZCwgbG9jLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0Mzp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0NC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTQ1OlxcdF9fYXNpeF9tZGlvX3dyaXRlKG5ldGRldiwgcGh5X2lkLCBsb2MsIHZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Ni19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDgtLyogTURJTyByZWFkIGFuZCB3cml0ZSB3cmFwcGVycyBmb3IgcGh5bGliICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTQ5OmludCBhc2l4X21kaW9fYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU1MzpcXHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChwcml2LVxcdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU0LX1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTUtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTU2OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1OS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NjA6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3dyaXRlKHByaXYtXFx1MDAzZW5ldCwgcGh5X2lkLCByZWdudW0sIHZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2MS19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2NC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY1OlxcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Ni19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz01Njg9dm9pZFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2OTphc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3MC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTcxOlxcdF9fYXNpeF9tZGlvX3dyaXRlKG5ldGRldiwgcGh5X2lkLCBsb2MsIHZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTcyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MD1zdGF0aWMgdTMyIGFzaXhfZ2V0X3BoeWlkKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTAwOyBpKyspIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Nzg6XFx0XFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzktXFx0XFx0aWYgKHBoeV9yZWcgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTpcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05Mi1cXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTkwPXN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTQ6XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSLCByZXNldF9iaXRzKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cXHR3aGlsZSAodGltZW91dC0tKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcXHRcXHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2IEJNQ1JfUkVTRVQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MjEyPXN0YXRpYyBpbnQgYXg4ODE3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjQ4LVxcdGRldi1cXHUwMDNlbWlpLmRldiA9IGRldi1cXHUwMDNlbmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNDk6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1MDpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTEtXFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2My1cXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjQ6XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2NS1cXHRcXHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpe1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTQ1Nj1zdGF0aWMgaW50IGF4ODg3NzJhX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDk3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXFx0XFx0LyogQ2hlY2sgaWYgdGhlIFBIWSByZWdpc3RlcnMgaGF2ZSBkZWZhdWx0IHNldHRpbmdzICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcXHRcXHRwaHkxNGggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNTpcXHRcXHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcXHRcXHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE2SCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI1LVxcdFxcdGlmIChwaHkxNGggIT0gQVg4ODc3MkFfUEhZMTRIX0RFRkFVTFQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNjpcXHRcXHRcXHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjctXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNEgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI5LVxcdFxcdGlmIChwaHkxNWggIT0gQVg4ODc3MkFfUEhZMTVIX0RFRkFVTFQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzMDpcXHRcXHRcXHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzEtXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNUgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMzLVxcdFxcdGlmIChwaHkxNmggIT0gQVg4ODc3MkFfUEhZMTZIX0RFRkFVTFQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzNDpcXHRcXHRcXHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzUtXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNkgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjU4PXN0YXRpYyBpbnQgYXNpeF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Njk6c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY3MC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjczLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2NzQ6XFx0cHJpdi1cXHUwMDNlbWRpbyA9IG1kaW9idXNfYWxsb2MoKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njc1OlxcdGlmICghcHJpdi1cXHUwMDNlbWRpbylcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjc2LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NzctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY3ODpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2Vwcml2ID0gZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2Nzk6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlcmVhZCA9IFxcdTAwMjZhc2l4X21kaW9fYnVzX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MDpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2V3cml0ZSA9IFxcdTAwMjZhc2l4X21kaW9fYnVzX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODE6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlbmFtZSA9IFxcXCJBc2l4IE1ESU8gQnVzXFxcIjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjgyOlxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZXBoeV9tYXNrID0gfihCSVQocHJpdi1cXHUwMDNlcGh5X2FkZHIgXFx1MDAyNiAweDFmKSB8IEJJVChBWF9FTUJEX1BIWV9BRERSKSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4My1cXHQvKiBtaWkgYnVzIG5hbWUgaXMgdXNiLVxcdTAwM2N1c2IgYnVzIG51bWJlclxcdTAwM2UtXFx1MDAzY3VzYiBkZXZpY2UgbnVtYmVyXFx1MDAzZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODQ6XFx0c25wcmludGYocHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcInVzYi0lMDNkOiUwM2RcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODUtXFx0XFx0IGRldi1cXHUwMDNldWRldi1cXHUwMDNlYnVzLVxcdTAwM2VidXNudW0sIGRldi1cXHUwMDNldWRldi1cXHUwMDNlZGV2bnVtKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg5LVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgcmVnaXN0ZXIgTURJTyBidXMgKGVyciAlZClcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5MDpcXHRcXHRtZGlvYnVzX2ZyZWUocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5MTpcXHRcXHRwcml2LVxcdTAwM2VtZGlvID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjkyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY5NzpzdGF0aWMgdm9pZCBheDg4NzcyX21kaW9fdW5yZWdpc3RlcihzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjk4LXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njk5OlxcdG1kaW9idXNfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzAwOlxcdG1kaW9idXNfZnJlZShwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzAxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgcHJpdi1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDktXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzEtXFx0ICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMjpcXHRwcml2LVxcdTAwM2VwaHlkZXZfaW50ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXFx1MDAzZW1kaW8sIEFYX0VNQkRfUEhZX0FERFIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzMtXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXZfaW50KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9ODI5PXN0YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTc6XFx0cmV0ID0gYXg4ODc3Ml9pbml0X21kaW8oZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTE4LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOTpcXHRcXHRnb3RvIG1kaW9fZXJyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQwLXBoeWxpbmtfZXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NDE6XFx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk0MjptZGlvX2VycjpcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQzLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYyLVxcdHBoeWxpbmtfZGVzdHJveShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYzOlxcdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjQtXFx0YXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShkZXYtXFx1MDAzZWRyaXZlcl9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDAwOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9DVFJMLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAxLVxcdFxcdFxcdE1BUlZFTExfQ1RSTF9SWERFTEFZIHwgTUFSVkVMTF9DVFJMX1RYREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDMtXFx0aWYgKGRhdGEtXFx1MDAzZWxlZG1vZGUpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAwNDpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA5LVxcdFxcdHJlZyB8PSAoMSArIDB4MDEwMCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTA6XFx0XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjg6XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDBjLCAwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlID09IDEyKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzQ6XFx0XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1OlxcdFxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxYSwgMHgwMGNiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcXHRcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDM3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcXHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA2MzpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMLCByZWcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNjg9c3RhdGljIGludCBheDg4MTc4X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQxLVxcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQyOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVxcdFxcdFxcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQ0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQ1RSTDEwMDAsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNDUtXFx0XFx0XFx0QURWRVJUSVNFXzEwMDBGVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMjcxPXN0YXRpYyBpbnQgYXg4ODE3OF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5MC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5MTpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5MjpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkzLVxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgxZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoxOTpcXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yMC1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9NTU9c3RhdGljIHZvaWQgYXg4ODE3MmFfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNjAtLyogdXNlIHBoeWxpYiBpbmZyYXN0cnVjdHVyZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjYxOnN0YXRpYyBpbnQgYXg4ODE3MmFfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02Mi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy02NS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo2NjpcXHRwcml2LVxcdTAwM2VtZGlvID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjY3OlxcdGlmICghcHJpdi1cXHUwMDNlbWRpbykge1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTY4LVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgYWxsb2NhdGUgTURJTyBidXNcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzEtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzI6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlcHJpdiA9ICh2b2lkICopZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjczOlxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZXJlYWQgPSBcXHUwMDI2YXNpeF9tZGlvX2J1c19yZWFkO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjc0OlxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZXdyaXRlID0gXFx1MDAyNmFzaXhfbWRpb19idXNfd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6NzU6XFx0cHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlbmFtZSA9IFxcXCJBc2l4IE1ESU8gQnVzXFxcIjtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03Ni1cXHQvKiBtaWkgYnVzIG5hbWUgaXMgdXNiLVxcdTAwM2N1c2IgYnVzIG51bWJlclxcdTAwM2UtXFx1MDAzY3VzYiBkZXZpY2UgbnVtYmVyXFx1MDAzZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjc3OlxcdHNucHJpbnRmKHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCJ1c2ItJTAzZDolMDNkXFxcIixcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OC1cXHRcXHQgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c251bSwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXZudW0pO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTc5LVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODUtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6ODY6XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyZWdpc3RlcmVkIG1kaW8gYnVzICVzXFxcXG5cXFwiLCBwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODctXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy04OS1tZnJlZTpcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo5MDpcXHRtZGlvYnVzX2ZyZWUocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtOTEtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTkzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjk0OnN0YXRpYyB2b2lkIGF4ODgxNzJhX3JlbW92ZV9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05NS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy05Ny1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo5ODpcXHRuZXRkZXZfaW5mbyhkZXYtXFx1MDAzZW5ldCwgXFxcImRlcmVnaXN0ZXJpbmcgbWRpbyBidXMgJXNcXFxcblxcXCIsIHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo5OTpcXHRtZGlvYnVzX3VucmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MTAwOlxcdG1kaW9idXNfZnJlZShwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0xMDEtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MTU4PXN0YXRpYyBpbnQgYXg4ODE3MmFfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjI1LVxcdC8qIGluaXQgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoyMjY6XFx0cmV0ID0gYXg4ODE3MmFfaW5pdF9tZGlvKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjI3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNTM9c3RhdGljIHZvaWQgYXg4ODE3MmFfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yNTYtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjU3OlxcdGF4ODgxNzJhX3JlbW92ZV9tZGlvKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjU4LVxcdGtmcmVlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzExLVxcdHNucHJpbnRmKHByaXYtXFx1MDAzZXBoeV9uYW1lLCBzaXplb2YocHJpdi1cXHUwMDNlcGh5X25hbWUpLCBQSFlfSURfRk1ULFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxMjpcXHRcXHQgcHJpdi1cXHUwMDNlbWRpby1cXHUwMDNlaWQsIHByaXYtXFx1MDAzZXBoeV9hZGRyKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi91c2JuZXQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTQ6I2luY2x1ZGUgXFx1MDAzY3VhcGkvbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0zMTQ9c3RhdGljIHZvaWQgYXg4ODE3OV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzozMzQ6c3RhdGljIGludCBheDg4MTc5X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0zMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTM0Mi1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MzQzOnN0YXRpYyB2b2lkIGF4ODgxNzlfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0zNDQtXFx0XFx0XFx0ICAgICAgIGludCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTI4MT1zdGF0aWMgaW50IGF4ODgxNzlfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTEzMDItXFx0ZGV2LVxcdTAwM2VtaWkuZGV2ID0gZGV2LVxcdTAwM2VuZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjEzMDM6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXg4ODE3OV9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjEzMDQ6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGF4ODgxNzlfbWRpb193cml0ZTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTMwNS1cXHRkZXYtXFx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9MTM3PXN0YXRpYyBpbnQgY29udHJvbF93cml0ZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0xNzYtXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjE3NzpzdGF0aWMgaW50IGNoOTIwMF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0xOTYtXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjE5NzpzdGF0aWMgdm9pZCBjaDkyMDBfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0xOTgtXFx0XFx0XFx0ICAgICAgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYz0zMzg9c3RhdGljIGludCBjaDkyMDBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTM0OC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM6MzQ5OlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGNoOTIwMF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjM1MDpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gY2g5MjAwX21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTM1MS1cXHRkZXYtXFx1MDAzZW1paS5yZWdfbnVtX21hc2sgPSAweDFmO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTIwMT1zdGF0aWMgaW50IGRtOTYwMV9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzoyMjA6c3RhdGljIGludCBkbTk2MDFfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTIyMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjM4LVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjIzOTpcXHRcXHQgICBcXFwiZG05NjAxX21kaW9fcmVhZCgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHJldHVybnM9MHglMDR4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNDAtXFx0XFx0ICAgcGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI0NC1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MjQ1OnN0YXRpYyB2b2lkIGRtOTYwMV9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI0Ni1cXHRcXHRcXHQgICAgICBpbnQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI1NS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MjU2OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJkbTk2MDFfbWRpb193cml0ZSgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHZhbD0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI1Ny1cXHRcXHQgICBwaHlfaWQsIGxvYywgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYz0zMzg9c3RhdGljIGludCBkbTk2MDFfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTM1OC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6MzU5OlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGRtOTYwMV9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjM2MDpcXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gZG05NjAxX21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTM2MS1cXHRkZXYtXFx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4MWY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDExLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MTI6XFx0ZG05NjAxX21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIEJNQ1JfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MTM6XFx0ZG05NjAxX21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDE0LVxcdFxcdFxcdCAgQURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNFX1BBVVNFX0NBUCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcHY2LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDojaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWljcm9jaGlwcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMDojaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbWRpby5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz00MTM9c3RydWN0IGxhbjc4eHhfbmV0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDQxLVxcdHN0cnVjdCBtdXRleFxcdFxcdGRldl9tdXRleDsgLyogc2VyaWFsaXNlIG9wZW4vc3RvcCB3cnQgc3VzcGVuZC9yZXN1bWUgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjQ0MjpcXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRtZGlvYnVzX211dGV4OyAvKiBmb3IgTURJTyBidXMgYWNjZXNzICovXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy00NDMtXFx0dW5zaWduZWQgaW50XFx0XFx0cGlwZV9pbiwgcGlwZV9vdXQsIHBpcGVfaW50cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtNDU4LVxcdHUzMlxcdFxcdFxcdGNoaXByZXY7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo0NTk6XFx0c3RydWN0IG1paV9idXNcXHRcXHQqbWRpb2J1cztcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTQ2MC1cXHRwaHlfaW50ZXJmYWNlX3RcXHRcXHRpbnRlcmZhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTk0Nj1zdGF0aWMgaW50IGxhbjc4eHhfZmx1c2hfcnhfZmlmbyhzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOTUwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6OTUxOi8qIExvb3AgdW50aWwgdGhlIHJlYWQgaXMgY29tcGxldGVkIHdpdGggdGltZW91dCBjYWxsZWQgd2l0aCBtZGlvYnVzX211dGV4IGhlbGQgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjk1MjpzdGF0aWMgaW50IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtOTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTU2MT1zdGF0aWMgaW50IGxhbjc4eHhfbWFjX3Jlc2V0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNTY2LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTU2NzpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1kaW9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTU3Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE1NzM6XFx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE1NzQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE2MDEtZXhpdF91bmxvY2s6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNjAyOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtZGlvYnVzX211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE2MDMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE5MjM9c3RhdGljIGludCBsYW43OHh4X2luaXRfbWFjX2FkZHJlc3Moc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE5OTAtLyogTURJTyByZWFkIGFuZCB3cml0ZSB3cmFwcGVycyBmb3IgcGh5bGliICovXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxOTkxOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGlkeClcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE5OTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDAwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjAwMTpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1kaW9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjAwMi1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDMtXFx0LyogY29uZmlybSBNSUkgbm90IGJ1c3kgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwMDQ6XFx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMDUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMTMtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDE0OlxcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDE1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDI0LWRvbmU6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDI1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtZGlvYnVzX211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMjYtXFx0dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi1cXHUwMDNlaW50Zik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwMzAtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDMxOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCBpZHgsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDMyLVxcdFxcdFxcdFxcdCB1MTYgcmVndmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDQxLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA0MjpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1kaW9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA0My1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNDQtXFx0LyogY29uZmlybSBNSUkgbm90IGJ1c3kgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwNDU6XFx0cmV0ID0gbGFuNzh4eF9tZGlvYnVzX3dhaXRfbm90X2J1c3koZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNDYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNTktXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDYwOlxcdHJldCA9IGxhbjc4eHhfbWRpb2J1c193YWl0X25vdF9idXN5KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDYxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDY0LWRvbmU6XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDY1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtZGlvYnVzX211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNjYtXFx0dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi1cXHUwMDNlaW50Zik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwNjktXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDcwOnN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA3NC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwNzU6XFx0ZGV2LVxcdTAwM2VtZGlvYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA3NjpcXHRpZiAoIWRldi1cXHUwMDNlbWRpb2J1cykge1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA3Ny1cXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiY2FuJ3QgYWxsb2NhdGUgTURJTyBidXNcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDgwLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA4MTpcXHRkZXYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXByaXYgPSAodm9pZCAqKWRldjtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwODI6XFx0ZGV2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VyZWFkID0gbGFuNzh4eF9tZGlvYnVzX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDgzOlxcdGRldi1cXHUwMDNlbWRpb2J1cy1cXHUwMDNld3JpdGUgPSBsYW43OHh4X21kaW9idXNfd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg0OlxcdGRldi1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlbmFtZSA9IFxcXCJsYW43OHh4LW1kaW9idXNcXFwiO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjA4NTpcXHRkZXYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXBhcmVudCA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwODYtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMDg3OlxcdHNucHJpbnRmKGRldi1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcInVzYi0lMDNkOiUwM2RcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjA4OC1cXHRcXHQgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c251bSwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXZudW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMDkzLVxcdFxcdC8qIHNldCB0byBpbnRlcm5hbCBQSFkgaWQgKi9cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIwOTQ6XFx0XFx0ZGV2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VwaHlfbWFzayA9IH4oMSBcXHUwMDNjXFx1MDAzYyAxKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwOTUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIwOTktXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTAwOlxcdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNzoxOToxNS44NDA1ODgyMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNTIyNTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGZvciBQSFkgSW5zdGFudGlhdGlvbioqXG5cbk9rYXksIGhlcmUncyB0aGUgcGxhbi4gSXQgbG9va3MgbGlrZSBgYXNpeGAsIGBheDg4MTcyYWAsIGBheDg4MTc5XzE3OGFgLCBhbmQgYGxhbjc4eHhgIGFsbCByZWx5IG9uIE1ESU8gYnVzZXMuIElmIEkgZnV6eiB0aGUgVVNCIGludGVyZmFjZSBhbmQgZW11bGF0ZSBlaXRoZXIgYW4gQVNJWCBvciBMQU43OHh4IGRldmljZSwgd2hlbiB0aGUgZHJpdmVyIHByb2JlcywgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIGFuIE1ESU8gYnVzLiBUaGVuIHRoYXQgTURJTyBidXMgd2lsbCBnbyBvZmYgYW5kIHNjYW4gZm9yIFBIWXMuXG5cbk5vdywgaWYgbXkgZW11bGF0ZWQgVVNCIGRldmljZSBjYW4gcmVzcG9uZCB0byBNRElPIHJlYWQgY29tbWFuZHMg4oCTIHdoaWNoIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvIFVTQiBjb250cm9sIG1lc3NhZ2VzIOKAkyBhbmQgaXQgKmNsYWltcyogdGhlIFBIWSBJRCBpcyBgUlRMXzgyNjFDX0NHYCwgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYDB4MDAxY2M4OThgLCB0aGUgUEhZIHN1YnN5c3RlbSB3aWxsIGluc3RhbnRpYXRlIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXIgYW5kIGNhbGwgYHJ0bDgyNjF4X3Byb2JlYC5cblxuSnVzdCBjb25maXJtaW5nLCBgUlRMXzgyNjFDX0NHYCBpcyBkZWZpbml0ZWx5IGAweDAwMWNjODk4YC4gUmlnaHQsIHRpbWUgdG8gZGlzc2VjdCBgcnRsODI2MXhfcHJvYmVgLiBMZXQncyBzZWUgd2hhdCB0aGF0IGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODk4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjIxLjE2NTgxNjIxM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzg2LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzg2OlxcdHN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gMzg3OlxcdHtcXG4gMzg4OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbiAzODk6XFx0XFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XFxuIDM5MDpcXHRcXHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xcbiAzOTE6XFx0XFxuIDM5MjpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuIDM5MzpcXHRcXHRpZiAoIXByaXYpXFxuIDM5NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzk1OlxcdFxcbiAzOTY6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gMzk3OlxcdFxcbiAzOTg6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfQUREUl9SRUcsXFxuIDM5OTpcXHRcXHRcXHRcXHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XFxuIDQwMDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNDAxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQwMjpcXHRcXG4gNDAzOlxcdFxcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xcbiA0MDQ6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQwNTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MDY6XFx0XFxuIDQwNzpcXHRcXHRzdWJfcGh5X2lkID0gKHJldCBcXHUwMDNlXFx1MDAzZSA4KSBcXHUwMDI2IDB4ZmY7XFxuIDQwODpcXHRcXG4gNDA5OlxcdFxcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xcbiA0MTA6XFx0XFx0Y2FzZSBSVEw4MjYxQ19DRV9NT0RFTDpcXG4gNDExOlxcdFxcdFxcdHByaXYtXFx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xcbiA0MTI6XFx0XFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDEzOlxcdFxcdFxcdGJyZWFrO1xcbiA0MTQ6XFx0XFxuIDQxNTpcXHRcXHRkZWZhdWx0OlxcbiA0MTY6XFx0XFx0XFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcXFwiVW5rbm93biBzdWJfaWQgMHglMDJ4LCBkZWZhdWx0IGJlaGF2aW9yXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDE3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA0MTg6XFx0XFx0fVxcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRyZXR1cm4gMDtcXG4gNDIxOlxcdH1cXG4gNDIyOlxcdFxcbiA0MjM6XFx0c3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gNDI0OlxcdHtcXG4gNDI1OlxcdFxcdGludCByZXQ7XFxuIDQyNjpcXHRcXG4gNDI3OlxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuIDQyODpcXHRcXHRpZiAocmV0KVxcbiA0Mjk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDMwOlxcdFxcdC8qXFxuIDQzMTpcXHRcXHQgKiBTdXBwbGVtZW50IE11bHRpLUdpZyBzcGVlZHMgdGhhdCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWRcXG4gNDMyOlxcdFxcdCAqIFJUTDgyNjFYIHN1cHBvcnRzIDIuNUcvNUcgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgMTBHXFxuIDQzMzpcXHRcXHQgKi9cXG4gNDM0OlxcdFxcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxcbiA0MzU6XFx0XFx0XFx0XFx0IHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MjEuMTY2MDc2ODczWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MzM4NjI1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSVEw4MjYxeCBQSFkgSW5pdGlhbGl6YXRpb24gUGF0aCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHJ0bDgyNjF4X3Byb2JlYCBpcyBxdWVyeWluZyB0aGUgTU1EIHJlZ2lzdGVycy4gSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgcGxheXMgYWxvbmcgYW5kIHByb3ZpZGVzIGBSVEw4MjYxQ19DRV9NT0RFTGAgaW4gYHN1Yl9waHlfaWRgIGluIHJlc3BvbnNlIHRvIHRob3NlIE1NRCByZWFkcywgdGhlbiB3ZSdsbCBwcm9jZWVkIHRvIGBydGw4MjYxeF9jb25maWdfaW5pdGAuIE5vdywgd2l0aGluIGBydGw4MjYxeF9jb25maWdfaW5pdGAsIHRoZSBmdW5jdGlvbiBgcnRsODI2MXhfZndfbG9hZGAgZ2V0cyBjYWxsZWQuXG5cbkhlcmUncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nOiBgcnRsODI2MXhfZndfbG9hZGAgcmVsaWVzIG9uIGByZXF1ZXN0X2Zpcm13YXJlYC4gVGhlIGNyaXRpY2FsIHBhdGggdGhlbiBoaW5nZXMgb24gZmlybXdhcmUgYXZhaWxhYmlsaXR5LiBBc3N1bWluZyBpdCdzIHByZXNlbnQgKG9yIHRoYXQgd2UgY2FuIHNldCB1cCBhIG1vY2sgZW52aXJvbm1lbnQsIHdoaWNoIG1pZ2h0IGJlIHRyaWNreSB3aXRoIHN5emthbGxlciBpZiB0aGUgZmlybXdhcmUgaXNuJ3QgaW4gdGhlIHJvb3RmcyksIHdlJ2xsIHdhaXQgZm9yIHRoZSBsb2FkLiBJZiBgcmVxdWVzdF9maXJtd2FyZWAgZmFpbHMg4oCTIHdoaWNoIGlzIHdoYXQgd2UgYXJlIGFmdGVyLCBpdCByZXR1cm5zIGFuIGVycm9yLCBhbmQgdGhlIGVudGlyZSBgcnRsODI2MXhfY29uZmlnX2luaXRgIHByb2Nlc3MgYmxvd3MgdXAuIFRoaXMgY2F1c2VzIHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gdG8gZmFpbCwgYnV0LCBjcml0aWNhbGx5LCB3ZSd2ZSBkZW1vbnN0cmF0ZWQgdGhhdCB3ZSd2ZSByZWFjaGVkIHRoZSBjb2RlIHBhdGhzIGluIGBydGw4MjYxeF9wcm9iZWAgYW5kIGBydGw4MjYxeF9jb25maWdfaW5pdGAuXG5cbk9uIGEgc2lkZSBub3RlLCBJIHNlZSB0aGF0IGdlbmVyaWMgQ2xhdXNlIDQ1IFBIWSBmdW5jdGlvbnMgbGlrZSBgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0YCwgYGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlYCwgYW5kIGBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlYCBoYXZlIGJlZW4gYWRkZWQgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgLiBUaGV5J3JlIG5vdyBhdmFpbGFibGUgdG8gYW55IEM0NSBQSFkuXG5cblRoZSBuZXh0IHBvaW50IHRvIGFuYWx5emUgaXMgdGhhdCBgZ2VucGh5X2M0NV9yZWFkX3N0YXR1c2AgYW5kIGBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnYCBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYGdlbnBoeV9jNDVfcmVhZF9zdGF0dXNgIHRvIHNlZSBob3cgaXQgY2FsbHMgdGhlIG5ldyBoZWxwZXIgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIxNCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjI5LjA5OTk0Mjk1NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjkwOlxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9saW5rKHBoeWRldik7XFxuMTI5MTpcXHRcXHRpZiAocmV0KVxcbjEyOTI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMjkzOlxcdFxcbjEyOTQ6XFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XFxuMTI5NTpcXHRcXHRwaHlkZXYtXFx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbjEyOTY6XFx0XFx0cGh5ZGV2LVxcdTAwM2VwYXVzZSA9IGZhbHNlO1xcbjEyOTc6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vhc3ltX3BhdXNlID0gZmFsc2U7XFxuMTI5ODpcXHRcXG4xMjk5OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUpIHtcXG4xMzAwOlxcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9scGEocGh5ZGV2KTtcXG4xMzAxOlxcdFxcdFxcdGlmIChyZXQpXFxuMTMwMjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMDM6XFx0XFxuMTMwNDpcXHRcXHRcXHRpZiAoZ2VucGh5X2M0NV9iYXNldDFfYWJsZShwaHlkZXYpKSB7XFxuMTMwNTpcXHRcXHRcXHRcXHRyZXQgPSBnZW5waHlfYzQ1X2Jhc2V0MV9yZWFkX3N0YXR1cyhwaHlkZXYpO1xcbjEzMDY6XFx0XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTMwNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMDg6XFx0XFx0XFx0fSBlbHNlIHtcXG4xMzA5OlxcdFxcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmUocGh5ZGV2KTtcXG4xMzEwOlxcdFxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEzMTE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzEyOlxcdFxcdFxcdH1cXG4xMzEzOlxcdFxcbjEzMTQ6XFx0XFx0XFx0cGh5X3Jlc29sdmVfYW5lZ19saW5rbW9kZShwaHlkZXYpO1xcbjEzMTU6XFx0XFx0fSBlbHNlIHtcXG4xMzE2OlxcdFxcdFxcdHJldCA9IGdlbnBoeV9jNDVfcmVhZF9wbWEocGh5ZGV2KTtcXG4xMzE3OlxcdFxcdH1cXG4xMzE4OlxcdFxcbjEzMTk6XFx0XFx0cmV0dXJuIHJldDtcXG4xMzIwOlxcdH1cXG4xMzIxOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMpO1xcbjEzMjI6XFx0XFxuMTMyMzpcXHQvKipcXG4xMzI0OlxcdCAqIGdlbnBoeV9jNDVfY29uZmlnX2FuZWcgLSByZXN0YXJ0IGF1dG8tbmVnb3RpYXRpb24gb3IgZm9yY2VkIHNldHVwXFxuMTMyNTpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xMzI2OlxcdCAqXFxuMTMyNzpcXHQgKiBEZXNjcmlwdGlvbjogSWYgYXV0by1uZWdvdGlhdGlvbiBpcyBlbmFibGVkLCB3ZSBjb25maWd1cmUgdGhlXFxuMTMyODpcXHQgKiAgIGFkdmVydGlzaW5nLCBhbmQgdGhlbiByZXN0YXJ0IGF1dG8tbmVnb3RpYXRpb24uICBJZiBpdCBpcyBub3RcXG4xMzI5OlxcdCAqICAgZW5hYmxlZCwgdGhlbiB3ZSBmb3JjZSBhIGNvbmZpZ3VyYXRpb24uXFxuMTMzMDpcXHQgKi9cXG4xMzMxOlxcdGludCBnZW5waHlfYzQ1X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTMzMjpcXHR7XFxuMTMzMzpcXHRcXHRib29sIGNoYW5nZWQgPSBmYWxzZTtcXG4xMzM0OlxcdFxcdGludCByZXQ7XFxuMTMzNTpcXHRcXG4xMzM2OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPT0gQVVUT05FR19ESVNBQkxFKVxcbjEzMzc6XFx0XFx0XFx0cmV0dXJuIGdlbnBoeV9jNDVfcG1hX3NldHVwX2ZvcmNlZChwaHlkZXYpO1xcbjEzMzg6XFx0XFxuMTMzOTpcXHRcXHRyZXQgPSBnZW5waHlfYzQ1X2FuX2NvbmZpZ19hbmVnKHBoeWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA3OjE5OjI5LjEwMDEzODEzNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDAwMzc1NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQzQ1IFBIWSBNYXN0ZXIvU2xhdmUgQ29uZmlndXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgYGdlbnBoeV9jNDVfcmVhZF9zdGF0dXNgIGFuZCBgZ2VucGh5X2M0NV9jb25maWdfYW5lZ2AgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQuIFRoZXkgbm93IGNhbGwgYGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmVgIGFuZCBgZ2VucGh5X2M0NV9hbl9zZXR1cF9tYXN0ZXJfc2xhdmVgLCByZXNwZWN0aXZlbHkuIFRoaXMgaXMgdGFyZ2V0ZWQgYXQgQzQ1IFBIWXMgd2l0aCBhdXRvbmVnb3RpYXRpb24gZW5hYmxlZCwgZXhjbHVkaW5nIEJhc2VUMSBQSFlzLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGNsZWFybHkgcmVhY2hhYmxlIHdpdGhpbiB0aGUgZXhpc3RpbmcgZHJpdmVyIHN0cnVjdHVyZS4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBsb2dpYyBmb3IgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gaW4gQzQ1IFBIWXMsIGFuZCBhbHNvIGFkZHMgYSBuZXcgUmVhbHRlayBQSFkgZHJpdmVyLiBXb3J0aCBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGZvciBmdXp6aW5nIHBvdGVudGlhbC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUgc3BlY2lmaWMgc3ltYm9scyB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIHdlIGhhdmUgYSBnb29kIHNldDogYGdlbnBoeV9jNDVfc29mdF9yZXNldGAsIGBnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZWAsIGBnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlYCwgYW5kIHRoZW4gdGhlIFJlYWx0ZWstc3BlY2lmaWMgZnVuY3Rpb25zOiBgcnRsODI2MXhfcHJvYmVgLCBgcnRsODI2MXhfZ2V0X2ZlYXR1cmVzYCwgYHJ0bDgyNjF4X3JlYWRfc3RhdHVzYCwgYHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZWAsIGBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5YCwgYHJ0bDgyNjF4X2Z3X2xvYWRgLCBgcnRsODI2MXhfY29uZmlnX2ludHJgLCBgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdGAsIGBydGw4MjYxeF9jb25maWdfYW5lZ2AsIGFuZCBgcnRsODI2MXhfY29uZmlnX2luaXRgLlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExldCdzIHNlZS4uLiBpcyBgQ09ORklHX1JFQUxURUtfUEhZYCB0aGUgb25seSBjb25maWcgbmVlZGVkPyBZZXMsIGl0IHNlZW1zIHRvIGJlLiBCdXQgd2FpdCwgYGdlbnBoeV9jNDVfc29mdF9yZXNldGAgYW5kIG90aGVycyBhcmUgaW4gYHBoeS1jNDUuY2AsIHdoaWNoIGNvbXBpbGVzIHdpdGggYENPTkZJR19QSFlMSUJgLiBBbmQgYENPTkZJR19SRUFMVEVLX1BIWWAgZGVwZW5kcyBvbiBgQ09ORklHX1BIWUxJQmAuIFNvLCBgQ09ORklHX1JFQUxURUtfUEhZYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYWN0aXZhdGluZyB0aGUgbmV3IGxvZ2ljLiBKdXN0IG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmNgIGlzIGNvbXBpbGVkIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODI2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MzcuNTAwNTE1NDgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDc3ODYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHktYzQ1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVxcdFxcdFxcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXFx0XFx0XFx0XFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6MzcuNTYxMzAwMzQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMjA5ODY2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwaHktYzQ1Lm9gIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcIlRoYXQncyBwYXJ0IG9mIGBsaWJwaHlgXCIuIE5hdHVyYWxseSwgaXQncyBvbmx5IGJ1aWx0IHdoZW4gYENPTkZJR19QSFlMSUJgIGlzIGVuYWJsZWQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYHJ0bDgyNjF4X2Z3X2xvYWRgLiBJdCdzIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfRldfTE9BREVSYCBpcyBlbmFibGVkLCB3aGljaCBpdCB1c3VhbGx5IGlzLiBcblxuVGltZSB0byByZWZpbmUgdGhhdCBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEkndmUgZ290IGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgY292ZXIgYWxsIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIFRoaW5raW5nIHRoaXMgdGhyb3VnaCwgSSdtIGxlYW5pbmcgdG93YXJkIHRoZXNlOiBgZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0YCwgYGdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlYCwgYGdlbnBoeV9jNDVfcmVhZF9tYXN0ZXJfc2xhdmVgLCBhbmQgdGhlbiB0aGUgYHJ0bDgyNjF4YCBmdW5jdGlvbnM6IGBydGw4MjYxeF9wcm9iZWAsIGBydGw4MjYxeF9nZXRfZmVhdHVyZXNgLCBgcnRsODI2MXhfcmVhZF9zdGF0dXNgLCBgcnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlYCwgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgLCBgcnRsODI2MXhfZndfbG9hZGAsIGBydGw4MjYxeF9jb25maWdfaW50cmAsIGBydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0YCwgYHJ0bDgyNjF4X2NvbmZpZ19hbmVnYCwgYW5kIGBydGw4MjYxeF9jb25maWdfaW5pdGAuIFllYWgsIHRoZXNlIGFsbCBsb29rIGxpa2UgZXhjZWxsZW50IGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuIFRoZXkgdG91Y2ggZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlIGRyaXZlcidzIG9wZXJhdGlvbiwgZnJvbSBoYXJkd2FyZSBpbnRlcmFjdGlvbiB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuXG5cbkknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlncyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIEkgdGhpbmsgYFJFQUxURUtfUEhZYCBpcyB0aGUgbWFpbiBvbmUgdG8ga2VlcCBhbiBleWUgb24uIEkgc2hvdWxkIGJlIGNvdmVyZWQgdGhlcmUuXG5cbkFscmlnaHQsIHRoYXQncyBlbm91Z2ggZm9yIG5vdy4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTkyOSwiT3V0cHV0VG9rZW5zIjoyODMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDc6MTk6NDUuODgyMjg5NzIxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM1ODY5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJFQUxURUtfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2VucGh5X2M0NV9zb2Z0X3Jlc2V0XCIsXG4gICAgXCJnZW5waHlfYzQ1X2FuX3NldHVwX21hc3Rlcl9zbGF2ZVwiLFxuICAgIFwiZ2VucGh5X2M0NV9yZWFkX21hc3Rlcl9zbGF2ZVwiLFxuICAgIFwicnRsODI2MXhfcHJvYmVcIixcbiAgICBcInJ0bDgyNjF4X2dldF9mZWF0dXJlc1wiLFxuICAgIFwicnRsODI2MXhfcmVhZF9zdGF0dXNcIixcbiAgICBcInJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZVwiLFxuICAgIFwicnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeVwiLFxuICAgIFwicnRsODI2MXhfZndfbG9hZFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2ludHJcIixcbiAgICBcInJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHRcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19hbmVnXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IE1hc3Rlci9TbGF2ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZvciBDbGF1c2UgNDUgUEhZcyBhbmQgaW50cm9kdWNlcyBhIG5ldyBSZWFsdGVrIFBIWSBkcml2ZXIgKFJUTDgyNjFDKSB3aXRoIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgcmVhY2hhYmxlIHZpYSBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHRocm91Z2ggVVNCIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbikgYW5kIGNvbnRhaW4gY29tcGxleCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnZW5waHlfYzQ1X3NvZnRfcmVzZXRcIixcbiAgICBcImdlbnBoeV9jNDVfYW5fc2V0dXBfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJnZW5waHlfYzQ1X3JlYWRfbWFzdGVyX3NsYXZlXCIsXG4gICAgXCJydGw4MjYxeF9wcm9iZVwiLFxuICAgIFwicnRsODI2MXhfZ2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJydGw4MjYxeF9yZWFkX3N0YXR1c1wiLFxuICAgIFwicnRsODI2MXhfdmVyaWZ5X2Zpcm13YXJlXCIsXG4gICAgXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCIsXG4gICAgXCJydGw4MjYxeF9md19sb2FkXCIsXG4gICAgXCJydGw4MjYxeF9jb25maWdfaW50clwiLFxuICAgIFwicnRsODI2MXhfaGFuZGxlX2ludGVycnVwdFwiLFxuICAgIFwicnRsODI2MXhfY29uZmlnX2FuZWdcIixcbiAgICBcInJ0bDgyNjF4X2NvbmZpZ19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgTWFzdGVyL1NsYXZlIGNvbmZpZ3VyYXRpb24gbG9naWMgZm9yIENsYXVzZSA0NSBQSFlzIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IFJlYWx0ZWsgUEhZIGRyaXZlciAoUlRMODI2MUMpIHdpdGggZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSByZWFjaGFibGUgdmlhIE1ESU8gYnVzIGVtdWxhdGlvbiAoZS5nLiwgdGhyb3VnaCBVU0IgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uKSBhbmQgY29udGFpbiBjb21wbGV4IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[1] Phase: Succeeded StartedAt: 2026-06-29 07:22:05 +0000 UTC FinishedAt: 2026-06-29 07:22:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 07:22:05 +0000 UTC FinishedAt: 2026-06-29 07:22:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2] Phase: Succeeded StartedAt: 2026-06-29 07:22:05 +0000 UTC FinishedAt: 2026-06-29 09:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 07:22:05 +0000 UTC FinishedAt: 2026-06-29 09:18:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 07:22:05 +0000 UTC FinishedAt: 2026-06-29 07:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 07:22:05 +0000 UTC FinishedAt: 2026-06-29 07:22:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7zbbm/series-workflow7zbbm-convert-artifact-1923720226/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 07:22:28 +0000 UTC FinishedAt: 2026-06-29 07:46:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 07:22:28 +0000 UTC FinishedAt: 2026-06-29 07:46:51 +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:*883d810f-ee9d-4e28-a400-a398b5494d4a,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-workflow7zbbm/series-workflow7zbbm-convert-artifact-1923720226/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": "6e4a6c16-0ef5-4373-88bd-80d8b5482ca5", "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-workflow7zbbm/series-workflow7zbbm-build-action-514270688/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 07:22:28 +0000 UTC FinishedAt: 2026-06-29 07:46:40 +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:*883d810f-ee9d-4e28-a400-a398b5494d4a,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-workflow7zbbm/series-workflow7zbbm-convert-artifact-1923720226/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": "6e4a6c16-0ef5-4373-88bd-80d8b5482ca5", "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-workflow7zbbm/series-workflow7zbbm-build-action-514270688/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 07:46:51 +0000 UTC FinishedAt: 2026-06-29 07:46:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-29 07:46:51 +0000 UTC FinishedAt: 2026-06-29 07:46:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 07:46:51 +0000 UTC FinishedAt: 2026-06-29 07:47:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-29 07:46:51 +0000 UTC FinishedAt: 2026-06-29 07:46:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7zbbm/series-workflow7zbbm-convert-artifact-4167661181/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 07:47:21 +0000 UTC FinishedAt: 2026-06-29 07:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-29 07:47:22 +0000 UTC FinishedAt: 2026-06-29 07:49:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6e4a6c16-0ef5-4373-88bd-80d8b5482ca5,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-workflow7zbbm/series-workflow7zbbm-build-action-514270688/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-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 07:49:36 +0000 UTC FinishedAt: 2026-06-29 07:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-29 07:49:36 +0000 UTC FinishedAt: 2026-06-29 07:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 07:49:36 +0000 UTC FinishedAt: 2026-06-29 08:23:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-29 07:49:36 +0000 UTC FinishedAt: 2026-06-29 08:23:44 +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:*883d810f-ee9d-4e28-a400-a398b5494d4a,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-workflow7zbbm/series-workflow7zbbm-convert-artifact-4167661181/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": "90efb1ee-e2ba-44cf-89ab-088c35e4d291", "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-workflow7zbbm/series-workflow7zbbm-build-action-1089025753/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-29 07:49:36 +0000 UTC FinishedAt: 2026-06-29 08:23:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*883d810f-ee9d-4e28-a400-a398b5494d4a,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-workflow7zbbm/series-workflow7zbbm-convert-artifact-4167661181/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": "90efb1ee-e2ba-44cf-89ab-088c35e4d291", "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-workflow7zbbm/series-workflow7zbbm-build-action-1089025753/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 08:23:44 +0000 UTC FinishedAt: 2026-06-29 08:23:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-29 08:23:44 +0000 UTC FinishedAt: 2026-06-29 08:23:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 08:23:44 +0000 UTC FinishedAt: 2026-06-29 08:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-29 08:23:44 +0000 UTC FinishedAt: 2026-06-29 08:25:44 +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:*90efb1ee-e2ba-44cf-89ab-088c35e4d291,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-workflow7zbbm/series-workflow7zbbm-build-action-1089025753/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-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 09:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 09:18:59 +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":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"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:*6e4a6c16-0ef5-4373-88bd-80d8b5482ca5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90efb1ee-e2ba-44cf-89ab-088c35e4d291,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-workflow7zbbm/series-workflow7zbbm-build-action-514270688/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-workflow7zbbm/series-workflow7zbbm-build-action-1089025753/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 08:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 08:26:53 +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":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"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-workflow7zbbm/series-workflow7zbbm-convert-artifact-2274579970/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 08:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 08:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-29 08:25:54 +0000 UTC FinishedAt: 2026-06-29 08:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-29 08:27:24 +0000 UTC FinishedAt: 2026-06-29 09:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zbbm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["genphy_c45_soft_reset","genphy_c45_an_setup_master_slave","genphy_c45_read_master_slave","rtl8261x_probe","rtl8261x_get_features","rtl8261x_read_status","rtl8261x_verify_firmware","rtl8261x_fw_execute_entry","rtl8261x_fw_load","rtl8261x_config_intr","rtl8261x_handle_interrupt","rtl8261x_config_aneg","rtl8261x_config_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"826f11dd-9a30-4aea-a042-99fee73b1446","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-29 08:27:24 +0000 UTC FinishedAt: 2026-06-29 09:18:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6e4a6c16-0ef5-4373-88bd-80d8b5482ca5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90efb1ee-e2ba-44cf-89ab-088c35e4d291,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-workflow7zbbm/series-workflow7zbbm-build-action-514270688/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-workflow7zbbm/series-workflow7zbbm-build-action-1089025753/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-workflow7zbbm/series-workflow7zbbm-convert-artifact-2274579970/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,}