Name: series-workflowhxgxf Phase: Succeeded StartedAt: 2026-07-25 13:14:44 +0000 UTC FinishedAt: 2026-07-25 18:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[0] Phase: Succeeded StartedAt: 2026-07-25 13:14:44 +0000 UTC FinishedAt: 2026-07-25 14:04:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 13:14:44 +0000 UTC FinishedAt: 2026-07-25 14:04:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE", "NET_UDP_TUNNEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE", "NET_UDP_TUNNEL" ], "series_id": "4d90b240-0908-4cd6-b443-dc185e2b1124" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "udp_tunnel_nic_device_sync_work", "udp_tunnel_nic_netdevice_event", "__udp_tunnel_nic_add_port", "__udp_tunnel_nic_del_port" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OywKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgICAmIzM0O19fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGViMjk0NWNlNzQzZTkyOWI4NzRjMjlmMjBlMGNmNzFjNmNiMzg5N2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzo1NToyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jIGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuaW5kZXggM2IzMmEwYWZhOTc5OGQuLjUzYTFhOWMxZjhiZmYwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuQEAgLTMyLDEzICYjNDM7MzIsMTIgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcbiAgKiBAbG9jazpcdHByb3RlY3RzIGFsbCBmaWVsZHNcbiAgKiBAbmVlZF9zeW5jOlx0YXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZFxuICAqIEBuZWVkX3JlcGxheTogc3BhY2Ugd2FzIGZyZWVkLCB3ZSBuZWVkIGEgcmVwbGF5IG9mIGFsbCBwb3J0c1xuLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWRcbiAgKiBAbl90YWJsZXM6XHRudW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzXG4gICogQG1pc3NlZDpcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXG4gICogQGVudHJpZXM6XHR0YWJsZSBvZiB0YWJsZXMgb2YgcG9ydHMgY3VycmVudGx5IG9mZmxvYWRlZFxuICAqL1xuIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XG4tXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHdvcms7XG4gXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTQ2LDcgJiM0Mzs0NSw2IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XG4gXG4gXHR1OCBuZWVkX3N5bmM6MTtcbiBcdHU4IG5lZWRfcmVwbGF5OjE7XG4tXHR1OCB3b3JrX3BlbmRpbmc6MTtcbiBcbiBcdHVuc2lnbmVkIGludCBuX3RhYmxlcztcbiBcdHVuc2lnbmVkIGxvbmcgbWlzc2VkO1xuQEAgLTMwMSwxMSAmIzQzOzI5OSwxMCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jIHx8IHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcpXG4mIzQzO1x0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4mIzQzO1x0cXVldWVfZGVsYXllZF93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmssIDApO1xuIH1cbiBcbiBzdGF0aWMgYm9vbFxuQEAgLTczMSwxMiAmIzQzOzcyOCwxNyBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4gPVxuLVx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHVkcF90dW5uZWxfbmljLCB3b3JrKTtcbiYjNDM7XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMsIHdvcmsud29yayk7XG4gXG4tXHRydG5sX2xvY2soKTtcbiYjNDM7XHQvKiBXZSBjYW5ub3QgYmxvY2sgb24gUlROTCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgZGVhZGxvY2sgd2l0aFxuJiM0MztcdCAqIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoKSBjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpXG4mIzQzO1x0ICogd2hpbGUgaG9sZGluZyBSVE5MLiBSZXF1ZXVlIHdpdGggMSBqaWZmeSBkZWxheSBpZiBSVE5MIGlzIGNvbnRlbmRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XG4mIzQzO1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaywgMSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4tXG4tXHR1dG4tXHUwMDNld29ya19wZW5kaW5nID0gMDtcbiBcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmModXRuLVx1MDAzZWRldiwgdXRuKTtcbiBcbiBcdGlmICh1dG4tXHUwMDNlbmVlZF9yZXBsYXkpXG5AQCAtNzU3LDcgJiM0Mzs3NTksNyBAQCB1ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcbiBcdGlmICghdXRuKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdHV0bi1cdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xuLVx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbiYjNDM7XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ1dG4tXHUwMDNld29yaywgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xuQEAgLTkwMSwxMSAmIzQzOzkwMywxMSBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0dWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pO1xuIFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG4gXG4tXHQvKiBXYWl0IGZvciB0aGUgd29yayB0byBiZSBkb25lIHVzaW5nIHRoZSBzdGF0ZSwgbmV0ZGV2IGNvcmUgd2lsbFxuLVx0ICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuXG4mIzQzO1x0LyogTWFrZSBzdXJlIG5vIHdvcmsgaXMgcnVubmluZyBvciBxdWV1ZWQgYmVmb3JlIGZyZWVpbmcgQHV0bi5cbiYjNDM7XHQgKiBUaGUgd29yayBoYW5kbGVyIHVzZXMgcnRubF90cnlsb2NrKCksIHNvIGl0IHdpbGwgbm90IGRlYWRsb2NrXG4mIzQzO1x0ICogYWdhaW5zdCB0aGUgUlROTCB3ZSBhcmUgaG9sZGluZyBoZXJlLlxuIFx0ICovXG4tXHRpZiAodXRuLVx1MDAzZXdvcmtfcGVuZGluZylcbi1cdFx0cmV0dXJuO1xuJiM0MztcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ1dG4tXHUwMDNld29yayk7XG4gXG4gXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XG4gcmVsZWFzZV9kZXY6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OywKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgICAmIzM0O19fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGViMjk0NWNlNzQzZTkyOWI4NzRjMjlmMjBlMGNmNzFjNmNiMzg5N2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMzo1NToyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCmluZGV4IDNiMzJhMGFmYTk3OThkLi41M2ExYTljMWY4YmZmMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCkBAIC0zMiwxMyAmIzQzOzMyLDEyIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7CiAgKiBAbG9jazoJcHJvdGVjdHMgYWxsIGZpZWxkcwogICogQG5lZWRfc3luYzoJYXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZAogICogQG5lZWRfcmVwbGF5OiBzcGFjZSB3YXMgZnJlZWQsIHdlIG5lZWQgYSByZXBsYXkgb2YgYWxsIHBvcnRzCi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkCiAgKiBAbl90YWJsZXM6CW51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXMKICAqIEBtaXNzZWQ6CWJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duCiAgKiBAZW50cmllczoJdGFibGUgb2YgdGFibGVzIG9mIHBvcnRzIGN1cnJlbnRseSBvZmZsb2FkZWQKICAqLwogc3RydWN0IHVkcF90dW5uZWxfbmljIHsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKJiM0MzsJc3RydWN0IGRlbGF5ZWRfd29yayB3b3JrOwogCiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIApAQCAtNDYsNyAmIzQzOzQ1LDYgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHsKIAogCXU4IG5lZWRfc3luYzoxOwogCXU4IG5lZWRfcmVwbGF5OjE7Ci0JdTggd29ya19wZW5kaW5nOjE7CiAKIAl1bnNpZ25lZCBpbnQgbl90YWJsZXM7CiAJdW5zaWduZWQgbG9uZyBtaXNzZWQ7CkBAIC0zMDEsMTEgJiM0MzsyOTksMTAgQEAgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHN0YXRpYyB2b2lkCiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKLQlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jIHx8IHV0bi0mZ3Q7d29ya19wZW5kaW5nKQomIzQzOwlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jKQogCQlyZXR1cm47CiAKLQlxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgJmFtcDt1dG4tJmd0O3dvcmspOwotCXV0bi0mZ3Q7d29ya19wZW5kaW5nID0gMTsKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgJmFtcDt1dG4tJmd0O3dvcmssIDApOwogfQogCiBzdGF0aWMgYm9vbApAQCAtNzMxLDEyICYjNDM7NzI4LDE3IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID0KLQkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB1ZHBfdHVubmVsX25pYywgd29yayk7CiYjNDM7CQljb250YWluZXJfb2Yod29yaywgc3RydWN0IHVkcF90dW5uZWxfbmljLCB3b3JrLndvcmspOwogCi0JcnRubF9sb2NrKCk7CiYjNDM7CS8qIFdlIGNhbm5vdCBibG9jayBvbiBSVE5MIGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBkZWFkbG9jayB3aXRoCiYjNDM7CSAqIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoKSBjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpCiYjNDM7CSAqIHdoaWxlIGhvbGRpbmcgUlROTC4gUmVxdWV1ZSB3aXRoIDEgamlmZnkgZGVsYXkgaWYgUlROTCBpcyBjb250ZW5kZWQuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7CiYjNDM7CQlxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCAmYW1wO3V0bi0mZ3Q7d29yaywgMSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAltdXRleF9sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKLQotCXV0bi0mZ3Q7d29ya19wZW5kaW5nID0gMDsKIAlfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi0mZ3Q7ZGV2LCB1dG4pOwogCiAJaWYgKHV0bi0mZ3Q7bmVlZF9yZXBsYXkpCkBAIC03NTcsNyAmIzQzOzc1OSw3IEBAIHVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLAogCWlmICghdXRuKQogCQlyZXR1cm4gTlVMTDsKIAl1dG4tJmd0O25fdGFibGVzID0gbl90YWJsZXM7Ci0JSU5JVF9XT1JLKCZhbXA7dXRuLSZndDt3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTsKJiM0MzsJSU5JVF9ERUxBWUVEX1dPUksoJmFtcDt1dG4tJmd0O3dvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspOwogCW11dGV4X2luaXQoJmFtcDt1dG4tJmd0O2xvY2spOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IG5fdGFibGVzOyBpJiM0MzsmIzQzOykgewpAQCAtOTAxLDExICYjNDM7OTAzLDExIEBAIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJdWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pOwogCXVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpOwogCi0JLyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGwKLQkgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS4KJiM0MzsJLyogTWFrZSBzdXJlIG5vIHdvcmsgaXMgcnVubmluZyBvciBxdWV1ZWQgYmVmb3JlIGZyZWVpbmcgQHV0bi4KJiM0MzsJICogVGhlIHdvcmsgaGFuZGxlciB1c2VzIHJ0bmxfdHJ5bG9jaygpLCBzbyBpdCB3aWxsIG5vdCBkZWFkbG9jawomIzQzOwkgKiBhZ2FpbnN0IHRoZSBSVE5MIHdlIGFyZSBob2xkaW5nIGhlcmUuCiAJICovCi0JaWYgKHV0bi0mZ3Q7d29ya19wZW5kaW5nKQotCQlyZXR1cm47CiYjNDM7CWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3V0bi0mZ3Q7d29yayk7CiAKIAl1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7CiByZWxlYXNlX2RldjoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzNQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVRFAgVHVubmVsIE5JQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkLCBidXQgY3J1Y2lhbCwgY2hhbmdlLiBUaGV5JiMzOTtyZSBzd2l0Y2hpbmcgZnJvbSBgc3RydWN0IHdvcmtfc3RydWN0YCB0byBgc3RydWN0IGRlbGF5ZWRfd29ya2AgaW4gdGhlIGBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNgLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjbHVlLiBUaGVuLCBhbGwgdGhlIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGFyZSBiZWluZyB1cGRhdGVkIHRvIHVzZSB0aGUgZGVsYXllZCB3b3JrIGVxdWl2YWxlbnRzOiBgcXVldWVfZGVsYXllZF93b3JrYCwgYElOSVRfREVMQVlFRF9XT1JLYCwgYW5kIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmNgLiBUaGUgaW1wb3J0YW50IGZ1bmN0aW9uIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCBpcyBub3cgdXNpbmcgYHJ0bmxfdHJ5bG9jaygpYCB3aXRoIGEgcmV0cnkgdXNpbmcgYHF1ZXVlX2RlbGF5ZWRfd29ya2AgaWYgdGhlIGxvY2sgaXMgbm90IGF2YWlsYWJsZS4gVGhpcyBpcyBhIHRlbGwtdGFsZSBzaWduIG9mIHRyeWluZyB0byBmaXggYSBjb25jdXJyZW5jeSBwcm9ibGVtLCBsaWtlbHkgYSBkZWFkbG9jayBvciByYWNlIGNvbmRpdGlvbiwgd2l0aGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkaW5nIHBhdGguCgpUaGlzIGlzIGltbWVkaWF0ZWx5IGZsYWdnZWQgYXMgc29tZXRoaW5nIHRoYXQgYWJzb2x1dGVseSAqbmVlZHMqIGZ1enppbmcuIFdlIGhhdmUgYSBzb2xpZCBsZWFkIG9uIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWRkcmVzc2luZyBhIHNwZWNpZmljIHR5cGUgb2YgaXNzdWUuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2Agc291cmNlIGZpbGUgaXRzZWxmIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbmZpZyBvcHRpb25zIGFuZCBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGlzIHVzZWQgYW5kIGhvdyB0aGUgY2hhbmdlcyBhZmZlY3QgaXQ6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLCBhbmQgYHVkcF90dW5uZWxfbmljX2FsbG9jYC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBjaGVjayBgbmV0L2lwdjQvTWFrZWZpbGVgIG9yIGBuZXQvaXB2NC9LY29uZmlnYCB0byBkZXRlcm1pbmUgd2hpY2ggY29uZmlnIG9wdGlvbnMgZW5hYmxlIGB1ZHBfdHVubmVsX25pYy5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlbGluZSB0byB3b3JrIGZyb20gd2hlbiB0ZXN0aW5nIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfTkVUX0lQR1JFKSAmIzQzOz0gaXBfZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlOjMxOnVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMi1vYmotJChDT05GSUdfTkVUX1VEUF9UVU5ORUwpICYjNDM7PSB1ZHBfdHVubmVsLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODkxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIC0gVURQIFR1bm5lbCBNb2R1bGUqKgoKUmlnaHQsIHNvIGBDT05GSUdfTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQuIFRoYXQgc2hvdWxkIGJyaW5nIGluIHRoZSBgdWRwX3R1bm5lbF9uaWMub2AgbW9kdWxlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hlcmUgZXhhY3RseSB0aGlzIGlzIGRlZmluZWQuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX1VEUF9UVU5ORUxgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXBzdHJlYW0gY2hhbmdlcyB0aGF0IEkgYW0gbm90IGF3YXJlIG9mLCBvciBpZiB0aGVyZSBpcyBhbnkgdW51c3VhbCBjb25maWcgZGVwZW5kZW5jeSB0aGF0IEkgbmVlZCB0byBiZSBjYXJlZnVsIG9mLiBUaGF0JiMzOTtzIGFsd2F5cyB0aGUgZmlyc3QgcGxhY2UgSSBzdGFydCB3aXRoIHRoZXNlIG5ldHdvcmstcmVsYXRlZCBvcHRpb25zIHRvIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gQSBxdWljayBjaGVjayBvZiB0aGF0IEtjb25maWcgZmlsZSBzaG91bGQgY29uZmlybSB0aGUgbGluayBhbmQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9VRFBfVFVOTkVMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMTUtXG5uZXQvaXB2NC9LY29uZmlnOjMxNjpjb25maWcgTkVUX1VEUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzE3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjM2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCBJIGNhbiBwdWxsIG91dCBvZiB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBORVRfVURQX1RVTk5FTCBUcmlzdGF0ZSoqCgpSaWdodCwgc28gYE5FVF9VRFBfVFVOTkVMYCBpcyBhIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBpdCYjMzk7cyBsaWtlbHkgYSBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gYSBkaXJlY3RseSB1c2VyLXNlbGVjdGFibGUgb25lLiBUaGUgdGV4dCBub3RlcyB0aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIFZYTEFOIG9yIEdFTkVWRSwgYXJlIHByb2JhYmx5IHRoZSBvbmVzIGRyaXZpbmcgaXRzIHNlbGVjdGlvbi4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcHJvYmFibHkgYW4gdW5kZXJseWluZyBidWlsZGluZyBibG9jayBmb3IgdGhvc2UgdHVubmVsaW5nIHByb3RvY29scy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zIGlzIHB1bGxpbmcgaW4gYE5FVF9VRFBfVFVOTkVMYCwgb3IgaWYgaXQmIzM5O3Mgb3RoZXIgb3B0aW9ucyBlbnRpcmVseS4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9VRFBfVFVOTkVMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZz0yPWNvbmZpZyBSRE1BX1JYRVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy01LVx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6NjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnLTctXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTc2LVx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Nzc6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctNzgtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cdHNlbGVjdCBEU1RfQ0FDSEVcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA3Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwOC1cdHNlbGVjdCBDUllQVE9cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMi1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjM0LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ny1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDg6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ5LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjItXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2NC1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzQtXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjkxLVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMzA0LVx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJUF9NVUxUSUNBU1RcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxubmV0L2lwdjQvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjMyMzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZy0zMjQtXHRoZWxwXG4tLVxubmV0L2wydHAvS2NvbmZpZz02PW1lbnVjb25maWcgTDJUUFxuLS1cbm5ldC9sMnRwL0tjb25maWctOC1cdGRlcGVuZHMgb24gSU5FVFxubmV0L2wydHAvS2NvbmZpZzo5Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvbDJ0cC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbm5ldC9yeHJwYy9LY29uZmlnPTY9Y29uZmlnIEFGX1JYUlBDXG4tLVxubmV0L3J4cnBjL0tjb25maWctMTEtXHRzZWxlY3QgS0VZU1xubmV0L3J4cnBjL0tjb25maWc6MTI6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9yeHJwYy9LY29uZmlnLTEzLVx0aGVscFxuLS1cbm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTEyLVx0c2VsZWN0IE5FVF9DUkMzMkNcbm5ldC9zY3RwL0tjb25maWc6MTM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9zY3RwL0tjb25maWctMTQtXHRoZWxwXG4tLVxubmV0L3RpcGMvS2NvbmZpZz0zMD1jb25maWcgVElQQ19NRURJQV9VRFBcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTMyLVx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnOjMzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvdGlwYy9LY29uZmlnLTM0LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU0MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBVRFAgVHVubmVsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgZW5hYmxlIFVEUCB0dW5uZWxpbmcgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlnLiBUaGUga2V5IGhlcmUgaXMgYE5FVF9VRFBfVFVOTkVMYC4gSXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYSBsb3Qgb2YgZGlmZmVyZW50IGZlYXR1cmVzLCB3aGljaCBpcyBwcmV0dHkgY29tbW9uLiBNeSBmaXJzdCBpbnN0aW5jdCB3YXMgd2hldGhlciB3ZSBjb3VsZCBqdXN0IGRpcmVjdGx5IGxpc3QgYE5FVF9VRFBfVFVOTkVMYCBpbiBgRW5hYmxlQ29uZmlnc2AsIGFsb25nc2lkZSBvcHRpb25zIGxpa2UgYFZYTEFOYCBvciBgR0VORVZFYC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIGBORVRfVURQX1RVTk5FTGAgaXMgYSB0cmlzdGF0ZSBjb25maWcsIGFuZCBiZWNhdXNlIGl0IGxhY2tzIGEgZGlyZWN0IHByb21wdCwgaXQgY2FuICpvbmx5KiBiZSBzZWxlY3RlZCBieSBvdGhlciBjb25maWdzLiBTbywgd2UgbmVlZCB0byBiZSBtb3JlIGV4cGxpY2l0OyB0aGUgcmlnaHQgYXBwcm9hY2ggaXMgdG8gZW5hYmxlIHNvbWV0aGluZyB0aGF0IHNlbGVjdHMgaXQsIGFuZCB0aGF0IHdvdWxkIGJlIGBWWExBTmAsIGBHRU5FVkVgLCBvciBldmVuIGBORVRfRk9VYC4gTWFrZXMgc2Vuc2UuCgpUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYWxsIG9mIHRoaXMgd29ya3MsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBJIG5lZWQgdG8gcmV2aWV3IHdoYXQgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBmcm9tIHRoYXQgZmlsZSwgYW5kIGFsc28gd2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBwaWN0dXJlIG9mIGhvdyB0aGUgVURQIHR1bm5lbCBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIGFuZCBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgTWlzc2luZyBTeW1ib2wqKgoKSG1tLCBzdHJhbmdlLiBJIHdhcyBleHBlY3RpbmcgYHVkcF90dW5uZWxfbmljLmNgIHRvIGV4cG9ydCBzb21ldGhpbmcsIGJ1dCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IGBFWFBPUlRfU1lNQk9MYCBtYWNybyBpbiB0aGF0IGZpbGUuIFRoYXQmIzM5O3MgdW51c3VhbCwgZXNwZWNpYWxseSBmb3IgYSBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50LiBPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB3aGVyZSB0aGUgcmVsZXZhbnQgc3ltYm9scyAqc2hvdWxkKiBiZS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uIGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGl0JiMzOTtzIHZlcnkgbGlrZWx5IHRoYXQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGEgYnJvYWRlciBkZWZpbml0aW9uIGxpdmVzIGluIGVpdGhlciBgbmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNgIG9yLCBwb3RlbnRpYWxseSwgaW4gYW5vdGhlciBmaWxlIGFsc28gaW4gdGhlIGBuZXQvaXB2NGAgZGlyZWN0b3J5IHN1Y2ggYXMgdGhlIGB1ZHBfdHVubmVsX25pYy5jYCBmaWxlIGFnYWluLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRocm91Z2ggb25lIG9mIHRob3NlIHNvdXJjZSBmaWxlcyB0byBzZWUgaWYgYSBzaW1pbGFyIHN5bWJvbCBleHBvcnQgZXhpc3RzIG9yIGlmIGl0JiMzOTtzIHBsYWNlZCBkaWZmZXJlbnRseS4gTGV0IG1lIGNoZWNrIHRoZSBleHBvcnRzIGluIHRob3NlIGZpbGVzIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLiBJIHN1c3BlY3QgdGhlIGNvcmUgZGVmaW5pdGlvbnMgd2lsbCBiZSBpbiBvbmUgb2YgdGhvc2Ugc3BvdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMj1pbnQgdWRwX3NvY2tfY3JlYXRlNChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB1ZHBfcG9ydF9jZmcgKmNmZyxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy01OS19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzo2MDpFWFBPUlRfU1lNQk9MKHVkcF9zb2NrX2NyZWF0ZTQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtNjEtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9NzE9dm9pZCBzZXR1cF91ZHBfdHVubmVsX3NvY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtOTctfVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6OTg6RVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfdWRwX3R1bm5lbF9zb2NrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTk5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTExMC19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMTE6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEyLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTEzPXZvaWQgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEyMy19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMjQ6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTI1LVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEyNz12b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNDQtfVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MTQ1OkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0Ni1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xNDg9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9kZWxfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTY1LX1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjE2NjpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX25vdGlmeV9kZWxfcnhfcG9ydCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNjctXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xNjg9dm9pZCB1ZHBfdHVubmVsX3htaXRfc2tiKHN0cnVjdCBydGFibGUgKnJ0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTg5LX1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjE5MDpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX3htaXRfc2tiKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE5MS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTE5Mj12b2lkIHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xOTktfVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MjAwOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfc29ja19yZWxlYXNlKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTIwMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTIwMj1zdHJ1Y3QgbWV0YWRhdGFfZHN0ICp1ZHBfdHVuX3J4X2RzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAgdW5zaWduZWQgc2hvcnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTIyMi19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoyMjM6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bl9yeF9kc3QpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMjI0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MjI1PXN0cnVjdCBydGFibGUgKnVkcF90dW5uZWxfZHN0X2xvb2t1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTI3MS19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoyNzI6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9kc3RfbG9va3VwKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTI3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipVRFAgVHVubmVsIE5JQyBNb2R1bGUgLSBSZS1FeGFtaW5hdGlvbioqCgpIbW0sIHRoYXQmIzM5O3Mgb2RkLiBJIHdhcyBqdXN0IHdvcmtpbmcgd2l0aCBgdWRwX3R1bm5lbF9uaWMuY2AsIGFuZCBzb21ldGhpbmcgZmVsdCBvZmYuIEkmIzM5O20gYWxtb3N0IGNlcnRhaW4gSSB3YXMgbG9va2luZyBmb3IgYW4gZXhwb3J0ZWQgZnVuY3Rpb24gb3Igc3ltYm9sLCBidXQgbm93IEkmIzM5O20gZHJhd2luZyBhIGJsYW5rLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2R1bGUgKml0c2VsZiogaXNuJiMzOTt0IGV4cG9zaW5nIGFueXRoaW5nIGRpcmVjdGx5LiBPa2F5LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlJiMzOTtzIHNvdXJjZS4gQmV0dGVyIGdvIGJhY2sgYW5kIGNvbmZpcm0gbXkgYXNzdW1wdGlvbiwgZXNwZWNpYWxseSB0aGUgZmlsZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIFRoZXJlIGhhcyB0byBiZSBhIHJlYXNvbiB3aHkgSSB3YXMgbG9va2luZyBhdCB0aGF0IGZpbGUuIFBlcmhhcHMgSSB3YXMgZm9jdXNlZCBvbiB0aGUgaW50ZXJuYWwgbWVjaGFuaXNtcyBhbmQgZ290IGxvc3QgaW4gdGhlIGZsb3cuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cyDigJMgbWF5YmUgbXkgZ29hbCBoYXMgY2hhbmdlZCwgb3IgdGhlIGZ1bmN0aW9uYWxpdHkgSSBhc3N1bWVkIHdhcyB0aGVyZSwgc2ltcGx5IGlzbiYjMzk7dC4gVGltZSBmb3IgYW5vdGhlciBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzczMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgTW9kdWxlIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgbW9kdWxlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoZSBzeW1ib2wgSSBuZWVkIG1pZ2h0IGJlIGV4cG9ydGVkIGZyb20gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBCdXQgSSBkaWRuJiMzOTt0IGltbWVkaWF0ZWx5IHNlZSBpdCwgd2hpY2ggaXMgZnJ1c3RyYXRpbmcuIEhvbGQgb24sIGxldCYjMzk7cyBzdGVwIGJhY2sgZm9yIGEgc2Vjb25kIOKAkyBgdWRwX3R1bm5lbF9uaWMuY2AgaXNuJiMzOTt0IGEgc3RhbmRhbG9uZSBvYmplY3Q7IGl0JiMzOTtzIGNvbXBpbGVkIGludG8gYHVkcF90dW5uZWwub2AgYWxvbmcgd2l0aCBgdWRwX3R1bm5lbF9jb3JlLmNgLiBIbW0sIHJpZ2h0LCBzbyBsb29raW5nIGF0ICpqdXN0KiBgdWRwX3R1bm5lbF9uaWMuY2AgbWlnaHQgYmUgdG9vIG5hcnJvdy4KCkFscmlnaHQsIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBleHBsaWNpdGx5IHNlYXJjaCBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYWdhaW4sIHNwZWNpZmljYWxseSBmb3IgYEVYUE9SVF9TWU1CT0xgLiBJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gKldhaXQqLi4uIEkgKmp1c3QqIGRpZCB0aGF0LCBkaWRuJiMzOTt0IEk/IE9rYXksIG5vLCBubywgbGV0JiMzOTtzIG5vdCBnZXQgYWhlYWQgb2Ygb3Vyc2VsdmVzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIGEgc3lzdGVtYXRpYyBhcHByb2FjaC4gTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBsb29raW5nIGRpcmVjdGx5IGZvciBmdW5jdGlvbnMgYmVnaW5uaW5nIHdpdGggYHVkcF90dW5uZWxfbmljX2Agd2l0aGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCwgYW5kIHNlZWluZyB3aGF0IHRoYXQgdHVybnMgdXAuIEhvcGVmdWxseSwgc29tZXRoaW5nIHdpbGwganVtcCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnZvaWQgdWRwX3R1bm5lbF9uaWNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGB1ZHBfdHVubmVsX25pYy5jYCBmb3IgUmVkIEZsYWdzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBob3cgVURQIHR1bm5lbGluZyB3b3JrcywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYXJvdW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIG9yIG1heWJlIGp1c3Qgb3Zlcmxvb2tlZCBjb2RlLiBJIG5lZWQgdG8gYmUgKnRob3JvdWdoKiB3aGVuIGluc3BlY3RpbmcgbmV0d29ya2luZyBjb2RlLgoKSSB3YW50IHRvIGRpdmUgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGEgdGFyZ2V0ZWQgY29kZSByZXZpZXcuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGB1ZHBfdHVubmVsX25pY19gIGZ1bmN0aW9ucy4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSB3YW50IHRvIGlkZW50aWZ5IGFueSBgdWRwX3R1bm5lbF9uaWNfYCBmdW5jdGlvbnMgdGhhdCAqZG9uJiMzOTt0KiBleHBsaWNpdGx5IGRlY2xhcmUgYSByZXR1cm4gdHlwZSBvZiBgdm9pZGAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvZGUgc21lbGwuIE5vbi12b2lkIGZ1bmN0aW9ucyB3aXRob3V0IGEgcmV0dXJuIHZhbHVlIHByZXNlbnQgY2FuIGJlIGEgc291cmNlIG9mIHByb2JsZW1zLCB1bmRlZmluZWQgYmVoYXZpb3IsIG9yIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGJ1Z3MgZHVlIHRvIHVuZXhwZWN0ZWQgcmV0dXJuIHZhbHVlcyB0aGF0IGFyZSBub3QgaGFuZGxlZC4gSXQmIzM5O3MgYSBxdWljayB3YXkgdG8gZmxhZyBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gZGF0YSBoYW5kbGluZywgZXJyb3IgY29uZGl0aW9ucywgb3Igc2VjdXJpdHkuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBkZXZpYXRlIGZyb20gZXhwZWN0ZWQgYmVoYXZpb3Igb3IgcHJvdmlkZSBhbiB1bmludGVuZGVkIG9wcG9ydHVuaXR5IGZvciBtYW5pcHVsYXRpb24uIEl0JiMzOTtzIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgdGhlIGJhc2ljcyBhcmUgY292ZXJlZCwgYW5kIG5vdGhpbmcgY3JpdGljYWwgaXMgc2xpcHBpbmcgdGhyb3VnaCB0aGUgY3JhY2tzLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU3MCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTI6ZW51bSB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeV9mbGFncyB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzLVx0VURQX1RVTk5FTF9OSUNfRU5UUllfQUREXHQ9IEJJVCgwKSxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxOTpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMC1cdF9fYmUxNiBwb3J0O1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUwLVx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUxOlx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyaWVzW10gX19jb3VudGVkX2J5KG5fdGFibGVzKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTItfTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU2LSAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NzpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTgtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU5OnN0YXRpYyBjb25zdCBjaGFyICp1ZHBfdHVubmVsX25pY190dW5uZWxfdHlwZV9uYW1lKHVuc2lnbmVkIGludCB0eXBlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03Mz1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NDp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc1LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5PXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgwOnVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3ByZXNlbnQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODEte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODU9c3RhdGljIGJvb2xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY6dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJvemVuKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxPXN0YXRpYyB2b2lkXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkyOnVkcF90dW5uZWxfbmljX2VudHJ5X2ZyZWV6ZV91c2VkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTQ6XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NS1cdFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gVURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTg9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTk6dWRwX3R1bm5lbF9uaWNfZW50cnlfdW5mcmVlemUoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTAwLXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwND1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDU6dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwNi17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMTE9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTEyOnVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMTM6XHRcdFx0ICAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTE0LVx0XHRcdCAgIHVuc2lnbmVkIGludCBmbGFnKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTIwPXN0YXRpYyB2b2lkXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyMTp1ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEyMi1cdFx0XHQgICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTMwPXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMTp1ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTMyLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTMzOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM0LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzctXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzODpcdFx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzktXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDM9c3RhdGljIGJvb2xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ0OnVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE0NS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE0NjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTQ3LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNTItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1MzpcdFx0dGFibGUgPSBcdTAwMjZkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2V0YWJsZXNbaV07XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NC1cdFx0aWYgKCF0ZXN0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1Ny1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgdGFibGUtXHUwMDNlbl9lbnRyaWVzOyBqJiM0MzsmIzQzOylcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTU4Olx0XHRcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU5LVx0XHRcdFx0cmV0dXJuIHRydWU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNjU9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY2Ol9fdWRwX3R1bm5lbF9uaWNfZ2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNjctXHRcdFx0ICB1bnNpZ25lZCBpbnQgaWR4LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTY4LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY5Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTcwLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNzUtXHRpZiAoZW50cnktXHUwMDNldXNlX2NudClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTc2Olx0XHR1ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KGVudHJ5LCB0aSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE3Ny19XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNzk9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTgwOl9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4MS1cdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlkeCwgdTggcHJpdilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE4Nj1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxODc6dWRwX3R1bm5lbF9uaWNfZW50cnlfdXBkYXRlX2RvbmUoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTg4LVx0XHRcdFx0IGludCBlcnIpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMDk9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEwOnVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMTEtXHRcdFx0ICAgICAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjEzLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjE0Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjE1LVx0c3RydWN0IHVkcF90dW5uZWxfaW5mbyB0aTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxOC1cdGVudHJ5ID0gXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIxOTpcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKGVudHJ5KSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjIwLVx0XHRyZXR1cm47XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjIyOlx0dWRwX3R1bm5lbF9uaWNfdGlfZnJvbV9lbnRyeShlbnRyeSwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjMtXHRpZiAoZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI0Olx0XHRlcnIgPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFx1MDAyNnRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI1LVx0ZWxzZVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjY6XHRcdGVyciA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXVuc2V0X3BvcnQoZGV2LCB0YWJsZSwgaWR4LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjctXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZ0aSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyODpcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKGVudHJ5LCBlcnIpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjktXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMzMtXHRcdFx0ICAgIGJlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXBvcnQpLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMzQ6XHRcdFx0ICAgIHVkcF90dW5uZWxfbmljX3R1bm5lbF90eXBlX25hbWUoZW50cnktXHUwMDNldHlwZSksXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIzNS1cdFx0XHQgICAgZXJyKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIzOD1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMzk6dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDAtXHRcdFx0XHQgICBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQxLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQyOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQzLVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDYtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NzpcdFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoZGV2LCB1dG4sIGksIGopO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDgtfVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUwPXN0YXRpYyB2b2lkXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI1MTp1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTItXHRcdFx0XHQgICAgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1My17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI1NDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjYwLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNjE6XHRcdFx0aWYgKHVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3F1ZXVlZChcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1tpXVtqXSkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI2Mi1cdFx0XHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjcxLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI3MjpcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzMtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI3NC1cdFx0XHRlbnRyeSA9IFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNzU6XHRcdFx0aWYgKHVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3F1ZXVlZChlbnRyeSkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI3NjpcdFx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKGVudHJ5LCBlcnIpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzctXHRcdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4MT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODI6X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjgzLXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4Ni1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjg3Olx0aWYgKGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXN5bmNfdGFibGUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI4ODpcdFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoZGV2LCB1dG4pO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODktXHRlbHNlXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI5MDpcdFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5NS1cdCAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTY6XHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KGRldiwgdXRuKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjk3LX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI5OT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMDA6dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwMS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMDQtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwNTpcdHF1ZXVlX2RlbGF5ZWRfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFx1MDAyNnV0bi1cdTAwM2V3b3JrLCAwKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzA2LX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwOD1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMDk6dWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZShjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cdFx0XHRcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzE1PXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxNjp1ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTctXHRcdFx0ICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzE4LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzE5Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzIwLVx0dW5zaWduZWQgaW50IGk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMjg6XHRcdGlmICh1ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKFx1MDAyNmluZm8tXHUwMDNldGFibGVzW2ldLCB0aSkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMyOS1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMzMz1zdGF0aWMgaW50XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNDp1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMzUtXHRcdFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM2LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzM3Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzM4Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM5LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDQtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NTpcdFx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpIFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDYtXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM1NT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNTY6dWRwX3R1bm5lbF9uaWNfZW50cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXHRcdFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTgte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNTk6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNjAtXHRib29sIGRvZGd5ID0gZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX09QX0ZBSUw7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zODktXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM5MDpcdHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHV0biwgZW50cnksIHRvKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzkxLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM5Mz1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozOTQ6dWRwX3R1bm5lbF9uaWNfZW50cnlfdHJ5X2FkaihzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk1LVx0XHRcdCAgICAgdW5zaWduZWQgaW50IHRhYmxlLCB1bnNpZ25lZCBpbnQgaWR4LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk3LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mzk4Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSA9ICBcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1t0YWJsZV1baWR4XTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MDA6XHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgfHxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDAxLVx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgIT0gdGktXHUwMDNlcG9ydCB8fFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MDU6XHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJvemVuKGVudHJ5KSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA2LVx0XHRyZXR1cm4gdHJ1ZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA3LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MDg6XHR1ZHBfdHVubmVsX25pY19lbnRyeV9hZGoodXRuLCB0YWJsZSwgaWR4LCB1c2VfY250X2Fkaik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQwOS1cdHJldHVybiB0cnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDE3PXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQxODp1ZHBfdHVubmVsX25pY190cnlfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQxOS1cdFx0XHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGksIGludCB1c2VfY250X2Fkailcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDIwLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDIxOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjItXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQyNC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDI1Olx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDI2Olx0XHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDI3LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDI5LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB0YWJsZS1cdTAwM2VuX2VudHJpZXM7IGomIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MzA6XHRcdFx0aWYgKHVkcF90dW5uZWxfbmljX2VudHJ5X3RyeV9hZGoodXRuLCBpLCBqLCB0aSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMxLVx0XHRcdFx0XHRcdFx0IHVzZV9jbnRfYWRqKSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQzOD1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Mzk6dWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDAtXHRcdFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDEte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDI6XHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgJiM0MzsxKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDQzLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0NT1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDY6dWRwX3R1bm5lbF9uaWNfZGVsX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDctXHRcdFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDgte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDk6XHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgLTEpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTAtfVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDUyPXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ1Mzp1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTQtXHRcdCAgICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU1LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDU2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTctXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1OS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYwOlx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYxOlx0XHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDYyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY0LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB0YWJsZS1cdTAwM2VuX2VudHJpZXM7IGomIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2NTpcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2Ny1cdFx0XHRlbnRyeSA9IFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Njg6XHRcdFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY5LVx0XHRcdFx0Y29udGludWU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NzMtXHRcdFx0ZW50cnktXHUwMDNldXNlX2NudCA9IDE7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ3NDpcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZSh1dG4sIGVudHJ5LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NzUtXHRcdFx0XHRcdFx0ICAgVURQX1RVTk5FTF9OSUNfRU5UUllfQUREKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ4OT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTA6X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkxLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDkyOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkzLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MDYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUwNzpcdGlmICghdWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MDgtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUxMy1cdCAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTQ6XHRpZiAodWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MTUtXHRcdHJldHVybjtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE2LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTc6XHRpZiAoIXVkcF90dW5uZWxfbmljX2FkZF9leGlzdGluZyhkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTg6XHRcdHVkcF90dW5uZWxfbmljX2FkZF9uZXcoZGV2LCB1dG4sIHRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MjA6XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyMS19XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01MjM9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTI0Ol9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyNS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzEtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUzMjpcdGlmICghdWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzMtXHRcdHJldHVybjtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MzU6XHR1ZHBfdHVubmVsX25pY19kZWxfZXhpc3RpbmcoZGV2LCB1dG4sIHRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM2LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1Mzc6XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUzOC19XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUzOS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTQwOnN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0MS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU0MjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0My1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTU0LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU1NTpcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NTYtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NjUtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU2NjpcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZSh1dG4sIGVudHJ5LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NjctXHRcdFx0XHRcdFx0ICAgVURQX1RVTk5FTF9OSUNfRU5UUllfQUREKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU2OS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTcwOlx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU3NT1zdGF0aWMgc2l6ZV90XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU3NjpfX3VkcF90dW5uZWxfbmljX2R1bXBfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3Ny17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU3ODpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3OS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg4LVx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbdGFibGVdLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg5Olx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3ByZXNlbnQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbdGFibGVdW2pdKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTkwLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjAwPXN0YXRpYyBpbnRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjAxOl9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMi1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjAzLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjA0Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjA1LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MTMtXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1t0YWJsZV0ubl9lbnRyaWVzOyBqJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MTQ6XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcHJlc2VudChcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1t0YWJsZV1bal0pKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MTUtXHRcdFx0Y29udGludWU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MzYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYzNzpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjM4LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0NS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjQ2OnN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfbG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NDcte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NTU6c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY191bmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU2LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2My1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NjU6XHQuZ2V0X3BvcnRcdD0gX191ZHBfdHVubmVsX25pY19nZXRfcG9ydCxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY2Olx0LnNldF9wb3J0X3ByaXZcdD0gX191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Njc6XHQuYWRkX3BvcnRcdD0gX191ZHBfdHVubmVsX25pY19hZGRfcG9ydCxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY4Olx0LmRlbF9wb3J0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY2OTpcdC5yZXNldF9udGZcdD0gX191ZHBfdHVubmVsX25pY19yZXNldF9udGYsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3MDpcdC5kdW1wX3NpemVcdD0gX191ZHBfdHVubmVsX25pY19kdW1wX3NpemUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3MTpcdC5kdW1wX3dyaXRlXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjcyOlx0LmFzc2VydF9sb2NrZWRcdD0gX191ZHBfdHVubmVsX25pY19hc3NlcnRfbG9ja2VkLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzM6XHQubG9ja1x0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfbG9jayxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Njc0Olx0LnVubG9ja1x0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfdW5sb2NrLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzUtfTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY3Nz1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzg6dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY3OS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4MDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4MS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg3LVx0XHRcdGlmIChhZGpfY250KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2ODg6XHRcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9hZGoodXRuLCBpLCBqLCBhZGpfY250KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg5LVx0XHR9XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY5MC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjkxOlx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY5Mi1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTcwMD1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MDE6dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MDIte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MDM6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MDQ6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUgKm5vZGU7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwNS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzExLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTI6XHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTMtXHR1dG4tXHUwMDNlbWlzc2VkID0gMDtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcyNC1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqJiM0MzsmIzQzOylcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzI1Olx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzI2LX1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzI3LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mjg6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcyOS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzMtXHQvKiBXZSBjYW5ub3QgYmxvY2sgb24gUlROTCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgZGVhZGxvY2sgd2l0aFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MzQ6XHQgKiB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKCkgY2FsbGluZyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzUtXHQgKiB3aGlsZSBob2xkaW5nIFJUTkwuIFJlcXVldWUgd2l0aCAxIGppZmZ5IGRlbGF5IGlmIFJUTkwgaXMgY29udGVuZGVkLlxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM3LVx0aWYgKCFydG5sX3RyeWxvY2soKSkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzg6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFx1MDAyNnV0bi1cdTAwM2V3b3JrLCAxKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM5LVx0XHRyZXR1cm47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NDEtXHRtdXRleF9sb2NrKFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzQyOlx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyh1dG4tXHUwMDNlZGV2LCB1dG4pO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NDMtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc0NC1cdGlmICh1dG4tXHUwMDNlbmVlZF9yZXBsYXkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc0NTpcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc0Ni1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc1MT1zdGF0aWMgc3RydWN0IHVkcF90dW5uZWxfbmljICpcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzUyOnVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTMtXHRcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYxLVx0dXRuLVx1MDAzZW5fdGFibGVzID0gbl90YWJsZXM7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc2MjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYzLVx0bXV0ZXhfaW5pdChcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03ODAtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc4MTpzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03ODIte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzg5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTA6c3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTEte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTI6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTM6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUgKm5vZGUgPSBOVUxMO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTQtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODMyOlx0aWYgKGluZm8tXHUwMDNlc2hhcmVkIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgzMzpcdFx0dXRuID0gaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM0LVx0fSBlbHNlIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODM1Olx0XHR1dG4gPSB1ZHBfdHVubmVsX25pY19hbGxvYyhpbmZvLCBuX3RhYmxlcyk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzNi1cdFx0aWYgKCF1dG4pIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Mi1cdGlmIChpbmZvLVx1MDAzZXNoYXJlZCkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NDM6XHRcdGlmICghaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDQtXHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNlZGV2aWNlcyk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0NTpcdFx0XHRpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDYtXHRcdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1NS1cdGlmICghKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0lORk9fT1BFTl9PTkxZKSkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NTY6XHRcdHVkcF90dW5uZWxfbmljX2xvY2soZGV2KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODU3LVx0XHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg1ODpcdFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1OS1cdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg2ND1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NjU6dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODY2LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY3Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODY4LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njk6XHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3MC1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3NC1cdGlmIChpbmZvLVx1MDAzZXNoYXJlZCkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NzU6XHRcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSwgKmZpcnN0O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NzYtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODAtXHRcdGlmIChsaXN0X2VudHJ5X2lzX2hlYWQobm9kZSwgXHUwMDI2aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNlZGV2aWNlcywgbGlzdCkpIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODgxOlx0XHRcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODItXHRcdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODkyLVx0XHRcdHV0bi1cdTAwM2VkZXYgPSBmaXJzdC1cdTAwM2VkZXY7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg5MzpcdFx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODk0LVx0XHRcdGdvdG8gcmVsZWFzZV9kZXY7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OTYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg5NzpcdFx0aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IE5VTEw7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5OC1cdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkwMi1cdCAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MDM6XHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkwNDpcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MDUtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MTEtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkxMjpcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTEzLXJlbGVhc2VfZGV2OlxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTE4PXN0YXRpYyBpbnRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTE5OnVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUyMwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBVRFAgVHVubmVsIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgdWRwX3R1bm5lbF9uaWMuY2AgaGVyZS4gVGhlIHF1aWNrIHNjYW4gdGVsbHMgbWUgdGhpcyBpc24mIzM5O3QgbWVhbnQgZm9yIGRpcmVjdCBtb2R1bGUgYWNjZXNzOyBpdCYjMzk7cyBtb3JlIG9mIGFuIGludGVybmFsIHBpZWNlLCBwcm9iYWJseSBsaW5rZWQgaW50byB0aGUgY29yZSBVRFAgdHVubmVsaW5nIGxvZ2ljLCBsaWtlbHkgd2l0aGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuY2AuIE9yIG1heWJlIGl0JiMzOTtzIGhhbmRsaW5nIGEgbmV0ZGV2aWNlIG5vdGlmaWVyLiBJJiMzOTt2ZSBnb3QgdG8gZmluZCBvdXQgd2hpY2guCgpNeSBuZXh0IHN0ZXAgaXMgdG8gaG9uZSBpbiBvbiBlaXRoZXIgdGhlIGB1ZHBfdHVubmVsX25pY19pbml0YCBmdW5jdGlvbiBvciB0aGUgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgYWN0aW9uIGlzLCB3aGVyZSBJJiMzOTtsbCBzZWUgaG93IHRoaXMgdGhpbmcgZ2V0cyBpbnRlZ3JhdGVkIG9yIGhvdyBpdCYjMzk7cyBvYnNlcnZpbmcgbmV0d29yayBldmVudHMuIE9uY2UgSSBrbm93ICp0aGF0KiwgSSYjMzk7bGwgaGF2ZSBhIG11Y2ggYmV0dGVyIGhhbmRsZSBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MTg9c3RhdGljIGludFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTk6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjAtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk2OT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHVkcF90dW5uZWxfbmljX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk3MDpcdC5ub3RpZmllcl9jYWxsID0gdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NzEtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBgdWRwX3R1bm5lbF9uaWMuY2AgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgd29ya3MuIEZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoZSByZWdpc3RyYXRpb24gb2YgYSBuZXRkZXZpY2Ugbm90aWZpZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleHBvc2VkIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCBpcyB0aGUga2V5IOKAkyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIEl0IGNhbGxzIHRoaW5ncyBsaWtlIGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYW5kIGB1ZHBfdHVubmVsX25pY19mbHVzaGAuIEFscmlnaHQsIHNvIHRoZSBlbnRyeSBwb2ludHMgYXJlIHRyaWdnZXJlZCBieSBuZXRkZXZpY2UgZXZlbnRzOiBgTkVUREVWX1JFR0lTVEVSYCwgYE5FVERFVl9VTlJFR0lTVEVSYCwgYE5FVERFVl9VUGAsIGBORVRERVZfRE9XTmDigKYgdGhhdCBtYWtlcyBzZW5zZS4KClRoZW4gSSBzZWUgY2FsbHMgdG8gYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBhbmQgYHVkcF90dW5uZWxfbmljX2RlbF9wb3J0YC4gV2hlcmUgYXJlIHRoZXNlIHRyaWdnZXJlZCBmcm9tPyBPaCwgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBjYWxsZWQgZnJvbSBgdWRwX3R1bm5lbF9nZXRfcnhfaW5mb2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuCgpXYWl0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSXMgYHVkcF90dW5uZWxfbmljX29wc2AgdXNlZCBpbiBgdWRwX3R1bm5lbF9jb3JlLmNgPyBObywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzdGF0aWMgd2l0aGluIGB1ZHBfdHVubmVsX25pYy5jYC4gT2theSwgbm93IEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJlIGBfX3VkcF90dW5uZWxfbmljX29wc2AgaXMgdXNlZCBpbnN0ZWFkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHBvaW50IG9mIGludGVyZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3VkcF90dW5uZWxfbmljX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02NTU9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY191bmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2My1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NjUtXHQuZ2V0X3BvcnRcdD0gX191ZHBfdHVubmVsX25pY19nZXRfcG9ydCxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk3Mz1zdGF0aWMgaW50IF9faW5pdCB1ZHBfdHVubmVsX25pY19pbml0X21vZHVsZSh2b2lkKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTgxLVx0cnRubF9sb2NrKCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk4MjpcdHVkcF90dW5uZWxfbmljX29wcyA9IFx1MDAyNl9fdWRwX3R1bm5lbF9uaWNfb3BzO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05ODMtXHRydG5sX3VubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTgzOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYHVkcF90dW5uZWxfbmljX29wc2AgUG9pbnRlcioqCgpPa2F5LCBzbyBJIHNlZSBgdWRwX3R1bm5lbF9uaWNfb3BzYC4gVGhhdCYjMzk7cyBhIGdsb2JhbCBwb2ludGVyLCByaWdodD8gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZWZpbmVkIGluIGVpdGhlciBgbmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNgIG9yIHBlcmhhcHMgd2l0aGluIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgLiBHaXZlbiBpdHMgbmFtZSwgaXQgcHJvYmFibHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIE5ldHdvcmsgSW50ZXJmYWNlIENvbnRyb2xsZXIgKE5JQykgb3BlcmF0aW9ucyBmb3IgVURQIHR1bm5lbHMuIEkmIzM5O2QgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBsb2NhdGlvbiB0byBrbm93IGZvciBjZXJ0YWluLCBidXQgdGhvc2Ugc2VlbSBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGl0cyBkZWNsYXJhdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gdHJhY2UgaXRzIHVzYWdlIGFuZCBmaWd1cmUgb3V0IGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgdHVubmVsIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwOTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBVRFAgVHVubmVsIEhlYWRlcioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBVRFAgdHVubmVsaW5nIGlzIGltcGxlbWVudGVkLCBwYXJ0aWN1bGFybHkgYXQgdGhlIGtlcm5lbCBsZXZlbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZWVwIGRpdmUgaW50byB0aGUgYGluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaGAgaGVhZGVyIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMgdGhhdCBkZWZpbmUgdGhlIHR1bm5lbCYjMzk7cyBiZWhhdmlvdXIuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBidWlsZGluZyBibG9ja3M6IEhvdyBkb2VzIGl0IGhhbmRsZSBlbmNhcHN1bGF0aW9uLCB3aGF0IGFyZSB0aGUgcmVsZXZhbnQgY29udHJvbCBmbGFncywgd2hhdCBraW5kIG9mIHNvY2tldCBvcHRpb25zIG1pZ2h0IGJlIGV4cG9zZWQsIGFyZSB0aGVyZSBhbnkgY3VzdG9tIHByb3RvY29sIGhlYWRlcnMgSSBuZWVkIHRvIGtub3cgYWJvdXQ/IEFyZSB0aGVyZSBhbnkgaW5kaWNhdGlvbnMgaW4gaGVyZSBvZiBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgc3RyYXRlZ2llcyBJIG5lZWQgdG8gY29uc2lkZXIgbGF0ZXIgb24/IEkmIzM5O2xsIGJlIG1ldGljdWxvdXNseSBleGFtaW5pbmcgdGhlIHN0cnVjdCBkZWZpbml0aW9ucywgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBhbnkgaW5saW5lIGNvbW1lbnRzLiBUaGlzIGhlYWRlciBmaWxlIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgZm9yIGRpc3NlY3RpbmcgdGhlIGFjdHVhbCB0dW5uZWxpbmcgbG9naWMuIEhvcGVmdWxseSBpdCYjMzk7cyB3ZWxsLWNvbW1lbnRlZC4gSSYjMzk7bGwgYmUgbWVudGFsbHkgbWFwcGluZyB0aGUgZGF0YSBmbG93IHRvIHByZXBhcmUgZm9yIG1vcmUgaW50ZW5zZSBkZWJ1Z2dpbmcgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3VkcF90dW5uZWwuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9Mjk3PXN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHtcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzI4LSAqL1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyOTpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIHtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMzAtXHR2b2lkICgqZ2V0X3BvcnQpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzQ2LSNpZmRlZiBDT05GSUdfSU5FVFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM0NzpleHRlcm4gY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyAqdWRwX3R1bm5lbF9uaWNfb3BzO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM0OC0jZWxzZVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM0OTojZGVmaW5lIHVkcF90dW5uZWxfbmljX29wc1x0KChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzICopTlVMTClcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNTAtI2VuZGlmXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM1Mz11ZHBfdHVubmVsX25pY19nZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM2My1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNjQ6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM2NTpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWdldF9wb3J0KGRldiwgdGFibGUsIGlkeCwgdGkpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM2Ni19XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM2OT11ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzcxLXtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNzI6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKSB7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzczOlx0XHR1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNlYXNzZXJ0X2xvY2tlZChkZXYpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM3NDpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZXNldF9wb3J0X3ByaXYoZGV2LCB0YWJsZSwgaWR4LCBwcml2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNzUtXHR9XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM3OD1zdGF0aWMgaW5saW5lIHZvaWQgdWRwX3R1bm5lbF9uaWNfYXNzZXJ0X2xvY2tlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM3OS17XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzgwOlx0aWYgKHVkcF90dW5uZWxfbmljX29wcylcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozODE6XHRcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2Vhc3NlcnRfbG9ja2VkKGRldik7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzgyLX1cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9Mzg0PXN0YXRpYyBpbmxpbmUgdm9pZCB1ZHBfdHVubmVsX25pY19sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzg1LXtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozODY6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM4NzpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zODgtfVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTA9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5MS17XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzkyOlx0aWYgKHVkcF90dW5uZWxfbmljX29wcylcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozOTM6XHRcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2V1bmxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zOTQtfVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTc9dWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQwMC1cdFx0cmV0dXJuO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQwMTpcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDAyOlx0XHR1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNlYWRkX3BvcnQoZGV2LCB0aSk7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDAzLX1cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9NDA2PXVkcF90dW5uZWxfbmljX2RlbF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MDktXHRcdHJldHVybjtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0MTA6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQxMTpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWRlbF9wb3J0KGRldiwgdGkpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQxMi19XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQyNj1zdGF0aWMgaW5saW5lIHZvaWQgdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDI3LXtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0Mjg6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQyOTpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZXJlc2V0X250ZihkZXYpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQzMC19XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQzMz11ZHBfdHVubmVsX25pY19kdW1wX3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzYtXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDM3Olx0aWYgKCF1ZHBfdHVubmVsX25pY19vcHMpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDM4LVx0XHRyZXR1cm4gMDtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzktXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDQwOlx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NDE6XHRyZXQgPSB1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNlZHVtcF9zaXplKGRldiwgdGFibGUpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ0MjpcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2V1bmxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00NDMtXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQ0OD11ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDUyLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1MzpcdGlmICghdWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQ1NC1cdFx0cmV0dXJuIDA7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU1LVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1NjpcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2Vsb2NrKGRldik7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDU3Olx0cmV0ID0gdWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWR1bXBfd3JpdGUoZGV2LCB0YWJsZSwgc2tiKTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NTg6XHR1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNldW5sb2NrKGRldik7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDExMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIGB1ZHBfdHVubmVsX25pY19vcHNgIHN0cnVjdHVyZSoqCgpSaWdodCwgc28gSSBzZWUgYHVkcF90dW5uZWxfbmljX29wc2AgaXMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSB0aGUgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RydWN0dXJlLCBwcm9iYWJseSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBwb2ludGVycyB0aGF0IGRlZmluZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBVRFAgdHVubmVsIG5ldHdvcmsgaW50ZXJmYWNlcy4gTm93LCBhIGdvb2QgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIHdvdWxkIGJlIHRvIHRyYWNlIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBmdW5jdGlvbiwgYSBrZXkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGlzIGludGVyZmFjZSwgaXMgYWN0dWFsbHkgKmNhbGxlZCogZnJvbS4gVGhhdCYjMzk7bGwgdGVsbCBtZSBhIGxvdCBhYm91dCBob3cgdGhlc2UgVURQIHR1bm5lbCBpbnRlcmZhY2VzIGFyZSBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhlIHN5c3RlbSwgZ2l2aW5nIG1lIGNvbnRleHQgb24gdGhlIHN1cnJvdW5kaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTY9c3RhdGljIGlubGluZSB2b2lkXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzk3OnVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5OC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEwOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEwOTpcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjc9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQwLVx0XHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDE6XHRcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQyLVx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ4OT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTA6X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkxLXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyBfX3VkcF90dW5uZWxfbmljX29wcyA9IHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2Ni1cdC5zZXRfcG9ydF9wcml2XHQ9IF9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY3Olx0LmFkZF9wb3J0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2OC1cdC5kZWxfcG9ydFx0PSBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVRFAgVHVubmVsIFJYIFBvcnQgRnVuY3Rpb24gQ2FsbHMqKgoKUmlnaHQsIHNvIGB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydGAgYW5kIGB1ZHBfdHVubmVsX3B1c2hfcnhfcG9ydGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIGFuZCB0aGV5JiMzOTtyZSBib3RoIGdldHRpbmcgY2FsbGVkLiBUaGV5JiMzOTtyZSAqZXhwb3J0ZWQqLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayB0aGV5JiMzOTtyZSBwYXJ0IG9mIHNvbWUgcHVibGljIEFQSSBvciBpbnRlcmZhY2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGVyZSBgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgaW52b2NhdGlvbiwgc28gSSBjYW4gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yLiBUaW1lIHRvIHRyYWNlIHRob3NlIGNhbGxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9nZW5ldmUuYz0xMDExPXN0YXRpYyBzdHJ1Y3QgZ2VuZXZlX3NvY2sgKmdlbmV2ZV9zb2NrZXRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xMDM1LVx0LyogSW5pdGlhbGl6ZSB0aGUgZ2VuZXZlIHVkcCBvZmZsb2FkcyBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2dlbmV2ZS5jOjEwMzY6XHR1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzaywgVURQX1RVTk5FTF9UWVBFX0dFTkVWRSk7XG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xMDM3LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zNTc3PXN0YXRpYyBzdHJ1Y3QgdnhsYW5fc29jayAqdnhsYW5fc29ja2V0X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIGJvb2wgaXB2Nixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzYwNS1cdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZ2cy1cdTAwM2VobGlzdCwgdnNfaGVhZChuZXQsIHBvcnQpKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjA2Olx0dWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc2ssXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzYwNy1cdFx0XHRcdCAgICAgICh2cy1cdTAwM2VmbGFncyBcdTAwMjYgVlhMQU5fRl9HUEUpID9cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MTMyPXZvaWQgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTEzMy1cdFx0XHQgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjEzNDp2b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSk7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMTM1LXZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfZGVsX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjQ9RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEyNi0vKiBOb3RpZnkgbmV0ZGV2cyB0aGF0IFVEUCBwb3J0IHN0YXJ0ZWQgbGlzdGVuaW5nICovXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMjc6dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjgte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0NC19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDU6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc5OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFVEUCBUdW5uZWwgT2ZmbG9hZCBmb3IgVlhMQU4gYW5kIEdFTkVWRSBpbiBRRU1VKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBgVlhMQU5gIGFuZCBgR0VORVZFYCBoYW5kbGUgVURQIHR1bm5lbHMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkgdWx0aW1hdGVseSBjYWxsIGB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydGAuIFJpZ2h0IGF3YXksIHRoaXMgdGVsbHMgbWUgdGhhdCB3ZSBuZWVkIHRvIGVuc3VyZSBib3RoIGBWWExBTmAgYW5kIGBHRU5FVkVgIGFyZSBhY3RpdmF0ZWQgd2l0aGluIGBFbmFibGVDb25maWdzYC4gQnV0IGl0JiMzOTtzIG5vdCBlbm91Z2ggdG8gc2ltcGx5IGVuYWJsZSB0aGUgcHJvdG9jb2xzOiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgb2ZmbG9hZGluZy4KCk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHVkcF90dW5uZWxfbmljLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIGZvciBvZmZsb2FkaW5nIFVEUCB0dW5uZWxzIHRvIHRoZSBOSUMsIGFuZCBub3cgSSYjMzk7bSBjdXJpb3VzIGlmIHdlIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgYW55IGVtdWxhdGVkIE5JQyBzdXBwb3J0cyB0aGlzIGtpbmQgb2YgVURQIHR1bm5lbCBvZmZsb2FkLiBJIGtub3cgdGhhdCBgdWRwX3R1bm5lbF9uaWNfaW5mb2AgaXMgcmVnaXN0ZXJlZCBieSB0aGUgTklDIGRyaXZlciBpdHNlbGYsIHNvIHRoYXQmIzM5O3MgdGhlIGtleS4gSSBoYXZlIHRvIHNoaWZ0IG15IGZvY3VzIGFuZCBzdGFydCBsb29raW5nIGF0IHdoaWNoIHNwZWNpZmljIE5JQyBkcml2ZXJzIGFjdHVhbGx5IHJlZ2lzdGVyIHRoaXMgaW5mb3JtYXRpb24uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgYW5zd2VyIHdpbGwgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY19pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9ODk1PXN0YXRpYyBpbnQgeGdiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTA2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB4Z2JlX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXHQuc2V0X3BvcnRcdD0geGdiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTE1OmNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8odm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYz0xNTI9aW50IHhnYmVfY29uZmlnX25ldGRldihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM6MjYzOlx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IHhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6MTI5Nzpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTEyOTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjExPXN0YXRpYyBpbnQgYm54MnhfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAyMjI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueDJ4X3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjIzLVx0LnN5bmNfdGFibGVcdD0gYm54MnhfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwNy1cdFx0aWYgKElTX1BGKGJwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzIwODpcdFx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueDJ4X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE1OTYyPXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTU5Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueHRfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cdC5zZXRfcG9ydFx0PSBibnh0X3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDUzOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHNfcDc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDU1Olx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Ny1cdC5zZXRfcG9ydFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMzMjI9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzU4MzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM1ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODQtXHQuc2V0X3BvcnRcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xOTE5PXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5My1cdFx0ICAgIChsaW8tXHUwMDNlZW5jX2Rldl9jYXBhYmlsaXR5IFx1MDAyNiB+TkVUSUZfRl9MUk8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgxOS1cdC5zZXRfcG9ydFx0PSBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDAtXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcmF3Zl9jbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzo2ODAxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZjeGdiX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jLTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMzAtXHQuc2V0X3BvcnRcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjY3NT1zdGF0aWMgaW50IGVuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTQ4LVx0XHQgICAgZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9NVUxUSV9XUSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5Olx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZW5pY191ZHBfdHVubmVsc192NDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cdFx0XHRpZiAoZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9PVVRFUl9JUFY2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz00MDE1PXN0YXRpYyBpbnQgYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYzo0MDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBiZV91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cdC5zZXRfcG9ydFx0PSBiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTUxNzk9c3RhdGljIHZvaWQgYmVfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXHRpZiAoIWxhbmNlcl9jaGlwKGFkYXB0ZXIpIFx1MDAyNlx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXHUwMDI2XHUwMDI2ICFiZV9pc19tYyhhZGFwdGVyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNTIwOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz00MDI9c3RhdGljIGludCBmbTEwa191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjQxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZm0xMGtfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy00MTgtXHQuc3luY190YWJsZVx0PSBmbTEwa191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmZtMTBrX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaD00Njg9c3RydWN0IGk0MGVfcGYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWQgdWRwX3R1bm5lbF9zaGFyZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNjM3PXN0YXRpYyBpbnQgaTQwZV9jb25maWdfbmV0ZGV2KHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjgxOlx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwZi1cdTAwM2V1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9MzQ0Mz1zdGF0aWMgdm9pZCBpY2Vfc2V0X29wcyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM0NTQtXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmljZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6MzQ1NTpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cGYtXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU2LVx0bmV0ZGV2LVx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZpY2VfeGRwX21kX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6Mzk3MjpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFx1MDAyNnBmLVx1MDAzZWh3LnVkcF90dW5uZWxfbmljO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGljZV9wZl90b19kZXYocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaC0xMDExLVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oOjEwMTI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTU0NDg9c3RhdGljIGludCBpeGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0Njc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTAgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cdC5zeW5jX3RhYmxlXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVx0LnN5bmNfdGFibGVcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMTU0OD1zdGF0aWMgaW50IGl4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cdGNhc2UgaXhnYmVfbWFjX2U2MTA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTE3MDA6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwMS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDItXHRjYXNlIGl4Z2JlX21hY194NTUwZW1fYTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwNC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1OC1cdC5zeW5jX3RhYmxlXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM9MzE2MT1pbnQgbWx4NF9lbl9pbml0X25ldGRldihzdHJ1Y3QgbWx4NF9lbl9kZXYgKm1kZXYsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MzM0NzpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0zMzQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU3Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01NDU3PXZvaWQgbWx4NWVfdnhsYW5fc2V0X25ldGRldl9pbmZvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTQ3MDpcdHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwcml2LVx1MDAzZW5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NDcxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjM3Nj1zdGF0aWMgaW50IG5mcF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjIzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5mcF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk2LVx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjY2Nj1zdGF0aWMgdm9pZCBuZnBfbmV0X25ldGRldl9pbml0KHN0cnVjdCBuZnBfbmV0ICpubilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcxOC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjI3MTk6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bmZwX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXHRcdG5uLVx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTk1Nz1zdGF0aWMgaW50IHFlZGVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6OTg4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxZWRlX3VkcF90dW5uZWxzX2JvdGggPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cdC5zeW5jX3RhYmxlXHQ9IHFlZGVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9MTAwNj12b2lkIHFlZGVfc2V0X3VkcF90dW5uZWxzKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXHQgICAgZWRldi1cdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcdFx0ZWRldi1cdTAwM2VuZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2JvdGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXHRlbHNlIGlmIChlZGV2LVx1MDAzZWRldl9pbmZvLmNvbW1vbi52eGxhbl9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc192eGxhbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cdGVsc2UgaWYgKGVkZXYtXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc19nZW5ldmU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz00NzE9c3RhdGljIGludCBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjQ4NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWxjbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cdC5zeW5jX3RhYmxlXHQ9IHFsY25pY191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTIyNTQ9cWxjbmljX3NldHVwX25ldGRldihzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6MjMwNDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxbGNuaWNfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NTI1PXN0YXRpYyBpbnQgZWZ4X2VmMTBfcHJvYmUoc3RydWN0IGVmeF9uaWMgKmVmeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cdCAgICAoMSBcdTAwM2NcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo2ODE6XHRcdGVmeC1cdTAwM2VuZXRfZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtMzk4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODYtXHQuc2V0X3BvcnRcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02MTk9c3RhdGljIGludCB0eGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjY0MjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdHhnYmVfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXHQuc3luY190YWJsZVx0PSB0eGdiZV91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NzQ4Olx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZ0eGdiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTc0OS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz02Nj1uc2ltX3VkcF90dW5uZWxfc3luY190YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzo4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbnNpbV91ZHBfdHVubmVsX2luZm8gPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy04Ni1cdC5zZXRfcG9ydFx0PSBuc2ltX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTI4LVx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI5Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBpbmZvO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTMtXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXHUwMDNldWRwX3BvcnRzLmRkaXIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk0Olx0a2ZyZWUoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTk2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyMDIKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiA0MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFVEUCBUdW5uZWwgVGVzdGluZyBpbiBhIEtlcm5lbCBDb250ZXh0KioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYGRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jYCByZWdpc3RlcnMgYHVkcF90dW5uZWxfbmljX2luZm9gLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoYXQgd2UgY2FuIGxldmVyYWdlIGBuZXRkZXZzaW1gIHRvIHRlc3QgdGhpcyBmZWF0dXJlLiBCcmlsbGlhbnQhIFVzaW5nIGBuZXRkZXZzaW1gLCB3aGljaCBpcyBhIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZSwgbWFrZXMgb2ZmbG9hZCB0ZXN0aW5nIGluIHRoZSBrZXJuZWwgYSBicmVlemUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIEkgY2FuIGNvbmZpcm0gdGhpcyBjb2RlIHBhdGggaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGF0IGVuYWJsZXMgYG5ldGRldnNpbWAuIEFoLCBpdCYjMzk7cyBgQ09ORklHX05FVERFVlNJTWAuIFNvLCBJJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgdG8gYWRkIGBORVRERVZTSU1gIHRvIGBFbmFibGVDb25maWdzYCB0byBtYWtlIHN1cmUgYG5ldGRldnNpbWAgaXMgZW5hYmxlZCBpbiBteSBidWlsZC4gQW5kLCBJJiMzOTtsbCBuZWVkIGBWWExBTmAgYW5kIGBHRU5FVkVgIGFzIHdlbGwgdG8gdHJpZ2dlciB0aGUgVURQIHR1bm5lbCBjcmVhdGlvbi4KCkkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgdG8gbG9vayBhdCB0aGUgaW1wb3J0YW50IHN5bWJvbHMgYWdhaW4sIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBieSB0aGUgcGF0Y2guIEkgc2VlIHRoYXQgdGhlIHBhdGNoIHRvdWNoZXM6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX2FsbG9jYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4KCldhaXQgYSBtaW51dGUsIGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhpbmdzIGEgbGl0dGxlLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2FsbG9jYCBpcyBzdGF0aWMuIEFuZCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIHN0YXRpYy4KCkhvbGQgb24sIEkgbmVlZCB0byB0aGluayB0aGlzIHRocm91Z2guIElmIHRoZXkmIzM5O3JlIHN0YXRpYywgdGhleSBtaWdodCBiZSBpbmxpbmVkIG9yIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIGJ1dCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHNvIGl0IGNhbiYjMzk7dCBiZSBpbmxpbmVkLiBBbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIGNhbGxlZCBmcm9tIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLCB3aGljaCBpcyBhIG5vdGlmaWVyIGNhbGxiYWNrLiBTbywgaXQgaGFzIHRvIGJlIHJlYWNoYWJsZS4gVGltZSB0byBjaGVjayB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEFjdHVhbGx5LCBJJiMzOTt2ZSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBFWFBPUlRfU1lNQk9MYCwgYW5kIGZvdW5kIG5vdGhpbmcuIEFyZSB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYXQgYWxsPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB1ZHBfdHVubmVsX25pY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTEtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyOmVudW0gdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnlfZmxhZ3Mge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMy1cdFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERFx0PSBCSVQoMCksXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTk6c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjAtXHRfX2JlMTYgcG9ydDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU0MTQKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBTY29wZSBDcmVlcCBpbiBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnVuY3Rpb24gdmlzaWJpbGl0eS4gSXQmIzM5O3MgdGltZSB0byBleGFtaW5lIHRoZSBjb2RlYmFzZSBhbmQgcGlucG9pbnQgZnVuY3Rpb25zIHRoYXQgKmFyZW4mIzM5O3QqIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHNjb3BlIGNyZWVwIOKAkyBmdW5jdGlvbnMgdW5pbnRlbnRpb25hbGx5IGV4cG9zZWQgdG8gcGFydHMgb2YgdGhlIHByb2dyYW0gdGhhdCBzaG91bGRuJiMzOTt0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlbS4gV2Ugd2FudCB0byB0aWdodGVuIHVwIGVuY2Fwc3VsYXRpb24gd2hlcmUgcG9zc2libGUuIEEgcXVpY2sgYGdyZXBgIGZvciBmdW5jdGlvbnMgbm90IGRlY2xhcmVkIGFzIGBzdGF0aWNgIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgdHJ1ZSBpbnRlbmRlZCBhY2Nlc3NpYmlsaXR5IG9mIHRoZXNlIGZ1bmN0aW9ucyBhbmQsIGlmIG5lY2Vzc2FyeSwgYWRqdXN0IHRoZSBkZWNsYXJhdGlvbnMgdG8gYmUgbW9yZSByZXN0cmljdGl2ZS4gVGhpcyBzeXN0ZW1hdGljIHNjYW4gbGV0cyBtZSBlbnN1cmUgcHJvcGVyIHByb2dyYW0gc3RydWN0dXJlIGFuZCBkZXNpZ24uIEkgY291bGQgYWxzbyB1c2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZXZpZXcgdGhlIGxvZ2ljIG9mIHRoZSBjb2RlIGJsb2NrcyB0aGVzZSBmdW5jdGlvbnMgcmVzaWRlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2ODkKCQkJCQkJCW91dHB1dDogNTcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlYnVnZ2luZyBNeSBQYXR0ZXJuLU1hdGNoaW5nIEFwcHJvYWNoKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gdGhpcyByZWdleCBJJiMzOTt2ZSBiZWVuIGNyYWZ0aW5nIGZvciB0aGlzIHBhcnRpY3VsYXIgcGFyc2luZyB0YXNrIGlzIGxvb2tpbmcgYSBsaXR0bGUgZnJhZ2lsZS4gSSYjMzk7bSBzdGFydGluZyB0byBvdmVydGhpbmsgdGhlIGVkZ2UgY2FzZXMuIEl0JiMzOTtzIGJlY29taW5nIG1vcmUgY29tcGxleCB0aGFuIGl0IG5lZWRzIHRvIGJlLCBhbmQgSSBjYW4gZmVlbCBhIHBvdGVudGlhbCBidWcgbHVya2luZyBpbiB0aGVyZS4KCkluc3RlYWQgb2Ygd3Jlc3RsaW5nIHdpdGggdGhpcyBpbnRyaWNhdGUgcGF0dGVybiwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgYSBzaW1wbGVyLCBtb3JlIHJvYnVzdCBhcHByb2FjaCwgYXQgbGVhc3QgZm9yIGEgZmlyc3QgcGFzcy4gSSBjYW4gcXVpY2tseSBncmVwIHRoZSByZWxldmFudCBmaWxlcyBhbmQgc2VhcmNoIGZvciB0aGUgYmVnaW5uaW5nIG9mIGxpbmVzIGNvbnRhaW5pbmcgb25seSB0aGUgbW9zdCBjb21tb24gZGF0YSB0eXBlcyB3aXRoIHNpbXBsZSBzdHJpbmdzLCBzdWNoIGFzIGBedm9pZCBgLCBgXmludCBgLCBvciBgXnN0cnVjdCBgLgoKVGhpcyBzaW1wbGlmaWVzIHRoaW5ncyBjb25zaWRlcmFibHkuIFRoaXMgYXBwcm9hY2ggbWlnaHQgbm90IGNhcHR1cmUgKmV2ZXJ5dGhpbmcqIGltbWVkaWF0ZWx5LCBhbmQgaXQgbWlnaHQgaGF2ZSBzb21lIGZhbHNlIHBvc2l0aXZlcywgYnV0IGl0JiMzOTtsbCBiZSBvcmRlcnMgb2YgbWFnbml0dWRlIGZhc3RlciB0byBpbXBsZW1lbnQgYW5kIHRlc3QuIEkgY2FuIGFsd2F5cyByZWZpbmUgdGhlIGZpbHRlcmluZyBsb2dpYyBsYXRlciBvbmNlIEkmIzM5O3ZlIGdvdCBhIGJhc2VsaW5lLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGdldCB0aGUgcHJvY2VzcyBydW5uaW5nIHF1aWNrbHkgYW5kIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14odm9pZHxpbnR8c3RydWN0IFthLXpBLVpfXSYjNDM7IFxcKikgW2EtekEtWl9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqR3Jhc3BpbmcgYXQgYSBTb2x1dGlvbjogVGhlICYjMzQ7Z3JlcCYjMzQ7IEluc3RpbmN0IEtpY2tzIEluKioKCkFscmlnaHQsIEkgc2VlIGEgcHJvYmxlbSwgYW5kIG15IGltbWVkaWF0ZSByZWFjdGlvbiBpcywgbGV0JiMzOTtzIHJlYWNoIGZvciB0aGUgZmFtaWxpYXIgdG9vbHMuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7T2theSwgd2hhdCYjMzk7cyB0aGUgcXVpY2tlc3QsIGRpcnRpZXN0IHdheSB0byB0YWNrbGUgdGhpcz8mIzM0OyBUaGF0IGBncmVwYCBpcyBwcmFjdGljYWxseSBhbiBleHRlbnNpb24gb2YgbXkgYnJhaW4gYXQgdGhpcyBwb2ludC4gVGhlIHBhdHRlcm4gYF57YCBpcyBwcm9iYWJseSB0YXJnZXRpbmcgYSBzcGVjaWZpYyBjb2RlIHN0cnVjdHVyZSwgbGlrZWx5IEpTT04sIFlBTUwgb3IgbWF5YmUgZXZlbiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gSSBzdXNwZWN0IEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IGlzIHByZWNlZGVkIGJ5IGEgY3VybHkgYnJhY2UuIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmc6CgomIzM0O0kgbmVlZCB0byBncmFiIHNvbWV0aGluZyB3aXRoIGNvbnRleHQmIzM0Oy4gVGhlIG1lbnRhbCBtb2RlbCBpcyBsaWtlbHkgc3RydWN0dXJlZC4gVGhlcmUgaXMgc29tZXRoaW5nLCBwZXJoYXBzIGEgbmVzdGVkIG9iamVjdCwgdGhhdCBzdGFydHMgd2l0aCBhIGN1cmx5IGJyYWNlLiBUaGlzIGlzIG15IGJhc2Ugb2Ygb3BlcmF0aW9ucy4gJiMzNDtMZXQmIzM5O3MgdXNlIGBncmVwYCB3aXRoIHNvbWUgY29udGV4dCYjMzQ7LiBUaGUgdGhvdWdodCAmIzM0O0xldCYjMzk7cyBqdXN0JiMzNDsgbWVhbnMgSSBkb24mIzM5O3QgbmVlZCBhIGhpZ2hseSBzb3BoaXN0aWNhdGVkIG9yIGVmZmljaWVudCBwYXR0ZXJuLiBUaGlzIGlzIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBpZGVudGlmeSB0aGlzLiBJIG1pZ2h0IG5lZWQgbW9yZSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxhdGVyLCBidXQgZm9yIG5vdywgdGhpcyBpcyB3aGVyZSBJJiMzOTttIHN0YXJ0aW5nLiBUaGlzIGlzIHRoZSBmaXJzdCBkaWFnbm9zdGljIHN0ZXAuIEkmIzM5O20gbG9va2luZyBmb3IgYSBxdWljayB3aW4gdG8gdW5kZXJzdGFuZCB0aGUgbGF5b3V0IG9mIHNvbWV0aGluZy4gSSYjMzk7bSBsZWFuaW5nIGhlYXZpbHkgb24gd2hhdCBJIGtub3cgYWJvdXQgYGdyZXBgIGFuZCBpdHMgY2FwYWJpbGl0aWVzOyBJJiMzOTttIGJldHRpbmcgdGhhdCB0aGlzIGlzIGEgbWFuYWdlYWJsZSBwcm9ibGVtIEkgY2FuIGFkZHJlc3MgdGhpcyB3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJhZCBleHByZXNzaW9uOiBmYXRhbDogLWUgb3B0aW9uLCAmIzM5O157JiMzOTs6IEludmFsaWQgcHJlY2VkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteeyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtiYWQgZXhwcmVzc2lvbjogZmF0YWw6IC1lIG9wdGlvbiwgJiMzOTteeyYjMzk7OiBJbnZhbGlkIHByZWNlZGluZyByZWd1bGFyIGV4cHJlc3Npb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2Mzg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNvcnJlY3RpbmcgSW52YWxpZCBTeW50YXgqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGV4cHJlc3Npb24uLi4gKmhtbSosIGl0IHNlZW1zIGxpa2UgdGhlcmUmIzM5O3MgYW4gZXJyb3IuIFRoZSBjdXJyZW50IHN5bnRheCwgYF57YCwgaXMgY2xlYXJseSBpbnZhbGlkLiBUaGUgcGFyc2VyIGlzIGdvaW5nIHRvIGNob2tlIG9uIHRoYXQsIG5vIHF1ZXN0aW9uLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGUgcHJvYmxlbTsgdGhlIG9wZW5pbmcgY3VybHkgYnJhY2UgbmVlZHMgdG8gYmUgZXNjYXBlZC4gTGV0JiMzOTtzIGZpeCB0aGlzLiBJIG5lZWQgdG8gbWFrZSB0aGUgY2hhbmdlIHRvIGBeXHtgLiBUaGF0IHNob3VsZCByZXNvbHZlIHRoZSBpc3N1ZSBhbmQga2VlcCB0aGluZ3Mgc3ludGFjdGljYWxseSBzb3VuZC4gVGhhdCBzaG91bGQgYWRkcmVzcyB0aGF0IGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteXFx7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU5PXN0YXRpYyBjb25zdCBjaGFyICp1ZHBfdHVubmVsX25pY190dW5uZWxfdHlwZV9uYW1lKHVuc2lnbmVkIGludCB0eXBlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVx0c3dpdGNoICh0eXBlKSB7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03ND11ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc1Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYtXHRyZXR1cm4gZW50cnktXHUwMDNldXNlX2NudCA9PSAwIFx1MDAyNlx1MDAyNiAhZW50cnktXHUwMDNlZmxhZ3M7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04MD11ZHBfdHVubmVsX25pY19lbnRyeV9pc19wcmVzZW50KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgxOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODItXHRyZXR1cm4gZW50cnktXHUwMDNldXNlX2NudCBcdTAwMjZcdTAwMjYgIShlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjYgflVEUF9UVU5ORUxfTklDX0VOVFJZX0ZST1pFTik7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04Nj11ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcm96ZW4oc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODc6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OC1cdHJldHVybiBlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjYgVURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTI9dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTM6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NC1cdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05OT11ZHBfdHVubmVsX25pY19lbnRyeV91bmZyZWV6ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDA6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDEtXHRlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjY9IH5VRFBfVFVOTkVMX05JQ19FTlRSWV9GUk9aRU47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMDU9dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwNjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwNy1cdHJldHVybiBlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjYgKFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERCB8XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMTI9dWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMTQtXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjExNTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTExNi1cdGVudHJ5LVx1MDAzZWZsYWdzIHw9IGZsYWc7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMjE9dWRwX3R1bm5lbF9uaWNfdGlfZnJvbV9lbnRyeShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMjItXHRcdFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTIzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTI0LVx0bWVtc2V0KHRpLCAwLCBzaXplb2YoKnRpKSk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzE9dWRwX3R1bm5lbF9uaWNfaXNfZW1wdHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzMy1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDQ9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ1Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTQ2LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTY2PV9fdWRwX3R1bm5lbF9uaWNfZ2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNjctXHRcdFx0ICB1bnNpZ25lZCBpbnQgaWR4LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY4Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTY5LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE4MD1fX3VkcF90dW5uZWxfbmljX3NldF9wb3J0X3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODEtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpZHgsIHU4IHByaXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE4Mjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4My1cdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pYy1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdLmh3X3ByaXYgPSBwcml2O1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTg3PXVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4OC1cdFx0XHRcdCBpbnQgZXJyKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxODk6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xOTAtXHRib29sIGRvZGd5ID0gZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX09QX0ZBSUw7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMTA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMTItXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjE0LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIzOT11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0MC1cdFx0XHRcdCAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNDE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDItXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUxPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjUzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjU0LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4Mj1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODM6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODQtXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwMTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwMi1cdGlmICghdXRuLVx1MDAzZW5lZWRfc3luYylcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwOT11ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEwLVx0XHRcdFx0c3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMi1cdHJldHVybiB0YWJsZS1cdTAwM2V0dW5uZWxfdHlwZXMgXHUwMDI2IHRpLVx1MDAzZXR5cGU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMTY9dWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzE3LVx0XHRcdCAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxODp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxOS1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMzQ9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM1LVx0XHRcdCAgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMzNy1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNTY9dWRwX3R1bm5lbF9uaWNfZW50cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXHRcdFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNTg6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTktXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk0PXVkcF90dW5uZWxfbmljX2VudHJ5X3RyeV9hZGooc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTYtXHRcdFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozOTc6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTgtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDE4PXVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDE5LVx0XHRcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjA6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjEtXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00Mzk9dWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDAtXHRcdFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDItXHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgJiM0MzsxKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0Nj11ZHBfdHVubmVsX25pY19kZWxfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0Ny1cdFx0XHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ0ODp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0OS1cdHJldHVybiB1ZHBfdHVubmVsX25pY190cnlfZXhpc3RpbmcoZGV2LCB1dG4sIHRpLCAtMSk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NTM9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU0LVx0XHQgICAgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ1NTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1Ni1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ5MD1fX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTItXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTI0PV9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUyNTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyNi1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTQwPXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU0MTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0Mi1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NzY9X191ZHBfdHVubmVsX25pY19kdW1wX3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1Nzc6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NzgtXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjAxPV9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMi1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjAzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjA0LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYzNz1zdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjM4Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjM5LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02NDY9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY0Nzp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0OC1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjU1PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY1Njp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY1Ny1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njc4PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzk6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODAtXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzAxPXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzAyOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzAzLVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTcyOD1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzI5Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzMwLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4gPVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzUyPXVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTMtXHRcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTQ6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTUtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc4MT1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3ODI6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03ODMtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5MD1zdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc5MTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc5Mi1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04NjU9dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY2Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODY3LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxOT11ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyMC1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MjE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjItXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05NzM9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTc0Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTc1LVx0aW50IGVycjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMDA9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMDE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDAyLVx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2dWRwX3R1bm5lbF9uaWNfbm90aWZpZXJfYmxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVURQIFR1bm5lbCBOSUMgU3luY2hyb25pemF0aW9uIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZyBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AsIHRoZSBjb3JlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZSBmb3Igc3ltYm9sIHZpc2liaWxpdHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IG1vc3Qgb2YgdGhlbSB3b24mIzM5O3QgYmUgZXhwb3NlZCBhcyBzeW1ib2xzLiBCdXQgd2FpdCwgc29tZSBvZiB0aGVtIGFyZSBjbGVhcmx5IHVzZWQgaW4gd2F5cyB0aGF0IHByZXZlbnQgaW5saW5pbmcuIFNwZWNpZmljYWxseSwgdGhlIGFkZHJlc3NlcyBvZiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgKHVzZWQgd2l0aCBgSU5JVF9ERUxBWUVEX1dPUktgKSwgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgKHVzZWQgd2l0aCBgbm90aWZpZXJfYmxvY2tgKSwgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGFuZCBgX191ZHBfdHVubmVsX25pY19kZWxfcG9ydGAgKHBhc3NlZCBpbnRvIGB1ZHBfdHVubmVsX25pY19vcHNgKS4gVGhvc2Ugc2hvdWxkIGJlIGdvb2QgdGFyZ2V0cy4KCk9rYXksIGxldCYjMzk7cyBjb25maXJtIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgeWVwLCBpdCYjMzk7cyBzdGF0aWMsIGJ1dCB0aGF0JiMzOTtzIGZpbmUgc2luY2Ugd2UgdGFrZSBpdHMgYWRkcmVzcywgc28gaXQgbXVzdCBiZSBhIHZhbGlkIHN5bWJvbCBmb3IgZnV6emluZy4gTm93LCB3aGF0IGFib3V0IGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYD8gSG1tLCBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gTGlrZWx5IGlubGluZWQsIHNvIG1heWJlIG5vdCB0aGUgYmVzdCBzeW1ib2wuIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgIGxvb2tzIGxpa2UgYSBtb3JlIHByb21pc2luZyBjYW5kaWRhdGUgc2luY2UgaXQmIzM5O3MgdXNlZCB3aXRoIGBub3RpZmllcl9ibG9ja2AuCgpTbywgdGhlIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgaXM6IHRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIHN5bmNocm9uaXphdGlvbiBtZXRob2QgaW4gVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZywgc3dpdGNoaW5nIHRvIGEgZGVsYXllZCB3b3JrcXVldWUgYW5kIHJlZmluaW5nIHRoZSBsb2NraW5nIG1lY2hhbmlzbSB3aXRoIGBydG5sX3RyeWxvY2soKWAgYW5kIGEgcmVxdWV1ZSBkZWxheSB0byBkZWFsIHdpdGggcG90ZW50aWFsIGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5LCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggZW11bGF0ZWQgZGV2aWNlcyBsaWtlIG5ldGRldnNpbS4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRvIGNhdGNoIGFueSBuZXdseSBpbnRyb2R1Y2VkIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkbG9ja3MuCgpIZXJlJiMzOTtzIG15IGRpc3RpbGxlZCBsaXN0OgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUKKiAgICoqUmVhc29uaW5nOioqIENoYW5nZXMgdG8gY29yZSBuZXR3b3JraW5nIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgbG9ja2luZywgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgZGVhZGxvY2tzLCByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMuCiogICAqKkZvY3VzU3ltYm9sczoqKgogICAgKiAgIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYAogICAgKiAgIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgCiAgICAqICAgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgCiAgICAqICAgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgCiogICAqKkVuYWJsZUNvbmZpZ3M6KioKICAgICogICBgTkVUX1VEUF9UVU5ORUxgIChleHBsaWNpdGx5IGxpc3RlZCwgYnV0IHNlbGVjdGVkIGJ5IGBWWExBTmAgb3IgYEdFTkVWRWApCiAgICAqICAgYFZYTEFOYAogICAgKiAgIGBHRU5FVkVgCiAgICAqICAgYE5FVERFVlNJTWAKCkFuZCBsZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTkVUREVWU0lNYCBkb2VzbiYjMzk7dCBkZXBlbmQgb24gb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjg4MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIENoZWNrIGZvciBORVRERVZTSU0qKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBjb25maXJtIHRoZSBkZWZpbml0aW9uIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTkVUREVWU0lNYC4gSXQmIzM5O3MgcG9zc2libGUgSSYjMzk7bSBvdmVybG9va2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwgYWJvdXQgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgb3IgY29uZmlndXJlZCwgb3IgaWYgdGhlcmUgaXMgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlnIEkgaGF2ZSB0byBlbmFibGUgYWxvbmdzaWRlLiBEb3VibGUtY2hlY2tpbmcgYEtjb25maWdgIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGF2b2lkIHdhc3RpbmcgdGltZSBvbiBpc3N1ZXMgdGhhdCBhcmUgYWxyZWFkeSBhZGRyZXNzZWQgaW4gdGhlIHByb2plY3QgYnVpbGQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBzYW5pdHkgY2hlY2sgZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMgYW5kIGFsd2F5cyB3b3J0aCBhIHNlY29uZCBnbGFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzExNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgcXVlcnk6CgoqKldoZXJlJiMzOTtzIHRoZSBgbmV0ZGV2c2ltYCBNYWdpYz8qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzLiBJIHNlZSAmIzM0O25ldGRldnNpbSYjMzQ7IGFuZCBteSBicmFpbiBpbW1lZGlhdGVseSBnb2VzLCAmIzM0O0RlZmluZSB0aGF0IHRoaW5nISYjMzQ7IEl0JiMzOTtzIHRoYXQgaW5pdGlhbCByZWFjdGlvbiB0byBlbmNvdW50ZXJpbmcgYW4gdW5mYW1pbGlhciB0ZXJtLCBlc3BlY2lhbGx5IG9uZSB0aGF0IHNvdW5kcyBsaWtlIGl0IGNvdWxkIGJlIGNydWNpYWwuIEkgbWVhbiwgaWYgdGhpcyBpcyBjZW50cmFsIHRvIHNvbWV0aGluZywgSSAqbmVlZCogdG8ga25vdyB3aGVyZSBpdCYjMzk7cyByb290ZWQuIElzIGl0IGEgbW9kdWxlIEkgbmVlZCB0byBpbXBvcnQ/IEEgZnVuY3Rpb24gY2FsbD8gQSBsaWJyYXJ5IGRlcGVuZGVuY3k/IElzIGl0IHNvbWV0aGluZyBJJiMzOTt2ZSBzb21laG93IG1pc3NlZCwgZGVzcGl0ZSBteSBleHBlcmllbmNlPyBUaGlzIGFic2VuY2Ugb2YgY29udGV4dCBpcyBtYWtpbmcgbWUgZmVlbCBsaWtlIEkmIzM5O20gbWlzc2luZyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIGNhbiYjMzk7dCByZWFsbHkgYW5hbHl6ZSB0aGlzIGZ1cnRoZXIgdW50aWwgSSBrbm93IGV4YWN0bHkgd2hhdCBgbmV0ZGV2c2ltYCBhY3R1YWxseSAqaXMqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzQyMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqS2NvbmZpZyBMb2NhdGlvbiBGb3VuZCoqCgpBbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkgd2FzIGp1c3QgdHJhY2luZyB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0cnlpbmcgdG8gcmVtZW1iZXIgd2hlcmUgSSBzYXcgaXQgZGVmaW5lZC4gQmluZ28hIEFmdGVyIGEgcXVpY2sgc2VhcmNoLCBpdCYjMzk7cyByaWdodCB0aGVyZSwgcHJlY2lzZWx5IHdoZXJlIEkgc3VzcGVjdGVkOiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhlIG5ldHdvcmtpbmcgZHJpdmVycyBhcmUgdXN1YWxseSBhbGwgb3JnYW5pemVkIGluIHRoYXQgYXJlYS4gTm93IEkgY2FuIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mICp0aGF0KiBLY29uZmlnIGZpbGUgYW5kIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdHMgYXJlIHRpZWQgdG8gdGhhdCBvcHRpb24uIEtub3dpbmcgdGhpcyBwYXRoIHNhdmVzIHRpbWUsIGFuZCBsZXRzIG1lIG1vdmUgb24gdG8gdGhlIG1vcmUgaW50ZXJlc3RpbmcgcGFydDogZGVjaXBoZXJpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY5NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpbmNvbXBsZXRlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hhdCBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzPyBXaGF0IHJlbGllcyBvbiB3aGF0PyYjMzQ7IFdpdGhvdXQgZnVsbHkgZ3Jhc3BpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBlbGVtZW50cywgSSBjYW4mIzM5O3QgYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGxhcmdlciBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTc0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIG5ldHdvcmsgc2ltdWxhdGlvbiBvciByZWxhdGVkIGZpZWxkczoKCioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERpcmVjdGl2ZSoqCgpBbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGBjb25maWcgTkVUREVWU0lNYCBqdXN0IHBvcHBlZCB1cC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgd2UmIzM5O3JlIGluIGNvbmZpZ3VyYXRpb24gbW9kZSwgbGlrZWx5IHdpdGhpbiBhIG5ldHdvcmsgc2ltdWxhdGlvbiBlbnZpcm9ubWVudCBvciBhIHN5c3RlbSB0aGF0IHV0aWxpemVzIGEgbmV0d29yayBkZXZpY2Ugc2ltdWxhdGlvbiBjb21wb25lbnQuJiMzNDsgVGhpcyBpcyBwcm9iYWJseSBzb21lIGtpbmQgb2YgaW5pdGlhbGl6YXRpb24gb3Igc2V0dXAgY29tbWFuZC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzIG9yIHNldHRpbmdzIGFyZSBiZWluZyBkZWZpbmVkIGhlcmUsIG9yIGlmIHRoaXMgaXMganVzdCBhbiBlbnRyeSBwb2ludCB0byBmdXJ0aGVyIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGRpY3RhdGUgdGhlIG92ZXJhbGwgYmVoYXZpb3Igb2Ygc29tZSBzaW11bGF0ZWQgbmV0d29yayBkZXZpY2UsIG9yIHRoZSBlbnZpcm9ubWVudCBmb3IgaXQuIFRoZSBsaW5lcyBmb2xsb3dpbmcgdGhpcyBhcmUgZ29pbmcgdG8gYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGltcGxlbWVudGVkLiBTbywgbGV0JiMzOTtzIGRpdmUgaW50byB0aG9zZSBsaW5lcyB0byBzZWUgd2hhdCB0aGV5IHJldmVhbCBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjA0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MDQ6XHRjb25maWcgTkVUREVWU0lNXG4gNjA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcJiMzNDtcbiA2MDY6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiA2MDc6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDYwODpcdFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxuIDYwOTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxuIDYxMDpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gNjExOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gNjEyOlx0XHRzZWxlY3QgTkVUX1NIQVBFUlxuIDYxMzpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM2MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyBORVRERVZTSU0gYW5kIFZYTEFOIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBORVRERVZTSU1gIGFuZCBob3cgcm9idXN0IGl0IGlzLiBUaGUgZGVwZW5kZW5jZSBvbiBgREVCVUdfRlNgIGFuZCBgSU5FVGAgaXMgc3RyYWlnaHRmb3J3YXJkLiBDb25zaWRlcmluZyBgREVCVUdfRlNgIGlzIGdlbmVyYWxseSBlbmFibGVkIG9uIG1vc3Qgc3lzdGVtcyBJIHdvcmsgd2l0aCwgdGhhdCBhc3BlY3Qgb2YgYE5FVERFVlNJTWAgbG9va3Mgc29saWQgYW5kIHNob3VsZG4mIzM5O3QgcHJlc2VudCBhbiBpc3N1ZS4gSXQmIzM5O3MgYSBmYWlybHkgc2FmZSBhc3N1bXB0aW9uLgoKTm93LCBsZXQmIzM5O3MgcGl2b3QgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBWWExBTmAuIFRoYXQgd2lsbCBuZWVkIGEgYml0IG1vcmUgaW52ZXN0aWdhdGlvbiwgYXMgaXQmIzM5O3MgYSBjcml0aWNhbCB0ZWNobm9sb2d5IGFuZCB1bmRlcnN0YW5kaW5nIGFsbCBpdHMgY29tcG9uZW50cyBpcyBwYXJhbW91bnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjMwOlx0Y29uZmlnIFZYTEFOXG4gMjMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcJiMzNDtcbiAyMzI6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDIzMzpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjM0Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMjM1Olx0XHRoZWxwXG4gMjM2Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdnhsYW4gdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxuIDIzNzpcdFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gVlhMQU4gaXMgb2Z0ZW4gdXNlZFxuIDIzODpcdFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cbiAyMzk6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDc0MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipWWExBTiBhbmQgdGhlIFBhdGggRm9yd2FyZCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IG5ldHdvcmsgdmlydHVhbGl6YXRpb24uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgVlhMQU4gcmVsaWVzIG9uIHRoZSB1bmRlcmx5aW5nIElORVQgaW5mcmFzdHJ1Y3R1cmUuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IEkgbmVlZCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgbGFuZHNjYXBlLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gR0VORVZFLiBJIHNob3VsZCBjaGVjayB3aGF0IGRlcGVuZGVuY2llcyAqdGhhdCogcHJvdG9jb2wgaGFzLCBzZWUgaWYgaXQgaXMgYSBtb3JlIHZpYWJsZSBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjQ1Olx0Y29uZmlnIEdFTkVWRVxuIDI0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cJiMzNDtcbiAyNDc6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI0ODpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjQ5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMjUwOlx0XHRoZWxwXG4gMjUxOlx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgZ2VuZXZlIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyNTI6XHRcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIEdFTkVWRSBpcyBvZnRlbiB1c2VkXG4gMjUzOlx0XHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuIDI1NDpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MDU1CgkJCQkJCQlvdXRwdXQ6IDIwMgoJCQkJCQkJdGhvdWdodHM6IDM5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYEdFTkVWRWAgQ29uZmlndXJhdGlvbiBhbmQgUmVsYXRlZCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gYnJlYWtpbmcgZG93biB0aGlzIGBHRU5FVkVgIHNldHVwLiBJdCYjMzk7cyBidWlsdCBvbiBgSU5FVGAsIHRoYXQmIzM5O3MgdGhlIGZvdW5kYXRpb24uIEFuZCBiZWNhdXNlIG9mIHRoYXQsIEkgY2FuIHNlZSB0aGUgY29uZmlndXJhdGlvbiBpbnZvbHZlcyBgTkVUREVWU0lNYCwgYFZYTEFOYCwgYW5kIGBHRU5FVkVgIHRoZW1zZWx2ZXMuIEEgcXVpY2sgcmVtaW5kZXIgaXMgdXNlZnVsLCBgTkVUX1VEUF9UVU5ORUxgIGlzIHNlbGVjdGVkIGJ5IGJvdGggYFZYTEFOYCBhbmQgYEdFTkVWRWAsIHNvLCBldmVuIHRob3VnaCBJIGRvbiYjMzk7dCB0ZWNobmljYWxseSAqbmVlZCogdG8gbGlzdCBpdCwgaXQmIzM5O3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aG9zZSBmb2N1cyBzeW1ib2xzIGFnYWluLCBqdXN0IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG9uIHRoZSByaWdodCB0cmFjazogYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgLCBhbmQgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgLgoKSG1tLCBhbnkgb3RoZXIgZnVuY3Rpb25zIGdvdCB0d2Vha2VkPyBBaCwgeWVzLiBgdWRwX3R1bm5lbF9uaWNfYWxsb2NgIGlzIG1vZGlmaWVkIHRvIHVzZSBgSU5JVF9ERUxBWUVEX1dPUktgLiBBbHNvLCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AuIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2Agbm93IHVzZXMgYHF1ZXVlX2RlbGF5ZWRfd29ya2AsIGFuZCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGNoYW5nZWQgdG8gc2tpcCB0aGUgY2hlY2sgZm9yIGB1dG4tJmd0O3dvcmtfcGVuZGluZ2AuCgpTaW5jZSBgdWRwX3R1bm5lbF9uaWNfYWxsb2NgIGlzIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYSBmb2N1cyBvbiBmdXp6aW5nIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgIHdpbGwgZWZmZWN0aXZlbHkgY292ZXIgdGhhdCBmdW5jdGlvbi4gQW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCBpcyAqYWxzbyogY2FsbGVkIGJ5IGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX191ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0YC4KClllYWgsIHRoYXQgbWFrZXMgc2Vuc2UuIENvbnNpZGVyaW5nIGhvdyB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIGFuZCB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGVtLCBteSBjaG9zZW4gZm9jdXMgc3ltYm9scyBzaG91bGQgY292ZXIgYWxsIHRoZSByZWxldmFudCBtb2RpZmllZCBjb2RlIHBhdGhzLiBJJiMzOTttIHNhdGlzZmllZCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7R0VORVZFJiMzNDssCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19hZGRfcG9ydCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OywKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgICAmIzM0O19fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjI4LjYzNDA5MTk0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTMzMDk4ODg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIixcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJHRU5FVkVcIixcbiAgICBcIk5FVF9VRFBfVFVOTkVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0XCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MjguNjM0MDk5NDY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjM4ODA3MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlYjI5NDVjZTc0M2U5MjliODc0YzI5ZjIwZTBjZjcxYzZjYjM4OTdlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDEzOjU1OjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuaW5kZXggM2IzMmEwYWZhOTc5OGQuLjUzYTFhOWMxZjhiZmYwIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuQEAgLTMyLDEzICszMiwxMiBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xcbiAgKiBAbG9jazpcXHRwcm90ZWN0cyBhbGwgZmllbGRzXFxuICAqIEBuZWVkX3N5bmM6XFx0YXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZFxcbiAgKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcXG4tICogQHdvcmtfcGVuZGluZzogQHdvcmsgaXMgY3VycmVudGx5IHNjaGVkdWxlZFxcbiAgKiBAbl90YWJsZXM6XFx0bnVtYmVyIG9mIHRhYmxlcyB1bmRlciBAZW50cmllc1xcbiAgKiBAbWlzc2VkOlxcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXFxuICAqIEBlbnRyaWVzOlxcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXFxuICAqL1xcbiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xcbi1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4rXFx0c3RydWN0IGRlbGF5ZWRfd29yayB3b3JrO1xcbiBcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcXG4gXFxuQEAgLTQ2LDcgKzQ1LDYgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4gXFxuIFxcdHU4IG5lZWRfc3luYzoxO1xcbiBcXHR1OCBuZWVkX3JlcGxheToxO1xcbi1cXHR1OCB3b3JrX3BlbmRpbmc6MTtcXG4gXFxuIFxcdHVuc2lnbmVkIGludCBuX3RhYmxlcztcXG4gXFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XFxuQEAgLTMwMSwxMSArMjk5LDEwIEBAIF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIHN0YXRpYyB2b2lkXFxuIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiB7XFxuLVxcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMgfHwgdXRuLVxcdTAwM2V3b3JrX3BlbmRpbmcpXFxuK1xcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrKTtcXG4tXFx0dXRuLVxcdTAwM2V3b3JrX3BlbmRpbmcgPSAxO1xcbitcXHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2xcXG5AQCAtNzMxLDEyICs3MjgsMTcgQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biA9XFxuLVxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMsIHdvcmspO1xcbitcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHVkcF90dW5uZWxfbmljLCB3b3JrLndvcmspO1xcbiBcXG4tXFx0cnRubF9sb2NrKCk7XFxuK1xcdC8qIFdlIGNhbm5vdCBibG9jayBvbiBSVE5MIGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBkZWFkbG9jayB3aXRoXFxuK1xcdCAqIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoKSBjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpXFxuK1xcdCAqIHdoaWxlIGhvbGRpbmcgUlROTC4gUmVxdWV1ZSB3aXRoIDEgamlmZnkgZGVsYXkgaWYgUlROTCBpcyBjb250ZW5kZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIDEpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4tXFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMDtcXG4gXFx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyh1dG4tXFx1MDAzZWRldiwgdXRuKTtcXG4gXFxuIFxcdGlmICh1dG4tXFx1MDAzZW5lZWRfcmVwbGF5KVxcbkBAIC03NTcsNyArNzU5LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxuIFxcdGlmICghdXRuKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0dXRuLVxcdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xcbi1cXHRJTklUX1dPUksoXFx1MDAyNnV0bi1cXHUwMDNld29yaywgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayk7XFxuK1xcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZ1dG4tXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5fdGFibGVzOyBpKyspIHtcXG5AQCAtOTAxLDExICs5MDMsMTEgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0dWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pO1xcbiBcXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcXG4gXFxuLVxcdC8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsXFxuLVxcdCAqIHJldHJ5IHVucmVnaXN0ZXIgdW50aWwgd2UgZ2l2ZSB1cCBvdXIgcmVmZXJlbmNlIG9uIHRoaXMgZGV2aWNlLlxcbitcXHQvKiBNYWtlIHN1cmUgbm8gd29yayBpcyBydW5uaW5nIG9yIHF1ZXVlZCBiZWZvcmUgZnJlZWluZyBAdXRuLlxcbitcXHQgKiBUaGUgd29yayBoYW5kbGVyIHVzZXMgcnRubF90cnlsb2NrKCksIHNvIGl0IHdpbGwgbm90IGRlYWRsb2NrXFxuK1xcdCAqIGFnYWluc3QgdGhlIFJUTkwgd2UgYXJlIGhvbGRpbmcgaGVyZS5cXG4gXFx0ICovXFxuLVxcdGlmICh1dG4tXFx1MDAzZXdvcmtfcGVuZGluZylcXG4tXFx0XFx0cmV0dXJuO1xcbitcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnV0bi1cXHUwMDNld29yayk7XFxuIFxcbiBcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxuIHJlbGVhc2VfZGV2OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NToyOS41OTg1Mzk4ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NjQzNjY1MzE4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCIsXG4gICAgXCJORVRfVURQX1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZWxfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGViMjk0NWNlNzQzZTkyOWI4NzRjMjlmMjBlMGNmNzFjNmNiMzg5N2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzo1NToyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5pbmRleCAzYjMyYTBhZmE5Nzk4ZC4uNTNhMWE5YzFmOGJmZjAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5AQCAtMzIsMTMgKzMyLDEyIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XG4gICogQGxvY2s6XHRwcm90ZWN0cyBhbGwgZmllbGRzXG4gICogQG5lZWRfc3luYzpcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcbiAgKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXG4gICogQG5fdGFibGVzOlx0bnVtYmVyIG9mIHRhYmxlcyB1bmRlciBAZW50cmllc1xuICAqIEBtaXNzZWQ6XHRiaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93blxuICAqIEBlbnRyaWVzOlx0dGFibGUgb2YgdGFibGVzIG9mIHBvcnRzIGN1cnJlbnRseSBvZmZsb2FkZWRcbiAgKi9cbiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xuLVx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XG4rXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHdvcms7XG4gXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTQ2LDcgKzQ1LDYgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcbiBcbiBcdHU4IG5lZWRfc3luYzoxO1xuIFx0dTggbmVlZF9yZXBsYXk6MTtcbi1cdHU4IHdvcmtfcGVuZGluZzoxO1xuIFxuIFx0dW5zaWduZWQgaW50IG5fdGFibGVzO1xuIFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XG5AQCAtMzAxLDExICsyOTksMTAgQEAgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBzdGF0aWMgdm9pZFxuIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHtcbi1cdGlmICghdXRuLVx1MDAzZW5lZWRfc3luYyB8fCB1dG4tXHUwMDNld29ya19wZW5kaW5nKVxuK1x0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaywgMCk7XG4gfVxuIFxuIHN0YXRpYyBib29sXG5AQCAtNzMxLDEyICs3MjgsMTcgQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID1cbi1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB1ZHBfdHVubmVsX25pYywgd29yayk7XG4rXHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMsIHdvcmsud29yayk7XG4gXG4tXHRydG5sX2xvY2soKTtcbitcdC8qIFdlIGNhbm5vdCBibG9jayBvbiBSVE5MIGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBkZWFkbG9jayB3aXRoXG4rXHQgKiB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKCkgY2FsbGluZyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKVxuK1x0ICogd2hpbGUgaG9sZGluZyBSVE5MLiBSZXF1ZXVlIHdpdGggMSBqaWZmeSBkZWxheSBpZiBSVE5MIGlzIGNvbnRlbmRlZC5cbitcdCAqL1xuK1x0aWYgKCFydG5sX3RyeWxvY2soKSkge1xuK1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaywgMSk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuLVxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuQEAgLTc1Nyw3ICs3NTksNyBAQCB1ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcbiBcdGlmICghdXRuKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdHV0bi1cdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xuLVx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbitcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl90YWJsZXM7IGkrKykge1xuQEAgLTkwMSwxMSArOTAzLDExIEBAIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XG4gXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbiBcbi1cdC8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsXG4tXHQgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS5cbitcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGlzIHJ1bm5pbmcgb3IgcXVldWVkIGJlZm9yZSBmcmVlaW5nIEB1dG4uXG4rXHQgKiBUaGUgd29yayBoYW5kbGVyIHVzZXMgcnRubF90cnlsb2NrKCksIHNvIGl0IHdpbGwgbm90IGRlYWRsb2NrXG4rXHQgKiBhZ2FpbnN0IHRoZSBSVE5MIHdlIGFyZSBob2xkaW5nIGhlcmUuXG4gXHQgKi9cbi1cdGlmICh1dG4tXHUwMDNld29ya19wZW5kaW5nKVxuLVx0XHRyZXR1cm47XG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuIFxuIFx0dWRwX3R1bm5lbF9uaWNfZnJlZSh1dG4pO1xuIHJlbGVhc2VfZGV2OlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MjkuNTk4NTQwOTM0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc0NTEwNzE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVRFAgVHVubmVsIE5JQyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYC4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGNydWNpYWwsIGNoYW5nZS4gVGhleSdyZSBzd2l0Y2hpbmcgZnJvbSBgc3RydWN0IHdvcmtfc3RydWN0YCB0byBgc3RydWN0IGRlbGF5ZWRfd29ya2AgaW4gdGhlIGBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNgLiBUaGF0J3MgdGhlIGZpcnN0IGNsdWUuIFRoZW4sIGFsbCB0aGUgYXNzb2NpYXRlZCBmdW5jdGlvbnMgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIHRoZSBkZWxheWVkIHdvcmsgZXF1aXZhbGVudHM6IGBxdWV1ZV9kZWxheWVkX3dvcmtgLCBgSU5JVF9ERUxBWUVEX1dPUktgLCBhbmQgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb24gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIG5vdyB1c2luZyBgcnRubF90cnlsb2NrKClgIHdpdGggYSByZXRyeSB1c2luZyBgcXVldWVfZGVsYXllZF93b3JrYCBpZiB0aGUgbG9jayBpcyBub3QgYXZhaWxhYmxlLiBUaGlzIGlzIGEgdGVsbC10YWxlIHNpZ24gb2YgdHJ5aW5nIHRvIGZpeCBhIGNvbmN1cnJlbmN5IHByb2JsZW0sIGxpa2VseSBhIGRlYWRsb2NrIG9yIHJhY2UgY29uZGl0aW9uLCB3aXRoaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgcGF0aC5cblxuVGhpcyBpcyBpbW1lZGlhdGVseSBmbGFnZ2VkIGFzIHNvbWV0aGluZyB0aGF0IGFic29sdXRlbHkgKm5lZWRzKiBmdXp6aW5nLiBXZSBoYXZlIGEgc29saWQgbGVhZCBvbiBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFkZHJlc3NpbmcgYSBzcGVjaWZpYyB0eXBlIG9mIGlzc3VlLlxuXG5MZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2Agc291cmNlIGZpbGUgaXRzZWxmIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbmZpZyBvcHRpb25zIGFuZCBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGlzIHVzZWQgYW5kIGhvdyB0aGUgY2hhbmdlcyBhZmZlY3QgaXQ6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLCBhbmQgYHVkcF90dW5uZWxfbmljX2FsbG9jYC5cblxuTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEknbGwgY2hlY2sgYG5ldC9pcHY0L01ha2VmaWxlYCBvciBgbmV0L2lwdjQvS2NvbmZpZ2AgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbmZpZyBvcHRpb25zIGVuYWJsZSBgdWRwX3R1bm5lbF9uaWMuY2AuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmFzZWxpbmUgdG8gd29yayBmcm9tIHdoZW4gdGVzdGluZyB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjM1LjM0MzY1MTM4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDM1MDAyNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfTkVUX0lQR1JFKSArPSBpcF9ncmUub1xcbm5ldC9pcHY0L01ha2VmaWxlOjMxOnVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSArPSB1ZHBfdHVubmVsLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MzUuNjQ3MTYwNTQ3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NTkwMDMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIC0gVURQIFR1bm5lbCBNb2R1bGUqKlxuXG5SaWdodCwgc28gYENPTkZJR19ORVRfVURQX1RVTk5FTGAgaXMgZW5hYmxlZC4gVGhhdCBzaG91bGQgYnJpbmcgaW4gdGhlIGB1ZHBfdHVubmVsX25pYy5vYCBtb2R1bGUuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGVyZSBleGFjdGx5IHRoaXMgaXMgZGVmaW5lZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX1VEUF9UVU5ORUxgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXBzdHJlYW0gY2hhbmdlcyB0aGF0IEkgYW0gbm90IGF3YXJlIG9mLCBvciBpZiB0aGVyZSBpcyBhbnkgdW51c3VhbCBjb25maWcgZGVwZW5kZW5jeSB0aGF0IEkgbmVlZCB0byBiZSBjYXJlZnVsIG9mLiBUaGF0J3MgYWx3YXlzIHRoZSBmaXJzdCBwbGFjZSBJIHN0YXJ0IHdpdGggdGhlc2UgbmV0d29yay1yZWxhdGVkIG9wdGlvbnMgdG8gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBzdHJhaWdodCBpbiBteSBoZWFkLiBBIHF1aWNrIGNoZWNrIG9mIHRoYXQgS2NvbmZpZyBmaWxlIHNob3VsZCBjb25maXJtIHRoZSBsaW5rIGFuZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjM5LjA5MzA2MjgxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg3Njc2ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9VRFBfVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMTUtXFxubmV0L2lwdjQvS2NvbmZpZzozMTY6Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MzkuMjExODM4ODcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzOTEzMjc5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgSSBjYW4gcHVsbCBvdXQgb2YgdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBORVRfVURQX1RVTk5FTCBUcmlzdGF0ZSoqXG5cblJpZ2h0LCBzbyBgTkVUX1VEUF9UVU5ORUxgIGlzIGEgdHJpc3RhdGUgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGl0J3MgbGlrZWx5IGEgc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIHJhdGhlciB0aGFuIGEgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlIG9uZS4gVGhlIHRleHQgbm90ZXMgdGhhdCBvdGhlciBjb25maWd1cmF0aW9ucywgc3VjaCBhcyBWWExBTiBvciBHRU5FVkUsIGFyZSBwcm9iYWJseSB0aGUgb25lcyBkcml2aW5nIGl0cyBzZWxlY3Rpb24uIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcHJvYmFibHkgYW4gdW5kZXJseWluZyBidWlsZGluZyBibG9jayBmb3IgdGhvc2UgdHVubmVsaW5nIHByb3RvY29scy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zIGlzIHB1bGxpbmcgaW4gYE5FVF9VRFBfVFVOTkVMYCwgb3IgaWYgaXQncyBvdGhlciBvcHRpb25zIGVudGlyZWx5LiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NDIuMzUwOTczNzk3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODMxMjIxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9VRFBfVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc9Mj1jb25maWcgUkRNQV9SWEVcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy01LVxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9WSVJUX0RNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZzo2OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy03LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTc2LVxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjc3OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzgtXFx0c2VsZWN0IERTVF9DQUNIRVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA2LVxcdHNlbGVjdCBEU1RfQ0FDSEVcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwOC1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjMyLVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjMzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjM0LVxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ3LVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjQ4OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ5LVxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2Mi1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2NC1cXHRzZWxlY3QgR1JPX0NFTExTXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3NC1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NTpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTEtXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTI6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDQtXFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElQX01VTFRJQ0FTVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA1OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzA2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzIxPWNvbmZpZyBORVRfRk9VXFxubmV0L2lwdjQvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIklQOiBGb28gKElQIHByb3RvY29scykgb3ZlciBVRFBcXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozMjM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMjQtXFx0aGVscFxcbi0tXFxubmV0L2wydHAvS2NvbmZpZz02PW1lbnVjb25maWcgTDJUUFxcbi0tXFxubmV0L2wydHAvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC9sMnRwL0tjb25maWc6OTpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvbDJ0cC9LY29uZmlnLTEwLVxcdGhlbHBcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnPTY9Y29uZmlnIEFGX1JYUlBDXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZy0xMS1cXHRzZWxlY3QgS0VZU1xcbm5ldC9yeHJwYy9LY29uZmlnOjEyOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbm5ldC9yeHJwYy9LY29uZmlnLTEzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcXG4tLVxcbm5ldC9zY3RwL0tjb25maWctMTItXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG5uZXQvc2N0cC9LY29uZmlnOjEzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbm5ldC9zY3RwL0tjb25maWctMTQtXFx0aGVscFxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZz0zMD1jb25maWcgVElQQ19NRURJQV9VRFBcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMzItXFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZzozMzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvdGlwYy9LY29uZmlnLTM0LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NTo0NS41MzQxMDIyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTg0NzM4NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgVURQIFR1bm5lbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSBlbmFibGUgVURQIHR1bm5lbGluZyB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoZSBrZXkgaGVyZSBpcyBgTkVUX1VEUF9UVU5ORUxgLiBJdCdzIHNlbGVjdGVkIGJ5IGEgbG90IG9mIGRpZmZlcmVudCBmZWF0dXJlcywgd2hpY2ggaXMgcHJldHR5IGNvbW1vbi4gTXkgZmlyc3QgaW5zdGluY3Qgd2FzIHdoZXRoZXIgd2UgY291bGQganVzdCBkaXJlY3RseSBsaXN0IGBORVRfVURQX1RVTk5FTGAgaW4gYEVuYWJsZUNvbmZpZ3NgLCBhbG9uZ3NpZGUgb3B0aW9ucyBsaWtlIGBWWExBTmAgb3IgYEdFTkVWRWAuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCBgTkVUX1VEUF9UVU5ORUxgIGlzIGEgdHJpc3RhdGUgY29uZmlnLCBhbmQgYmVjYXVzZSBpdCBsYWNrcyBhIGRpcmVjdCBwcm9tcHQsIGl0IGNhbiAqb25seSogYmUgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlncy4gU28sIHdlIG5lZWQgdG8gYmUgbW9yZSBleHBsaWNpdDsgdGhlIHJpZ2h0IGFwcHJvYWNoIGlzIHRvIGVuYWJsZSBzb21ldGhpbmcgdGhhdCBzZWxlY3RzIGl0LCBhbmQgdGhhdCB3b3VsZCBiZSBgVlhMQU5gLCBgR0VORVZFYCwgb3IgZXZlbiBgTkVUX0ZPVWAuIE1ha2VzIHNlbnNlLlxuXG5UbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYWxsIG9mIHRoaXMgd29ya3MsIGxldCdzIGRpdmUgaW50byB0aGUgY29kZS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEkgbmVlZCB0byByZXZpZXcgd2hhdCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGZyb20gdGhhdCBmaWxlLCBhbmQgYWxzbyB3aGVyZSBpbiB0aGUga2VybmVsIGNvZGUgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaG93IHRoZSBVRFAgdHVubmVsIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgYW5kIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NDkuODkyNTc3NzYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTMzMzgxODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NTAuMTA1OTIzMzMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTQ5MTc0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBNaXNzaW5nIFN5bWJvbCoqXG5cbkhtbSwgc3RyYW5nZS4gSSB3YXMgZXhwZWN0aW5nIGB1ZHBfdHVubmVsX25pYy5jYCB0byBleHBvcnQgc29tZXRoaW5nLCBidXQgSSdtIG5vdCBzZWVpbmcgYW55IGBFWFBPUlRfU1lNQk9MYCBtYWNybyBpbiB0aGF0IGZpbGUuIFRoYXQncyB1bnVzdWFsLCBlc3BlY2lhbGx5IGZvciBhIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnQuIE9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgd2hlcmUgdGhlIHJlbGV2YW50IHN5bWJvbHMgKnNob3VsZCogYmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiBhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGEgYnJvYWRlciBkZWZpbml0aW9uIGxpdmVzIGluIGVpdGhlciBgbmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNgIG9yLCBwb3RlbnRpYWxseSwgaW4gYW5vdGhlciBmaWxlIGFsc28gaW4gdGhlIGBuZXQvaXB2NGAgZGlyZWN0b3J5IHN1Y2ggYXMgdGhlIGB1ZHBfdHVubmVsX25pYy5jYCBmaWxlIGFnYWluLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRocm91Z2ggb25lIG9mIHRob3NlIHNvdXJjZSBmaWxlcyB0byBzZWUgaWYgYSBzaW1pbGFyIHN5bWJvbCBleHBvcnQgZXhpc3RzIG9yIGlmIGl0J3MgcGxhY2VkIGRpZmZlcmVudGx5LiBMZXQgbWUgY2hlY2sgdGhlIGV4cG9ydHMgaW4gdGhvc2UgZmlsZXMgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkgc3VzcGVjdCB0aGUgY29yZSBkZWZpbml0aW9ucyB3aWxsIGJlIGluIG9uZSBvZiB0aG9zZSBzcG90cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk5NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjUzLjcyMDg0NDAzMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzYzMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTI9aW50IHVkcF9zb2NrX2NyZWF0ZTQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdWRwX3BvcnRfY2ZnICpjZmcsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy01OS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6NjA6RVhQT1JUX1NZTUJPTCh1ZHBfc29ja19jcmVhdGU0KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy02MS1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTcxPXZvaWQgc2V0dXBfdWRwX3R1bm5lbF9zb2NrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtOTctfVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX3VkcF90dW5uZWxfc29jayk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtOTktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMTE6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTExMi1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMTM9dm9pZCB1ZHBfdHVubmVsX2Ryb3BfcnhfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjMtfVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEyNDpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX2Ryb3BfcnhfcG9ydCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTI1LVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTI3PXZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQ0LX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDU6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0Ni1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTE0OD12b2lkIHVkcF90dW5uZWxfbm90aWZ5X2RlbF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE2NS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MTY2OkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfbm90aWZ5X2RlbF9yeF9wb3J0KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNjctXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTY4PXZvaWQgdWRwX3R1bm5lbF94bWl0X3NrYihzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTg5LX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxOTA6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF94bWl0X3NrYik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTkxLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTE5Mj12b2lkIHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE5OS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MjAwOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfc29ja19yZWxlYXNlKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0yMDEtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MjAyPXN0cnVjdCBtZXRhZGF0YV9kc3QgKnVkcF90dW5fcnhfZHN0KHN0cnVjdCBza19idWZmICpza2IsICB1bnNpZ25lZCBzaG9ydCBmYW1pbHksXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0yMjItfVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjIyMzpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVuX3J4X2RzdCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMjI0LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTIyNT1zdHJ1Y3QgcnRhYmxlICp1ZHBfdHVubmVsX2RzdF9sb29rdXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTI3MS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MjcyOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfZHN0X2xvb2t1cCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMjczLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NTo1My44MzIyMTMwOTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4NzI2NjEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqVURQIFR1bm5lbCBOSUMgTW9kdWxlIC0gUmUtRXhhbWluYXRpb24qKlxuXG5IbW0sIHRoYXQncyBvZGQuIEkgd2FzIGp1c3Qgd29ya2luZyB3aXRoIGB1ZHBfdHVubmVsX25pYy5jYCwgYW5kIHNvbWV0aGluZyBmZWx0IG9mZi4gSSdtIGFsbW9zdCBjZXJ0YWluIEkgd2FzIGxvb2tpbmcgZm9yIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIG9yIHN5bWJvbCwgYnV0IG5vdyBJJ20gZHJhd2luZyBhIGJsYW5rLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2R1bGUgKml0c2VsZiogaXNuJ3QgZXhwb3NpbmcgYW55dGhpbmcgZGlyZWN0bHkuIE9rYXksIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgY29kZSdzIHNvdXJjZS4gQmV0dGVyIGdvIGJhY2sgYW5kIGNvbmZpcm0gbXkgYXNzdW1wdGlvbiwgZXNwZWNpYWxseSB0aGUgZmlsZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIFRoZXJlIGhhcyB0byBiZSBhIHJlYXNvbiB3aHkgSSB3YXMgbG9va2luZyBhdCB0aGF0IGZpbGUuIFBlcmhhcHMgSSB3YXMgZm9jdXNlZCBvbiB0aGUgaW50ZXJuYWwgbWVjaGFuaXNtcyBhbmQgZ290IGxvc3QgaW4gdGhlIGZsb3cuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzIOKAkyBtYXliZSBteSBnb2FsIGhhcyBjaGFuZ2VkLCBvciB0aGUgZnVuY3Rpb25hbGl0eSBJIGFzc3VtZWQgd2FzIHRoZXJlLCBzaW1wbHkgaXNuJ3QuIFRpbWUgZm9yIGFub3RoZXIgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ0MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjU3LjUxOTQ4MjM1MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgxNDc1MjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NTcuNjA3NjM0OTE4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMzEzNTIwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIE1vZHVsZSBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBtb2R1bGUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIHN5bWJvbCBJIG5lZWQgbWlnaHQgYmUgZXhwb3J0ZWQgZnJvbSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEJ1dCBJIGRpZG4ndCBpbW1lZGlhdGVseSBzZWUgaXQsIHdoaWNoIGlzIGZydXN0cmF0aW5nLiBIb2xkIG9uLCBsZXQncyBzdGVwIGJhY2sgZm9yIGEgc2Vjb25kIOKAkyBgdWRwX3R1bm5lbF9uaWMuY2AgaXNuJ3QgYSBzdGFuZGFsb25lIG9iamVjdDsgaXQncyBjb21waWxlZCBpbnRvIGB1ZHBfdHVubmVsLm9gIGFsb25nIHdpdGggYHVkcF90dW5uZWxfY29yZS5jYC4gSG1tLCByaWdodCwgc28gbG9va2luZyBhdCAqanVzdCogYHVkcF90dW5uZWxfbmljLmNgIG1pZ2h0IGJlIHRvbyBuYXJyb3cuXG5cbkFscmlnaHQsIGxldCdzIGdvIGJhY2sgYW5kIGV4cGxpY2l0bHkgc2VhcmNoIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGZvciBgRVhQT1JUX1NZTUJPTGAuIEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuICpXYWl0Ki4uLiBJICpqdXN0KiBkaWQgdGhhdCwgZGlkbid0IEk/IE9rYXksIG5vLCBubywgbGV0J3Mgbm90IGdldCBhaGVhZCBvZiBvdXJzZWx2ZXMuIExldCdzIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIGEgc3lzdGVtYXRpYyBhcHByb2FjaC4gTGV0J3Mgc2hpZnQgb3VyIGZvY3VzIHRvIGxvb2tpbmcgZGlyZWN0bHkgZm9yIGZ1bmN0aW9ucyBiZWdpbm5pbmcgd2l0aCBgdWRwX3R1bm5lbF9uaWNfYCB3aXRoaW4gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLCBhbmQgc2VlaW5nIHdoYXQgdGhhdCB0dXJucyB1cC4gSG9wZWZ1bGx5LCBzb21ldGhpbmcgd2lsbCBqdW1wIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzczMCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjowMS45Mzg5ODk5NzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTkzNjE4MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZvaWQgdWRwX3R1bm5lbF9uaWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjAyLjExMDkzMjk3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk1MDYxMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGB1ZHBfdHVubmVsX25pYy5jYCBmb3IgUmVkIEZsYWdzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBob3cgVURQIHR1bm5lbGluZyB3b3JrcywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYXJvdW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIG9yIG1heWJlIGp1c3Qgb3Zlcmxvb2tlZCBjb2RlLiBJIG5lZWQgdG8gYmUgKnRob3JvdWdoKiB3aGVuIGluc3BlY3RpbmcgbmV0d29ya2luZyBjb2RlLlxuXG5JIHdhbnQgdG8gZGl2ZSBpbnRvIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYC4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBhIHRhcmdldGVkIGNvZGUgcmV2aWV3LiBJJ20gZm9jdXNpbmcgb24gdGhlIGB1ZHBfdHVubmVsX25pY19gIGZ1bmN0aW9ucy4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSB3YW50IHRvIGlkZW50aWZ5IGFueSBgdWRwX3R1bm5lbF9uaWNfYCBmdW5jdGlvbnMgdGhhdCAqZG9uJ3QqIGV4cGxpY2l0bHkgZGVjbGFyZSBhIHJldHVybiB0eXBlIG9mIGB2b2lkYC4gVGhhdCdzIGEgY2xhc3NpYyBjb2RlIHNtZWxsLiBOb24tdm9pZCBmdW5jdGlvbnMgd2l0aG91dCBhIHJldHVybiB2YWx1ZSBwcmVzZW50IGNhbiBiZSBhIHNvdXJjZSBvZiBwcm9ibGVtcywgdW5kZWZpbmVkIGJlaGF2aW9yLCBvciBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBidWdzIGR1ZSB0byB1bmV4cGVjdGVkIHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgbm90IGhhbmRsZWQuIEl0J3MgYSBxdWljayB3YXkgdG8gZmxhZyBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gZGF0YSBoYW5kbGluZywgZXJyb3IgY29uZGl0aW9ucywgb3Igc2VjdXJpdHkuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IGNvdWxkIGRldmlhdGUgZnJvbSBleHBlY3RlZCBiZWhhdmlvciBvciBwcm92aWRlIGFuIHVuaW50ZW5kZWQgb3Bwb3J0dW5pdHkgZm9yIG1hbmlwdWxhdGlvbi4gSXQncyBhIHF1aWNrIHNjYW4gdG8gbWFrZSBzdXJlIHRoZSBiYXNpY3MgYXJlIGNvdmVyZWQsIGFuZCBub3RoaW5nIGNyaXRpY2FsIGlzIHNsaXBwaW5nIHRocm91Z2ggdGhlIGNyYWNrcy4gVGltZSB0byBzdGFydCBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MDUuOTA1OTk2NjMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIxMzU5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NzAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTEtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMjplbnVtIHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5X2ZsYWdzIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzLVxcdFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERFxcdD0gQklUKDApLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xOC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE5OnN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMC1cXHRfX2JlMTYgcG9ydDtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAtXFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJpZXNbXSBfX2NvdW50ZWRfYnkobl90YWJsZXMpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTItfTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTYtICovXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NzpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU4LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTk6c3RhdGljIGNvbnN0IGNoYXIgKnVkcF90dW5uZWxfbmljX3R1bm5lbF90eXBlX25hbWUodW5zaWduZWQgaW50IHR5cGUpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MC17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTczPXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NDp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MDp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19wcmVzZW50KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg1PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcm96ZW4oc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTE9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkyOnVkcF90dW5uZWxfbmljX2VudHJ5X2ZyZWV6ZV91c2VkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05My17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5NDpcXHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTUtXFx0XFx0ZW50cnktXFx1MDAzZWZsYWdzIHw9IFVEUF9UVU5ORUxfTklDX0VOVFJZX0ZST1pFTjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTg9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk5OnVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDAte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMDQ9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwNTp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwNi17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTExMT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTEyOnVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTEzOlxcdFxcdFxcdCAgIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMTQtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEyMD1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTIxOnVkcF90dW5uZWxfbmljX3RpX2Zyb21fZW50cnkoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEyMi1cXHRcXHRcXHQgICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzA9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMTp1ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzMi17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMzM6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzQtXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzNy1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM4OlxcdFxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdKSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzOS1cXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE0Mz1zdGF0aWMgYm9vbFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ0OnVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNDUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE0Ny1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTUyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1MzpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NC1cXHRcXHRpZiAoIXRlc3RfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCkpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1Ny1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgdGFibGUtXFx1MDAzZW5fZW50cmllczsgaisrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTU4OlxcdFxcdFxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU5LVxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNjU9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE2NjpfX3VkcF90dW5uZWxfbmljX2dldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE2Ny1cXHRcXHRcXHQgIHVuc2lnbmVkIGludCBpZHgsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTY4LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE2OTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTcwLVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNzUtXFx0aWYgKGVudHJ5LVxcdTAwM2V1c2VfY250KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTc2OlxcdFxcdHVkcF90dW5uZWxfbmljX3RpX2Zyb21fZW50cnkoZW50cnksIHRpKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE3Ny19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE3OT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTgwOl9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODEtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBpZHgsIHU4IHByaXYpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE4Nj1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTg3OnVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODgtXFx0XFx0XFx0XFx0IGludCBlcnIpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIwOT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEwOnVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjExLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjEzLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIxNDpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjE1LVxcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gdGk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxOC1cXHRlbnRyeSA9IFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMTk6XFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjIwLVxcdFxcdHJldHVybjtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyMS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyMjpcXHR1ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KGVudHJ5LCBcXHUwMDI2dGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjIzLVxcdGlmIChlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjQ6XFx0XFx0ZXJyID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjUtXFx0ZWxzZVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI2OlxcdFxcdGVyciA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldW5zZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRpKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyODpcXHR1ZHBfdHVubmVsX25pY19lbnRyeV91cGRhdGVfZG9uZShlbnRyeSwgZXJyKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyOS1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjMzLVxcdFxcdFxcdCAgICBiZTE2X3RvX2NwdShlbnRyeS1cXHUwMDNlcG9ydCksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMzQ6XFx0XFx0XFx0ICAgIHVkcF90dW5uZWxfbmljX3R1bm5lbF90eXBlX25hbWUoZW50cnktXFx1MDAzZXR5cGUpLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjM1LVxcdFxcdFxcdCAgICBlcnIpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMzg9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIzOTp1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDEte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQyOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQzLVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDYtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NzpcXHRcXHRcXHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoZGV2LCB1dG4sIGksIGopO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQ4LX1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUwPXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTE6dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTMte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjU0OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjU1LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNjAtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI2MTpcXHRcXHRcXHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjYyLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzEtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjcyOlxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzMtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzQtXFx0XFx0XFx0ZW50cnkgPSBcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjc1OlxcdFxcdFxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjc2OlxcdFxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKGVudHJ5LCBlcnIpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjc3LVxcdFxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjgxPXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODI6X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4My17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4Ni1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI4NzpcXHRpZiAoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzeW5jX3RhYmxlKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjg4OlxcdFxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4OS1cXHRlbHNlXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTA6XFx0XFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yOTEtXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5NS1cXHQgKi9cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI5NjpcXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yOTctfVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yOTk9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwMDp1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwMS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwNC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwNTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrLCAwKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwNi19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwOD1zdGF0aWMgYm9vbFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzA5OnVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEwLVxcdFxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMTU9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxNjp1ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzE3LVxcdFxcdFxcdCAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTgte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzE5OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzIwLVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMyODpcXHRcXHRpZiAodWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZShcXHUwMDI2aW5mby1cXHUwMDNldGFibGVzW2ldLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjktXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMzMz1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMzQ6dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMzNS1cXHRcXHRcXHQgICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM2LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNzpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzODpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM5LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDQtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNDU6XFx0XFx0XFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzQ2LVxcdFxcdFxcdCAgICBlbnRyeS1cXHUwMDNlcG9ydCA9PSB0aS1cXHUwMDNlcG9ydCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNTU9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM1Njp1ZHBfdHVubmVsX25pY19lbnRyeV9hZGooc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXFx0XFx0XFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzU4LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM1OTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNjAtXFx0Ym9vbCBkb2RneSA9IGVudHJ5LVxcdTAwM2VmbGFncyBcXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX09QX0ZBSUw7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM4OS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM5MDpcXHR1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZSh1dG4sIGVudHJ5LCB0byk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTEtfVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zOTM9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM5NDp1ZHBfdHVubmVsX25pY19lbnRyeV90cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk1LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHRhYmxlLCB1bnNpZ25lZCBpbnQgaWR4LFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTcte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mzk4OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkgPSAgXFx1MDAyNnV0bi1cXHUwMDNlZW50cmllc1t0YWJsZV1baWR4XTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM5OS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQwMDpcXHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgfHxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQwMS1cXHQgICAgZW50cnktXFx1MDAzZXBvcnQgIT0gdGktXFx1MDAzZXBvcnQgfHxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA0LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDA1OlxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcm96ZW4oZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA2LVxcdFxcdHJldHVybiB0cnVlO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA3LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDA4OlxcdHVkcF90dW5uZWxfbmljX2VudHJ5X2Fkaih1dG4sIHRhYmxlLCBpZHgsIHVzZV9jbnRfYWRqKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQwOS1cXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDE3PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MTg6dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDE5LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDIwLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQyMTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjItXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQyNC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjU6XFx0XFx0dGFibGUgPSBcXHUwMDI2ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2V0YWJsZXNbaV07XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjY6XFx0XFx0aWYgKCF1ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKHRhYmxlLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQyOS1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgdGFibGUtXFx1MDAzZW5fZW50cmllczsgaisrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMwOlxcdFxcdFxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV90cnlfYWRqKHV0biwgaSwgaiwgdGksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHVzZV9jbnRfYWRqKSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDM4PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Mzk6dWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDQwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0MS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDI6XFx0cmV0dXJuIHVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZyhkZXYsIHV0biwgdGksICsxKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0My19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0NT1zdGF0aWMgYm9vbFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDQ2OnVkcF90dW5uZWxfbmljX2RlbF9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0Ny1cXHRcXHRcXHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDgte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDQ5OlxcdHJldHVybiB1ZHBfdHVubmVsX25pY190cnlfZXhpc3RpbmcoZGV2LCB1dG4sIHRpLCAtMSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTAtfVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NTI9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ1Mzp1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU0LVxcdFxcdCAgICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1NS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NTY6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU3LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYwOlxcdFxcdHRhYmxlID0gXFx1MDAyNmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldGFibGVzW2ldO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYxOlxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDYyLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjQtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIHRhYmxlLVxcdTAwM2VuX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDY1OlxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjYtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjctXFx0XFx0XFx0ZW50cnkgPSBcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDY4OlxcdFxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjktXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ3My1cXHRcXHRcXHRlbnRyeS1cXHUwMDNldXNlX2NudCA9IDE7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NzQ6XFx0XFx0XFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUodXRuLCBlbnRyeSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ3NS1cXHRcXHRcXHRcXHRcXHRcXHQgICBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00ODk9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5MDpfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkxLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5MjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ5My1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTA2LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTA3OlxcdGlmICghdWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShkZXYsIHV0biwgdGkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTA4LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTEzLVxcdCAqL1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTE0OlxcdGlmICh1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKGRldiwgdXRuLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MTUtXFx0XFx0cmV0dXJuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE2LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTE3OlxcdGlmICghdWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKGRldiwgdXRuLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTg6XFx0XFx0dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhkZXYsIHV0biwgdGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTIwOlxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyMS19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTUyMz1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTI0Ol9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MjUte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzEtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MzI6XFx0aWYgKCF1ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKGRldiwgdXRuLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzMtXFx0XFx0cmV0dXJuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM0LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTM1OlxcdHVkcF90dW5uZWxfbmljX2RlbF9leGlzdGluZyhkZXYsIHV0biwgdGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM2LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTM3OlxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUzOC19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NDA6c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0MS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NDI6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NDMtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU1NC1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NTU6XFx0XFx0XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU1Ni1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTY1LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTY2OlxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHV0biwgZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgVURQX1RVTk5FTF9OSUNfRU5UUllfQUREKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTY5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTcwOlxcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoZGV2LCB1dG4pO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTcxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NzU9c3RhdGljIHNpemVfdFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTc2Ol9fdWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3Ny17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1Nzg6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NzktXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU4OC1cXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW3RhYmxlXS5uX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg5OlxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcHJlc2VudChcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW3RhYmxlXVtqXSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01OTAtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYwMD1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDE6X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMi1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMy17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDQ6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MDUtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMy1cXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW3RhYmxlXS5uX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjE0OlxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcHJlc2VudChcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW3RhYmxlXVtqXSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MTUtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYzNi1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYzNzpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYzOC17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0NS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY0NjpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0Ny17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY1NC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY1NTpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU2LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjYzLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY1OlxcdC5nZXRfcG9ydFxcdD0gX191ZHBfdHVubmVsX25pY19nZXRfcG9ydCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY2NjpcXHQuc2V0X3BvcnRfcHJpdlxcdD0gX191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY3OlxcdC5hZGRfcG9ydFxcdD0gX191ZHBfdHVubmVsX25pY19hZGRfcG9ydCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY2ODpcXHQuZGVsX3BvcnRcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Njk6XFx0LnJlc2V0X250ZlxcdD0gX191ZHBfdHVubmVsX25pY19yZXNldF9udGYsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzA6XFx0LmR1bXBfc2l6ZVxcdD0gX191ZHBfdHVubmVsX25pY19kdW1wX3NpemUsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzE6XFx0LmR1bXBfd3JpdGVcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3MjpcXHQuYXNzZXJ0X2xvY2tlZFxcdD0gX191ZHBfdHVubmVsX25pY19hc3NlcnRfbG9ja2VkLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjczOlxcdC5sb2NrXFx0XFx0PSBfX3VkcF90dW5uZWxfbmljX2xvY2ssXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzQ6XFx0LnVubG9ja1xcdFxcdD0gX191ZHBfdHVubmVsX25pY191bmxvY2ssXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzUtfTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njc3PXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzg6dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02Nzkte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjgwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjgxLVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODctXFx0XFx0XFx0aWYgKGFkal9jbnQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2ODg6XFx0XFx0XFx0XFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfYWRqKHV0biwgaSwgaiwgYWRqX2NudCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODktXFx0XFx0fVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjkwLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjkxOlxcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoZGV2LCB1dG4pO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjkyLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03MDA9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjcwMTp1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MDIte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzAzOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzA0OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwNS1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzExLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTI6XFx0XFx0XFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXFx1MDAyNnV0bi1cXHUwMDNlZW50cmllc1tpXVtqXSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTMtXFx0dXRuLVxcdTAwM2VtaXNzZWQgPSAwO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MjQtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjcyNTpcXHRcXHRcXHR1ZHBfdHVubmVsX25pY19lbnRyeV91bmZyZWV6ZShcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcyNi19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MjctXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mjg6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03Mjkte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzMtXFx0LyogV2UgY2Fubm90IGJsb2NrIG9uIFJUTkwgaGVyZSwgb3RoZXJ3aXNlIHdlIHdvdWxkIGRlYWRsb2NrIHdpdGhcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjczNDpcXHQgKiB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKCkgY2FsbGluZyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM1LVxcdCAqIHdoaWxlIGhvbGRpbmcgUlROTC4gUmVxdWV1ZSB3aXRoIDEgamlmZnkgZGVsYXkgaWYgUlROTCBpcyBjb250ZW5kZWQuXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTczNy1cXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzg6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXFx1MDAyNnV0bi1cXHUwMDNld29yaywgMSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzktXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NDEtXFx0bXV0ZXhfbG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc0MjpcXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cXHUwMDNlZGV2LCB1dG4pO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzQzLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzQ0LVxcdGlmICh1dG4tXFx1MDAzZW5lZWRfcmVwbGF5KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzQ1OlxcdFxcdHVkcF90dW5uZWxfbmljX3JlcGxheSh1dG4tXFx1MDAzZWRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc0Ni1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzUxPXN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzUyOnVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzUzLVxcdFxcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NjEtXFx0dXRuLVxcdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzYyOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYzLVxcdG11dGV4X2luaXQoXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc4MC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc4MTpzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzgyLXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzg5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzkwOnN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc5MS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTI6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTM6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlID0gTlVMTDtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc5NC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODMxLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODMyOlxcdGlmIChpbmZvLVxcdTAwM2VzaGFyZWQgXFx1MDAyNlxcdTAwMjYgaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MzM6XFx0XFx0dXRuID0gaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM0LVxcdH0gZWxzZSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MzU6XFx0XFx0dXRuID0gdWRwX3R1bm5lbF9uaWNfYWxsb2MoaW5mbywgbl90YWJsZXMpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM2LVxcdFxcdGlmICghdXRuKSB7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Mi1cXHRpZiAoaW5mby1cXHUwMDNlc2hhcmVkKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NDM6XFx0XFx0aWYgKCFpbmZvLVxcdTAwM2VzaGFyZWQtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0NC1cXHRcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2VkZXZpY2VzKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0NTpcXHRcXHRcXHRpbmZvLVxcdTAwM2VzaGFyZWQtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB1dG47XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDYtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NTUtXFx0aWYgKCEoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19JTkZPX09QRU5fT05MWSkpIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg1NjpcXHRcXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NTctXFx0XFx0dWRwX3R1bm5lbF9nZXRfcnhfaW5mbyhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODU4OlxcdFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODU5LVxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY0PXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NjU6dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2Ni17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njc6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjgtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njk6XFx0dWRwX3R1bm5lbF9uaWNfbG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODcwLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NzQtXFx0aWYgKGluZm8tXFx1MDAzZXNoYXJlZCkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODc1OlxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSwgKmZpcnN0O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODc2LVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODAtXFx0XFx0aWYgKGxpc3RfZW50cnlfaXNfaGVhZChub2RlLCBcXHUwMDI2aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2VkZXZpY2VzLCBsaXN0KSkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODgxOlxcdFxcdFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODgyLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODkyLVxcdFxcdFxcdHV0bi1cXHUwMDNlZGV2ID0gZmlyc3QtXFx1MDAzZWRldjtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg5MzpcXHRcXHRcXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5NC1cXHRcXHRcXHRnb3RvIHJlbGVhc2VfZGV2O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OTYtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4OTc6XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5OC1cXHR9XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkwMi1cXHQgKi9cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkwMzpcXHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MDQ6XFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MDUtXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkxMS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkxMjpcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MTMtcmVsZWFzZV9kZXY6XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxOD1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTk6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjowNi4wNjgxNDE1OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2MjgzMDE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgVURQIFR1bm5lbCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB1ZHBfdHVubmVsX25pYy5jYCBoZXJlLiBUaGUgcXVpY2sgc2NhbiB0ZWxscyBtZSB0aGlzIGlzbid0IG1lYW50IGZvciBkaXJlY3QgbW9kdWxlIGFjY2VzczsgaXQncyBtb3JlIG9mIGFuIGludGVybmFsIHBpZWNlLCBwcm9iYWJseSBsaW5rZWQgaW50byB0aGUgY29yZSBVRFAgdHVubmVsaW5nIGxvZ2ljLCBsaWtlbHkgd2l0aGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuY2AuIE9yIG1heWJlIGl0J3MgaGFuZGxpbmcgYSBuZXRkZXZpY2Ugbm90aWZpZXIuIEkndmUgZ290IHRvIGZpbmQgb3V0IHdoaWNoLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gaG9uZSBpbiBvbiBlaXRoZXIgdGhlIGB1ZHBfdHVubmVsX25pY19pbml0YCBmdW5jdGlvbiBvciB0aGUgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgZnVuY3Rpb24uIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gaXMsIHdoZXJlIEknbGwgc2VlIGhvdyB0aGlzIHRoaW5nIGdldHMgaW50ZWdyYXRlZCBvciBob3cgaXQncyBvYnNlcnZpbmcgbmV0d29yayBldmVudHMuIE9uY2UgSSBrbm93ICp0aGF0KiwgSSdsbCBoYXZlIGEgbXVjaCBiZXR0ZXIgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MjMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxMC4wMzA5NzQ3MDhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODc1MjEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxOD1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTk6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTIwLVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk2OT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHVkcF90dW5uZWxfbmljX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5NzA6XFx0Lm5vdGlmaWVyX2NhbGwgPSB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NzEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MTAuMzQ5NzM2MjYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODcxNzU3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gYHVkcF90dW5uZWxfbmljLmNgIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIHdvcmtzLiBGaXJzdCB0aGluZyBJIHNlZSBpcyB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgbmV0ZGV2aWNlIG5vdGlmaWVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhwb3NlZCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgaXMgdGhlIGtleSDigJMgdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIEl0IGNhbGxzIHRoaW5ncyBsaWtlIGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYW5kIGB1ZHBfdHVubmVsX25pY19mbHVzaGAuIEFscmlnaHQsIHNvIHRoZSBlbnRyeSBwb2ludHMgYXJlIHRyaWdnZXJlZCBieSBuZXRkZXZpY2UgZXZlbnRzOiBgTkVUREVWX1JFR0lTVEVSYCwgYE5FVERFVl9VTlJFR0lTVEVSYCwgYE5FVERFVl9VUGAsIGBORVRERVZfRE9XTmDigKYgdGhhdCBtYWtlcyBzZW5zZS5cblxuVGhlbiBJIHNlZSBjYWxscyB0byBgdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgLiBXaGVyZSBhcmUgdGhlc2UgdHJpZ2dlcmVkIGZyb20/IE9oLCBsb29rcyBsaWtlIHRoZXkncmUgY2FsbGVkIGZyb20gYHVkcF90dW5uZWxfZ2V0X3J4X2luZm9gIG9yIHNvbWV0aGluZyBzaW1pbGFyLlxuXG5XYWl0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSXMgYHVkcF90dW5uZWxfbmljX29wc2AgdXNlZCBpbiBgdWRwX3R1bm5lbF9jb3JlLmNgPyBObywgaXQgbG9va3MgbGlrZSBpdCdzIHN0YXRpYyB3aXRoaW4gYHVkcF90dW5uZWxfbmljLmNgLiBPa2F5LCBub3cgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9fdWRwX3R1bm5lbF9uaWNfb3BzYCBpcyB1c2VkIGluc3RlYWQuIFRoYXQncyB0aGUgbmV4dCBwb2ludCBvZiBpbnRlcmVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MTQuOTM2OTE2NTkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM2MjkyNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX191ZHBfdHVubmVsX25pY19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY1NT1zdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NjMtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NjQ6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMgX191ZHBfdHVubmVsX25pY19vcHMgPSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NjUtXFx0LmdldF9wb3J0XFx0PSBfX3VkcF90dW5uZWxfbmljX2dldF9wb3J0LFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05NzM9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTgxLVxcdHJ0bmxfbG9jaygpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTgyOlxcdHVkcF90dW5uZWxfbmljX29wcyA9IFxcdTAwMjZfX3VkcF90dW5uZWxfbmljX29wcztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk4My1cXHRydG5sX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxNS4xODA1NTE5MjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2ODkwOTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgdWRwX3R1bm5lbF9uaWNfb3BzYCBQb2ludGVyKipcblxuT2theSwgc28gSSBzZWUgYHVkcF90dW5uZWxfbmljX29wc2AuIFRoYXQncyBhIGdsb2JhbCBwb2ludGVyLCByaWdodD8gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IGl0J3MgbGlrZWx5IGRlZmluZWQgaW4gZWl0aGVyIGBuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuY2Agb3IgcGVyaGFwcyB3aXRoaW4gYGluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaGAuIEdpdmVuIGl0cyBuYW1lLCBpdCBwcm9iYWJseSBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggTmV0d29yayBJbnRlcmZhY2UgQ29udHJvbGxlciAoTklDKSBvcGVyYXRpb25zIGZvciBVRFAgdHVubmVscy4gSSdkIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbG9jYXRpb24gdG8ga25vdyBmb3IgY2VydGFpbiwgYnV0IHRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBsb29raW5nIGZvciBpdHMgZGVjbGFyYXRpb24uIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIGl0cyB1c2FnZSBhbmQgZmlndXJlIG91dCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIHR1bm5lbCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4MzksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxOC42NDk0NjU2NTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjM0NjA2MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxOC43NzE4MjA0NFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgwNjUxNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVRFAgVHVubmVsIEhlYWRlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIFVEUCB0dW5uZWxpbmcgaXMgaW1wbGVtZW50ZWQsIHBhcnRpY3VsYXJseSBhdCB0aGUga2VybmVsIGxldmVsLiBMZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgIGhlYWRlciBmaWxlLiBUaGlzIGlzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzIHRoYXQgZGVmaW5lIHRoZSB0dW5uZWwncyBiZWhhdmlvdXIuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGJ1aWxkaW5nIGJsb2NrczogSG93IGRvZXMgaXQgaGFuZGxlIGVuY2Fwc3VsYXRpb24sIHdoYXQgYXJlIHRoZSByZWxldmFudCBjb250cm9sIGZsYWdzLCB3aGF0IGtpbmQgb2Ygc29ja2V0IG9wdGlvbnMgbWlnaHQgYmUgZXhwb3NlZCwgYXJlIHRoZXJlIGFueSBjdXN0b20gcHJvdG9jb2wgaGVhZGVycyBJIG5lZWQgdG8ga25vdyBhYm91dD8gQXJlIHRoZXJlIGFueSBpbmRpY2F0aW9ucyBpbiBoZXJlIG9mIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBzdHJhdGVnaWVzIEkgbmVlZCB0byBjb25zaWRlciBsYXRlciBvbj8gSSdsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbnMsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgYW55IGlubGluZSBjb21tZW50cy4gVGhpcyBoZWFkZXIgZmlsZSB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb25hbCBjb250ZXh0IGZvciBkaXNzZWN0aW5nIHRoZSBhY3R1YWwgdHVubmVsaW5nIGxvZ2ljLiBIb3BlZnVsbHkgaXQncyB3ZWxsLWNvbW1lbnRlZC4gSSdsbCBiZSBtZW50YWxseSBtYXBwaW5nIHRoZSBkYXRhIGZsb3cgdG8gcHJlcGFyZSBmb3IgbW9yZSBpbnRlbnNlIGRlYnVnZ2luZyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwOTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoyMi4zNTI0NzU0MTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTkzMDQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yOTc9c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8ge1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTMyOC0gKi9cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzI5OnN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMzAtXFx0dm9pZCAoKmdldF9wb3J0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzQ2LSNpZmRlZiBDT05GSUdfSU5FVFxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNDc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMgKnVkcF90dW5uZWxfbmljX29wcztcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzQ4LSNlbHNlXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM0OTojZGVmaW5lIHVkcF90dW5uZWxfbmljX29wc1xcdCgoc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyAqKU5VTEwpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM1MC0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zNTM9dWRwX3R1bm5lbF9uaWNfZ2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM2My1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzY0OlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM2NTpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWdldF9wb3J0KGRldiwgdGFibGUsIGlkeCwgdGkpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNjYtfVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM2OT11ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNzEte1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNzI6XFx0aWYgKHVkcF90dW5uZWxfbmljX29wcykge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNzM6XFx0XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2Vhc3NlcnRfbG9ja2VkKGRldik7XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM3NDpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZXNldF9wb3J0X3ByaXYoZGV2LCB0YWJsZSwgaWR4LCBwcml2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzc1LVxcdH1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zNzg9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzc5LXtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzgwOlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM4MTpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWFzc2VydF9sb2NrZWQoZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzgyLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zODQ9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzg1LXtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzg2OlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM4NzpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzg4LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTA9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zOTEte1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozOTI6XFx0aWYgKHVkcF90dW5uZWxfbmljX29wcylcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzkzOlxcdFxcdHVkcF90dW5uZWxfbmljX29wcy1cXHUwMDNldW5sb2NrKGRldik7XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5NC19XFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9Mzk3PXVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQwMC1cXHRcXHRyZXR1cm47XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQwMTpcXHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0MDI6XFx0XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2VhZGRfcG9ydChkZXYsIHRpKTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDAzLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD00MDY9dWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDA5LVxcdFxcdHJldHVybjtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDEwOlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQxMTpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWRlbF9wb3J0KGRldiwgdGkpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MTItfVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQyNj1zdGF0aWMgaW5saW5lIHZvaWQgdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQyNy17XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQyODpcXHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0Mjk6XFx0XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2VyZXNldF9udGYoZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDMwLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD00MzM9dWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzYtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQzNzpcXHRpZiAoIXVkcF90dW5uZWxfbmljX29wcylcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDM4LVxcdFxcdHJldHVybiAwO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzktXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ0MDpcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDQxOlxcdHJldCA9IHVkcF90dW5uZWxfbmljX29wcy1cXHUwMDNlZHVtcF9zaXplKGRldiwgdGFibGUpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NDI6XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2V1bmxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDQzLVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQ0OD11ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00NTItXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1MzpcXHRpZiAoIXVkcF90dW5uZWxfbmljX29wcylcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU0LVxcdFxcdHJldHVybiAwO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00NTUtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1NjpcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDU3OlxcdHJldCA9IHVkcF90dW5uZWxfbmljX29wcy1cXHUwMDNlZHVtcF93cml0ZShkZXYsIHRhYmxlLCBza2IpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NTg6XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2V1bmxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoyMi40NTQ0MTI0MjdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzOTg3Nzc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHVkcF90dW5uZWxfbmljX29wc2Agc3RydWN0dXJlKipcblxuUmlnaHQsIHNvIEkgc2VlIGB1ZHBfdHVubmVsX25pY19vcHNgIGlzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgdGhlIGlubGluZSBmdW5jdGlvbnMgZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oYC4gVGhpcyBzdWdnZXN0cyBpdCdzIGEgY3JpdGljYWwgc3RydWN0dXJlLCBwcm9iYWJseSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBwb2ludGVycyB0aGF0IGRlZmluZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBVRFAgdHVubmVsIG5ldHdvcmsgaW50ZXJmYWNlcy4gTm93LCBhIGdvb2QgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIHdvdWxkIGJlIHRvIHRyYWNlIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGZ1bmN0aW9uLCBhIGtleSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgaW50ZXJmYWNlLCBpcyBhY3R1YWxseSAqY2FsbGVkKiBmcm9tLiBUaGF0J2xsIHRlbGwgbWUgYSBsb3QgYWJvdXQgaG93IHRoZXNlIFVEUCB0dW5uZWwgaW50ZXJmYWNlcyBhcmUgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBzeXN0ZW0sIGdpdmluZyBtZSBjb250ZXh0IG9uIHRoZSBzdXJyb3VuZGluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDExMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjI1LjY5NDI5MzAzOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MDg3NTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM5Nj1zdGF0aWMgaW5saW5lIHZvaWRcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzk3OnVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zOTgte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTA4LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEwOTpcXHR1ZHBfdHVubmVsX25pY19hZGRfcG9ydChkZXYsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEyNz12b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0MC1cXHRcXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MTQxOlxcdFxcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXFx1MDAyNnRpKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNDItXFx0XFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ4OT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDkwOl9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTEte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMgX191ZHBfdHVubmVsX25pY19vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2Ni1cXHQuc2V0X3BvcnRfcHJpdlxcdD0gX191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY3OlxcdC5hZGRfcG9ydFxcdD0gX191ZHBfdHVubmVsX25pY19hZGRfcG9ydCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2OC1cXHQuZGVsX3BvcnRcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjI4LjA2NTE3NTEzNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTM4MTUzMDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVURQIFR1bm5lbCBSWCBQb3J0IEZ1bmN0aW9uIENhbGxzKipcblxuUmlnaHQsIHNvIGB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydGAgYW5kIGB1ZHBfdHVubmVsX3B1c2hfcnhfcG9ydGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIGFuZCB0aGV5J3JlIGJvdGggZ2V0dGluZyBjYWxsZWQuIFRoZXkncmUgKmV4cG9ydGVkKiwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgdGhleSdyZSBwYXJ0IG9mIHNvbWUgcHVibGljIEFQSSBvciBpbnRlcmZhY2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGVyZSBgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgaW52b2NhdGlvbiwgc28gSSBjYW4gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yLiBUaW1lIHRvIHRyYWNlIHRob3NlIGNhbGxzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDk0NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjMxLjAwMzMzMTI1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUyMDk4MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9nZW5ldmUuYz0xMDExPXN0YXRpYyBzdHJ1Y3QgZ2VuZXZlX3NvY2sgKmdlbmV2ZV9zb2NrZXRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2dlbmV2ZS5jLTEwMzUtXFx0LyogSW5pdGlhbGl6ZSB0aGUgZ2VuZXZlIHVkcCBvZmZsb2FkcyBzdHJ1Y3R1cmUgKi9cXG5kcml2ZXJzL25ldC9nZW5ldmUuYzoxMDM2OlxcdHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHNrLCBVRFBfVFVOTkVMX1RZUEVfR0VORVZFKTtcXG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xMDM3LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTM1Nzc9c3RhdGljIHN0cnVjdCB2eGxhbl9zb2NrICp2eGxhbl9zb2NrZXRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgYm9vbCBpcHY2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2MDUtXFx0aGxpc3RfYWRkX2hlYWRfcmN1KFxcdTAwMjZ2cy1cXHUwMDNlaGxpc3QsIHZzX2hlYWQobmV0LCBwb3J0KSk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2MDY6XFx0dWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc2ssXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2MDctXFx0XFx0XFx0XFx0ICAgICAgKHZzLVxcdTAwM2VmbGFncyBcXHUwMDI2IFZYTEFOX0ZfR1BFKSA/XFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MTMyPXZvaWQgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0xMzMtXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MTM0OnZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMTM1LXZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfZGVsX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEyND1FWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX2Ryb3BfcnhfcG9ydCk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjYtLyogTm90aWZ5IG5ldGRldnMgdGhhdCBVRFAgcG9ydCBzdGFydGVkIGxpc3RlbmluZyAqL1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEyNzp2b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjgte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQ0LX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDU6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MzIuOTU1NDM2NzI4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTE2NTg5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBVRFAgVHVubmVsIE9mZmxvYWQgZm9yIFZYTEFOIGFuZCBHRU5FVkUgaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IGBWWExBTmAgYW5kIGBHRU5FVkVgIGhhbmRsZSBVRFAgdHVubmVscywgYW5kIGl0IGxvb2tzIGxpa2UgdGhleSB1bHRpbWF0ZWx5IGNhbGwgYHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0YC4gUmlnaHQgYXdheSwgdGhpcyB0ZWxscyBtZSB0aGF0IHdlIG5lZWQgdG8gZW5zdXJlIGJvdGggYFZYTEFOYCBhbmQgYEdFTkVWRWAgYXJlIGFjdGl2YXRlZCB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgLiBCdXQgaXQncyBub3QgZW5vdWdoIHRvIHNpbXBseSBlbmFibGUgdGhlIHByb3RvY29sczogSSBoYXZlIHRvIHRoaW5rIGFib3V0IG9mZmxvYWRpbmcuXG5cbk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHVkcF90dW5uZWxfbmljLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIGZvciBvZmZsb2FkaW5nIFVEUCB0dW5uZWxzIHRvIHRoZSBOSUMsIGFuZCBub3cgSSdtIGN1cmlvdXMgaWYgd2UgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGggd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiBhbnkgZW11bGF0ZWQgTklDIHN1cHBvcnRzIHRoaXMga2luZCBvZiBVRFAgdHVubmVsIG9mZmxvYWQuIEkga25vdyB0aGF0IGB1ZHBfdHVubmVsX25pY19pbmZvYCBpcyByZWdpc3RlcmVkIGJ5IHRoZSBOSUMgZHJpdmVyIGl0c2VsZiwgc28gdGhhdCdzIHRoZSBrZXkuIEkgaGF2ZSB0byBzaGlmdCBteSBmb2N1cyBhbmQgc3RhcnQgbG9va2luZyBhdCB3aGljaCBzcGVjaWZpYyBOSUMgZHJpdmVycyBhY3R1YWxseSByZWdpc3RlciB0aGlzIGluZm9ybWF0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgYW5zd2VyIHdpbGwgbGllLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc5OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjozNi44NDcxMDAyMjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNzE0NzAwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTg5NT1zdGF0aWMgaW50IHhnYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNy1cXHQuc2V0X3BvcnRcXHQ9IHhnYmVfdnhsYW5fc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxNTpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM9MTUyPWludCB4Z2JlX2NvbmZpZ19uZXRkZXYoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jOjI2MzpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8oKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYy0yNjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oPTEyOTY9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICp4Z2JlX2dldF9ldGh0b29sX29wcyh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6MTI5Nzpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC0xMjk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjExPXN0YXRpYyBpbnQgYm54MnhfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAyMjI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueDJ4X3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyMy1cXHQuc3luY190YWJsZVxcdD0gYm54MnhfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDQwPXN0YXRpYyBpbnQgYm54MnhfaW5pdF9kZXYoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDctXFx0XFx0aWYgKElTX1BGKGJwKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTMyMDg6XFx0XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmJueDJ4X3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNTk2Mj1zdGF0aWMgaW50IGJueHRfdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE1OTc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibnh0X3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc5LVxcdC5zZXRfcG9ydFxcdD0gYm54dF91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTItXFx0aWYgKGJwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJOWFRfRkxBR19DSElQX1A3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDUzOlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZibnh0X3VkcF90dW5uZWxzX3A3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDU0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1NTpcXHRcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Ym54dF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI2ODU9c3RhdGljIGludCBsaXF1aWRpb191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY5NjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Ny1cXHQuc2V0X3BvcnRcXHQ9IGxpcXVpZGlvX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMzIyPXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM1ODM6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmxpcXVpZGlvX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM1ODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xNzcyPXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3ODM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODQtXFx0LnNldF9wb3J0XFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTkxOT1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5My1cXHRcXHQgICAgKGxpby1cXHUwMDNlZW5jX2Rldl9jYXBhYmlsaXR5IFxcdTAwMjYgfk5FVElGX0ZfTFJPKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMDk0OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMDk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTktXFx0LnNldF9wb3J0XFx0PSBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz02NTcxPXN0YXRpYyBpbnQgaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAwLVxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VyYXdmX2NudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzo2ODAxOlxcdFxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZjeGdiX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYz0yMDc9c3RhdGljIGludCBlbmljX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyMjk6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVuaWNfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMzAtXFx0LnNldF9wb3J0XFx0PSBlbmljX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jPTI2NzU9c3RhdGljIGludCBlbmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTQ4LVxcdFxcdCAgICBlbmljLVxcdTAwM2V2eGxhbi5mbGFncyBcXHUwMDI2IEVOSUNfVlhMQU5fTVVMVElfV1EpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jOjI5NDk6XFx0XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmVuaWNfdWRwX3R1bm5lbHNfdjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUwLVxcdFxcdFxcdGlmIChlbmljLVxcdTAwM2V2eGxhbi5mbGFncyBcXHUwMDI2IEVOSUNfVlhMQU5fT1VURVJfSVBWNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jOjI5NTE6XFx0XFx0XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmVuaWNfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM9NDAxNT1zdGF0aWMgaW50IGJlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NDAzNDpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYmVfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDM1LVxcdC5zZXRfcG9ydFxcdD0gYmVfdnhsYW5fc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTUxNzk9c3RhdGljIHZvaWQgYmVfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNTIwNy1cXHRpZiAoIWxhbmNlcl9jaGlwKGFkYXB0ZXIpIFxcdTAwMjZcXHUwMDI2ICFCRXhfY2hpcChhZGFwdGVyKSBcXHUwMDI2XFx1MDAyNiAhYmVfaXNfbWMoYWRhcHRlcikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYzo1MjA4OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZiZV91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz00MDI9c3RhdGljIGludCBmbTEwa191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjQxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZm0xMGtfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtNDE4LVxcdC5zeW5jX3RhYmxlXFx0PSBmbTEwa191ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz0xNTQxPXN0cnVjdCBuZXRfZGV2aWNlICpmbTEwa19hbGxvY19uZXRkZXYoY29uc3Qgc3RydWN0IGZtMTBrX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjE1ODE6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmZtMTBrX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmg9NDY4PXN0cnVjdCBpNDBlX3BmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHVkcF90dW5uZWxfc2hhcmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oOjUyMjpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNjM3PXN0YXRpYyBpbnQgaTQwZV9jb25maWdfbmV0ZGV2KHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xMzY4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjgxOlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwZi1cXHUwMDNldWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xMzY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTM0NDM9c3RhdGljIHZvaWQgaWNlX3NldF9vcHMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM0NTQtXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmljZV9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM0NTU6XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnBmLVxcdTAwM2Vody51ZHBfdHVubmVsX25pYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU2LVxcdG5ldGRldi1cXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFxcdTAwMjZpY2VfeGRwX21kX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTM5NzA9aW50IGljZV9pbml0X3BmKHN0cnVjdCBpY2VfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM5NzI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnVkcF90dW5uZWxfbmljID0gXFx1MDAyNnBmLVxcdTAwM2Vody51ZHBfdHVubmVsX25pYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTczLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGljZV9wZl90b19kZXYocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmg9ODk5PXN0cnVjdCBpY2VfaHcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgtMTAxMS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHVkcF90dW5uZWxfc2hhcmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oOjEwMTI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgtMTAxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz01NDQ4PXN0YXRpYyBpbnQgaXhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY4LVxcdC5zeW5jX3RhYmxlXFx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ3NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2EgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzYtXFx0LnN5bmNfdGFibGVcXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMTU0OD1zdGF0aWMgaW50IGl4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNjk5LVxcdGNhc2UgaXhnYmVfbWFjX2U2MTA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExNzAwOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwMS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDItXFx0Y2FzZSBpeGdiZV9tYWNfeDU1MGVtX2E6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExNzAzOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTI2Mzk9c3RhdGljIGludCBtbHg0X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYzoyNjU3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBtbHg0X3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1OC1cXHQuc3luY190YWJsZVxcdD0gbWx4NF91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTMxNjE9aW50IG1seDRfZW5faW5pdF9uZXRkZXYoc3RydWN0IG1seDRfZW5fZGV2ICptZGV2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjMzNDc6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNm1seDRfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0zMzQ4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU3OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1OC0jaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTQ1Nz12b2lkIG1seDVlX3Z4bGFuX3NldF9uZXRkZXZfaW5mbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU0NzA6XFx0cHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnByaXYtXFx1MDAzZW5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ3MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjM3Nj1zdGF0aWMgaW50IG5mcF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTIzOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjIzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5mcF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjM5Ni1cXHQuc3luY190YWJsZSAgICAgPSBuZnBfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTI2NjY9c3RhdGljIHZvaWQgbmZwX25ldF9uZXRkZXZfaW5pdChzdHJ1Y3QgbmZwX25ldCAqbm4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcxOC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjI3MTk6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNm5mcF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcyMC1cXHRcXHRubi1cXHUwMDNlZHAuY3RybCB8PSBORlBfTkVUX0NGR19DVFJMX1ZYTEFOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYz05NTc9c3RhdGljIGludCBxZWRlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjk4ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWVkZV91ZHBfdHVubmVsc19ib3RoID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtOTg5LVxcdC5zeW5jX3RhYmxlXFx0PSBxZWRlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9MTAwNj12b2lkIHFlZGVfc2V0X3VkcF90dW5uZWxzKHN0cnVjdCBxZWRlX2RldiAqZWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAwOS1cXHQgICAgZWRldi1cXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzoxMDEwOlxcdFxcdGVkZXYtXFx1MDAzZW5kZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cWVkZV91ZHBfdHVubmVsc19ib3RoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMS1cXHRlbHNlIGlmIChlZGV2LVxcdTAwM2VkZXZfaW5mby5jb21tb24udnhsYW5fZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMjpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfdnhsYW47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDEzLVxcdGVsc2UgaWYgKGVkZXYtXFx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxNDpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfZ2VuZXZlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxNS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM9NDcxPXN0YXRpYyBpbnQgcWxjbmljX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYzo0ODc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFsY25pY191ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg4LVxcdC5zeW5jX3RhYmxlXFx0PSBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTIyNTQ9cWxjbmljX3NldHVwX25ldGRldihzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6MjMwNDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cWxjbmljX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYy0yMzA1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NDI9c3RhdGljIGludCBlZnhfZWYxMF9zZXRfdWRwX3RubF9wb3J0cyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCBib29sIHVubG9hZGluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NTI1PXN0YXRpYyBpbnQgZWZ4X2VmMTBfcHJvYmUoc3RydWN0IGVmeF9uaWMgKmVmeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgwLVxcdCAgICAoMSBcXHUwMDNjXFx1MDAzYyBNQ19DTURfRFJWX0FUVEFDSF9FWFRfT1VUX0ZMQUdfVFJVU1RFRCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo2ODE6XFx0XFx0ZWZ4LVxcdTAwM2VuZXRfZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmVmeF9lZjEwX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYz0zOTYyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfdWRwX3RubF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzozOTg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlZnhfZWYxMF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODYtXFx0LnNldF9wb3J0XFx0PSBlZnhfZWYxMF91ZHBfdG5sX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjE5PXN0YXRpYyBpbnQgdHhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2NDI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHR4Z2JlX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0My1cXHQuc3luY190YWJsZVxcdD0gdHhnYmVfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy03NDctXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNnR4Z2JlX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NzQ4OlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZ0eGdiZV91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy03NDktXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz02Nj1uc2ltX3VkcF90dW5uZWxfc3luY190YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy04NC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzo4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbnNpbV91ZHBfdHVubmVsX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODYtXFx0LnNldF9wb3J0XFx0PSBuc2ltX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz0xMjU9aW50IG5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEyOC1cXHRzdHJ1Y3QgbmV0ZGV2c2ltICpucyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI5OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE4NC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxODU6XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gaW5mbztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xODYtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz0xODk9dm9pZCBuc2ltX3VkcF90dW5uZWxzX2luZm9fZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTkzLVxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShucy1cXHUwMDNldWRwX3BvcnRzLmRkaXIpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NDpcXHRrZnJlZShkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NTpcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5Ni19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjM3LjE2NDI1MzI2OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODQ4ODU2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVRFAgVHVubmVsIFRlc3RpbmcgaW4gYSBLZXJuZWwgQ29udGV4dCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jYCByZWdpc3RlcnMgYHVkcF90dW5uZWxfbmljX2luZm9gLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB3ZSBjYW4gbGV2ZXJhZ2UgYG5ldGRldnNpbWAgdG8gdGVzdCB0aGlzIGZlYXR1cmUuIEJyaWxsaWFudCEgVXNpbmcgYG5ldGRldnNpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlLCBtYWtlcyBvZmZsb2FkIHRlc3RpbmcgaW4gdGhlIGtlcm5lbCBhIGJyZWV6ZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgbWVhbnMgSSBjYW4gY29uZmlybSB0aGlzIGNvZGUgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uLiBMZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGF0IGVuYWJsZXMgYG5ldGRldnNpbWAuIEFoLCBpdCdzIGBDT05GSUdfTkVUREVWU0lNYC4gU28sIEknbGwgZGVmaW5pdGVseSBuZWVkIHRvIGFkZCBgTkVUREVWU0lNYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gbWFrZSBzdXJlIGBuZXRkZXZzaW1gIGlzIGVuYWJsZWQgaW4gbXkgYnVpbGQuIEFuZCwgSSdsbCBuZWVkIGBWWExBTmAgYW5kIGBHRU5FVkVgIGFzIHdlbGwgdG8gdHJpZ2dlciB0aGUgVURQIHR1bm5lbCBjcmVhdGlvbi5cblxuSSdtIGdvaW5nIHRvIHJldmlzaXQgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgIHRvIGxvb2sgYXQgdGhlIGltcG9ydGFudCBzeW1ib2xzIGFnYWluLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCB0b3VjaGVzOiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY19hbGxvY2AsIGFuZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAuXG5cbldhaXQgYSBtaW51dGUsIGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhpbmdzIGEgbGl0dGxlLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2FsbG9jYCBpcyBzdGF0aWMuIEFuZCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIHN0YXRpYy5cblxuSG9sZCBvbiwgSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gSWYgdGhleSdyZSBzdGF0aWMsIHRoZXkgbWlnaHQgYmUgaW5saW5lZCBvciBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBidXQgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGNhbGxiYWNrLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLiBBbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIGNhbGxlZCBmcm9tIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLCB3aGljaCBpcyBhIG5vdGlmaWVyIGNhbGxiYWNrLiBTbywgaXQgaGFzIHRvIGJlIHJlYWNoYWJsZS4gVGltZSB0byBjaGVjayB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEFjdHVhbGx5LCBJJ3ZlIGFscmVhZHkgZ3JlcHBlZCBmb3IgYEVYUE9SVF9TWU1CT0xgLCBhbmQgZm91bmQgbm90aGluZy4gQXJlIHRoZXJlICphbnkqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCBhdCBhbGw/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjAyLCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjQ1LjAxMzExMjQ3N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgzNzg2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogdWRwX3R1bm5lbF9uaWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyOmVudW0gdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnlfZmxhZ3Mge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTMtXFx0VURQX1RVTk5FTF9OSUNfRU5UUllfQUREXFx0PSBCSVQoMCksXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTk6c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIwLVxcdF9fYmUxNiBwb3J0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1Njo0NS4xMTE1MDA2OTJaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1ODU2MTE0OTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBTY29wZSBDcmVlcCBpbiBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGZ1bmN0aW9uIHZpc2liaWxpdHkuIEl0J3MgdGltZSB0byBleGFtaW5lIHRoZSBjb2RlYmFzZSBhbmQgcGlucG9pbnQgZnVuY3Rpb25zIHRoYXQgKmFyZW4ndCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgc2NvcGUgY3JlZXAg4oCTIGZ1bmN0aW9ucyB1bmludGVudGlvbmFsbHkgZXhwb3NlZCB0byBwYXJ0cyBvZiB0aGUgcHJvZ3JhbSB0aGF0IHNob3VsZG4ndCBiZSBpbnRlcmFjdGluZyB3aXRoIHRoZW0uIFdlIHdhbnQgdG8gdGlnaHRlbiB1cCBlbmNhcHN1bGF0aW9uIHdoZXJlIHBvc3NpYmxlLiBBIHF1aWNrIGBncmVwYCBmb3IgZnVuY3Rpb25zIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHRydWUgaW50ZW5kZWQgYWNjZXNzaWJpbGl0eSBvZiB0aGVzZSBmdW5jdGlvbnMgYW5kLCBpZiBuZWNlc3NhcnksIGFkanVzdCB0aGUgZGVjbGFyYXRpb25zIHRvIGJlIG1vcmUgcmVzdHJpY3RpdmUuIFRoaXMgc3lzdGVtYXRpYyBzY2FuIGxldHMgbWUgZW5zdXJlIHByb3BlciBwcm9ncmFtIHN0cnVjdHVyZSBhbmQgZGVzaWduLiBJIGNvdWxkIGFsc28gdXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmV2aWV3IHRoZSBsb2dpYyBvZiB0aGUgY29kZSBibG9ja3MgdGhlc2UgZnVuY3Rpb25zIHJlc2lkZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0MTQsIk91dHB1dFRva2VucyI6NjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjoyMC45Njc2MTkyODNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5OTYwMDE4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjIxLjI2NzIyODIyOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjU5MDI4MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyBNeSBQYXR0ZXJuLU1hdGNoaW5nIEFwcHJvYWNoKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGlzIHJlZ2V4IEkndmUgYmVlbiBjcmFmdGluZyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBhcnNpbmcgdGFzayBpcyBsb29raW5nIGEgbGl0dGxlIGZyYWdpbGUuIEknbSBzdGFydGluZyB0byBvdmVydGhpbmsgdGhlIGVkZ2UgY2FzZXMuIEl0J3MgYmVjb21pbmcgbW9yZSBjb21wbGV4IHRoYW4gaXQgbmVlZHMgdG8gYmUsIGFuZCBJIGNhbiBmZWVsIGEgcG90ZW50aWFsIGJ1ZyBsdXJraW5nIGluIHRoZXJlLlxuXG5JbnN0ZWFkIG9mIHdyZXN0bGluZyB3aXRoIHRoaXMgaW50cmljYXRlIHBhdHRlcm4sIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgYSBzaW1wbGVyLCBtb3JlIHJvYnVzdCBhcHByb2FjaCwgYXQgbGVhc3QgZm9yIGEgZmlyc3QgcGFzcy4gSSBjYW4gcXVpY2tseSBncmVwIHRoZSByZWxldmFudCBmaWxlcyBhbmQgc2VhcmNoIGZvciB0aGUgYmVnaW5uaW5nIG9mIGxpbmVzIGNvbnRhaW5pbmcgb25seSB0aGUgbW9zdCBjb21tb24gZGF0YSB0eXBlcyB3aXRoIHNpbXBsZSBzdHJpbmdzLCBzdWNoIGFzIGBedm9pZCBgLCBgXmludCBgLCBvciBgXnN0cnVjdCBgLlxuXG5UaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGNvbnNpZGVyYWJseS4gVGhpcyBhcHByb2FjaCBtaWdodCBub3QgY2FwdHVyZSAqZXZlcnl0aGluZyogaW1tZWRpYXRlbHksIGFuZCBpdCBtaWdodCBoYXZlIHNvbWUgZmFsc2UgcG9zaXRpdmVzLCBidXQgaXQnbGwgYmUgb3JkZXJzIG9mIG1hZ25pdHVkZSBmYXN0ZXIgdG8gaW1wbGVtZW50IGFuZCB0ZXN0LiBJIGNhbiBhbHdheXMgcmVmaW5lIHRoZSBmaWx0ZXJpbmcgbG9naWMgbGF0ZXIgb25jZSBJJ3ZlIGdvdCBhIGJhc2VsaW5lLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGdldCB0aGUgcHJvY2VzcyBydW5uaW5nIHF1aWNrbHkgYW5kIGVmZmVjdGl2ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY4OSwiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjI1LjUyNjI1ODY0NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwNDkyMzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4odm9pZHxpbnR8c3RydWN0IFthLXpBLVpfXSsgXFxcXCopIFthLXpBLVpfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjoyNS42MDYzMTUwODFaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MzIyMzQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkdyYXNwaW5nIGF0IGEgU29sdXRpb246IFRoZSBcImdyZXBcIiBJbnN0aW5jdCBLaWNrcyBJbioqXG5cbkFscmlnaHQsIEkgc2VlIGEgcHJvYmxlbSwgYW5kIG15IGltbWVkaWF0ZSByZWFjdGlvbiBpcywgbGV0J3MgcmVhY2ggZm9yIHRoZSBmYW1pbGlhciB0b29scy4gSSdtIHRoaW5raW5nLCBcIk9rYXksIHdoYXQncyB0aGUgcXVpY2tlc3QsIGRpcnRpZXN0IHdheSB0byB0YWNrbGUgdGhpcz9cIiBUaGF0IGBncmVwYCBpcyBwcmFjdGljYWxseSBhbiBleHRlbnNpb24gb2YgbXkgYnJhaW4gYXQgdGhpcyBwb2ludC4gVGhlIHBhdHRlcm4gYF57YCBpcyBwcm9iYWJseSB0YXJnZXRpbmcgYSBzcGVjaWZpYyBjb2RlIHN0cnVjdHVyZSwgbGlrZWx5IEpTT04sIFlBTUwgb3IgbWF5YmUgZXZlbiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gSSBzdXNwZWN0IEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IGlzIHByZWNlZGVkIGJ5IGEgY3VybHkgYnJhY2UuIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmc6XG5cblwiSSBuZWVkIHRvIGdyYWIgc29tZXRoaW5nIHdpdGggY29udGV4dFwiLiBUaGUgbWVudGFsIG1vZGVsIGlzIGxpa2VseSBzdHJ1Y3R1cmVkLiBUaGVyZSBpcyBzb21ldGhpbmcsIHBlcmhhcHMgYSBuZXN0ZWQgb2JqZWN0LCB0aGF0IHN0YXJ0cyB3aXRoIGEgY3VybHkgYnJhY2UuIFRoaXMgaXMgbXkgYmFzZSBvZiBvcGVyYXRpb25zLiBcIkxldCdzIHVzZSBgZ3JlcGAgd2l0aCBzb21lIGNvbnRleHRcIi4gVGhlIHRob3VnaHQgXCJMZXQncyBqdXN0XCIgbWVhbnMgSSBkb24ndCBuZWVkIGEgaGlnaGx5IHNvcGhpc3RpY2F0ZWQgb3IgZWZmaWNpZW50IHBhdHRlcm4uIFRoaXMgaXMgYSBxdWljayBhbmQgZGlydHkgd2F5IHRvIGlkZW50aWZ5IHRoaXMuIEkgbWlnaHQgbmVlZCBtb3JlIGFkdmFuY2VkIHRlY2huaXF1ZXMgbGF0ZXIsIGJ1dCBmb3Igbm93LCB0aGlzIGlzIHdoZXJlIEknbSBzdGFydGluZy4gVGhpcyBpcyB0aGUgZmlyc3QgZGlhZ25vc3RpYyBzdGVwLiBJJ20gbG9va2luZyBmb3IgYSBxdWljayB3aW4gdG8gdW5kZXJzdGFuZCB0aGUgbGF5b3V0IG9mIHNvbWV0aGluZy4gSSdtIGxlYW5pbmcgaGVhdmlseSBvbiB3aGF0IEkga25vdyBhYm91dCBgZ3JlcGAgYW5kIGl0cyBjYXBhYmlsaXRpZXM7IEknbSBiZXR0aW5nIHRoYXQgdGhpcyBpcyBhIG1hbmFnZWFibGUgcHJvYmxlbSBJIGNhbiBhZGRyZXNzIHRoaXMgd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAxMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjI5LjQ1OTU0MTU1OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3MDAzODcsIkVycm9yIjoiYmFkIGV4cHJlc3Npb246IGZhdGFsOiAtZSBvcHRpb24sICdeeyc6IEludmFsaWQgcHJlY2VkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl57XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJiYWQgZXhwcmVzc2lvbjogZmF0YWw6IC1lIG9wdGlvbiwgJ157JzogSW52YWxpZCBwcmVjZWRpbmcgcmVndWxhciBleHByZXNzaW9uXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjI5LjUxMTI0Njk1NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjk0NjQ0MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ29ycmVjdGluZyBJbnZhbGlkIFN5bnRheCoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBleHByZXNzaW9uLi4uICpobW0qLCBpdCBzZWVtcyBsaWtlIHRoZXJlJ3MgYW4gZXJyb3IuIFRoZSBjdXJyZW50IHN5bnRheCwgYF57YCwgaXMgY2xlYXJseSBpbnZhbGlkLiBUaGUgcGFyc2VyIGlzIGdvaW5nIHRvIGNob2tlIG9uIHRoYXQsIG5vIHF1ZXN0aW9uLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGUgcHJvYmxlbTsgdGhlIG9wZW5pbmcgY3VybHkgYnJhY2UgbmVlZHMgdG8gYmUgZXNjYXBlZC4gTGV0J3MgZml4IHRoaXMuIEkgbmVlZCB0byBtYWtlIHRoZSBjaGFuZ2UgdG8gYF5cXHtgLiBUaGF0IHNob3VsZCByZXNvbHZlIHRoZSBpc3N1ZSBhbmQga2VlcCB0aGluZ3Mgc3ludGFjdGljYWxseSBzb3VuZC4gVGhhdCBzaG91bGQgYWRkcmVzcyB0aGF0IGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM4NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjMyLjIwNTg5NDY1NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxNzUwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01OT1zdGF0aWMgY29uc3QgY2hhciAqdWRwX3R1bm5lbF9uaWNfdHVubmVsX3R5cGVfbmFtZSh1bnNpZ25lZCBpbnQgdHlwZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYwOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVxcdHN3aXRjaCAodHlwZSkge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03ND11ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03Ni1cXHRyZXR1cm4gZW50cnktXFx1MDAzZXVzZV9jbnQgPT0gMCBcXHUwMDI2XFx1MDAyNiAhZW50cnktXFx1MDAzZWZsYWdzO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04MD11ZHBfdHVubmVsX25pY19lbnRyeV9pc19wcmVzZW50KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04Mi1cXHRyZXR1cm4gZW50cnktXFx1MDAzZXVzZV9jbnQgXFx1MDAyNlxcdTAwMjYgIShlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB+VURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY9dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJvemVuKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Nzp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OC1cXHRyZXR1cm4gZW50cnktXFx1MDAzZWZsYWdzIFxcdTAwMjYgVURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05Mj11ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTM6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTQtXFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTk9dWRwX3R1bm5lbF9uaWNfZW50cnlfdW5mcmVlemUoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMDp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDEtXFx0ZW50cnktXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5VRFBfVFVOTkVMX05JQ19FTlRSWV9GUk9aRU47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwNT11ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwNjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDctXFx0cmV0dXJuIGVudHJ5LVxcdTAwM2VmbGFncyBcXHUwMDI2IChVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQgfFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMTI9dWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTExNC1cXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZmxhZylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjExNTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMTYtXFx0ZW50cnktXFx1MDAzZWZsYWdzIHw9IGZsYWc7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEyMT11ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMjItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyMzp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMjQtXFx0bWVtc2V0KHRpLCAwLCBzaXplb2YoKnRpKSk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEzMT11ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzMtXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE0ND11ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ1OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE0Ni1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE2Nj1fX3VkcF90dW5uZWxfbmljX2dldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE2Ny1cXHRcXHRcXHQgIHVuc2lnbmVkIGludCBpZHgsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE2OS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xODA9X191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4MS1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlkeCwgdTggcHJpdilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE4Mjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODMtXFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pYy1cXHUwMDNlZW50cmllc1t0YWJsZV1baWR4XS5od19wcml2ID0gcHJpdjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTg3PXVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODgtXFx0XFx0XFx0XFx0IGludCBlcnIpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxODk6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTkwLVxcdGJvb2wgZG9kZ3kgPSBlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9PUF9GQUlMO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMTA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxMi1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHRhYmxlLCB1bnNpZ25lZCBpbnQgaWR4KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEzOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxNC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMzk9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQxOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0Mi1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUxPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjUzOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NC1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjgyPV9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODM6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjg0LVxcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwMD11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwMTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMDItXFx0aWYgKCF1dG4tXFx1MDAzZW5lZWRfc3luYylcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzA5PXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEwLVxcdFxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzExOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMi1cXHRyZXR1cm4gdGFibGUtXFx1MDAzZXR1bm5lbF90eXBlcyBcXHUwMDI2IHRpLVxcdTAwM2V0eXBlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMTY9dWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxNy1cXHRcXHRcXHQgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzE4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxOS1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzM0PXVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMzUtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMzctXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM1Nj11ZHBfdHVubmVsX25pY19lbnRyeV9hZGooc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXFx0XFx0XFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzU4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM1OS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM5ND11ZHBfdHVubmVsX25pY19lbnRyeV90cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mzk3OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM5OC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQxOD11ZHBfdHVubmVsX25pY190cnlfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MTktXFx0XFx0XFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpLCBpbnQgdXNlX2NudF9hZGopXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjA6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDIxLVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDM5PXVkcF90dW5uZWxfbmljX2FkZF9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0MC1cXHRcXHRcXHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDE6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDQyLVxcdHJldHVybiB1ZHBfdHVubmVsX25pY190cnlfZXhpc3RpbmcoZGV2LCB1dG4sIHRpLCArMSk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0Nj11ZHBfdHVubmVsX25pY19kZWxfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDctXFx0XFx0XFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDQ4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0OS1cXHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgLTEpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NTM9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1NC1cXHRcXHQgICAgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NTU6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU2LVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDkwPV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTE6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkyLVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01MjQ9X191ZHBfdHVubmVsX25pY19kZWxfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUyNTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MjYtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU0MD1zdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTQxOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0Mi1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTc2PV9fdWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU3Nzp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NzgtXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYwMT1fX3VkcF90dW5uZWxfbmljX2R1bXBfd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjAyLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjAzOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwNC1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjM3PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfYXNzZXJ0X2xvY2tlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjM4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYzOS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjQ2PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfbG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjQ3OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0OC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjU1PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NTY6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02Nzg9dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzk6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjgwLVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03MDE9dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzAyOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwMy1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzI4PXN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzI5OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTczMC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biA9XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc1Mj11ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc1My1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBuX3RhYmxlcylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc1NDp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTUtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc4MT1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzgyOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc4My1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzkwPXN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc5MTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTItXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg2NT11ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY2OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2Ny1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTE5PXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyMC1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTIxOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyMi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk3Mz1zdGF0aWMgaW50IF9faW5pdCB1ZHBfdHVubmVsX25pY19pbml0X21vZHVsZSh2b2lkKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTc0OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk3NS1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMDAwPXN0YXRpYyB2b2lkIF9fZXhpdCB1ZHBfdHVubmVsX25pY19jbGVhbnVwX21vZHVsZSh2b2lkKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTAwMTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDAyLVxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZ1ZHBfdHVubmVsX25pY19ub3RpZmllcl9ibG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjMyLjI4MTA3Njk4MVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTc5Mjg4NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVRFAgVHVubmVsIE5JQyBTeW5jaHJvbml6YXRpb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nIGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCwgdGhlIGNvcmUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlIGZvciBzeW1ib2wgdmlzaWJpbGl0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgbW9zdCBvZiB0aGVtIHdvbid0IGJlIGV4cG9zZWQgYXMgc3ltYm9scy4gQnV0IHdhaXQsIHNvbWUgb2YgdGhlbSBhcmUgY2xlYXJseSB1c2VkIGluIHdheXMgdGhhdCBwcmV2ZW50IGlubGluaW5nLiBTcGVjaWZpY2FsbHksIHRoZSBhZGRyZXNzZXMgb2YgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgICh1c2VkIHdpdGggYElOSVRfREVMQVlFRF9XT1JLYCksIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgICh1c2VkIHdpdGggYG5vdGlmaWVyX2Jsb2NrYCksIGBfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBhbmQgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgIChwYXNzZWQgaW50byBgdWRwX3R1bm5lbF9uaWNfb3BzYCkuIFRob3NlIHNob3VsZCBiZSBnb29kIHRhcmdldHMuXG5cbk9rYXksIGxldCdzIGNvbmZpcm0gdGhlIHN0YXRpYyBuYXR1cmUgb2YgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCB5ZXAsIGl0J3Mgc3RhdGljLCBidXQgdGhhdCdzIGZpbmUgc2luY2Ugd2UgdGFrZSBpdHMgYWRkcmVzcywgc28gaXQgbXVzdCBiZSBhIHZhbGlkIHN5bWJvbCBmb3IgZnV6emluZy4gTm93LCB3aGF0IGFib3V0IGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYD8gSG1tLCBpdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLiBMaWtlbHkgaW5saW5lZCwgc28gbWF5YmUgbm90IHRoZSBiZXN0IHN5bWJvbC4gYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgbG9va3MgbGlrZSBhIG1vcmUgcHJvbWlzaW5nIGNhbmRpZGF0ZSBzaW5jZSBpdCdzIHVzZWQgd2l0aCBgbm90aWZpZXJfYmxvY2tgLlxuXG5TbywgdGhlIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgaXM6IHRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIHN5bmNocm9uaXphdGlvbiBtZXRob2QgaW4gVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZywgc3dpdGNoaW5nIHRvIGEgZGVsYXllZCB3b3JrcXVldWUgYW5kIHJlZmluaW5nIHRoZSBsb2NraW5nIG1lY2hhbmlzbSB3aXRoIGBydG5sX3RyeWxvY2soKWAgYW5kIGEgcmVxdWV1ZSBkZWxheSB0byBkZWFsIHdpdGggcG90ZW50aWFsIGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5LCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBlbXVsYXRlZCBkZXZpY2VzIGxpa2UgbmV0ZGV2c2ltLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gY2F0Y2ggYW55IG5ld2x5IGludHJvZHVjZWQgcmFjZSBjb25kaXRpb25zIG9yIGRlYWRsb2Nrcy5cblxuSGVyZSdzIG15IGRpc3RpbGxlZCBsaXN0OlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZVxuKiAgICoqUmVhc29uaW5nOioqIENoYW5nZXMgdG8gY29yZSBuZXR3b3JraW5nIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgbG9ja2luZywgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgZGVhZGxvY2tzLCByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMuXG4qICAgKipGb2N1c1N5bWJvbHM6KipcbiAgICAqICAgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgXG4gICAgKiAgIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgXG4gICAgKiAgIGBfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0YFxuICAgICogICBgX191ZHBfdHVubmVsX25pY19kZWxfcG9ydGBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KipcbiAgICAqICAgYE5FVF9VRFBfVFVOTkVMYCAoZXhwbGljaXRseSBsaXN0ZWQsIGJ1dCBzZWxlY3RlZCBieSBgVlhMQU5gIG9yIGBHRU5FVkVgKVxuICAgICogICBgVlhMQU5gXG4gICAgKiAgIGBHRU5FVkVgXG4gICAgKiAgIGBORVRERVZTSU1gXG5cbkFuZCBsZXQncyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBORVRERVZTSU1gIGRvZXNuJ3QgZGVwZW5kIG9uIG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBqdXN0IGluIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQxLjQ2MDM2OTMwMVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE0NDk2ODUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQxLjU0MTgyNTUzN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQzMTMxMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBDaGVjayBmb3IgTkVUREVWU0lNKipcblxuT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuIEknbGwgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVmaW5pdGlvbiBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYE5FVERFVlNJTWAuIEl0J3MgcG9zc2libGUgSSdtIG92ZXJsb29raW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhYm91dCBob3cgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBjb25maWd1cmVkLCBvciBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWcgSSBoYXZlIHRvIGVuYWJsZSBhbG9uZ3NpZGUuIERvdWJsZS1jaGVja2luZyBgS2NvbmZpZ2AgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uIGlzc3VlcyB0aGF0IGFyZSBhbHJlYWR5IGFkZHJlc3NlZCBpbiB0aGUgcHJvamVjdCBidWlsZCBjb25maWd1cmF0aW9uLiBJdCdzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgc2FuaXR5IGNoZWNrIGZvciBzb21ldGhpbmcgbGlrZSB0aGlzIGFuZCBhbHdheXMgd29ydGggYSBzZWNvbmQgZ2xhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg4MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ1Ljk4NDk1OTU5NFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2NDY4MDMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ2LjE3MTQzNTE4NFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY5NzQ2Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVyeTpcblxuKipXaGVyZSdzIHRoZSBgbmV0ZGV2c2ltYCBNYWdpYz8qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MuIEkgc2VlIFwibmV0ZGV2c2ltXCIgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IGdvZXMsIFwiRGVmaW5lIHRoYXQgdGhpbmchXCIgSXQncyB0aGF0IGluaXRpYWwgcmVhY3Rpb24gdG8gZW5jb3VudGVyaW5nIGFuIHVuZmFtaWxpYXIgdGVybSwgZXNwZWNpYWxseSBvbmUgdGhhdCBzb3VuZHMgbGlrZSBpdCBjb3VsZCBiZSBjcnVjaWFsLiBJIG1lYW4sIGlmIHRoaXMgaXMgY2VudHJhbCB0byBzb21ldGhpbmcsIEkgKm5lZWQqIHRvIGtub3cgd2hlcmUgaXQncyByb290ZWQuIElzIGl0IGEgbW9kdWxlIEkgbmVlZCB0byBpbXBvcnQ/IEEgZnVuY3Rpb24gY2FsbD8gQSBsaWJyYXJ5IGRlcGVuZGVuY3k/IElzIGl0IHNvbWV0aGluZyBJJ3ZlIHNvbWVob3cgbWlzc2VkLCBkZXNwaXRlIG15IGV4cGVyaWVuY2U/IFRoaXMgYWJzZW5jZSBvZiBjb250ZXh0IGlzIG1ha2luZyBtZSBmZWVsIGxpa2UgSSdtIG1pc3NpbmcgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBjYW4ndCByZWFsbHkgYW5hbHl6ZSB0aGlzIGZ1cnRoZXIgdW50aWwgSSBrbm93IGV4YWN0bHkgd2hhdCBgbmV0ZGV2c2ltYCBhY3R1YWxseSAqaXMqLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzExNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ5LjM0MTE4NTI2OVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NzAzMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ5LjUyNjg5MzAwOVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDY3OTAzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgTG9jYXRpb24gRm91bmQqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkgd2FzIGp1c3QgdHJhY2luZyB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0cnlpbmcgdG8gcmVtZW1iZXIgd2hlcmUgSSBzYXcgaXQgZGVmaW5lZC4gQmluZ28hIEFmdGVyIGEgcXVpY2sgc2VhcmNoLCBpdCdzIHJpZ2h0IHRoZXJlLCBwcmVjaXNlbHkgd2hlcmUgSSBzdXNwZWN0ZWQ6IGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGUgbmV0d29ya2luZyBkcml2ZXJzIGFyZSB1c3VhbGx5IGFsbCBvcmdhbml6ZWQgaW4gdGhhdCBhcmVhLiBOb3cgSSBjYW4gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgKnRoYXQqIEtjb25maWcgZmlsZSBhbmQgZmlndXJlIG91dCB3aGF0IG90aGVyIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0cyBhcmUgdGllZCB0byB0aGF0IG9wdGlvbi4gS25vd2luZyB0aGlzIHBhdGggc2F2ZXMgdGltZSwgYW5kIGxldHMgbWUgbW92ZSBvbiB0byB0aGUgbW9yZSBpbnRlcmVzdGluZyBwYXJ0OiBkZWNpcGhlcmluZyB0aGUgcmVsYXRpb25zaGlwcyBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgc2V0dGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0MjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjo1My41OTQ3OTk3ODZaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzUxMjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjo1My42NjE1NTU5NjJaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2MjAzNTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgaW5jb21wbGV0ZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc3RydWN0dXJlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEknbSB0aGlua2luZywgXCJXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/XCIgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbid0IGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjk1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjo1Ni42MjM1OTQ1NTdaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjYxNTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVERFVlNJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjU2LjY5NTI2MzQyNFoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg2NjcwMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gbmV0d29yayBzaW11bGF0aW9uIG9yIHJlbGF0ZWQgZmllbGRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEaXJlY3RpdmUqKlxuXG5BbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGBjb25maWcgTkVUREVWU0lNYCBqdXN0IHBvcHBlZCB1cC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2UncmUgaW4gY29uZmlndXJhdGlvbiBtb2RlLCBsaWtlbHkgd2l0aGluIGEgbmV0d29yayBzaW11bGF0aW9uIGVudmlyb25tZW50IG9yIGEgc3lzdGVtIHRoYXQgdXRpbGl6ZXMgYSBuZXR3b3JrIGRldmljZSBzaW11bGF0aW9uIGNvbXBvbmVudC5cIiBUaGlzIGlzIHByb2JhYmx5IHNvbWUga2luZCBvZiBpbml0aWFsaXphdGlvbiBvciBzZXR1cCBjb21tYW5kLiBJJ20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgcGFyYW1ldGVycyBvciBzZXR0aW5ncyBhcmUgYmVpbmcgZGVmaW5lZCBoZXJlLCBvciBpZiB0aGlzIGlzIGp1c3QgYW4gZW50cnkgcG9pbnQgdG8gZnVydGhlciBjb25maWd1cmF0aW9ucy4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGRpY3RhdGUgdGhlIG92ZXJhbGwgYmVoYXZpb3Igb2Ygc29tZSBzaW11bGF0ZWQgbmV0d29yayBkZXZpY2UsIG9yIHRoZSBlbnZpcm9ubWVudCBmb3IgaXQuIFRoZSBsaW5lcyBmb2xsb3dpbmcgdGhpcyBhcmUgZ29pbmcgdG8gYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0J3MgYmVpbmcgaW1wbGVtZW50ZWQuIFNvLCBsZXQncyBkaXZlIGludG8gdGhvc2UgbGluZXMgdG8gc2VlIHdoYXQgdGhleSByZXZlYWwgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTc0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6MDM6MDAuMDgxOTM2Mzc2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwNCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwNDpcXHRjb25maWcgTkVUREVWU0lNXFxuIDYwNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbiA2MDY6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiA2MDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDYwODpcXHRcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuIDYwOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuIDYxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gNjExOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gNjEyOlxcdFxcdHNlbGVjdCBORVRfU0hBUEVSXFxuIDYxMzpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjAwLjA4MjA0NTQxNloiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI0MzQ1NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyBORVRERVZTSU0gYW5kIFZYTEFOIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgTkVUREVWU0lNYCBhbmQgaG93IHJvYnVzdCBpdCBpcy4gVGhlIGRlcGVuZGVuY2Ugb24gYERFQlVHX0ZTYCBhbmQgYElORVRgIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQ29uc2lkZXJpbmcgYERFQlVHX0ZTYCBpcyBnZW5lcmFsbHkgZW5hYmxlZCBvbiBtb3N0IHN5c3RlbXMgSSB3b3JrIHdpdGgsIHRoYXQgYXNwZWN0IG9mIGBORVRERVZTSU1gIGxvb2tzIHNvbGlkIGFuZCBzaG91bGRuJ3QgcHJlc2VudCBhbiBpc3N1ZS4gSXQncyBhIGZhaXJseSBzYWZlIGFzc3VtcHRpb24uXG5cbk5vdywgbGV0J3MgcGl2b3QgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBWWExBTmAuIFRoYXQgd2lsbCBuZWVkIGEgYml0IG1vcmUgaW52ZXN0aWdhdGlvbiwgYXMgaXQncyBhIGNyaXRpY2FsIHRlY2hub2xvZ3kgYW5kIHVuZGVyc3RhbmRpbmcgYWxsIGl0cyBjb21wb25lbnRzIGlzIHBhcmFtb3VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQzNjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjAzLjIwNjM5NTQzM1oiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDkzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzA6XFx0Y29uZmlnIFZYTEFOXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbiAyMzI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjM0OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjM1OlxcdFxcdGhlbHBcXG4gMjM2OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDIzNzpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuIDIzODpcXHRcXHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxcbiAyMzk6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjAzLjIwNjcwOTcwM1oiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU0OTY2MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqVlhMQU4gYW5kIHRoZSBQYXRoIEZvcndhcmQqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgbmV0d29yayB2aXJ0dWFsaXphdGlvbi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyBWWExBTiByZWxpZXMgb24gdGhlIHVuZGVybHlpbmcgSU5FVCBpbmZyYXN0cnVjdHVyZS4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQgSSBuZWVkIGEgYnJvYWRlciB2aWV3IG9mIHRoZSBsYW5kc2NhcGUuIE15IG5leHQgdGhvdWdodCBpcyB0byBkaWcgaW50byBHRU5FVkUuIEkgc2hvdWxkIGNoZWNrIHdoYXQgZGVwZW5kZW5jaWVzICp0aGF0KiBwcm90b2NvbCBoYXMsIHNlZSBpZiBpdCBpcyBhIG1vcmUgdmlhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ3NDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjA2LjA2MTY3OTAyM1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0NTpcXHRjb25maWcgR0VORVZFXFxuIDI0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuIDI0NzpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjQ4OlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAyNDk6XFx0XFx0c2VsZWN0IEdST19DRUxMU1xcbiAyNTA6XFx0XFx0aGVscFxcbiAyNTE6XFx0XFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIGdlbmV2ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDI1MjpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBHRU5FVkUgaXMgb2Z0ZW4gdXNlZFxcbiAyNTM6XFx0XFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cXG4gMjU0OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMzowNi4wNjE3NjM1NTNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgxOTY5MzU3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYEdFTkVWRWAgQ29uZmlndXJhdGlvbiBhbmQgUmVsYXRlZCBDb2RlKipcblxuT2theSwgc28gSSdtIGJyZWFraW5nIGRvd24gdGhpcyBgR0VORVZFYCBzZXR1cC4gSXQncyBidWlsdCBvbiBgSU5FVGAsIHRoYXQncyB0aGUgZm91bmRhdGlvbi4gQW5kIGJlY2F1c2Ugb2YgdGhhdCwgSSBjYW4gc2VlIHRoZSBjb25maWd1cmF0aW9uIGludm9sdmVzIGBORVRERVZTSU1gLCBgVlhMQU5gLCBhbmQgYEdFTkVWRWAgdGhlbXNlbHZlcy4gQSBxdWljayByZW1pbmRlciBpcyB1c2VmdWwsIGBORVRfVURQX1RVTk5FTGAgaXMgc2VsZWN0ZWQgYnkgYm90aCBgVlhMQU5gIGFuZCBgR0VORVZFYCwgc28sIGV2ZW4gdGhvdWdoIEkgZG9uJ3QgdGVjaG5pY2FsbHkgKm5lZWQqIHRvIGxpc3QgaXQsIGl0J3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhvc2UgZm9jdXMgc3ltYm9scyBhZ2FpbiwganVzdCB0byBtYWtlIHN1cmUgSSdtIG9uIHRoZSByaWdodCB0cmFjazogYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgLCBhbmQgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgLlxuXG5IbW0sIGFueSBvdGhlciBmdW5jdGlvbnMgZ290IHR3ZWFrZWQ/IEFoLCB5ZXMuIGB1ZHBfdHVubmVsX25pY19hbGxvY2AgaXMgbW9kaWZpZWQgdG8gdXNlIGBJTklUX0RFTEFZRURfV09SS2AuIEFsc28sIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYC4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCBub3cgdXNlcyBgcXVldWVfZGVsYXllZF93b3JrYCwgYW5kIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AgaXMgY2hhbmdlZCB0byBza2lwIHRoZSBjaGVjayBmb3IgYHV0bi1cdTAwM2V3b3JrX3BlbmRpbmdgLlxuXG5TaW5jZSBgdWRwX3R1bm5lbF9uaWNfYWxsb2NgIGlzIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYSBmb2N1cyBvbiBmdXp6aW5nIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgIHdpbGwgZWZmZWN0aXZlbHkgY292ZXIgdGhhdCBmdW5jdGlvbi4gQW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCBpcyAqYWxzbyogY2FsbGVkIGJ5IGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX191ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0YC5cblxuWWVhaCwgdGhhdCBtYWtlcyBzZW5zZS4gQ29uc2lkZXJpbmcgaG93IHRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgYW5kIHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZW0sIG15IGNob3NlbiBmb2N1cyBzeW1ib2xzIHNob3VsZCBjb3ZlciBhbGwgdGhlIHJlbGV2YW50IG1vZGlmaWVkIGNvZGUgcGF0aHMuIEknbSBzYXRpc2ZpZWQgd2l0aCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA1NSwiT3V0cHV0VG9rZW5zIjoyMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMzoxMy44ODE0NjA1MjRaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYwODM5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCIsXG4gICAgXCJORVRfVURQX1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZWxfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCIsXG4gICAgXCJORVRfVURQX1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZWxfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowhxgxf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 13:14:44 +0000 UTC FinishedAt: 2026-07-25 14:03:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE", "NET_UDP_TUNNEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE", "NET_UDP_TUNNEL" ], "series_id": "4d90b240-0908-4cd6-b443-dc185e2b1124" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "udp_tunnel_nic_device_sync_work", "udp_tunnel_nic_netdevice_event", "__udp_tunnel_nic_add_port", "__udp_tunnel_nic_del_port" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OywKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgICAmIzM0O19fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGViMjk0NWNlNzQzZTkyOWI4NzRjMjlmMjBlMGNmNzFjNmNiMzg5N2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzo1NToyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jIGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuaW5kZXggM2IzMmEwYWZhOTc5OGQuLjUzYTFhOWMxZjhiZmYwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuQEAgLTMyLDEzICYjNDM7MzIsMTIgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcbiAgKiBAbG9jazpcdHByb3RlY3RzIGFsbCBmaWVsZHNcbiAgKiBAbmVlZF9zeW5jOlx0YXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZFxuICAqIEBuZWVkX3JlcGxheTogc3BhY2Ugd2FzIGZyZWVkLCB3ZSBuZWVkIGEgcmVwbGF5IG9mIGFsbCBwb3J0c1xuLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWRcbiAgKiBAbl90YWJsZXM6XHRudW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzXG4gICogQG1pc3NlZDpcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXG4gICogQGVudHJpZXM6XHR0YWJsZSBvZiB0YWJsZXMgb2YgcG9ydHMgY3VycmVudGx5IG9mZmxvYWRlZFxuICAqL1xuIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XG4tXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHdvcms7XG4gXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTQ2LDcgJiM0Mzs0NSw2IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XG4gXG4gXHR1OCBuZWVkX3N5bmM6MTtcbiBcdHU4IG5lZWRfcmVwbGF5OjE7XG4tXHR1OCB3b3JrX3BlbmRpbmc6MTtcbiBcbiBcdHVuc2lnbmVkIGludCBuX3RhYmxlcztcbiBcdHVuc2lnbmVkIGxvbmcgbWlzc2VkO1xuQEAgLTMwMSwxMSAmIzQzOzI5OSwxMCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jIHx8IHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcpXG4mIzQzO1x0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4mIzQzO1x0cXVldWVfZGVsYXllZF93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmssIDApO1xuIH1cbiBcbiBzdGF0aWMgYm9vbFxuQEAgLTczMSwxMiAmIzQzOzcyOCwxNyBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4gPVxuLVx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHVkcF90dW5uZWxfbmljLCB3b3JrKTtcbiYjNDM7XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMsIHdvcmsud29yayk7XG4gXG4tXHRydG5sX2xvY2soKTtcbiYjNDM7XHQvKiBXZSBjYW5ub3QgYmxvY2sgb24gUlROTCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgZGVhZGxvY2sgd2l0aFxuJiM0MztcdCAqIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoKSBjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpXG4mIzQzO1x0ICogd2hpbGUgaG9sZGluZyBSVE5MLiBSZXF1ZXVlIHdpdGggMSBqaWZmeSBkZWxheSBpZiBSVE5MIGlzIGNvbnRlbmRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XG4mIzQzO1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaywgMSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4tXG4tXHR1dG4tXHUwMDNld29ya19wZW5kaW5nID0gMDtcbiBcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmModXRuLVx1MDAzZWRldiwgdXRuKTtcbiBcbiBcdGlmICh1dG4tXHUwMDNlbmVlZF9yZXBsYXkpXG5AQCAtNzU3LDcgJiM0Mzs3NTksNyBAQCB1ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcbiBcdGlmICghdXRuKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdHV0bi1cdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xuLVx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbiYjNDM7XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ1dG4tXHUwMDNld29yaywgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xuQEAgLTkwMSwxMSAmIzQzOzkwMywxMSBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0dWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pO1xuIFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG4gXG4tXHQvKiBXYWl0IGZvciB0aGUgd29yayB0byBiZSBkb25lIHVzaW5nIHRoZSBzdGF0ZSwgbmV0ZGV2IGNvcmUgd2lsbFxuLVx0ICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuXG4mIzQzO1x0LyogTWFrZSBzdXJlIG5vIHdvcmsgaXMgcnVubmluZyBvciBxdWV1ZWQgYmVmb3JlIGZyZWVpbmcgQHV0bi5cbiYjNDM7XHQgKiBUaGUgd29yayBoYW5kbGVyIHVzZXMgcnRubF90cnlsb2NrKCksIHNvIGl0IHdpbGwgbm90IGRlYWRsb2NrXG4mIzQzO1x0ICogYWdhaW5zdCB0aGUgUlROTCB3ZSBhcmUgaG9sZGluZyBoZXJlLlxuIFx0ICovXG4tXHRpZiAodXRuLVx1MDAzZXdvcmtfcGVuZGluZylcbi1cdFx0cmV0dXJuO1xuJiM0MztcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ1dG4tXHUwMDNld29yayk7XG4gXG4gXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XG4gcmVsZWFzZV9kZXY6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OywKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgICAmIzM0O19fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGViMjk0NWNlNzQzZTkyOWI4NzRjMjlmMjBlMGNmNzFjNmNiMzg5N2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMzo1NToyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCmluZGV4IDNiMzJhMGFmYTk3OThkLi41M2ExYTljMWY4YmZmMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCkBAIC0zMiwxMyAmIzQzOzMyLDEyIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7CiAgKiBAbG9jazoJcHJvdGVjdHMgYWxsIGZpZWxkcwogICogQG5lZWRfc3luYzoJYXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZAogICogQG5lZWRfcmVwbGF5OiBzcGFjZSB3YXMgZnJlZWQsIHdlIG5lZWQgYSByZXBsYXkgb2YgYWxsIHBvcnRzCi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkCiAgKiBAbl90YWJsZXM6CW51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXMKICAqIEBtaXNzZWQ6CWJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duCiAgKiBAZW50cmllczoJdGFibGUgb2YgdGFibGVzIG9mIHBvcnRzIGN1cnJlbnRseSBvZmZsb2FkZWQKICAqLwogc3RydWN0IHVkcF90dW5uZWxfbmljIHsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKJiM0MzsJc3RydWN0IGRlbGF5ZWRfd29yayB3b3JrOwogCiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIApAQCAtNDYsNyAmIzQzOzQ1LDYgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHsKIAogCXU4IG5lZWRfc3luYzoxOwogCXU4IG5lZWRfcmVwbGF5OjE7Ci0JdTggd29ya19wZW5kaW5nOjE7CiAKIAl1bnNpZ25lZCBpbnQgbl90YWJsZXM7CiAJdW5zaWduZWQgbG9uZyBtaXNzZWQ7CkBAIC0zMDEsMTEgJiM0MzsyOTksMTAgQEAgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHN0YXRpYyB2b2lkCiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKLQlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jIHx8IHV0bi0mZ3Q7d29ya19wZW5kaW5nKQomIzQzOwlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jKQogCQlyZXR1cm47CiAKLQlxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgJmFtcDt1dG4tJmd0O3dvcmspOwotCXV0bi0mZ3Q7d29ya19wZW5kaW5nID0gMTsKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgJmFtcDt1dG4tJmd0O3dvcmssIDApOwogfQogCiBzdGF0aWMgYm9vbApAQCAtNzMxLDEyICYjNDM7NzI4LDE3IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID0KLQkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB1ZHBfdHVubmVsX25pYywgd29yayk7CiYjNDM7CQljb250YWluZXJfb2Yod29yaywgc3RydWN0IHVkcF90dW5uZWxfbmljLCB3b3JrLndvcmspOwogCi0JcnRubF9sb2NrKCk7CiYjNDM7CS8qIFdlIGNhbm5vdCBibG9jayBvbiBSVE5MIGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBkZWFkbG9jayB3aXRoCiYjNDM7CSAqIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoKSBjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpCiYjNDM7CSAqIHdoaWxlIGhvbGRpbmcgUlROTC4gUmVxdWV1ZSB3aXRoIDEgamlmZnkgZGVsYXkgaWYgUlROTCBpcyBjb250ZW5kZWQuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7CiYjNDM7CQlxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCAmYW1wO3V0bi0mZ3Q7d29yaywgMSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAltdXRleF9sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKLQotCXV0bi0mZ3Q7d29ya19wZW5kaW5nID0gMDsKIAlfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi0mZ3Q7ZGV2LCB1dG4pOwogCiAJaWYgKHV0bi0mZ3Q7bmVlZF9yZXBsYXkpCkBAIC03NTcsNyAmIzQzOzc1OSw3IEBAIHVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLAogCWlmICghdXRuKQogCQlyZXR1cm4gTlVMTDsKIAl1dG4tJmd0O25fdGFibGVzID0gbl90YWJsZXM7Ci0JSU5JVF9XT1JLKCZhbXA7dXRuLSZndDt3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTsKJiM0MzsJSU5JVF9ERUxBWUVEX1dPUksoJmFtcDt1dG4tJmd0O3dvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspOwogCW11dGV4X2luaXQoJmFtcDt1dG4tJmd0O2xvY2spOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IG5fdGFibGVzOyBpJiM0MzsmIzQzOykgewpAQCAtOTAxLDExICYjNDM7OTAzLDExIEBAIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJdWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pOwogCXVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpOwogCi0JLyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGwKLQkgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS4KJiM0MzsJLyogTWFrZSBzdXJlIG5vIHdvcmsgaXMgcnVubmluZyBvciBxdWV1ZWQgYmVmb3JlIGZyZWVpbmcgQHV0bi4KJiM0MzsJICogVGhlIHdvcmsgaGFuZGxlciB1c2VzIHJ0bmxfdHJ5bG9jaygpLCBzbyBpdCB3aWxsIG5vdCBkZWFkbG9jawomIzQzOwkgKiBhZ2FpbnN0IHRoZSBSVE5MIHdlIGFyZSBob2xkaW5nIGhlcmUuCiAJICovCi0JaWYgKHV0bi0mZ3Q7d29ya19wZW5kaW5nKQotCQlyZXR1cm47CiYjNDM7CWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3V0bi0mZ3Q7d29yayk7CiAKIAl1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7CiByZWxlYXNlX2RldjoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzNQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVRFAgVHVubmVsIE5JQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkLCBidXQgY3J1Y2lhbCwgY2hhbmdlLiBUaGV5JiMzOTtyZSBzd2l0Y2hpbmcgZnJvbSBgc3RydWN0IHdvcmtfc3RydWN0YCB0byBgc3RydWN0IGRlbGF5ZWRfd29ya2AgaW4gdGhlIGBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNgLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjbHVlLiBUaGVuLCBhbGwgdGhlIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGFyZSBiZWluZyB1cGRhdGVkIHRvIHVzZSB0aGUgZGVsYXllZCB3b3JrIGVxdWl2YWxlbnRzOiBgcXVldWVfZGVsYXllZF93b3JrYCwgYElOSVRfREVMQVlFRF9XT1JLYCwgYW5kIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmNgLiBUaGUgaW1wb3J0YW50IGZ1bmN0aW9uIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCBpcyBub3cgdXNpbmcgYHJ0bmxfdHJ5bG9jaygpYCB3aXRoIGEgcmV0cnkgdXNpbmcgYHF1ZXVlX2RlbGF5ZWRfd29ya2AgaWYgdGhlIGxvY2sgaXMgbm90IGF2YWlsYWJsZS4gVGhpcyBpcyBhIHRlbGwtdGFsZSBzaWduIG9mIHRyeWluZyB0byBmaXggYSBjb25jdXJyZW5jeSBwcm9ibGVtLCBsaWtlbHkgYSBkZWFkbG9jayBvciByYWNlIGNvbmRpdGlvbiwgd2l0aGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkaW5nIHBhdGguCgpUaGlzIGlzIGltbWVkaWF0ZWx5IGZsYWdnZWQgYXMgc29tZXRoaW5nIHRoYXQgYWJzb2x1dGVseSAqbmVlZHMqIGZ1enppbmcuIFdlIGhhdmUgYSBzb2xpZCBsZWFkIG9uIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWRkcmVzc2luZyBhIHNwZWNpZmljIHR5cGUgb2YgaXNzdWUuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2Agc291cmNlIGZpbGUgaXRzZWxmIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbmZpZyBvcHRpb25zIGFuZCBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGlzIHVzZWQgYW5kIGhvdyB0aGUgY2hhbmdlcyBhZmZlY3QgaXQ6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLCBhbmQgYHVkcF90dW5uZWxfbmljX2FsbG9jYC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBjaGVjayBgbmV0L2lwdjQvTWFrZWZpbGVgIG9yIGBuZXQvaXB2NC9LY29uZmlnYCB0byBkZXRlcm1pbmUgd2hpY2ggY29uZmlnIG9wdGlvbnMgZW5hYmxlIGB1ZHBfdHVubmVsX25pYy5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlbGluZSB0byB3b3JrIGZyb20gd2hlbiB0ZXN0aW5nIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfTkVUX0lQR1JFKSAmIzQzOz0gaXBfZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlOjMxOnVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMi1vYmotJChDT05GSUdfTkVUX1VEUF9UVU5ORUwpICYjNDM7PSB1ZHBfdHVubmVsLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODkxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIC0gVURQIFR1bm5lbCBNb2R1bGUqKgoKUmlnaHQsIHNvIGBDT05GSUdfTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQuIFRoYXQgc2hvdWxkIGJyaW5nIGluIHRoZSBgdWRwX3R1bm5lbF9uaWMub2AgbW9kdWxlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hlcmUgZXhhY3RseSB0aGlzIGlzIGRlZmluZWQuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX1VEUF9UVU5ORUxgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXBzdHJlYW0gY2hhbmdlcyB0aGF0IEkgYW0gbm90IGF3YXJlIG9mLCBvciBpZiB0aGVyZSBpcyBhbnkgdW51c3VhbCBjb25maWcgZGVwZW5kZW5jeSB0aGF0IEkgbmVlZCB0byBiZSBjYXJlZnVsIG9mLiBUaGF0JiMzOTtzIGFsd2F5cyB0aGUgZmlyc3QgcGxhY2UgSSBzdGFydCB3aXRoIHRoZXNlIG5ldHdvcmstcmVsYXRlZCBvcHRpb25zIHRvIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gQSBxdWljayBjaGVjayBvZiB0aGF0IEtjb25maWcgZmlsZSBzaG91bGQgY29uZmlybSB0aGUgbGluayBhbmQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9VRFBfVFVOTkVMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMTUtXG5uZXQvaXB2NC9LY29uZmlnOjMxNjpjb25maWcgTkVUX1VEUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzE3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjM2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCBJIGNhbiBwdWxsIG91dCBvZiB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBORVRfVURQX1RVTk5FTCBUcmlzdGF0ZSoqCgpSaWdodCwgc28gYE5FVF9VRFBfVFVOTkVMYCBpcyBhIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBpdCYjMzk7cyBsaWtlbHkgYSBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gYSBkaXJlY3RseSB1c2VyLXNlbGVjdGFibGUgb25lLiBUaGUgdGV4dCBub3RlcyB0aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIFZYTEFOIG9yIEdFTkVWRSwgYXJlIHByb2JhYmx5IHRoZSBvbmVzIGRyaXZpbmcgaXRzIHNlbGVjdGlvbi4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcHJvYmFibHkgYW4gdW5kZXJseWluZyBidWlsZGluZyBibG9jayBmb3IgdGhvc2UgdHVubmVsaW5nIHByb3RvY29scy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zIGlzIHB1bGxpbmcgaW4gYE5FVF9VRFBfVFVOTkVMYCwgb3IgaWYgaXQmIzM5O3Mgb3RoZXIgb3B0aW9ucyBlbnRpcmVseS4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9VRFBfVFVOTkVMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZz0yPWNvbmZpZyBSRE1BX1JYRVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy01LVx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6NjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnLTctXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTc2LVx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Nzc6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctNzgtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cdHNlbGVjdCBEU1RfQ0FDSEVcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA3Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwOC1cdHNlbGVjdCBDUllQVE9cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMi1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjM0LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ny1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDg6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ5LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjItXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2NC1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzQtXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjkxLVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMzA0LVx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJUF9NVUxUSUNBU1RcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxubmV0L2lwdjQvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjMyMzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZy0zMjQtXHRoZWxwXG4tLVxubmV0L2wydHAvS2NvbmZpZz02PW1lbnVjb25maWcgTDJUUFxuLS1cbm5ldC9sMnRwL0tjb25maWctOC1cdGRlcGVuZHMgb24gSU5FVFxubmV0L2wydHAvS2NvbmZpZzo5Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvbDJ0cC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbm5ldC9yeHJwYy9LY29uZmlnPTY9Y29uZmlnIEFGX1JYUlBDXG4tLVxubmV0L3J4cnBjL0tjb25maWctMTEtXHRzZWxlY3QgS0VZU1xubmV0L3J4cnBjL0tjb25maWc6MTI6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9yeHJwYy9LY29uZmlnLTEzLVx0aGVscFxuLS1cbm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTEyLVx0c2VsZWN0IE5FVF9DUkMzMkNcbm5ldC9zY3RwL0tjb25maWc6MTM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9zY3RwL0tjb25maWctMTQtXHRoZWxwXG4tLVxubmV0L3RpcGMvS2NvbmZpZz0zMD1jb25maWcgVElQQ19NRURJQV9VRFBcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTMyLVx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnOjMzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvdGlwYy9LY29uZmlnLTM0LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU0MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBVRFAgVHVubmVsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgZW5hYmxlIFVEUCB0dW5uZWxpbmcgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlnLiBUaGUga2V5IGhlcmUgaXMgYE5FVF9VRFBfVFVOTkVMYC4gSXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYSBsb3Qgb2YgZGlmZmVyZW50IGZlYXR1cmVzLCB3aGljaCBpcyBwcmV0dHkgY29tbW9uLiBNeSBmaXJzdCBpbnN0aW5jdCB3YXMgd2hldGhlciB3ZSBjb3VsZCBqdXN0IGRpcmVjdGx5IGxpc3QgYE5FVF9VRFBfVFVOTkVMYCBpbiBgRW5hYmxlQ29uZmlnc2AsIGFsb25nc2lkZSBvcHRpb25zIGxpa2UgYFZYTEFOYCBvciBgR0VORVZFYC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIGBORVRfVURQX1RVTk5FTGAgaXMgYSB0cmlzdGF0ZSBjb25maWcsIGFuZCBiZWNhdXNlIGl0IGxhY2tzIGEgZGlyZWN0IHByb21wdCwgaXQgY2FuICpvbmx5KiBiZSBzZWxlY3RlZCBieSBvdGhlciBjb25maWdzLiBTbywgd2UgbmVlZCB0byBiZSBtb3JlIGV4cGxpY2l0OyB0aGUgcmlnaHQgYXBwcm9hY2ggaXMgdG8gZW5hYmxlIHNvbWV0aGluZyB0aGF0IHNlbGVjdHMgaXQsIGFuZCB0aGF0IHdvdWxkIGJlIGBWWExBTmAsIGBHRU5FVkVgLCBvciBldmVuIGBORVRfRk9VYC4gTWFrZXMgc2Vuc2UuCgpUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYWxsIG9mIHRoaXMgd29ya3MsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBJIG5lZWQgdG8gcmV2aWV3IHdoYXQgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBmcm9tIHRoYXQgZmlsZSwgYW5kIGFsc28gd2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBwaWN0dXJlIG9mIGhvdyB0aGUgVURQIHR1bm5lbCBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIGFuZCBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgTWlzc2luZyBTeW1ib2wqKgoKSG1tLCBzdHJhbmdlLiBJIHdhcyBleHBlY3RpbmcgYHVkcF90dW5uZWxfbmljLmNgIHRvIGV4cG9ydCBzb21ldGhpbmcsIGJ1dCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IGBFWFBPUlRfU1lNQk9MYCBtYWNybyBpbiB0aGF0IGZpbGUuIFRoYXQmIzM5O3MgdW51c3VhbCwgZXNwZWNpYWxseSBmb3IgYSBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50LiBPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB3aGVyZSB0aGUgcmVsZXZhbnQgc3ltYm9scyAqc2hvdWxkKiBiZS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uIGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGl0JiMzOTtzIHZlcnkgbGlrZWx5IHRoYXQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGEgYnJvYWRlciBkZWZpbml0aW9uIGxpdmVzIGluIGVpdGhlciBgbmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNgIG9yLCBwb3RlbnRpYWxseSwgaW4gYW5vdGhlciBmaWxlIGFsc28gaW4gdGhlIGBuZXQvaXB2NGAgZGlyZWN0b3J5IHN1Y2ggYXMgdGhlIGB1ZHBfdHVubmVsX25pYy5jYCBmaWxlIGFnYWluLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRocm91Z2ggb25lIG9mIHRob3NlIHNvdXJjZSBmaWxlcyB0byBzZWUgaWYgYSBzaW1pbGFyIHN5bWJvbCBleHBvcnQgZXhpc3RzIG9yIGlmIGl0JiMzOTtzIHBsYWNlZCBkaWZmZXJlbnRseS4gTGV0IG1lIGNoZWNrIHRoZSBleHBvcnRzIGluIHRob3NlIGZpbGVzIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLiBJIHN1c3BlY3QgdGhlIGNvcmUgZGVmaW5pdGlvbnMgd2lsbCBiZSBpbiBvbmUgb2YgdGhvc2Ugc3BvdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMj1pbnQgdWRwX3NvY2tfY3JlYXRlNChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB1ZHBfcG9ydF9jZmcgKmNmZyxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy01OS19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzo2MDpFWFBPUlRfU1lNQk9MKHVkcF9zb2NrX2NyZWF0ZTQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtNjEtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9NzE9dm9pZCBzZXR1cF91ZHBfdHVubmVsX3NvY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtOTctfVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6OTg6RVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfdWRwX3R1bm5lbF9zb2NrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTk5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTExMC19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMTE6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEyLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTEzPXZvaWQgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEyMy19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMjQ6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTI1LVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEyNz12b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNDQtfVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MTQ1OkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0Ni1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xNDg9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9kZWxfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTY1LX1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjE2NjpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX25vdGlmeV9kZWxfcnhfcG9ydCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNjctXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xNjg9dm9pZCB1ZHBfdHVubmVsX3htaXRfc2tiKHN0cnVjdCBydGFibGUgKnJ0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTg5LX1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjE5MDpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX3htaXRfc2tiKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE5MS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTE5Mj12b2lkIHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xOTktfVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MjAwOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfc29ja19yZWxlYXNlKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTIwMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTIwMj1zdHJ1Y3QgbWV0YWRhdGFfZHN0ICp1ZHBfdHVuX3J4X2RzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAgdW5zaWduZWQgc2hvcnQgZmFtaWx5LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTIyMi19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoyMjM6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bl9yeF9kc3QpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMjI0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MjI1PXN0cnVjdCBydGFibGUgKnVkcF90dW5uZWxfZHN0X2xvb2t1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTI3MS19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoyNzI6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9kc3RfbG9va3VwKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTI3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipVRFAgVHVubmVsIE5JQyBNb2R1bGUgLSBSZS1FeGFtaW5hdGlvbioqCgpIbW0sIHRoYXQmIzM5O3Mgb2RkLiBJIHdhcyBqdXN0IHdvcmtpbmcgd2l0aCBgdWRwX3R1bm5lbF9uaWMuY2AsIGFuZCBzb21ldGhpbmcgZmVsdCBvZmYuIEkmIzM5O20gYWxtb3N0IGNlcnRhaW4gSSB3YXMgbG9va2luZyBmb3IgYW4gZXhwb3J0ZWQgZnVuY3Rpb24gb3Igc3ltYm9sLCBidXQgbm93IEkmIzM5O20gZHJhd2luZyBhIGJsYW5rLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2R1bGUgKml0c2VsZiogaXNuJiMzOTt0IGV4cG9zaW5nIGFueXRoaW5nIGRpcmVjdGx5LiBPa2F5LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlJiMzOTtzIHNvdXJjZS4gQmV0dGVyIGdvIGJhY2sgYW5kIGNvbmZpcm0gbXkgYXNzdW1wdGlvbiwgZXNwZWNpYWxseSB0aGUgZmlsZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIFRoZXJlIGhhcyB0byBiZSBhIHJlYXNvbiB3aHkgSSB3YXMgbG9va2luZyBhdCB0aGF0IGZpbGUuIFBlcmhhcHMgSSB3YXMgZm9jdXNlZCBvbiB0aGUgaW50ZXJuYWwgbWVjaGFuaXNtcyBhbmQgZ290IGxvc3QgaW4gdGhlIGZsb3cuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cyDigJMgbWF5YmUgbXkgZ29hbCBoYXMgY2hhbmdlZCwgb3IgdGhlIGZ1bmN0aW9uYWxpdHkgSSBhc3N1bWVkIHdhcyB0aGVyZSwgc2ltcGx5IGlzbiYjMzk7dC4gVGltZSBmb3IgYW5vdGhlciBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzczMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgTW9kdWxlIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgbW9kdWxlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoZSBzeW1ib2wgSSBuZWVkIG1pZ2h0IGJlIGV4cG9ydGVkIGZyb20gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBCdXQgSSBkaWRuJiMzOTt0IGltbWVkaWF0ZWx5IHNlZSBpdCwgd2hpY2ggaXMgZnJ1c3RyYXRpbmcuIEhvbGQgb24sIGxldCYjMzk7cyBzdGVwIGJhY2sgZm9yIGEgc2Vjb25kIOKAkyBgdWRwX3R1bm5lbF9uaWMuY2AgaXNuJiMzOTt0IGEgc3RhbmRhbG9uZSBvYmplY3Q7IGl0JiMzOTtzIGNvbXBpbGVkIGludG8gYHVkcF90dW5uZWwub2AgYWxvbmcgd2l0aCBgdWRwX3R1bm5lbF9jb3JlLmNgLiBIbW0sIHJpZ2h0LCBzbyBsb29raW5nIGF0ICpqdXN0KiBgdWRwX3R1bm5lbF9uaWMuY2AgbWlnaHQgYmUgdG9vIG5hcnJvdy4KCkFscmlnaHQsIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBleHBsaWNpdGx5IHNlYXJjaCBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYWdhaW4sIHNwZWNpZmljYWxseSBmb3IgYEVYUE9SVF9TWU1CT0xgLiBJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gKldhaXQqLi4uIEkgKmp1c3QqIGRpZCB0aGF0LCBkaWRuJiMzOTt0IEk/IE9rYXksIG5vLCBubywgbGV0JiMzOTtzIG5vdCBnZXQgYWhlYWQgb2Ygb3Vyc2VsdmVzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIGEgc3lzdGVtYXRpYyBhcHByb2FjaC4gTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBsb29raW5nIGRpcmVjdGx5IGZvciBmdW5jdGlvbnMgYmVnaW5uaW5nIHdpdGggYHVkcF90dW5uZWxfbmljX2Agd2l0aGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCwgYW5kIHNlZWluZyB3aGF0IHRoYXQgdHVybnMgdXAuIEhvcGVmdWxseSwgc29tZXRoaW5nIHdpbGwganVtcCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnZvaWQgdWRwX3R1bm5lbF9uaWNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGB1ZHBfdHVubmVsX25pYy5jYCBmb3IgUmVkIEZsYWdzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBob3cgVURQIHR1bm5lbGluZyB3b3JrcywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYXJvdW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIG9yIG1heWJlIGp1c3Qgb3Zlcmxvb2tlZCBjb2RlLiBJIG5lZWQgdG8gYmUgKnRob3JvdWdoKiB3aGVuIGluc3BlY3RpbmcgbmV0d29ya2luZyBjb2RlLgoKSSB3YW50IHRvIGRpdmUgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGEgdGFyZ2V0ZWQgY29kZSByZXZpZXcuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGB1ZHBfdHVubmVsX25pY19gIGZ1bmN0aW9ucy4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSB3YW50IHRvIGlkZW50aWZ5IGFueSBgdWRwX3R1bm5lbF9uaWNfYCBmdW5jdGlvbnMgdGhhdCAqZG9uJiMzOTt0KiBleHBsaWNpdGx5IGRlY2xhcmUgYSByZXR1cm4gdHlwZSBvZiBgdm9pZGAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvZGUgc21lbGwuIE5vbi12b2lkIGZ1bmN0aW9ucyB3aXRob3V0IGEgcmV0dXJuIHZhbHVlIHByZXNlbnQgY2FuIGJlIGEgc291cmNlIG9mIHByb2JsZW1zLCB1bmRlZmluZWQgYmVoYXZpb3IsIG9yIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGJ1Z3MgZHVlIHRvIHVuZXhwZWN0ZWQgcmV0dXJuIHZhbHVlcyB0aGF0IGFyZSBub3QgaGFuZGxlZC4gSXQmIzM5O3MgYSBxdWljayB3YXkgdG8gZmxhZyBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gZGF0YSBoYW5kbGluZywgZXJyb3IgY29uZGl0aW9ucywgb3Igc2VjdXJpdHkuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBkZXZpYXRlIGZyb20gZXhwZWN0ZWQgYmVoYXZpb3Igb3IgcHJvdmlkZSBhbiB1bmludGVuZGVkIG9wcG9ydHVuaXR5IGZvciBtYW5pcHVsYXRpb24uIEl0JiMzOTtzIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgdGhlIGJhc2ljcyBhcmUgY292ZXJlZCwgYW5kIG5vdGhpbmcgY3JpdGljYWwgaXMgc2xpcHBpbmcgdGhyb3VnaCB0aGUgY3JhY2tzLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU3MCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTI6ZW51bSB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeV9mbGFncyB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzLVx0VURQX1RVTk5FTF9OSUNfRU5UUllfQUREXHQ9IEJJVCgwKSxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxOTpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMC1cdF9fYmUxNiBwb3J0O1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUwLVx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUxOlx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyaWVzW10gX19jb3VudGVkX2J5KG5fdGFibGVzKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTItfTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU2LSAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NzpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTgtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU5OnN0YXRpYyBjb25zdCBjaGFyICp1ZHBfdHVubmVsX25pY190dW5uZWxfdHlwZV9uYW1lKHVuc2lnbmVkIGludCB0eXBlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03Mz1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NDp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc1LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5PXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgwOnVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3ByZXNlbnQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODEte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODU9c3RhdGljIGJvb2xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY6dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJvemVuKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxPXN0YXRpYyB2b2lkXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkyOnVkcF90dW5uZWxfbmljX2VudHJ5X2ZyZWV6ZV91c2VkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTQ6XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NS1cdFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gVURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTg9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTk6dWRwX3R1bm5lbF9uaWNfZW50cnlfdW5mcmVlemUoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTAwLXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwND1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDU6dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwNi17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMTE9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTEyOnVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMTM6XHRcdFx0ICAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTE0LVx0XHRcdCAgIHVuc2lnbmVkIGludCBmbGFnKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTIwPXN0YXRpYyB2b2lkXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyMTp1ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEyMi1cdFx0XHQgICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTMwPXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMTp1ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTMyLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTMzOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM0LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzctXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzODpcdFx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzktXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDM9c3RhdGljIGJvb2xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ0OnVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE0NS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE0NjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTQ3LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNTItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1MzpcdFx0dGFibGUgPSBcdTAwMjZkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2V0YWJsZXNbaV07XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NC1cdFx0aWYgKCF0ZXN0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1Ny1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgdGFibGUtXHUwMDNlbl9lbnRyaWVzOyBqJiM0MzsmIzQzOylcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTU4Olx0XHRcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU5LVx0XHRcdFx0cmV0dXJuIHRydWU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNjU9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY2Ol9fdWRwX3R1bm5lbF9uaWNfZ2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNjctXHRcdFx0ICB1bnNpZ25lZCBpbnQgaWR4LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTY4LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY5Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTcwLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNzUtXHRpZiAoZW50cnktXHUwMDNldXNlX2NudClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTc2Olx0XHR1ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KGVudHJ5LCB0aSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE3Ny19XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNzk9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTgwOl9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4MS1cdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlkeCwgdTggcHJpdilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE4Nj1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxODc6dWRwX3R1bm5lbF9uaWNfZW50cnlfdXBkYXRlX2RvbmUoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTg4LVx0XHRcdFx0IGludCBlcnIpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMDk9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEwOnVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMTEtXHRcdFx0ICAgICAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjEzLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjE0Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjE1LVx0c3RydWN0IHVkcF90dW5uZWxfaW5mbyB0aTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxOC1cdGVudHJ5ID0gXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIxOTpcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKGVudHJ5KSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjIwLVx0XHRyZXR1cm47XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjIyOlx0dWRwX3R1bm5lbF9uaWNfdGlfZnJvbV9lbnRyeShlbnRyeSwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjMtXHRpZiAoZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI0Olx0XHRlcnIgPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFx1MDAyNnRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI1LVx0ZWxzZVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjY6XHRcdGVyciA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXVuc2V0X3BvcnQoZGV2LCB0YWJsZSwgaWR4LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjctXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZ0aSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyODpcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKGVudHJ5LCBlcnIpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjktXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMzMtXHRcdFx0ICAgIGJlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXBvcnQpLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMzQ6XHRcdFx0ICAgIHVkcF90dW5uZWxfbmljX3R1bm5lbF90eXBlX25hbWUoZW50cnktXHUwMDNldHlwZSksXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIzNS1cdFx0XHQgICAgZXJyKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIzOD1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMzk6dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDAtXHRcdFx0XHQgICBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQxLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQyOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQzLVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDYtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NzpcdFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoZGV2LCB1dG4sIGksIGopO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDgtfVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUwPXN0YXRpYyB2b2lkXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI1MTp1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTItXHRcdFx0XHQgICAgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1My17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI1NDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjYwLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNjE6XHRcdFx0aWYgKHVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3F1ZXVlZChcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1tpXVtqXSkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI2Mi1cdFx0XHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjcxLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI3MjpcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzMtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI3NC1cdFx0XHRlbnRyeSA9IFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNzU6XHRcdFx0aWYgKHVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3F1ZXVlZChlbnRyeSkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI3NjpcdFx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKGVudHJ5LCBlcnIpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzctXHRcdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4MT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODI6X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjgzLXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4Ni1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjg3Olx0aWYgKGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXN5bmNfdGFibGUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI4ODpcdFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoZGV2LCB1dG4pO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODktXHRlbHNlXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI5MDpcdFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5NS1cdCAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTY6XHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KGRldiwgdXRuKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjk3LX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI5OT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMDA6dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwMS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMDQtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwNTpcdHF1ZXVlX2RlbGF5ZWRfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFx1MDAyNnV0bi1cdTAwM2V3b3JrLCAwKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzA2LX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwOD1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMDk6dWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZShjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cdFx0XHRcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzE1PXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxNjp1ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTctXHRcdFx0ICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzE4LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzE5Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzIwLVx0dW5zaWduZWQgaW50IGk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMjg6XHRcdGlmICh1ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKFx1MDAyNmluZm8tXHUwMDNldGFibGVzW2ldLCB0aSkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMyOS1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMzMz1zdGF0aWMgaW50XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNDp1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMzUtXHRcdFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM2LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzM3Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzM4Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM5LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDQtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NTpcdFx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpIFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDYtXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM1NT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNTY6dWRwX3R1bm5lbF9uaWNfZW50cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXHRcdFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTgte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNTk6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNjAtXHRib29sIGRvZGd5ID0gZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX09QX0ZBSUw7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zODktXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM5MDpcdHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHV0biwgZW50cnksIHRvKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzkxLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM5Mz1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozOTQ6dWRwX3R1bm5lbF9uaWNfZW50cnlfdHJ5X2FkaihzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk1LVx0XHRcdCAgICAgdW5zaWduZWQgaW50IHRhYmxlLCB1bnNpZ25lZCBpbnQgaWR4LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk3LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mzk4Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSA9ICBcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1t0YWJsZV1baWR4XTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MDA6XHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgfHxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDAxLVx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgIT0gdGktXHUwMDNlcG9ydCB8fFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MDU6XHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJvemVuKGVudHJ5KSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA2LVx0XHRyZXR1cm4gdHJ1ZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA3LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MDg6XHR1ZHBfdHVubmVsX25pY19lbnRyeV9hZGoodXRuLCB0YWJsZSwgaWR4LCB1c2VfY250X2Fkaik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQwOS1cdHJldHVybiB0cnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDE3PXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQxODp1ZHBfdHVubmVsX25pY190cnlfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQxOS1cdFx0XHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGksIGludCB1c2VfY250X2Fkailcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDIwLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDIxOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjItXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQyNC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDI1Olx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDI2Olx0XHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDI3LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDI5LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB0YWJsZS1cdTAwM2VuX2VudHJpZXM7IGomIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MzA6XHRcdFx0aWYgKHVkcF90dW5uZWxfbmljX2VudHJ5X3RyeV9hZGoodXRuLCBpLCBqLCB0aSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMxLVx0XHRcdFx0XHRcdFx0IHVzZV9jbnRfYWRqKSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQzOD1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Mzk6dWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDAtXHRcdFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDEte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDI6XHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgJiM0MzsxKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDQzLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0NT1zdGF0aWMgYm9vbFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDY6dWRwX3R1bm5lbF9uaWNfZGVsX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDctXHRcdFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDgte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDk6XHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgLTEpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTAtfVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDUyPXN0YXRpYyBib29sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ1Mzp1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTQtXHRcdCAgICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU1LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDU2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTctXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1OS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYwOlx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYxOlx0XHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDYyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY0LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB0YWJsZS1cdTAwM2VuX2VudHJpZXM7IGomIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2NTpcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2Ny1cdFx0XHRlbnRyeSA9IFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Njg6XHRcdFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY5LVx0XHRcdFx0Y29udGludWU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NzMtXHRcdFx0ZW50cnktXHUwMDNldXNlX2NudCA9IDE7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ3NDpcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZSh1dG4sIGVudHJ5LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NzUtXHRcdFx0XHRcdFx0ICAgVURQX1RVTk5FTF9OSUNfRU5UUllfQUREKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ4OT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTA6X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkxLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDkyOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkzLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MDYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUwNzpcdGlmICghdWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MDgtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUxMy1cdCAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTQ6XHRpZiAodWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MTUtXHRcdHJldHVybjtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE2LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTc6XHRpZiAoIXVkcF90dW5uZWxfbmljX2FkZF9leGlzdGluZyhkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTg6XHRcdHVkcF90dW5uZWxfbmljX2FkZF9uZXcoZGV2LCB1dG4sIHRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MjA6XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyMS19XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01MjM9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTI0Ol9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyNS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzEtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUzMjpcdGlmICghdWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShkZXYsIHV0biwgdGkpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzMtXHRcdHJldHVybjtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MzU6XHR1ZHBfdHVubmVsX25pY19kZWxfZXhpc3RpbmcoZGV2LCB1dG4sIHRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM2LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1Mzc6XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUzOC19XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUzOS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTQwOnN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0MS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU0MjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0My1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTU0LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU1NTpcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NTYtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NjUtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU2NjpcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZSh1dG4sIGVudHJ5LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NjctXHRcdFx0XHRcdFx0ICAgVURQX1RVTk5FTF9OSUNfRU5UUllfQUREKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU2OS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTcwOlx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU3NT1zdGF0aWMgc2l6ZV90XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU3NjpfX3VkcF90dW5uZWxfbmljX2R1bXBfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3Ny17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU3ODpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3OS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg4LVx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbdGFibGVdLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg5Olx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX3ByZXNlbnQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbdGFibGVdW2pdKSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTkwLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjAwPXN0YXRpYyBpbnRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjAxOl9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMi1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjAzLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjA0Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjA1LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MTMtXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1t0YWJsZV0ubl9lbnRyaWVzOyBqJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MTQ6XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcHJlc2VudChcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1t0YWJsZV1bal0pKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MTUtXHRcdFx0Y29udGludWU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MzYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYzNzpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjM4LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0NS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjQ2OnN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfbG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NDcte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NTU6c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY191bmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU2LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2My1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NjU6XHQuZ2V0X3BvcnRcdD0gX191ZHBfdHVubmVsX25pY19nZXRfcG9ydCxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY2Olx0LnNldF9wb3J0X3ByaXZcdD0gX191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Njc6XHQuYWRkX3BvcnRcdD0gX191ZHBfdHVubmVsX25pY19hZGRfcG9ydCxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY4Olx0LmRlbF9wb3J0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY2OTpcdC5yZXNldF9udGZcdD0gX191ZHBfdHVubmVsX25pY19yZXNldF9udGYsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3MDpcdC5kdW1wX3NpemVcdD0gX191ZHBfdHVubmVsX25pY19kdW1wX3NpemUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3MTpcdC5kdW1wX3dyaXRlXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjcyOlx0LmFzc2VydF9sb2NrZWRcdD0gX191ZHBfdHVubmVsX25pY19hc3NlcnRfbG9ja2VkLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzM6XHQubG9ja1x0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfbG9jayxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Njc0Olx0LnVubG9ja1x0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfdW5sb2NrLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzUtfTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY3Nz1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzg6dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY3OS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4MDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4MS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg3LVx0XHRcdGlmIChhZGpfY250KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2ODg6XHRcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9hZGoodXRuLCBpLCBqLCBhZGpfY250KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg5LVx0XHR9XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY5MC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjkxOlx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY5Mi1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTcwMD1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MDE6dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MDIte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MDM6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MDQ6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUgKm5vZGU7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwNS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzExLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTI6XHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTMtXHR1dG4tXHUwMDNlbWlzc2VkID0gMDtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcyNC1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqJiM0MzsmIzQzOylcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzI1Olx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzI2LX1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzI3LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mjg6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcyOS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzMtXHQvKiBXZSBjYW5ub3QgYmxvY2sgb24gUlROTCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgZGVhZGxvY2sgd2l0aFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MzQ6XHQgKiB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKCkgY2FsbGluZyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzUtXHQgKiB3aGlsZSBob2xkaW5nIFJUTkwuIFJlcXVldWUgd2l0aCAxIGppZmZ5IGRlbGF5IGlmIFJUTkwgaXMgY29udGVuZGVkLlxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM3LVx0aWYgKCFydG5sX3RyeWxvY2soKSkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzg6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFx1MDAyNnV0bi1cdTAwM2V3b3JrLCAxKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM5LVx0XHRyZXR1cm47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NDEtXHRtdXRleF9sb2NrKFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzQyOlx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyh1dG4tXHUwMDNlZGV2LCB1dG4pO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NDMtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc0NC1cdGlmICh1dG4tXHUwMDNlbmVlZF9yZXBsYXkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc0NTpcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc0Ni1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc1MT1zdGF0aWMgc3RydWN0IHVkcF90dW5uZWxfbmljICpcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzUyOnVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTMtXHRcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYxLVx0dXRuLVx1MDAzZW5fdGFibGVzID0gbl90YWJsZXM7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc2MjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYzLVx0bXV0ZXhfaW5pdChcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03ODAtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc4MTpzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03ODIte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzg5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTA6c3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTEte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTI6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTM6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUgKm5vZGUgPSBOVUxMO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTQtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzMS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODMyOlx0aWYgKGluZm8tXHUwMDNlc2hhcmVkIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgzMzpcdFx0dXRuID0gaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM0LVx0fSBlbHNlIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODM1Olx0XHR1dG4gPSB1ZHBfdHVubmVsX25pY19hbGxvYyhpbmZvLCBuX3RhYmxlcyk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzNi1cdFx0aWYgKCF1dG4pIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Mi1cdGlmIChpbmZvLVx1MDAzZXNoYXJlZCkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NDM6XHRcdGlmICghaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDQtXHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNlZGV2aWNlcyk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0NTpcdFx0XHRpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDYtXHRcdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1NS1cdGlmICghKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0lORk9fT1BFTl9PTkxZKSkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NTY6XHRcdHVkcF90dW5uZWxfbmljX2xvY2soZGV2KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODU3LVx0XHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg1ODpcdFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1OS1cdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg2ND1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NjU6dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODY2LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY3Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODY4LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njk6XHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3MC1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3NC1cdGlmIChpbmZvLVx1MDAzZXNoYXJlZCkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NzU6XHRcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSwgKmZpcnN0O1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NzYtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODAtXHRcdGlmIChsaXN0X2VudHJ5X2lzX2hlYWQobm9kZSwgXHUwMDI2aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNlZGV2aWNlcywgbGlzdCkpIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODgxOlx0XHRcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODItXHRcdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODkyLVx0XHRcdHV0bi1cdTAwM2VkZXYgPSBmaXJzdC1cdTAwM2VkZXY7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg5MzpcdFx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODk0LVx0XHRcdGdvdG8gcmVsZWFzZV9kZXY7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OTYtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg5NzpcdFx0aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IE5VTEw7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5OC1cdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkwMi1cdCAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MDM6XHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkwNDpcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MDUtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MTEtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkxMjpcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTEzLXJlbGVhc2VfZGV2OlxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTE4PXN0YXRpYyBpbnRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTE5OnVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUyMwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBVRFAgVHVubmVsIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgdWRwX3R1bm5lbF9uaWMuY2AgaGVyZS4gVGhlIHF1aWNrIHNjYW4gdGVsbHMgbWUgdGhpcyBpc24mIzM5O3QgbWVhbnQgZm9yIGRpcmVjdCBtb2R1bGUgYWNjZXNzOyBpdCYjMzk7cyBtb3JlIG9mIGFuIGludGVybmFsIHBpZWNlLCBwcm9iYWJseSBsaW5rZWQgaW50byB0aGUgY29yZSBVRFAgdHVubmVsaW5nIGxvZ2ljLCBsaWtlbHkgd2l0aGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuY2AuIE9yIG1heWJlIGl0JiMzOTtzIGhhbmRsaW5nIGEgbmV0ZGV2aWNlIG5vdGlmaWVyLiBJJiMzOTt2ZSBnb3QgdG8gZmluZCBvdXQgd2hpY2guCgpNeSBuZXh0IHN0ZXAgaXMgdG8gaG9uZSBpbiBvbiBlaXRoZXIgdGhlIGB1ZHBfdHVubmVsX25pY19pbml0YCBmdW5jdGlvbiBvciB0aGUgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgYWN0aW9uIGlzLCB3aGVyZSBJJiMzOTtsbCBzZWUgaG93IHRoaXMgdGhpbmcgZ2V0cyBpbnRlZ3JhdGVkIG9yIGhvdyBpdCYjMzk7cyBvYnNlcnZpbmcgbmV0d29yayBldmVudHMuIE9uY2UgSSBrbm93ICp0aGF0KiwgSSYjMzk7bGwgaGF2ZSBhIG11Y2ggYmV0dGVyIGhhbmRsZSBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MTg9c3RhdGljIGludFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTk6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjAtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk2OT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHVkcF90dW5uZWxfbmljX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk3MDpcdC5ub3RpZmllcl9jYWxsID0gdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NzEtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBgdWRwX3R1bm5lbF9uaWMuY2AgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgd29ya3MuIEZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoZSByZWdpc3RyYXRpb24gb2YgYSBuZXRkZXZpY2Ugbm90aWZpZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleHBvc2VkIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCBpcyB0aGUga2V5IOKAkyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIEl0IGNhbGxzIHRoaW5ncyBsaWtlIGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYW5kIGB1ZHBfdHVubmVsX25pY19mbHVzaGAuIEFscmlnaHQsIHNvIHRoZSBlbnRyeSBwb2ludHMgYXJlIHRyaWdnZXJlZCBieSBuZXRkZXZpY2UgZXZlbnRzOiBgTkVUREVWX1JFR0lTVEVSYCwgYE5FVERFVl9VTlJFR0lTVEVSYCwgYE5FVERFVl9VUGAsIGBORVRERVZfRE9XTmDigKYgdGhhdCBtYWtlcyBzZW5zZS4KClRoZW4gSSBzZWUgY2FsbHMgdG8gYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBhbmQgYHVkcF90dW5uZWxfbmljX2RlbF9wb3J0YC4gV2hlcmUgYXJlIHRoZXNlIHRyaWdnZXJlZCBmcm9tPyBPaCwgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBjYWxsZWQgZnJvbSBgdWRwX3R1bm5lbF9nZXRfcnhfaW5mb2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuCgpXYWl0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSXMgYHVkcF90dW5uZWxfbmljX29wc2AgdXNlZCBpbiBgdWRwX3R1bm5lbF9jb3JlLmNgPyBObywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzdGF0aWMgd2l0aGluIGB1ZHBfdHVubmVsX25pYy5jYC4gT2theSwgbm93IEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJlIGBfX3VkcF90dW5uZWxfbmljX29wc2AgaXMgdXNlZCBpbnN0ZWFkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHBvaW50IG9mIGludGVyZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3VkcF90dW5uZWxfbmljX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02NTU9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY191bmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2My1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NjUtXHQuZ2V0X3BvcnRcdD0gX191ZHBfdHVubmVsX25pY19nZXRfcG9ydCxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk3Mz1zdGF0aWMgaW50IF9faW5pdCB1ZHBfdHVubmVsX25pY19pbml0X21vZHVsZSh2b2lkKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTgxLVx0cnRubF9sb2NrKCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk4MjpcdHVkcF90dW5uZWxfbmljX29wcyA9IFx1MDAyNl9fdWRwX3R1bm5lbF9uaWNfb3BzO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05ODMtXHRydG5sX3VubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTgzOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYHVkcF90dW5uZWxfbmljX29wc2AgUG9pbnRlcioqCgpPa2F5LCBzbyBJIHNlZSBgdWRwX3R1bm5lbF9uaWNfb3BzYC4gVGhhdCYjMzk7cyBhIGdsb2JhbCBwb2ludGVyLCByaWdodD8gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZWZpbmVkIGluIGVpdGhlciBgbmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNgIG9yIHBlcmhhcHMgd2l0aGluIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgLiBHaXZlbiBpdHMgbmFtZSwgaXQgcHJvYmFibHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIE5ldHdvcmsgSW50ZXJmYWNlIENvbnRyb2xsZXIgKE5JQykgb3BlcmF0aW9ucyBmb3IgVURQIHR1bm5lbHMuIEkmIzM5O2QgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBsb2NhdGlvbiB0byBrbm93IGZvciBjZXJ0YWluLCBidXQgdGhvc2Ugc2VlbSBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGl0cyBkZWNsYXJhdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gdHJhY2UgaXRzIHVzYWdlIGFuZCBmaWd1cmUgb3V0IGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgdHVubmVsIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwOTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBVRFAgVHVubmVsIEhlYWRlcioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBVRFAgdHVubmVsaW5nIGlzIGltcGxlbWVudGVkLCBwYXJ0aWN1bGFybHkgYXQgdGhlIGtlcm5lbCBsZXZlbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZWVwIGRpdmUgaW50byB0aGUgYGluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaGAgaGVhZGVyIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMgdGhhdCBkZWZpbmUgdGhlIHR1bm5lbCYjMzk7cyBiZWhhdmlvdXIuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBidWlsZGluZyBibG9ja3M6IEhvdyBkb2VzIGl0IGhhbmRsZSBlbmNhcHN1bGF0aW9uLCB3aGF0IGFyZSB0aGUgcmVsZXZhbnQgY29udHJvbCBmbGFncywgd2hhdCBraW5kIG9mIHNvY2tldCBvcHRpb25zIG1pZ2h0IGJlIGV4cG9zZWQsIGFyZSB0aGVyZSBhbnkgY3VzdG9tIHByb3RvY29sIGhlYWRlcnMgSSBuZWVkIHRvIGtub3cgYWJvdXQ/IEFyZSB0aGVyZSBhbnkgaW5kaWNhdGlvbnMgaW4gaGVyZSBvZiBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgc3RyYXRlZ2llcyBJIG5lZWQgdG8gY29uc2lkZXIgbGF0ZXIgb24/IEkmIzM5O2xsIGJlIG1ldGljdWxvdXNseSBleGFtaW5pbmcgdGhlIHN0cnVjdCBkZWZpbml0aW9ucywgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBhbnkgaW5saW5lIGNvbW1lbnRzLiBUaGlzIGhlYWRlciBmaWxlIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgZm9yIGRpc3NlY3RpbmcgdGhlIGFjdHVhbCB0dW5uZWxpbmcgbG9naWMuIEhvcGVmdWxseSBpdCYjMzk7cyB3ZWxsLWNvbW1lbnRlZC4gSSYjMzk7bGwgYmUgbWVudGFsbHkgbWFwcGluZyB0aGUgZGF0YSBmbG93IHRvIHByZXBhcmUgZm9yIG1vcmUgaW50ZW5zZSBkZWJ1Z2dpbmcgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3VkcF90dW5uZWwuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9Mjk3PXN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHtcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzI4LSAqL1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyOTpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIHtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMzAtXHR2b2lkICgqZ2V0X3BvcnQpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzQ2LSNpZmRlZiBDT05GSUdfSU5FVFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM0NzpleHRlcm4gY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyAqdWRwX3R1bm5lbF9uaWNfb3BzO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM0OC0jZWxzZVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM0OTojZGVmaW5lIHVkcF90dW5uZWxfbmljX29wc1x0KChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzICopTlVMTClcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNTAtI2VuZGlmXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM1Mz11ZHBfdHVubmVsX25pY19nZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM2My1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNjQ6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM2NTpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWdldF9wb3J0KGRldiwgdGFibGUsIGlkeCwgdGkpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM2Ni19XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM2OT11ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzcxLXtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNzI6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKSB7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzczOlx0XHR1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNlYXNzZXJ0X2xvY2tlZChkZXYpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM3NDpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZXNldF9wb3J0X3ByaXYoZGV2LCB0YWJsZSwgaWR4LCBwcml2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNzUtXHR9XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM3OD1zdGF0aWMgaW5saW5lIHZvaWQgdWRwX3R1bm5lbF9uaWNfYXNzZXJ0X2xvY2tlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM3OS17XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzgwOlx0aWYgKHVkcF90dW5uZWxfbmljX29wcylcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozODE6XHRcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2Vhc3NlcnRfbG9ja2VkKGRldik7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzgyLX1cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9Mzg0PXN0YXRpYyBpbmxpbmUgdm9pZCB1ZHBfdHVubmVsX25pY19sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzg1LXtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozODY6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM4NzpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zODgtfVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTA9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5MS17XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzkyOlx0aWYgKHVkcF90dW5uZWxfbmljX29wcylcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozOTM6XHRcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2V1bmxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zOTQtfVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTc9dWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQwMC1cdFx0cmV0dXJuO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQwMTpcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDAyOlx0XHR1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNlYWRkX3BvcnQoZGV2LCB0aSk7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDAzLX1cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9NDA2PXVkcF90dW5uZWxfbmljX2RlbF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MDktXHRcdHJldHVybjtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0MTA6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQxMTpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWRlbF9wb3J0KGRldiwgdGkpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQxMi19XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQyNj1zdGF0aWMgaW5saW5lIHZvaWQgdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDI3LXtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0Mjg6XHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQyOTpcdFx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZXJlc2V0X250ZihkZXYpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQzMC19XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQzMz11ZHBfdHVubmVsX25pY19kdW1wX3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzYtXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDM3Olx0aWYgKCF1ZHBfdHVubmVsX25pY19vcHMpXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDM4LVx0XHRyZXR1cm4gMDtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzktXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDQwOlx0dWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NDE6XHRyZXQgPSB1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNlZHVtcF9zaXplKGRldiwgdGFibGUpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ0MjpcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2V1bmxvY2soZGV2KTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00NDMtXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQ0OD11ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDUyLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1MzpcdGlmICghdWRwX3R1bm5lbF9uaWNfb3BzKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQ1NC1cdFx0cmV0dXJuIDA7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU1LVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1NjpcdHVkcF90dW5uZWxfbmljX29wcy1cdTAwM2Vsb2NrKGRldik7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDU3Olx0cmV0ID0gdWRwX3R1bm5lbF9uaWNfb3BzLVx1MDAzZWR1bXBfd3JpdGUoZGV2LCB0YWJsZSwgc2tiKTtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NTg6XHR1ZHBfdHVubmVsX25pY19vcHMtXHUwMDNldW5sb2NrKGRldik7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDExMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIGB1ZHBfdHVubmVsX25pY19vcHNgIHN0cnVjdHVyZSoqCgpSaWdodCwgc28gSSBzZWUgYHVkcF90dW5uZWxfbmljX29wc2AgaXMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSB0aGUgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RydWN0dXJlLCBwcm9iYWJseSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBwb2ludGVycyB0aGF0IGRlZmluZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBVRFAgdHVubmVsIG5ldHdvcmsgaW50ZXJmYWNlcy4gTm93LCBhIGdvb2QgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIHdvdWxkIGJlIHRvIHRyYWNlIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBmdW5jdGlvbiwgYSBrZXkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGlzIGludGVyZmFjZSwgaXMgYWN0dWFsbHkgKmNhbGxlZCogZnJvbS4gVGhhdCYjMzk7bGwgdGVsbCBtZSBhIGxvdCBhYm91dCBob3cgdGhlc2UgVURQIHR1bm5lbCBpbnRlcmZhY2VzIGFyZSBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhlIHN5c3RlbSwgZ2l2aW5nIG1lIGNvbnRleHQgb24gdGhlIHN1cnJvdW5kaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTY9c3RhdGljIGlubGluZSB2b2lkXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzk3OnVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5OC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEwOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEwOTpcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjc9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQwLVx0XHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDE6XHRcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQyLVx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ4OT1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTA6X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkxLXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyBfX3VkcF90dW5uZWxfbmljX29wcyA9IHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2Ni1cdC5zZXRfcG9ydF9wcml2XHQ9IF9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY3Olx0LmFkZF9wb3J0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2OC1cdC5kZWxfcG9ydFx0PSBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVRFAgVHVubmVsIFJYIFBvcnQgRnVuY3Rpb24gQ2FsbHMqKgoKUmlnaHQsIHNvIGB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydGAgYW5kIGB1ZHBfdHVubmVsX3B1c2hfcnhfcG9ydGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIGFuZCB0aGV5JiMzOTtyZSBib3RoIGdldHRpbmcgY2FsbGVkLiBUaGV5JiMzOTtyZSAqZXhwb3J0ZWQqLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayB0aGV5JiMzOTtyZSBwYXJ0IG9mIHNvbWUgcHVibGljIEFQSSBvciBpbnRlcmZhY2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGVyZSBgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgaW52b2NhdGlvbiwgc28gSSBjYW4gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yLiBUaW1lIHRvIHRyYWNlIHRob3NlIGNhbGxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9nZW5ldmUuYz0xMDExPXN0YXRpYyBzdHJ1Y3QgZ2VuZXZlX3NvY2sgKmdlbmV2ZV9zb2NrZXRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xMDM1LVx0LyogSW5pdGlhbGl6ZSB0aGUgZ2VuZXZlIHVkcCBvZmZsb2FkcyBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2dlbmV2ZS5jOjEwMzY6XHR1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzaywgVURQX1RVTk5FTF9UWVBFX0dFTkVWRSk7XG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xMDM3LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zNTc3PXN0YXRpYyBzdHJ1Y3QgdnhsYW5fc29jayAqdnhsYW5fc29ja2V0X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIGJvb2wgaXB2Nixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzYwNS1cdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZ2cy1cdTAwM2VobGlzdCwgdnNfaGVhZChuZXQsIHBvcnQpKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjA2Olx0dWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc2ssXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzYwNy1cdFx0XHRcdCAgICAgICh2cy1cdTAwM2VmbGFncyBcdTAwMjYgVlhMQU5fRl9HUEUpID9cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MTMyPXZvaWQgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTEzMy1cdFx0XHQgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUpO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjEzNDp2b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSk7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMTM1LXZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfZGVsX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjQ9RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEyNi0vKiBOb3RpZnkgbmV0ZGV2cyB0aGF0IFVEUCBwb3J0IHN0YXJ0ZWQgbGlzdGVuaW5nICovXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMjc6dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjgte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0NC19XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDU6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc5OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFVEUCBUdW5uZWwgT2ZmbG9hZCBmb3IgVlhMQU4gYW5kIEdFTkVWRSBpbiBRRU1VKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBgVlhMQU5gIGFuZCBgR0VORVZFYCBoYW5kbGUgVURQIHR1bm5lbHMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkgdWx0aW1hdGVseSBjYWxsIGB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydGAuIFJpZ2h0IGF3YXksIHRoaXMgdGVsbHMgbWUgdGhhdCB3ZSBuZWVkIHRvIGVuc3VyZSBib3RoIGBWWExBTmAgYW5kIGBHRU5FVkVgIGFyZSBhY3RpdmF0ZWQgd2l0aGluIGBFbmFibGVDb25maWdzYC4gQnV0IGl0JiMzOTtzIG5vdCBlbm91Z2ggdG8gc2ltcGx5IGVuYWJsZSB0aGUgcHJvdG9jb2xzOiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgb2ZmbG9hZGluZy4KCk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHVkcF90dW5uZWxfbmljLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIGZvciBvZmZsb2FkaW5nIFVEUCB0dW5uZWxzIHRvIHRoZSBOSUMsIGFuZCBub3cgSSYjMzk7bSBjdXJpb3VzIGlmIHdlIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgYW55IGVtdWxhdGVkIE5JQyBzdXBwb3J0cyB0aGlzIGtpbmQgb2YgVURQIHR1bm5lbCBvZmZsb2FkLiBJIGtub3cgdGhhdCBgdWRwX3R1bm5lbF9uaWNfaW5mb2AgaXMgcmVnaXN0ZXJlZCBieSB0aGUgTklDIGRyaXZlciBpdHNlbGYsIHNvIHRoYXQmIzM5O3MgdGhlIGtleS4gSSBoYXZlIHRvIHNoaWZ0IG15IGZvY3VzIGFuZCBzdGFydCBsb29raW5nIGF0IHdoaWNoIHNwZWNpZmljIE5JQyBkcml2ZXJzIGFjdHVhbGx5IHJlZ2lzdGVyIHRoaXMgaW5mb3JtYXRpb24uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgYW5zd2VyIHdpbGwgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY19pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9ODk1PXN0YXRpYyBpbnQgeGdiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTA2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB4Z2JlX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXHQuc2V0X3BvcnRcdD0geGdiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTE1OmNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8odm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYz0xNTI9aW50IHhnYmVfY29uZmlnX25ldGRldihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM6MjYzOlx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IHhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6MTI5Nzpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTEyOTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjExPXN0YXRpYyBpbnQgYm54MnhfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAyMjI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueDJ4X3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjIzLVx0LnN5bmNfdGFibGVcdD0gYm54MnhfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwNy1cdFx0aWYgKElTX1BGKGJwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzIwODpcdFx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueDJ4X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE1OTYyPXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTU5Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueHRfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cdC5zZXRfcG9ydFx0PSBibnh0X3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDUzOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHNfcDc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDU1Olx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Ny1cdC5zZXRfcG9ydFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMzMjI9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzU4MzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM1ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODQtXHQuc2V0X3BvcnRcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xOTE5PXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5My1cdFx0ICAgIChsaW8tXHUwMDNlZW5jX2Rldl9jYXBhYmlsaXR5IFx1MDAyNiB+TkVUSUZfRl9MUk8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgxOS1cdC5zZXRfcG9ydFx0PSBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDAtXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcmF3Zl9jbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzo2ODAxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZjeGdiX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jLTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMzAtXHQuc2V0X3BvcnRcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjY3NT1zdGF0aWMgaW50IGVuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTQ4LVx0XHQgICAgZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9NVUxUSV9XUSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5Olx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZW5pY191ZHBfdHVubmVsc192NDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cdFx0XHRpZiAoZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9PVVRFUl9JUFY2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz00MDE1PXN0YXRpYyBpbnQgYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYzo0MDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBiZV91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cdC5zZXRfcG9ydFx0PSBiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTUxNzk9c3RhdGljIHZvaWQgYmVfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXHRpZiAoIWxhbmNlcl9jaGlwKGFkYXB0ZXIpIFx1MDAyNlx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXHUwMDI2XHUwMDI2ICFiZV9pc19tYyhhZGFwdGVyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNTIwOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz00MDI9c3RhdGljIGludCBmbTEwa191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjQxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZm0xMGtfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy00MTgtXHQuc3luY190YWJsZVx0PSBmbTEwa191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmZtMTBrX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaD00Njg9c3RydWN0IGk0MGVfcGYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWQgdWRwX3R1bm5lbF9zaGFyZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNjM3PXN0YXRpYyBpbnQgaTQwZV9jb25maWdfbmV0ZGV2KHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjgxOlx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwZi1cdTAwM2V1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9MzQ0Mz1zdGF0aWMgdm9pZCBpY2Vfc2V0X29wcyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM0NTQtXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmljZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6MzQ1NTpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cGYtXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU2LVx0bmV0ZGV2LVx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZpY2VfeGRwX21kX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6Mzk3MjpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFx1MDAyNnBmLVx1MDAzZWh3LnVkcF90dW5uZWxfbmljO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGljZV9wZl90b19kZXYocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaC0xMDExLVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oOjEwMTI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTU0NDg9c3RhdGljIGludCBpeGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0Njc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTAgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cdC5zeW5jX3RhYmxlXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVx0LnN5bmNfdGFibGVcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMTU0OD1zdGF0aWMgaW50IGl4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cdGNhc2UgaXhnYmVfbWFjX2U2MTA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTE3MDA6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwMS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDItXHRjYXNlIGl4Z2JlX21hY194NTUwZW1fYTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwNC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1OC1cdC5zeW5jX3RhYmxlXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM9MzE2MT1pbnQgbWx4NF9lbl9pbml0X25ldGRldihzdHJ1Y3QgbWx4NF9lbl9kZXYgKm1kZXYsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MzM0NzpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0zMzQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU3Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01NDU3PXZvaWQgbWx4NWVfdnhsYW5fc2V0X25ldGRldl9pbmZvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTQ3MDpcdHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwcml2LVx1MDAzZW5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NDcxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjM3Nj1zdGF0aWMgaW50IG5mcF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjIzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5mcF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk2LVx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjY2Nj1zdGF0aWMgdm9pZCBuZnBfbmV0X25ldGRldl9pbml0KHN0cnVjdCBuZnBfbmV0ICpubilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcxOC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjI3MTk6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bmZwX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXHRcdG5uLVx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTk1Nz1zdGF0aWMgaW50IHFlZGVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6OTg4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxZWRlX3VkcF90dW5uZWxzX2JvdGggPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cdC5zeW5jX3RhYmxlXHQ9IHFlZGVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9MTAwNj12b2lkIHFlZGVfc2V0X3VkcF90dW5uZWxzKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXHQgICAgZWRldi1cdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcdFx0ZWRldi1cdTAwM2VuZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2JvdGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXHRlbHNlIGlmIChlZGV2LVx1MDAzZWRldl9pbmZvLmNvbW1vbi52eGxhbl9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc192eGxhbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cdGVsc2UgaWYgKGVkZXYtXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc19nZW5ldmU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz00NzE9c3RhdGljIGludCBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjQ4NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWxjbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cdC5zeW5jX3RhYmxlXHQ9IHFsY25pY191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTIyNTQ9cWxjbmljX3NldHVwX25ldGRldihzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6MjMwNDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxbGNuaWNfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NTI1PXN0YXRpYyBpbnQgZWZ4X2VmMTBfcHJvYmUoc3RydWN0IGVmeF9uaWMgKmVmeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cdCAgICAoMSBcdTAwM2NcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo2ODE6XHRcdGVmeC1cdTAwM2VuZXRfZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtMzk4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODYtXHQuc2V0X3BvcnRcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02MTk9c3RhdGljIGludCB0eGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjY0MjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdHhnYmVfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXHQuc3luY190YWJsZVx0PSB0eGdiZV91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NzQ4Olx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZ0eGdiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTc0OS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz02Nj1uc2ltX3VkcF90dW5uZWxfc3luY190YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzo4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbnNpbV91ZHBfdHVubmVsX2luZm8gPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy04Ni1cdC5zZXRfcG9ydFx0PSBuc2ltX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTI4LVx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI5Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBpbmZvO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTMtXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXHUwMDNldWRwX3BvcnRzLmRkaXIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk0Olx0a2ZyZWUoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTk2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyMDIKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiA0MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFVEUCBUdW5uZWwgVGVzdGluZyBpbiBhIEtlcm5lbCBDb250ZXh0KioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYGRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jYCByZWdpc3RlcnMgYHVkcF90dW5uZWxfbmljX2luZm9gLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoYXQgd2UgY2FuIGxldmVyYWdlIGBuZXRkZXZzaW1gIHRvIHRlc3QgdGhpcyBmZWF0dXJlLiBCcmlsbGlhbnQhIFVzaW5nIGBuZXRkZXZzaW1gLCB3aGljaCBpcyBhIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZSwgbWFrZXMgb2ZmbG9hZCB0ZXN0aW5nIGluIHRoZSBrZXJuZWwgYSBicmVlemUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIEkgY2FuIGNvbmZpcm0gdGhpcyBjb2RlIHBhdGggaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGF0IGVuYWJsZXMgYG5ldGRldnNpbWAuIEFoLCBpdCYjMzk7cyBgQ09ORklHX05FVERFVlNJTWAuIFNvLCBJJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgdG8gYWRkIGBORVRERVZTSU1gIHRvIGBFbmFibGVDb25maWdzYCB0byBtYWtlIHN1cmUgYG5ldGRldnNpbWAgaXMgZW5hYmxlZCBpbiBteSBidWlsZC4gQW5kLCBJJiMzOTtsbCBuZWVkIGBWWExBTmAgYW5kIGBHRU5FVkVgIGFzIHdlbGwgdG8gdHJpZ2dlciB0aGUgVURQIHR1bm5lbCBjcmVhdGlvbi4KCkkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgdG8gbG9vayBhdCB0aGUgaW1wb3J0YW50IHN5bWJvbHMgYWdhaW4sIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBieSB0aGUgcGF0Y2guIEkgc2VlIHRoYXQgdGhlIHBhdGNoIHRvdWNoZXM6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX2FsbG9jYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4KCldhaXQgYSBtaW51dGUsIGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhpbmdzIGEgbGl0dGxlLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2FsbG9jYCBpcyBzdGF0aWMuIEFuZCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIHN0YXRpYy4KCkhvbGQgb24sIEkgbmVlZCB0byB0aGluayB0aGlzIHRocm91Z2guIElmIHRoZXkmIzM5O3JlIHN0YXRpYywgdGhleSBtaWdodCBiZSBpbmxpbmVkIG9yIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIGJ1dCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHNvIGl0IGNhbiYjMzk7dCBiZSBpbmxpbmVkLiBBbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIGNhbGxlZCBmcm9tIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLCB3aGljaCBpcyBhIG5vdGlmaWVyIGNhbGxiYWNrLiBTbywgaXQgaGFzIHRvIGJlIHJlYWNoYWJsZS4gVGltZSB0byBjaGVjayB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEFjdHVhbGx5LCBJJiMzOTt2ZSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBFWFBPUlRfU1lNQk9MYCwgYW5kIGZvdW5kIG5vdGhpbmcuIEFyZSB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYXQgYWxsPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB1ZHBfdHVubmVsX25pY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTEtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyOmVudW0gdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnlfZmxhZ3Mge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMy1cdFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERFx0PSBCSVQoMCksXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTk6c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjAtXHRfX2JlMTYgcG9ydDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU0MTQKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBTY29wZSBDcmVlcCBpbiBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnVuY3Rpb24gdmlzaWJpbGl0eS4gSXQmIzM5O3MgdGltZSB0byBleGFtaW5lIHRoZSBjb2RlYmFzZSBhbmQgcGlucG9pbnQgZnVuY3Rpb25zIHRoYXQgKmFyZW4mIzM5O3QqIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHNjb3BlIGNyZWVwIOKAkyBmdW5jdGlvbnMgdW5pbnRlbnRpb25hbGx5IGV4cG9zZWQgdG8gcGFydHMgb2YgdGhlIHByb2dyYW0gdGhhdCBzaG91bGRuJiMzOTt0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlbS4gV2Ugd2FudCB0byB0aWdodGVuIHVwIGVuY2Fwc3VsYXRpb24gd2hlcmUgcG9zc2libGUuIEEgcXVpY2sgYGdyZXBgIGZvciBmdW5jdGlvbnMgbm90IGRlY2xhcmVkIGFzIGBzdGF0aWNgIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgdHJ1ZSBpbnRlbmRlZCBhY2Nlc3NpYmlsaXR5IG9mIHRoZXNlIGZ1bmN0aW9ucyBhbmQsIGlmIG5lY2Vzc2FyeSwgYWRqdXN0IHRoZSBkZWNsYXJhdGlvbnMgdG8gYmUgbW9yZSByZXN0cmljdGl2ZS4gVGhpcyBzeXN0ZW1hdGljIHNjYW4gbGV0cyBtZSBlbnN1cmUgcHJvcGVyIHByb2dyYW0gc3RydWN0dXJlIGFuZCBkZXNpZ24uIEkgY291bGQgYWxzbyB1c2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZXZpZXcgdGhlIGxvZ2ljIG9mIHRoZSBjb2RlIGJsb2NrcyB0aGVzZSBmdW5jdGlvbnMgcmVzaWRlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2ODkKCQkJCQkJCW91dHB1dDogNTcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlYnVnZ2luZyBNeSBQYXR0ZXJuLU1hdGNoaW5nIEFwcHJvYWNoKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gdGhpcyByZWdleCBJJiMzOTt2ZSBiZWVuIGNyYWZ0aW5nIGZvciB0aGlzIHBhcnRpY3VsYXIgcGFyc2luZyB0YXNrIGlzIGxvb2tpbmcgYSBsaXR0bGUgZnJhZ2lsZS4gSSYjMzk7bSBzdGFydGluZyB0byBvdmVydGhpbmsgdGhlIGVkZ2UgY2FzZXMuIEl0JiMzOTtzIGJlY29taW5nIG1vcmUgY29tcGxleCB0aGFuIGl0IG5lZWRzIHRvIGJlLCBhbmQgSSBjYW4gZmVlbCBhIHBvdGVudGlhbCBidWcgbHVya2luZyBpbiB0aGVyZS4KCkluc3RlYWQgb2Ygd3Jlc3RsaW5nIHdpdGggdGhpcyBpbnRyaWNhdGUgcGF0dGVybiwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgYSBzaW1wbGVyLCBtb3JlIHJvYnVzdCBhcHByb2FjaCwgYXQgbGVhc3QgZm9yIGEgZmlyc3QgcGFzcy4gSSBjYW4gcXVpY2tseSBncmVwIHRoZSByZWxldmFudCBmaWxlcyBhbmQgc2VhcmNoIGZvciB0aGUgYmVnaW5uaW5nIG9mIGxpbmVzIGNvbnRhaW5pbmcgb25seSB0aGUgbW9zdCBjb21tb24gZGF0YSB0eXBlcyB3aXRoIHNpbXBsZSBzdHJpbmdzLCBzdWNoIGFzIGBedm9pZCBgLCBgXmludCBgLCBvciBgXnN0cnVjdCBgLgoKVGhpcyBzaW1wbGlmaWVzIHRoaW5ncyBjb25zaWRlcmFibHkuIFRoaXMgYXBwcm9hY2ggbWlnaHQgbm90IGNhcHR1cmUgKmV2ZXJ5dGhpbmcqIGltbWVkaWF0ZWx5LCBhbmQgaXQgbWlnaHQgaGF2ZSBzb21lIGZhbHNlIHBvc2l0aXZlcywgYnV0IGl0JiMzOTtsbCBiZSBvcmRlcnMgb2YgbWFnbml0dWRlIGZhc3RlciB0byBpbXBsZW1lbnQgYW5kIHRlc3QuIEkgY2FuIGFsd2F5cyByZWZpbmUgdGhlIGZpbHRlcmluZyBsb2dpYyBsYXRlciBvbmNlIEkmIzM5O3ZlIGdvdCBhIGJhc2VsaW5lLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGdldCB0aGUgcHJvY2VzcyBydW5uaW5nIHF1aWNrbHkgYW5kIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14odm9pZHxpbnR8c3RydWN0IFthLXpBLVpfXSYjNDM7IFxcKikgW2EtekEtWl9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqR3Jhc3BpbmcgYXQgYSBTb2x1dGlvbjogVGhlICYjMzQ7Z3JlcCYjMzQ7IEluc3RpbmN0IEtpY2tzIEluKioKCkFscmlnaHQsIEkgc2VlIGEgcHJvYmxlbSwgYW5kIG15IGltbWVkaWF0ZSByZWFjdGlvbiBpcywgbGV0JiMzOTtzIHJlYWNoIGZvciB0aGUgZmFtaWxpYXIgdG9vbHMuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7T2theSwgd2hhdCYjMzk7cyB0aGUgcXVpY2tlc3QsIGRpcnRpZXN0IHdheSB0byB0YWNrbGUgdGhpcz8mIzM0OyBUaGF0IGBncmVwYCBpcyBwcmFjdGljYWxseSBhbiBleHRlbnNpb24gb2YgbXkgYnJhaW4gYXQgdGhpcyBwb2ludC4gVGhlIHBhdHRlcm4gYF57YCBpcyBwcm9iYWJseSB0YXJnZXRpbmcgYSBzcGVjaWZpYyBjb2RlIHN0cnVjdHVyZSwgbGlrZWx5IEpTT04sIFlBTUwgb3IgbWF5YmUgZXZlbiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gSSBzdXNwZWN0IEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IGlzIHByZWNlZGVkIGJ5IGEgY3VybHkgYnJhY2UuIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmc6CgomIzM0O0kgbmVlZCB0byBncmFiIHNvbWV0aGluZyB3aXRoIGNvbnRleHQmIzM0Oy4gVGhlIG1lbnRhbCBtb2RlbCBpcyBsaWtlbHkgc3RydWN0dXJlZC4gVGhlcmUgaXMgc29tZXRoaW5nLCBwZXJoYXBzIGEgbmVzdGVkIG9iamVjdCwgdGhhdCBzdGFydHMgd2l0aCBhIGN1cmx5IGJyYWNlLiBUaGlzIGlzIG15IGJhc2Ugb2Ygb3BlcmF0aW9ucy4gJiMzNDtMZXQmIzM5O3MgdXNlIGBncmVwYCB3aXRoIHNvbWUgY29udGV4dCYjMzQ7LiBUaGUgdGhvdWdodCAmIzM0O0xldCYjMzk7cyBqdXN0JiMzNDsgbWVhbnMgSSBkb24mIzM5O3QgbmVlZCBhIGhpZ2hseSBzb3BoaXN0aWNhdGVkIG9yIGVmZmljaWVudCBwYXR0ZXJuLiBUaGlzIGlzIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBpZGVudGlmeSB0aGlzLiBJIG1pZ2h0IG5lZWQgbW9yZSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxhdGVyLCBidXQgZm9yIG5vdywgdGhpcyBpcyB3aGVyZSBJJiMzOTttIHN0YXJ0aW5nLiBUaGlzIGlzIHRoZSBmaXJzdCBkaWFnbm9zdGljIHN0ZXAuIEkmIzM5O20gbG9va2luZyBmb3IgYSBxdWljayB3aW4gdG8gdW5kZXJzdGFuZCB0aGUgbGF5b3V0IG9mIHNvbWV0aGluZy4gSSYjMzk7bSBsZWFuaW5nIGhlYXZpbHkgb24gd2hhdCBJIGtub3cgYWJvdXQgYGdyZXBgIGFuZCBpdHMgY2FwYWJpbGl0aWVzOyBJJiMzOTttIGJldHRpbmcgdGhhdCB0aGlzIGlzIGEgbWFuYWdlYWJsZSBwcm9ibGVtIEkgY2FuIGFkZHJlc3MgdGhpcyB3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJhZCBleHByZXNzaW9uOiBmYXRhbDogLWUgb3B0aW9uLCAmIzM5O157JiMzOTs6IEludmFsaWQgcHJlY2VkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteeyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtiYWQgZXhwcmVzc2lvbjogZmF0YWw6IC1lIG9wdGlvbiwgJiMzOTteeyYjMzk7OiBJbnZhbGlkIHByZWNlZGluZyByZWd1bGFyIGV4cHJlc3Npb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2Mzg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNvcnJlY3RpbmcgSW52YWxpZCBTeW50YXgqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGV4cHJlc3Npb24uLi4gKmhtbSosIGl0IHNlZW1zIGxpa2UgdGhlcmUmIzM5O3MgYW4gZXJyb3IuIFRoZSBjdXJyZW50IHN5bnRheCwgYF57YCwgaXMgY2xlYXJseSBpbnZhbGlkLiBUaGUgcGFyc2VyIGlzIGdvaW5nIHRvIGNob2tlIG9uIHRoYXQsIG5vIHF1ZXN0aW9uLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGUgcHJvYmxlbTsgdGhlIG9wZW5pbmcgY3VybHkgYnJhY2UgbmVlZHMgdG8gYmUgZXNjYXBlZC4gTGV0JiMzOTtzIGZpeCB0aGlzLiBJIG5lZWQgdG8gbWFrZSB0aGUgY2hhbmdlIHRvIGBeXHtgLiBUaGF0IHNob3VsZCByZXNvbHZlIHRoZSBpc3N1ZSBhbmQga2VlcCB0aGluZ3Mgc3ludGFjdGljYWxseSBzb3VuZC4gVGhhdCBzaG91bGQgYWRkcmVzcyB0aGF0IGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteXFx7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU5PXN0YXRpYyBjb25zdCBjaGFyICp1ZHBfdHVubmVsX25pY190dW5uZWxfdHlwZV9uYW1lKHVuc2lnbmVkIGludCB0eXBlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVx0c3dpdGNoICh0eXBlKSB7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03ND11ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc1Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYtXHRyZXR1cm4gZW50cnktXHUwMDNldXNlX2NudCA9PSAwIFx1MDAyNlx1MDAyNiAhZW50cnktXHUwMDNlZmxhZ3M7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04MD11ZHBfdHVubmVsX25pY19lbnRyeV9pc19wcmVzZW50KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgxOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODItXHRyZXR1cm4gZW50cnktXHUwMDNldXNlX2NudCBcdTAwMjZcdTAwMjYgIShlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjYgflVEUF9UVU5ORUxfTklDX0VOVFJZX0ZST1pFTik7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04Nj11ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcm96ZW4oc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODc6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OC1cdHJldHVybiBlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjYgVURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTI9dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTM6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NC1cdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05OT11ZHBfdHVubmVsX25pY19lbnRyeV91bmZyZWV6ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDA6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDEtXHRlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjY9IH5VRFBfVFVOTkVMX05JQ19FTlRSWV9GUk9aRU47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMDU9dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwNjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwNy1cdHJldHVybiBlbnRyeS1cdTAwM2VmbGFncyBcdTAwMjYgKFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERCB8XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMTI9dWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMTQtXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjExNTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTExNi1cdGVudHJ5LVx1MDAzZWZsYWdzIHw9IGZsYWc7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMjE9dWRwX3R1bm5lbF9uaWNfdGlfZnJvbV9lbnRyeShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMjItXHRcdFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTIzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTI0LVx0bWVtc2V0KHRpLCAwLCBzaXplb2YoKnRpKSk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzE9dWRwX3R1bm5lbF9uaWNfaXNfZW1wdHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzMy1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDQ9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ1Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTQ2LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTY2PV9fdWRwX3R1bm5lbF9uaWNfZ2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNjctXHRcdFx0ICB1bnNpZ25lZCBpbnQgaWR4LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY4Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTY5LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE4MD1fX3VkcF90dW5uZWxfbmljX3NldF9wb3J0X3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODEtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpZHgsIHU4IHByaXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE4Mjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4My1cdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pYy1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdLmh3X3ByaXYgPSBwcml2O1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTg3PXVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4OC1cdFx0XHRcdCBpbnQgZXJyKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxODk6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xOTAtXHRib29sIGRvZGd5ID0gZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX09QX0ZBSUw7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMTA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMTItXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjE0LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIzOT11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0MC1cdFx0XHRcdCAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNDE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDItXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUxPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjUzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjU0LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4Mj1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODM6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODQtXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwMTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwMi1cdGlmICghdXRuLVx1MDAzZW5lZWRfc3luYylcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwOT11ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZSxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEwLVx0XHRcdFx0c3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMi1cdHJldHVybiB0YWJsZS1cdTAwM2V0dW5uZWxfdHlwZXMgXHUwMDI2IHRpLVx1MDAzZXR5cGU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMTY9dWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzE3LVx0XHRcdCAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxODp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxOS1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMzQ9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM1LVx0XHRcdCAgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNjp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMzNy1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNTY9dWRwX3R1bm5lbF9uaWNfZW50cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXHRcdFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNTg6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTktXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk0PXVkcF90dW5uZWxfbmljX2VudHJ5X3RyeV9hZGooc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTYtXHRcdFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozOTc6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTgtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW3RhYmxlXVtpZHhdO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDE4PXVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDE5LVx0XHRcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjA6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjEtXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00Mzk9dWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDAtXHRcdFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDItXHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgJiM0MzsxKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0Nj11ZHBfdHVubmVsX25pY19kZWxfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0Ny1cdFx0XHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ0ODp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0OS1cdHJldHVybiB1ZHBfdHVubmVsX25pY190cnlfZXhpc3RpbmcoZGV2LCB1dG4sIHRpLCAtMSk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NTM9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU0LVx0XHQgICAgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ1NTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1Ni1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ5MD1fX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTItXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTI0PV9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUyNTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyNi1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTQwPXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU0MTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0Mi1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NzY9X191ZHBfdHVubmVsX25pY19kdW1wX3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1Nzc6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NzgtXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjAxPV9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMi1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjAzOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjA0LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYzNz1zdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjM4Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjM5LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02NDY9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY0Nzp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0OC1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjU1PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY1Njp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY1Ny1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njc4PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzk6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODAtXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzAxPXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzAyOntcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzAzLVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTcyOD1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzI5Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzMwLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4gPVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzUyPXVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTMtXHRcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTQ6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTUtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc4MT1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3ODI6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03ODMtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5MD1zdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc5MTp7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc5Mi1cdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04NjU9dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY2Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODY3LVx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxOT11ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyMC1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MjE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjItXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05NzM9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTc0Ontcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTc1LVx0aW50IGVycjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMDA9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMDE6e1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDAyLVx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2dWRwX3R1bm5lbF9uaWNfbm90aWZpZXJfYmxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVURQIFR1bm5lbCBOSUMgU3luY2hyb25pemF0aW9uIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZyBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AsIHRoZSBjb3JlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZSBmb3Igc3ltYm9sIHZpc2liaWxpdHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IG1vc3Qgb2YgdGhlbSB3b24mIzM5O3QgYmUgZXhwb3NlZCBhcyBzeW1ib2xzLiBCdXQgd2FpdCwgc29tZSBvZiB0aGVtIGFyZSBjbGVhcmx5IHVzZWQgaW4gd2F5cyB0aGF0IHByZXZlbnQgaW5saW5pbmcuIFNwZWNpZmljYWxseSwgdGhlIGFkZHJlc3NlcyBvZiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgKHVzZWQgd2l0aCBgSU5JVF9ERUxBWUVEX1dPUktgKSwgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgKHVzZWQgd2l0aCBgbm90aWZpZXJfYmxvY2tgKSwgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGFuZCBgX191ZHBfdHVubmVsX25pY19kZWxfcG9ydGAgKHBhc3NlZCBpbnRvIGB1ZHBfdHVubmVsX25pY19vcHNgKS4gVGhvc2Ugc2hvdWxkIGJlIGdvb2QgdGFyZ2V0cy4KCk9rYXksIGxldCYjMzk7cyBjb25maXJtIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgeWVwLCBpdCYjMzk7cyBzdGF0aWMsIGJ1dCB0aGF0JiMzOTtzIGZpbmUgc2luY2Ugd2UgdGFrZSBpdHMgYWRkcmVzcywgc28gaXQgbXVzdCBiZSBhIHZhbGlkIHN5bWJvbCBmb3IgZnV6emluZy4gTm93LCB3aGF0IGFib3V0IGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYD8gSG1tLCBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gTGlrZWx5IGlubGluZWQsIHNvIG1heWJlIG5vdCB0aGUgYmVzdCBzeW1ib2wuIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgIGxvb2tzIGxpa2UgYSBtb3JlIHByb21pc2luZyBjYW5kaWRhdGUgc2luY2UgaXQmIzM5O3MgdXNlZCB3aXRoIGBub3RpZmllcl9ibG9ja2AuCgpTbywgdGhlIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgaXM6IHRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIHN5bmNocm9uaXphdGlvbiBtZXRob2QgaW4gVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZywgc3dpdGNoaW5nIHRvIGEgZGVsYXllZCB3b3JrcXVldWUgYW5kIHJlZmluaW5nIHRoZSBsb2NraW5nIG1lY2hhbmlzbSB3aXRoIGBydG5sX3RyeWxvY2soKWAgYW5kIGEgcmVxdWV1ZSBkZWxheSB0byBkZWFsIHdpdGggcG90ZW50aWFsIGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5LCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggZW11bGF0ZWQgZGV2aWNlcyBsaWtlIG5ldGRldnNpbS4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRvIGNhdGNoIGFueSBuZXdseSBpbnRyb2R1Y2VkIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkbG9ja3MuCgpIZXJlJiMzOTtzIG15IGRpc3RpbGxlZCBsaXN0OgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUKKiAgICoqUmVhc29uaW5nOioqIENoYW5nZXMgdG8gY29yZSBuZXR3b3JraW5nIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgbG9ja2luZywgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgZGVhZGxvY2tzLCByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMuCiogICAqKkZvY3VzU3ltYm9sczoqKgogICAgKiAgIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYAogICAgKiAgIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgCiAgICAqICAgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgCiAgICAqICAgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgCiogICAqKkVuYWJsZUNvbmZpZ3M6KioKICAgICogICBgTkVUX1VEUF9UVU5ORUxgIChleHBsaWNpdGx5IGxpc3RlZCwgYnV0IHNlbGVjdGVkIGJ5IGBWWExBTmAgb3IgYEdFTkVWRWApCiAgICAqICAgYFZYTEFOYAogICAgKiAgIGBHRU5FVkVgCiAgICAqICAgYE5FVERFVlNJTWAKCkFuZCBsZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTkVUREVWU0lNYCBkb2VzbiYjMzk7dCBkZXBlbmQgb24gb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjg4MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIENoZWNrIGZvciBORVRERVZTSU0qKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBjb25maXJtIHRoZSBkZWZpbml0aW9uIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTkVUREVWU0lNYC4gSXQmIzM5O3MgcG9zc2libGUgSSYjMzk7bSBvdmVybG9va2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwgYWJvdXQgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgb3IgY29uZmlndXJlZCwgb3IgaWYgdGhlcmUgaXMgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlnIEkgaGF2ZSB0byBlbmFibGUgYWxvbmdzaWRlLiBEb3VibGUtY2hlY2tpbmcgYEtjb25maWdgIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGF2b2lkIHdhc3RpbmcgdGltZSBvbiBpc3N1ZXMgdGhhdCBhcmUgYWxyZWFkeSBhZGRyZXNzZWQgaW4gdGhlIHByb2plY3QgYnVpbGQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBzYW5pdHkgY2hlY2sgZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMgYW5kIGFsd2F5cyB3b3J0aCBhIHNlY29uZCBnbGFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzExNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgcXVlcnk6CgoqKldoZXJlJiMzOTtzIHRoZSBgbmV0ZGV2c2ltYCBNYWdpYz8qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzLiBJIHNlZSAmIzM0O25ldGRldnNpbSYjMzQ7IGFuZCBteSBicmFpbiBpbW1lZGlhdGVseSBnb2VzLCAmIzM0O0RlZmluZSB0aGF0IHRoaW5nISYjMzQ7IEl0JiMzOTtzIHRoYXQgaW5pdGlhbCByZWFjdGlvbiB0byBlbmNvdW50ZXJpbmcgYW4gdW5mYW1pbGlhciB0ZXJtLCBlc3BlY2lhbGx5IG9uZSB0aGF0IHNvdW5kcyBsaWtlIGl0IGNvdWxkIGJlIGNydWNpYWwuIEkgbWVhbiwgaWYgdGhpcyBpcyBjZW50cmFsIHRvIHNvbWV0aGluZywgSSAqbmVlZCogdG8ga25vdyB3aGVyZSBpdCYjMzk7cyByb290ZWQuIElzIGl0IGEgbW9kdWxlIEkgbmVlZCB0byBpbXBvcnQ/IEEgZnVuY3Rpb24gY2FsbD8gQSBsaWJyYXJ5IGRlcGVuZGVuY3k/IElzIGl0IHNvbWV0aGluZyBJJiMzOTt2ZSBzb21laG93IG1pc3NlZCwgZGVzcGl0ZSBteSBleHBlcmllbmNlPyBUaGlzIGFic2VuY2Ugb2YgY29udGV4dCBpcyBtYWtpbmcgbWUgZmVlbCBsaWtlIEkmIzM5O20gbWlzc2luZyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIGNhbiYjMzk7dCByZWFsbHkgYW5hbHl6ZSB0aGlzIGZ1cnRoZXIgdW50aWwgSSBrbm93IGV4YWN0bHkgd2hhdCBgbmV0ZGV2c2ltYCBhY3R1YWxseSAqaXMqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzQyMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqS2NvbmZpZyBMb2NhdGlvbiBGb3VuZCoqCgpBbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkgd2FzIGp1c3QgdHJhY2luZyB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0cnlpbmcgdG8gcmVtZW1iZXIgd2hlcmUgSSBzYXcgaXQgZGVmaW5lZC4gQmluZ28hIEFmdGVyIGEgcXVpY2sgc2VhcmNoLCBpdCYjMzk7cyByaWdodCB0aGVyZSwgcHJlY2lzZWx5IHdoZXJlIEkgc3VzcGVjdGVkOiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhlIG5ldHdvcmtpbmcgZHJpdmVycyBhcmUgdXN1YWxseSBhbGwgb3JnYW5pemVkIGluIHRoYXQgYXJlYS4gTm93IEkgY2FuIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mICp0aGF0KiBLY29uZmlnIGZpbGUgYW5kIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdHMgYXJlIHRpZWQgdG8gdGhhdCBvcHRpb24uIEtub3dpbmcgdGhpcyBwYXRoIHNhdmVzIHRpbWUsIGFuZCBsZXRzIG1lIG1vdmUgb24gdG8gdGhlIG1vcmUgaW50ZXJlc3RpbmcgcGFydDogZGVjaXBoZXJpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY5NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpbmNvbXBsZXRlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hhdCBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzPyBXaGF0IHJlbGllcyBvbiB3aGF0PyYjMzQ7IFdpdGhvdXQgZnVsbHkgZ3Jhc3BpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBlbGVtZW50cywgSSBjYW4mIzM5O3QgYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGxhcmdlciBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTc0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIG5ldHdvcmsgc2ltdWxhdGlvbiBvciByZWxhdGVkIGZpZWxkczoKCioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERpcmVjdGl2ZSoqCgpBbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGBjb25maWcgTkVUREVWU0lNYCBqdXN0IHBvcHBlZCB1cC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgd2UmIzM5O3JlIGluIGNvbmZpZ3VyYXRpb24gbW9kZSwgbGlrZWx5IHdpdGhpbiBhIG5ldHdvcmsgc2ltdWxhdGlvbiBlbnZpcm9ubWVudCBvciBhIHN5c3RlbSB0aGF0IHV0aWxpemVzIGEgbmV0d29yayBkZXZpY2Ugc2ltdWxhdGlvbiBjb21wb25lbnQuJiMzNDsgVGhpcyBpcyBwcm9iYWJseSBzb21lIGtpbmQgb2YgaW5pdGlhbGl6YXRpb24gb3Igc2V0dXAgY29tbWFuZC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzIG9yIHNldHRpbmdzIGFyZSBiZWluZyBkZWZpbmVkIGhlcmUsIG9yIGlmIHRoaXMgaXMganVzdCBhbiBlbnRyeSBwb2ludCB0byBmdXJ0aGVyIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGRpY3RhdGUgdGhlIG92ZXJhbGwgYmVoYXZpb3Igb2Ygc29tZSBzaW11bGF0ZWQgbmV0d29yayBkZXZpY2UsIG9yIHRoZSBlbnZpcm9ubWVudCBmb3IgaXQuIFRoZSBsaW5lcyBmb2xsb3dpbmcgdGhpcyBhcmUgZ29pbmcgdG8gYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGltcGxlbWVudGVkLiBTbywgbGV0JiMzOTtzIGRpdmUgaW50byB0aG9zZSBsaW5lcyB0byBzZWUgd2hhdCB0aGV5IHJldmVhbCBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjA0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MDQ6XHRjb25maWcgTkVUREVWU0lNXG4gNjA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcJiMzNDtcbiA2MDY6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiA2MDc6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDYwODpcdFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxuIDYwOTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxuIDYxMDpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gNjExOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gNjEyOlx0XHRzZWxlY3QgTkVUX1NIQVBFUlxuIDYxMzpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM2MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyBORVRERVZTSU0gYW5kIFZYTEFOIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBORVRERVZTSU1gIGFuZCBob3cgcm9idXN0IGl0IGlzLiBUaGUgZGVwZW5kZW5jZSBvbiBgREVCVUdfRlNgIGFuZCBgSU5FVGAgaXMgc3RyYWlnaHRmb3J3YXJkLiBDb25zaWRlcmluZyBgREVCVUdfRlNgIGlzIGdlbmVyYWxseSBlbmFibGVkIG9uIG1vc3Qgc3lzdGVtcyBJIHdvcmsgd2l0aCwgdGhhdCBhc3BlY3Qgb2YgYE5FVERFVlNJTWAgbG9va3Mgc29saWQgYW5kIHNob3VsZG4mIzM5O3QgcHJlc2VudCBhbiBpc3N1ZS4gSXQmIzM5O3MgYSBmYWlybHkgc2FmZSBhc3N1bXB0aW9uLgoKTm93LCBsZXQmIzM5O3MgcGl2b3QgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBWWExBTmAuIFRoYXQgd2lsbCBuZWVkIGEgYml0IG1vcmUgaW52ZXN0aWdhdGlvbiwgYXMgaXQmIzM5O3MgYSBjcml0aWNhbCB0ZWNobm9sb2d5IGFuZCB1bmRlcnN0YW5kaW5nIGFsbCBpdHMgY29tcG9uZW50cyBpcyBwYXJhbW91bnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjMwOlx0Y29uZmlnIFZYTEFOXG4gMjMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcJiMzNDtcbiAyMzI6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDIzMzpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjM0Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMjM1Olx0XHRoZWxwXG4gMjM2Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdnhsYW4gdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxuIDIzNzpcdFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gVlhMQU4gaXMgb2Z0ZW4gdXNlZFxuIDIzODpcdFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cbiAyMzk6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDc0MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipWWExBTiBhbmQgdGhlIFBhdGggRm9yd2FyZCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IG5ldHdvcmsgdmlydHVhbGl6YXRpb24uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgVlhMQU4gcmVsaWVzIG9uIHRoZSB1bmRlcmx5aW5nIElORVQgaW5mcmFzdHJ1Y3R1cmUuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IEkgbmVlZCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgbGFuZHNjYXBlLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gR0VORVZFLiBJIHNob3VsZCBjaGVjayB3aGF0IGRlcGVuZGVuY2llcyAqdGhhdCogcHJvdG9jb2wgaGFzLCBzZWUgaWYgaXQgaXMgYSBtb3JlIHZpYWJsZSBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjQ1Olx0Y29uZmlnIEdFTkVWRVxuIDI0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cJiMzNDtcbiAyNDc6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI0ODpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjQ5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMjUwOlx0XHRoZWxwXG4gMjUxOlx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgZ2VuZXZlIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyNTI6XHRcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIEdFTkVWRSBpcyBvZnRlbiB1c2VkXG4gMjUzOlx0XHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuIDI1NDpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MDU1CgkJCQkJCQlvdXRwdXQ6IDIwMgoJCQkJCQkJdGhvdWdodHM6IDM5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYEdFTkVWRWAgQ29uZmlndXJhdGlvbiBhbmQgUmVsYXRlZCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gYnJlYWtpbmcgZG93biB0aGlzIGBHRU5FVkVgIHNldHVwLiBJdCYjMzk7cyBidWlsdCBvbiBgSU5FVGAsIHRoYXQmIzM5O3MgdGhlIGZvdW5kYXRpb24uIEFuZCBiZWNhdXNlIG9mIHRoYXQsIEkgY2FuIHNlZSB0aGUgY29uZmlndXJhdGlvbiBpbnZvbHZlcyBgTkVUREVWU0lNYCwgYFZYTEFOYCwgYW5kIGBHRU5FVkVgIHRoZW1zZWx2ZXMuIEEgcXVpY2sgcmVtaW5kZXIgaXMgdXNlZnVsLCBgTkVUX1VEUF9UVU5ORUxgIGlzIHNlbGVjdGVkIGJ5IGJvdGggYFZYTEFOYCBhbmQgYEdFTkVWRWAsIHNvLCBldmVuIHRob3VnaCBJIGRvbiYjMzk7dCB0ZWNobmljYWxseSAqbmVlZCogdG8gbGlzdCBpdCwgaXQmIzM5O3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aG9zZSBmb2N1cyBzeW1ib2xzIGFnYWluLCBqdXN0IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG9uIHRoZSByaWdodCB0cmFjazogYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgLCBhbmQgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgLgoKSG1tLCBhbnkgb3RoZXIgZnVuY3Rpb25zIGdvdCB0d2Vha2VkPyBBaCwgeWVzLiBgdWRwX3R1bm5lbF9uaWNfYWxsb2NgIGlzIG1vZGlmaWVkIHRvIHVzZSBgSU5JVF9ERUxBWUVEX1dPUktgLiBBbHNvLCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AuIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2Agbm93IHVzZXMgYHF1ZXVlX2RlbGF5ZWRfd29ya2AsIGFuZCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGNoYW5nZWQgdG8gc2tpcCB0aGUgY2hlY2sgZm9yIGB1dG4tJmd0O3dvcmtfcGVuZGluZ2AuCgpTaW5jZSBgdWRwX3R1bm5lbF9uaWNfYWxsb2NgIGlzIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYSBmb2N1cyBvbiBmdXp6aW5nIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgIHdpbGwgZWZmZWN0aXZlbHkgY292ZXIgdGhhdCBmdW5jdGlvbi4gQW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCBpcyAqYWxzbyogY2FsbGVkIGJ5IGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX191ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0YC4KClllYWgsIHRoYXQgbWFrZXMgc2Vuc2UuIENvbnNpZGVyaW5nIGhvdyB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIGFuZCB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGVtLCBteSBjaG9zZW4gZm9jdXMgc3ltYm9scyBzaG91bGQgY292ZXIgYWxsIHRoZSByZWxldmFudCBtb2RpZmllZCBjb2RlIHBhdGhzLiBJJiMzOTttIHNhdGlzZmllZCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7R0VORVZFJiMzNDssCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19hZGRfcG9ydCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OywKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDssCiAgICAmIzM0O19fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjI4LjYzNDA5MTk0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTMzMDk4ODg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIixcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJHRU5FVkVcIixcbiAgICBcIk5FVF9VRFBfVFVOTkVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0XCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZyBmcm9tIGEgcmVndWxhciB3b3JrcXVldWUgdG8gYSBkZWxheWVkIHdvcmtxdWV1ZSwgYW5kIG1vZGlmaWVzIHRoZSBsb2NraW5nIGluIHRoZSB3b3JrIGhhbmRsZXIgdG8gdXNlIHJ0bmxfdHJ5bG9jaygpIHdpdGggYSByZXF1ZXVlIGRlbGF5IHRvIHByZXZlbnQgZGVhZGxvY2tzIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMgKGxpa2UgbmV0ZGV2c2ltKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbmV3IHJhY2VzIG9yIGRlYWRsb2NrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MjguNjM0MDk5NDY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjM4ODA3MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlYjI5NDVjZTc0M2U5MjliODc0YzI5ZjIwZTBjZjcxYzZjYjM4OTdlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDEzOjU1OjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuaW5kZXggM2IzMmEwYWZhOTc5OGQuLjUzYTFhOWMxZjhiZmYwIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuQEAgLTMyLDEzICszMiwxMiBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xcbiAgKiBAbG9jazpcXHRwcm90ZWN0cyBhbGwgZmllbGRzXFxuICAqIEBuZWVkX3N5bmM6XFx0YXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZFxcbiAgKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcXG4tICogQHdvcmtfcGVuZGluZzogQHdvcmsgaXMgY3VycmVudGx5IHNjaGVkdWxlZFxcbiAgKiBAbl90YWJsZXM6XFx0bnVtYmVyIG9mIHRhYmxlcyB1bmRlciBAZW50cmllc1xcbiAgKiBAbWlzc2VkOlxcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXFxuICAqIEBlbnRyaWVzOlxcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXFxuICAqL1xcbiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xcbi1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4rXFx0c3RydWN0IGRlbGF5ZWRfd29yayB3b3JrO1xcbiBcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcXG4gXFxuQEAgLTQ2LDcgKzQ1LDYgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4gXFxuIFxcdHU4IG5lZWRfc3luYzoxO1xcbiBcXHR1OCBuZWVkX3JlcGxheToxO1xcbi1cXHR1OCB3b3JrX3BlbmRpbmc6MTtcXG4gXFxuIFxcdHVuc2lnbmVkIGludCBuX3RhYmxlcztcXG4gXFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XFxuQEAgLTMwMSwxMSArMjk5LDEwIEBAIF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIHN0YXRpYyB2b2lkXFxuIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiB7XFxuLVxcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMgfHwgdXRuLVxcdTAwM2V3b3JrX3BlbmRpbmcpXFxuK1xcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrKTtcXG4tXFx0dXRuLVxcdTAwM2V3b3JrX3BlbmRpbmcgPSAxO1xcbitcXHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2xcXG5AQCAtNzMxLDEyICs3MjgsMTcgQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biA9XFxuLVxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMsIHdvcmspO1xcbitcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHVkcF90dW5uZWxfbmljLCB3b3JrLndvcmspO1xcbiBcXG4tXFx0cnRubF9sb2NrKCk7XFxuK1xcdC8qIFdlIGNhbm5vdCBibG9jayBvbiBSVE5MIGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBkZWFkbG9jayB3aXRoXFxuK1xcdCAqIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoKSBjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpXFxuK1xcdCAqIHdoaWxlIGhvbGRpbmcgUlROTC4gUmVxdWV1ZSB3aXRoIDEgamlmZnkgZGVsYXkgaWYgUlROTCBpcyBjb250ZW5kZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIDEpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4tXFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMDtcXG4gXFx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyh1dG4tXFx1MDAzZWRldiwgdXRuKTtcXG4gXFxuIFxcdGlmICh1dG4tXFx1MDAzZW5lZWRfcmVwbGF5KVxcbkBAIC03NTcsNyArNzU5LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxuIFxcdGlmICghdXRuKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0dXRuLVxcdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xcbi1cXHRJTklUX1dPUksoXFx1MDAyNnV0bi1cXHUwMDNld29yaywgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayk7XFxuK1xcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZ1dG4tXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5fdGFibGVzOyBpKyspIHtcXG5AQCAtOTAxLDExICs5MDMsMTEgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0dWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pO1xcbiBcXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcXG4gXFxuLVxcdC8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsXFxuLVxcdCAqIHJldHJ5IHVucmVnaXN0ZXIgdW50aWwgd2UgZ2l2ZSB1cCBvdXIgcmVmZXJlbmNlIG9uIHRoaXMgZGV2aWNlLlxcbitcXHQvKiBNYWtlIHN1cmUgbm8gd29yayBpcyBydW5uaW5nIG9yIHF1ZXVlZCBiZWZvcmUgZnJlZWluZyBAdXRuLlxcbitcXHQgKiBUaGUgd29yayBoYW5kbGVyIHVzZXMgcnRubF90cnlsb2NrKCksIHNvIGl0IHdpbGwgbm90IGRlYWRsb2NrXFxuK1xcdCAqIGFnYWluc3QgdGhlIFJUTkwgd2UgYXJlIGhvbGRpbmcgaGVyZS5cXG4gXFx0ICovXFxuLVxcdGlmICh1dG4tXFx1MDAzZXdvcmtfcGVuZGluZylcXG4tXFx0XFx0cmV0dXJuO1xcbitcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnV0bi1cXHUwMDNld29yayk7XFxuIFxcbiBcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxuIHJlbGVhc2VfZGV2OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NToyOS41OTg1Mzk4ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NjQzNjY1MzE4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCIsXG4gICAgXCJORVRfVURQX1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZWxfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGViMjk0NWNlNzQzZTkyOWI4NzRjMjlmMjBlMGNmNzFjNmNiMzg5N2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzo1NToyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5pbmRleCAzYjMyYTBhZmE5Nzk4ZC4uNTNhMWE5YzFmOGJmZjAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5AQCAtMzIsMTMgKzMyLDEyIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XG4gICogQGxvY2s6XHRwcm90ZWN0cyBhbGwgZmllbGRzXG4gICogQG5lZWRfc3luYzpcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcbiAgKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXG4gICogQG5fdGFibGVzOlx0bnVtYmVyIG9mIHRhYmxlcyB1bmRlciBAZW50cmllc1xuICAqIEBtaXNzZWQ6XHRiaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93blxuICAqIEBlbnRyaWVzOlx0dGFibGUgb2YgdGFibGVzIG9mIHBvcnRzIGN1cnJlbnRseSBvZmZsb2FkZWRcbiAgKi9cbiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xuLVx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XG4rXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHdvcms7XG4gXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTQ2LDcgKzQ1LDYgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcbiBcbiBcdHU4IG5lZWRfc3luYzoxO1xuIFx0dTggbmVlZF9yZXBsYXk6MTtcbi1cdHU4IHdvcmtfcGVuZGluZzoxO1xuIFxuIFx0dW5zaWduZWQgaW50IG5fdGFibGVzO1xuIFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XG5AQCAtMzAxLDExICsyOTksMTAgQEAgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBzdGF0aWMgdm9pZFxuIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHtcbi1cdGlmICghdXRuLVx1MDAzZW5lZWRfc3luYyB8fCB1dG4tXHUwMDNld29ya19wZW5kaW5nKVxuK1x0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaywgMCk7XG4gfVxuIFxuIHN0YXRpYyBib29sXG5AQCAtNzMxLDEyICs3MjgsMTcgQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID1cbi1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB1ZHBfdHVubmVsX25pYywgd29yayk7XG4rXHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMsIHdvcmsud29yayk7XG4gXG4tXHRydG5sX2xvY2soKTtcbitcdC8qIFdlIGNhbm5vdCBibG9jayBvbiBSVE5MIGhlcmUsIG90aGVyd2lzZSB3ZSB3b3VsZCBkZWFkbG9jayB3aXRoXG4rXHQgKiB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKCkgY2FsbGluZyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKVxuK1x0ICogd2hpbGUgaG9sZGluZyBSVE5MLiBSZXF1ZXVlIHdpdGggMSBqaWZmeSBkZWxheSBpZiBSVE5MIGlzIGNvbnRlbmRlZC5cbitcdCAqL1xuK1x0aWYgKCFydG5sX3RyeWxvY2soKSkge1xuK1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaywgMSk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuLVxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuQEAgLTc1Nyw3ICs3NTksNyBAQCB1ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcbiBcdGlmICghdXRuKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdHV0bi1cdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xuLVx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbitcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl90YWJsZXM7IGkrKykge1xuQEAgLTkwMSwxMSArOTAzLDExIEBAIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XG4gXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbiBcbi1cdC8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsXG4tXHQgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS5cbitcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGlzIHJ1bm5pbmcgb3IgcXVldWVkIGJlZm9yZSBmcmVlaW5nIEB1dG4uXG4rXHQgKiBUaGUgd29yayBoYW5kbGVyIHVzZXMgcnRubF90cnlsb2NrKCksIHNvIGl0IHdpbGwgbm90IGRlYWRsb2NrXG4rXHQgKiBhZ2FpbnN0IHRoZSBSVE5MIHdlIGFyZSBob2xkaW5nIGhlcmUuXG4gXHQgKi9cbi1cdGlmICh1dG4tXHUwMDNld29ya19wZW5kaW5nKVxuLVx0XHRyZXR1cm47XG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuIFxuIFx0dWRwX3R1bm5lbF9uaWNfZnJlZSh1dG4pO1xuIHJlbGVhc2VfZGV2OlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MjkuNTk4NTQwOTM0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc0NTEwNzE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVRFAgVHVubmVsIE5JQyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYC4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGNydWNpYWwsIGNoYW5nZS4gVGhleSdyZSBzd2l0Y2hpbmcgZnJvbSBgc3RydWN0IHdvcmtfc3RydWN0YCB0byBgc3RydWN0IGRlbGF5ZWRfd29ya2AgaW4gdGhlIGBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNgLiBUaGF0J3MgdGhlIGZpcnN0IGNsdWUuIFRoZW4sIGFsbCB0aGUgYXNzb2NpYXRlZCBmdW5jdGlvbnMgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIHRoZSBkZWxheWVkIHdvcmsgZXF1aXZhbGVudHM6IGBxdWV1ZV9kZWxheWVkX3dvcmtgLCBgSU5JVF9ERUxBWUVEX1dPUktgLCBhbmQgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb24gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIG5vdyB1c2luZyBgcnRubF90cnlsb2NrKClgIHdpdGggYSByZXRyeSB1c2luZyBgcXVldWVfZGVsYXllZF93b3JrYCBpZiB0aGUgbG9jayBpcyBub3QgYXZhaWxhYmxlLiBUaGlzIGlzIGEgdGVsbC10YWxlIHNpZ24gb2YgdHJ5aW5nIHRvIGZpeCBhIGNvbmN1cnJlbmN5IHByb2JsZW0sIGxpa2VseSBhIGRlYWRsb2NrIG9yIHJhY2UgY29uZGl0aW9uLCB3aXRoaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgcGF0aC5cblxuVGhpcyBpcyBpbW1lZGlhdGVseSBmbGFnZ2VkIGFzIHNvbWV0aGluZyB0aGF0IGFic29sdXRlbHkgKm5lZWRzKiBmdXp6aW5nLiBXZSBoYXZlIGEgc29saWQgbGVhZCBvbiBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFkZHJlc3NpbmcgYSBzcGVjaWZpYyB0eXBlIG9mIGlzc3VlLlxuXG5MZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2Agc291cmNlIGZpbGUgaXRzZWxmIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbmZpZyBvcHRpb25zIGFuZCBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGlzIHVzZWQgYW5kIGhvdyB0aGUgY2hhbmdlcyBhZmZlY3QgaXQ6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLCBhbmQgYHVkcF90dW5uZWxfbmljX2FsbG9jYC5cblxuTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEknbGwgY2hlY2sgYG5ldC9pcHY0L01ha2VmaWxlYCBvciBgbmV0L2lwdjQvS2NvbmZpZ2AgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbmZpZyBvcHRpb25zIGVuYWJsZSBgdWRwX3R1bm5lbF9uaWMuY2AuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmFzZWxpbmUgdG8gd29yayBmcm9tIHdoZW4gdGVzdGluZyB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjM1LjM0MzY1MTM4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDM1MDAyNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfTkVUX0lQR1JFKSArPSBpcF9ncmUub1xcbm5ldC9pcHY0L01ha2VmaWxlOjMxOnVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSArPSB1ZHBfdHVubmVsLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MzUuNjQ3MTYwNTQ3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NTkwMDMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIC0gVURQIFR1bm5lbCBNb2R1bGUqKlxuXG5SaWdodCwgc28gYENPTkZJR19ORVRfVURQX1RVTk5FTGAgaXMgZW5hYmxlZC4gVGhhdCBzaG91bGQgYnJpbmcgaW4gdGhlIGB1ZHBfdHVubmVsX25pYy5vYCBtb2R1bGUuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGVyZSBleGFjdGx5IHRoaXMgaXMgZGVmaW5lZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX1VEUF9UVU5ORUxgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXBzdHJlYW0gY2hhbmdlcyB0aGF0IEkgYW0gbm90IGF3YXJlIG9mLCBvciBpZiB0aGVyZSBpcyBhbnkgdW51c3VhbCBjb25maWcgZGVwZW5kZW5jeSB0aGF0IEkgbmVlZCB0byBiZSBjYXJlZnVsIG9mLiBUaGF0J3MgYWx3YXlzIHRoZSBmaXJzdCBwbGFjZSBJIHN0YXJ0IHdpdGggdGhlc2UgbmV0d29yay1yZWxhdGVkIG9wdGlvbnMgdG8gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBzdHJhaWdodCBpbiBteSBoZWFkLiBBIHF1aWNrIGNoZWNrIG9mIHRoYXQgS2NvbmZpZyBmaWxlIHNob3VsZCBjb25maXJtIHRoZSBsaW5rIGFuZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjM5LjA5MzA2MjgxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg3Njc2ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9VRFBfVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMTUtXFxubmV0L2lwdjQvS2NvbmZpZzozMTY6Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6MzkuMjExODM4ODcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzOTEzMjc5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgSSBjYW4gcHVsbCBvdXQgb2YgdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBORVRfVURQX1RVTk5FTCBUcmlzdGF0ZSoqXG5cblJpZ2h0LCBzbyBgTkVUX1VEUF9UVU5ORUxgIGlzIGEgdHJpc3RhdGUgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGl0J3MgbGlrZWx5IGEgc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIHJhdGhlciB0aGFuIGEgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlIG9uZS4gVGhlIHRleHQgbm90ZXMgdGhhdCBvdGhlciBjb25maWd1cmF0aW9ucywgc3VjaCBhcyBWWExBTiBvciBHRU5FVkUsIGFyZSBwcm9iYWJseSB0aGUgb25lcyBkcml2aW5nIGl0cyBzZWxlY3Rpb24uIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcHJvYmFibHkgYW4gdW5kZXJseWluZyBidWlsZGluZyBibG9jayBmb3IgdGhvc2UgdHVubmVsaW5nIHByb3RvY29scy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zIGlzIHB1bGxpbmcgaW4gYE5FVF9VRFBfVFVOTkVMYCwgb3IgaWYgaXQncyBvdGhlciBvcHRpb25zIGVudGlyZWx5LiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NDIuMzUwOTczNzk3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODMxMjIxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9VRFBfVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc9Mj1jb25maWcgUkRNQV9SWEVcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy01LVxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9WSVJUX0RNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZzo2OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy03LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTc2LVxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjc3OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzgtXFx0c2VsZWN0IERTVF9DQUNIRVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA2LVxcdHNlbGVjdCBEU1RfQ0FDSEVcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwOC1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjMyLVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjMzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjM0LVxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ3LVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjQ4OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ5LVxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2Mi1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2NC1cXHRzZWxlY3QgR1JPX0NFTExTXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3NC1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NTpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTEtXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTI6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDQtXFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElQX01VTFRJQ0FTVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA1OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzA2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzIxPWNvbmZpZyBORVRfRk9VXFxubmV0L2lwdjQvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIklQOiBGb28gKElQIHByb3RvY29scykgb3ZlciBVRFBcXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozMjM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMjQtXFx0aGVscFxcbi0tXFxubmV0L2wydHAvS2NvbmZpZz02PW1lbnVjb25maWcgTDJUUFxcbi0tXFxubmV0L2wydHAvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC9sMnRwL0tjb25maWc6OTpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvbDJ0cC9LY29uZmlnLTEwLVxcdGhlbHBcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnPTY9Y29uZmlnIEFGX1JYUlBDXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZy0xMS1cXHRzZWxlY3QgS0VZU1xcbm5ldC9yeHJwYy9LY29uZmlnOjEyOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbm5ldC9yeHJwYy9LY29uZmlnLTEzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcXG4tLVxcbm5ldC9zY3RwL0tjb25maWctMTItXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG5uZXQvc2N0cC9LY29uZmlnOjEzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbm5ldC9zY3RwL0tjb25maWctMTQtXFx0aGVscFxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZz0zMD1jb25maWcgVElQQ19NRURJQV9VRFBcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMzItXFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZzozMzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvdGlwYy9LY29uZmlnLTM0LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NTo0NS41MzQxMDIyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTg0NzM4NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgVURQIFR1bm5lbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSBlbmFibGUgVURQIHR1bm5lbGluZyB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoZSBrZXkgaGVyZSBpcyBgTkVUX1VEUF9UVU5ORUxgLiBJdCdzIHNlbGVjdGVkIGJ5IGEgbG90IG9mIGRpZmZlcmVudCBmZWF0dXJlcywgd2hpY2ggaXMgcHJldHR5IGNvbW1vbi4gTXkgZmlyc3QgaW5zdGluY3Qgd2FzIHdoZXRoZXIgd2UgY291bGQganVzdCBkaXJlY3RseSBsaXN0IGBORVRfVURQX1RVTk5FTGAgaW4gYEVuYWJsZUNvbmZpZ3NgLCBhbG9uZ3NpZGUgb3B0aW9ucyBsaWtlIGBWWExBTmAgb3IgYEdFTkVWRWAuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCBgTkVUX1VEUF9UVU5ORUxgIGlzIGEgdHJpc3RhdGUgY29uZmlnLCBhbmQgYmVjYXVzZSBpdCBsYWNrcyBhIGRpcmVjdCBwcm9tcHQsIGl0IGNhbiAqb25seSogYmUgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlncy4gU28sIHdlIG5lZWQgdG8gYmUgbW9yZSBleHBsaWNpdDsgdGhlIHJpZ2h0IGFwcHJvYWNoIGlzIHRvIGVuYWJsZSBzb21ldGhpbmcgdGhhdCBzZWxlY3RzIGl0LCBhbmQgdGhhdCB3b3VsZCBiZSBgVlhMQU5gLCBgR0VORVZFYCwgb3IgZXZlbiBgTkVUX0ZPVWAuIE1ha2VzIHNlbnNlLlxuXG5UbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYWxsIG9mIHRoaXMgd29ya3MsIGxldCdzIGRpdmUgaW50byB0aGUgY29kZS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEkgbmVlZCB0byByZXZpZXcgd2hhdCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGZyb20gdGhhdCBmaWxlLCBhbmQgYWxzbyB3aGVyZSBpbiB0aGUga2VybmVsIGNvZGUgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaG93IHRoZSBVRFAgdHVubmVsIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgYW5kIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NDkuODkyNTc3NzYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTMzMzgxODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NTAuMTA1OTIzMzMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTQ5MTc0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBNaXNzaW5nIFN5bWJvbCoqXG5cbkhtbSwgc3RyYW5nZS4gSSB3YXMgZXhwZWN0aW5nIGB1ZHBfdHVubmVsX25pYy5jYCB0byBleHBvcnQgc29tZXRoaW5nLCBidXQgSSdtIG5vdCBzZWVpbmcgYW55IGBFWFBPUlRfU1lNQk9MYCBtYWNybyBpbiB0aGF0IGZpbGUuIFRoYXQncyB1bnVzdWFsLCBlc3BlY2lhbGx5IGZvciBhIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnQuIE9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgd2hlcmUgdGhlIHJlbGV2YW50IHN5bWJvbHMgKnNob3VsZCogYmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiBhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGEgYnJvYWRlciBkZWZpbml0aW9uIGxpdmVzIGluIGVpdGhlciBgbmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNgIG9yLCBwb3RlbnRpYWxseSwgaW4gYW5vdGhlciBmaWxlIGFsc28gaW4gdGhlIGBuZXQvaXB2NGAgZGlyZWN0b3J5IHN1Y2ggYXMgdGhlIGB1ZHBfdHVubmVsX25pYy5jYCBmaWxlIGFnYWluLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRocm91Z2ggb25lIG9mIHRob3NlIHNvdXJjZSBmaWxlcyB0byBzZWUgaWYgYSBzaW1pbGFyIHN5bWJvbCBleHBvcnQgZXhpc3RzIG9yIGlmIGl0J3MgcGxhY2VkIGRpZmZlcmVudGx5LiBMZXQgbWUgY2hlY2sgdGhlIGV4cG9ydHMgaW4gdGhvc2UgZmlsZXMgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkgc3VzcGVjdCB0aGUgY29yZSBkZWZpbml0aW9ucyB3aWxsIGJlIGluIG9uZSBvZiB0aG9zZSBzcG90cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk5NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjUzLjcyMDg0NDAzMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzYzMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTI9aW50IHVkcF9zb2NrX2NyZWF0ZTQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdWRwX3BvcnRfY2ZnICpjZmcsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy01OS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6NjA6RVhQT1JUX1NZTUJPTCh1ZHBfc29ja19jcmVhdGU0KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy02MS1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTcxPXZvaWQgc2V0dXBfdWRwX3R1bm5lbF9zb2NrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtOTctfVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX3VkcF90dW5uZWxfc29jayk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtOTktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMTE6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTExMi1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMTM9dm9pZCB1ZHBfdHVubmVsX2Ryb3BfcnhfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjMtfVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEyNDpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX2Ryb3BfcnhfcG9ydCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTI1LVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTI3PXZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQ0LX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDU6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0Ni1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTE0OD12b2lkIHVkcF90dW5uZWxfbm90aWZ5X2RlbF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE2NS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MTY2OkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfbm90aWZ5X2RlbF9yeF9wb3J0KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNjctXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTY4PXZvaWQgdWRwX3R1bm5lbF94bWl0X3NrYihzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTg5LX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxOTA6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF94bWl0X3NrYik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTkxLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTE5Mj12b2lkIHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE5OS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MjAwOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfc29ja19yZWxlYXNlKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0yMDEtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MjAyPXN0cnVjdCBtZXRhZGF0YV9kc3QgKnVkcF90dW5fcnhfZHN0KHN0cnVjdCBza19idWZmICpza2IsICB1bnNpZ25lZCBzaG9ydCBmYW1pbHksXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0yMjItfVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjIyMzpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVuX3J4X2RzdCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMjI0LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTIyNT1zdHJ1Y3QgcnRhYmxlICp1ZHBfdHVubmVsX2RzdF9sb29rdXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTI3MS19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MjcyOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF90dW5uZWxfZHN0X2xvb2t1cCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMjczLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NTo1My44MzIyMTMwOTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4NzI2NjEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqVURQIFR1bm5lbCBOSUMgTW9kdWxlIC0gUmUtRXhhbWluYXRpb24qKlxuXG5IbW0sIHRoYXQncyBvZGQuIEkgd2FzIGp1c3Qgd29ya2luZyB3aXRoIGB1ZHBfdHVubmVsX25pYy5jYCwgYW5kIHNvbWV0aGluZyBmZWx0IG9mZi4gSSdtIGFsbW9zdCBjZXJ0YWluIEkgd2FzIGxvb2tpbmcgZm9yIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIG9yIHN5bWJvbCwgYnV0IG5vdyBJJ20gZHJhd2luZyBhIGJsYW5rLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2R1bGUgKml0c2VsZiogaXNuJ3QgZXhwb3NpbmcgYW55dGhpbmcgZGlyZWN0bHkuIE9rYXksIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgY29kZSdzIHNvdXJjZS4gQmV0dGVyIGdvIGJhY2sgYW5kIGNvbmZpcm0gbXkgYXNzdW1wdGlvbiwgZXNwZWNpYWxseSB0aGUgZmlsZSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIFRoZXJlIGhhcyB0byBiZSBhIHJlYXNvbiB3aHkgSSB3YXMgbG9va2luZyBhdCB0aGF0IGZpbGUuIFBlcmhhcHMgSSB3YXMgZm9jdXNlZCBvbiB0aGUgaW50ZXJuYWwgbWVjaGFuaXNtcyBhbmQgZ290IGxvc3QgaW4gdGhlIGZsb3cuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzIOKAkyBtYXliZSBteSBnb2FsIGhhcyBjaGFuZ2VkLCBvciB0aGUgZnVuY3Rpb25hbGl0eSBJIGFzc3VtZWQgd2FzIHRoZXJlLCBzaW1wbHkgaXNuJ3QuIFRpbWUgZm9yIGFub3RoZXIgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ0MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU1OjU3LjUxOTQ4MjM1MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgxNDc1MjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTU6NTcuNjA3NjM0OTE4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMzEzNTIwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIE1vZHVsZSBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBtb2R1bGUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIHN5bWJvbCBJIG5lZWQgbWlnaHQgYmUgZXhwb3J0ZWQgZnJvbSBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEJ1dCBJIGRpZG4ndCBpbW1lZGlhdGVseSBzZWUgaXQsIHdoaWNoIGlzIGZydXN0cmF0aW5nLiBIb2xkIG9uLCBsZXQncyBzdGVwIGJhY2sgZm9yIGEgc2Vjb25kIOKAkyBgdWRwX3R1bm5lbF9uaWMuY2AgaXNuJ3QgYSBzdGFuZGFsb25lIG9iamVjdDsgaXQncyBjb21waWxlZCBpbnRvIGB1ZHBfdHVubmVsLm9gIGFsb25nIHdpdGggYHVkcF90dW5uZWxfY29yZS5jYC4gSG1tLCByaWdodCwgc28gbG9va2luZyBhdCAqanVzdCogYHVkcF90dW5uZWxfbmljLmNgIG1pZ2h0IGJlIHRvbyBuYXJyb3cuXG5cbkFscmlnaHQsIGxldCdzIGdvIGJhY2sgYW5kIGV4cGxpY2l0bHkgc2VhcmNoIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGZvciBgRVhQT1JUX1NZTUJPTGAuIEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuICpXYWl0Ki4uLiBJICpqdXN0KiBkaWQgdGhhdCwgZGlkbid0IEk/IE9rYXksIG5vLCBubywgbGV0J3Mgbm90IGdldCBhaGVhZCBvZiBvdXJzZWx2ZXMuIExldCdzIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIGEgc3lzdGVtYXRpYyBhcHByb2FjaC4gTGV0J3Mgc2hpZnQgb3VyIGZvY3VzIHRvIGxvb2tpbmcgZGlyZWN0bHkgZm9yIGZ1bmN0aW9ucyBiZWdpbm5pbmcgd2l0aCBgdWRwX3R1bm5lbF9uaWNfYCB3aXRoaW4gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLCBhbmQgc2VlaW5nIHdoYXQgdGhhdCB0dXJucyB1cC4gSG9wZWZ1bGx5LCBzb21ldGhpbmcgd2lsbCBqdW1wIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzczMCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjowMS45Mzg5ODk5NzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTkzNjE4MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZvaWQgdWRwX3R1bm5lbF9uaWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjAyLjExMDkzMjk3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk1MDYxMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGB1ZHBfdHVubmVsX25pYy5jYCBmb3IgUmVkIEZsYWdzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBob3cgVURQIHR1bm5lbGluZyB3b3JrcywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYXJvdW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIG9yIG1heWJlIGp1c3Qgb3Zlcmxvb2tlZCBjb2RlLiBJIG5lZWQgdG8gYmUgKnRob3JvdWdoKiB3aGVuIGluc3BlY3RpbmcgbmV0d29ya2luZyBjb2RlLlxuXG5JIHdhbnQgdG8gZGl2ZSBpbnRvIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYC4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBhIHRhcmdldGVkIGNvZGUgcmV2aWV3LiBJJ20gZm9jdXNpbmcgb24gdGhlIGB1ZHBfdHVubmVsX25pY19gIGZ1bmN0aW9ucy4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSB3YW50IHRvIGlkZW50aWZ5IGFueSBgdWRwX3R1bm5lbF9uaWNfYCBmdW5jdGlvbnMgdGhhdCAqZG9uJ3QqIGV4cGxpY2l0bHkgZGVjbGFyZSBhIHJldHVybiB0eXBlIG9mIGB2b2lkYC4gVGhhdCdzIGEgY2xhc3NpYyBjb2RlIHNtZWxsLiBOb24tdm9pZCBmdW5jdGlvbnMgd2l0aG91dCBhIHJldHVybiB2YWx1ZSBwcmVzZW50IGNhbiBiZSBhIHNvdXJjZSBvZiBwcm9ibGVtcywgdW5kZWZpbmVkIGJlaGF2aW9yLCBvciBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBidWdzIGR1ZSB0byB1bmV4cGVjdGVkIHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgbm90IGhhbmRsZWQuIEl0J3MgYSBxdWljayB3YXkgdG8gZmxhZyBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gZGF0YSBoYW5kbGluZywgZXJyb3IgY29uZGl0aW9ucywgb3Igc2VjdXJpdHkuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IGNvdWxkIGRldmlhdGUgZnJvbSBleHBlY3RlZCBiZWhhdmlvciBvciBwcm92aWRlIGFuIHVuaW50ZW5kZWQgb3Bwb3J0dW5pdHkgZm9yIG1hbmlwdWxhdGlvbi4gSXQncyBhIHF1aWNrIHNjYW4gdG8gbWFrZSBzdXJlIHRoZSBiYXNpY3MgYXJlIGNvdmVyZWQsIGFuZCBub3RoaW5nIGNyaXRpY2FsIGlzIHNsaXBwaW5nIHRocm91Z2ggdGhlIGNyYWNrcy4gVGltZSB0byBzdGFydCBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MDUuOTA1OTk2NjMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIxMzU5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NzAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTEtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMjplbnVtIHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5X2ZsYWdzIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzLVxcdFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERFxcdD0gQklUKDApLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xOC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE5OnN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMC1cXHRfX2JlMTYgcG9ydDtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAtXFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJpZXNbXSBfX2NvdW50ZWRfYnkobl90YWJsZXMpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTItfTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTYtICovXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NzpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU4LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTk6c3RhdGljIGNvbnN0IGNoYXIgKnVkcF90dW5uZWxfbmljX3R1bm5lbF90eXBlX25hbWUodW5zaWduZWQgaW50IHR5cGUpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MC17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTczPXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NDp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MDp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19wcmVzZW50KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg1PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcm96ZW4oc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTE9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkyOnVkcF90dW5uZWxfbmljX2VudHJ5X2ZyZWV6ZV91c2VkKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05My17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5NDpcXHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTUtXFx0XFx0ZW50cnktXFx1MDAzZWZsYWdzIHw9IFVEUF9UVU5ORUxfTklDX0VOVFJZX0ZST1pFTjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTg9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk5OnVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDAte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMDQ9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwNTp1ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwNi17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTExMT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTEyOnVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTEzOlxcdFxcdFxcdCAgIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMTQtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEyMD1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTIxOnVkcF90dW5uZWxfbmljX3RpX2Zyb21fZW50cnkoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEyMi1cXHRcXHRcXHQgICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzA9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMTp1ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzMi17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMzM6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzQtXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzNy1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM4OlxcdFxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdKSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEzOS1cXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE0Mz1zdGF0aWMgYm9vbFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ0OnVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNDUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE0Ny1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTUyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1MzpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NC1cXHRcXHRpZiAoIXRlc3RfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCkpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1Ny1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgdGFibGUtXFx1MDAzZW5fZW50cmllczsgaisrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTU4OlxcdFxcdFxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU5LVxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNjU9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE2NjpfX3VkcF90dW5uZWxfbmljX2dldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE2Ny1cXHRcXHRcXHQgIHVuc2lnbmVkIGludCBpZHgsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTY4LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE2OTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTcwLVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNzUtXFx0aWYgKGVudHJ5LVxcdTAwM2V1c2VfY250KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTc2OlxcdFxcdHVkcF90dW5uZWxfbmljX3RpX2Zyb21fZW50cnkoZW50cnksIHRpKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE3Ny19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE3OT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTgwOl9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODEtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBpZHgsIHU4IHByaXYpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE4Nj1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTg3OnVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODgtXFx0XFx0XFx0XFx0IGludCBlcnIpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIwOT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEwOnVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjExLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjEzLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIxNDpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjE1LVxcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gdGk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxOC1cXHRlbnRyeSA9IFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMTk6XFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjIwLVxcdFxcdHJldHVybjtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyMS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyMjpcXHR1ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KGVudHJ5LCBcXHUwMDI2dGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjIzLVxcdGlmIChlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjQ6XFx0XFx0ZXJyID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjUtXFx0ZWxzZVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI2OlxcdFxcdGVyciA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldW5zZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRpKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyODpcXHR1ZHBfdHVubmVsX25pY19lbnRyeV91cGRhdGVfZG9uZShlbnRyeSwgZXJyKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyOS1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjMzLVxcdFxcdFxcdCAgICBiZTE2X3RvX2NwdShlbnRyeS1cXHUwMDNlcG9ydCksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMzQ6XFx0XFx0XFx0ICAgIHVkcF90dW5uZWxfbmljX3R1bm5lbF90eXBlX25hbWUoZW50cnktXFx1MDAzZXR5cGUpLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjM1LVxcdFxcdFxcdCAgICBlcnIpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMzg9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIzOTp1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDEte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQyOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQzLVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNDYtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NzpcXHRcXHRcXHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoZGV2LCB1dG4sIGksIGopO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQ4LX1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUwPXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTE6dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTMte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjU0OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjU1LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNjAtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI2MTpcXHRcXHRcXHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcXVldWVkKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjYyLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzEtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjcyOlxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzMtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNzQtXFx0XFx0XFx0ZW50cnkgPSBcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjc1OlxcdFxcdFxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjc2OlxcdFxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKGVudHJ5LCBlcnIpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjc3LVxcdFxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjgxPXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODI6X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4My17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4Ni1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI4NzpcXHRpZiAoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzeW5jX3RhYmxlKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mjg4OlxcdFxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4OS1cXHRlbHNlXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTA6XFx0XFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yOTEtXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5NS1cXHQgKi9cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI5NjpcXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yOTctfVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yOTk9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwMDp1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwMS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwNC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwNTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrLCAwKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMwNi19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwOD1zdGF0aWMgYm9vbFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzA5OnVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEwLVxcdFxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMTU9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxNjp1ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzE3LVxcdFxcdFxcdCAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTgte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzE5OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzIwLVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMyODpcXHRcXHRpZiAodWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZShcXHUwMDI2aW5mby1cXHUwMDNldGFibGVzW2ldLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjktXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMzMz1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozMzQ6dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMzNS1cXHRcXHRcXHQgICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM2LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNzpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzODpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzM5LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDQtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNDU6XFx0XFx0XFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzQ2LVxcdFxcdFxcdCAgICBlbnRyeS1cXHUwMDNlcG9ydCA9PSB0aS1cXHUwMDNlcG9ydCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNTU9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM1Njp1ZHBfdHVubmVsX25pY19lbnRyeV9hZGooc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXFx0XFx0XFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzU4LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM1OTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNjAtXFx0Ym9vbCBkb2RneSA9IGVudHJ5LVxcdTAwM2VmbGFncyBcXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX09QX0ZBSUw7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM4OS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM5MDpcXHR1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZSh1dG4sIGVudHJ5LCB0byk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTEtfVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zOTM9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM5NDp1ZHBfdHVubmVsX25pY19lbnRyeV90cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzk1LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHRhYmxlLCB1bnNpZ25lZCBpbnQgaWR4LFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTcte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mzk4OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkgPSAgXFx1MDAyNnV0bi1cXHUwMDNlZW50cmllc1t0YWJsZV1baWR4XTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM5OS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQwMDpcXHRpZiAodWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgfHxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQwMS1cXHQgICAgZW50cnktXFx1MDAzZXBvcnQgIT0gdGktXFx1MDAzZXBvcnQgfHxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA0LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDA1OlxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcm96ZW4oZW50cnkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA2LVxcdFxcdHJldHVybiB0cnVlO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDA3LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDA4OlxcdHVkcF90dW5uZWxfbmljX2VudHJ5X2Fkaih1dG4sIHRhYmxlLCBpZHgsIHVzZV9jbnRfYWRqKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQwOS1cXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDE3PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MTg6dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDE5LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDIwLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQyMTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjItXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQyNC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjU6XFx0XFx0dGFibGUgPSBcXHUwMDI2ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2V0YWJsZXNbaV07XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjY6XFx0XFx0aWYgKCF1ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKHRhYmxlLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQyOS1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgdGFibGUtXFx1MDAzZW5fZW50cmllczsgaisrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMwOlxcdFxcdFxcdGlmICh1ZHBfdHVubmVsX25pY19lbnRyeV90cnlfYWRqKHV0biwgaSwgaiwgdGksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHVzZV9jbnRfYWRqKSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDM4PXN0YXRpYyBib29sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Mzk6dWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDQwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0MS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDI6XFx0cmV0dXJuIHVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZyhkZXYsIHV0biwgdGksICsxKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0My19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0NT1zdGF0aWMgYm9vbFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDQ2OnVkcF90dW5uZWxfbmljX2RlbF9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0Ny1cXHRcXHRcXHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDgte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDQ5OlxcdHJldHVybiB1ZHBfdHVubmVsX25pY190cnlfZXhpc3RpbmcoZGV2LCB1dG4sIHRpLCAtMSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTAtfVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NTI9c3RhdGljIGJvb2xcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ1Mzp1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU0LVxcdFxcdCAgICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1NS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NTY6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU3LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYwOlxcdFxcdHRhYmxlID0gXFx1MDAyNmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldGFibGVzW2ldO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDYxOlxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDYyLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjQtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIHRhYmxlLVxcdTAwM2VuX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDY1OlxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjYtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjctXFx0XFx0XFx0ZW50cnkgPSBcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDY4OlxcdFxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjktXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ3My1cXHRcXHRcXHRlbnRyeS1cXHUwMDNldXNlX2NudCA9IDE7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NzQ6XFx0XFx0XFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUodXRuLCBlbnRyeSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ3NS1cXHRcXHRcXHRcXHRcXHRcXHQgICBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00ODk9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5MDpfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkxLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5MjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ5My1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTA2LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTA3OlxcdGlmICghdWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShkZXYsIHV0biwgdGkpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTA4LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTEzLVxcdCAqL1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTE0OlxcdGlmICh1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKGRldiwgdXRuLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MTUtXFx0XFx0cmV0dXJuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE2LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTE3OlxcdGlmICghdWRwX3R1bm5lbF9uaWNfYWRkX2V4aXN0aW5nKGRldiwgdXRuLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MTg6XFx0XFx0dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhkZXYsIHV0biwgdGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTE5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTIwOlxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUyMS19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTUyMz1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTI0Ol9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MjUte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzEtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1MzI6XFx0aWYgKCF1ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKGRldiwgdXRuLCB0aSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzMtXFx0XFx0cmV0dXJuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM0LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTM1OlxcdHVkcF90dW5uZWxfbmljX2RlbF9leGlzdGluZyhkZXYsIHV0biwgdGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTM2LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTM3OlxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUzOC19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MzktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NDA6c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0MS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NDI6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NDMtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU1NC1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NTU6XFx0XFx0XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU1Ni1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTY1LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTY2OlxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHV0biwgZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgVURQX1RVTk5FTF9OSUNfRU5UUllfQUREKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTY5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTcwOlxcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoZGV2LCB1dG4pO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTcxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NzU9c3RhdGljIHNpemVfdFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTc2Ol9fdWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU3Ny17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1Nzg6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NzktXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU4OC1cXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW3RhYmxlXS5uX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg5OlxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcHJlc2VudChcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW3RhYmxlXVtqXSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01OTAtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYwMD1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDE6X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMi1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwMy17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDQ6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MDUtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMy1cXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW3RhYmxlXS5uX2VudHJpZXM7IGorKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjE0OlxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfcHJlc2VudChcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW3RhYmxlXVtqXSkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MTUtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYzNi1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYzNzpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYzOC17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0NS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY0NjpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0Ny17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY1NC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY1NTpzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU2LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjYzLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY1OlxcdC5nZXRfcG9ydFxcdD0gX191ZHBfdHVubmVsX25pY19nZXRfcG9ydCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY2NjpcXHQuc2V0X3BvcnRfcHJpdlxcdD0gX191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY3OlxcdC5hZGRfcG9ydFxcdD0gX191ZHBfdHVubmVsX25pY19hZGRfcG9ydCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY2ODpcXHQuZGVsX3BvcnRcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Njk6XFx0LnJlc2V0X250ZlxcdD0gX191ZHBfdHVubmVsX25pY19yZXNldF9udGYsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzA6XFx0LmR1bXBfc2l6ZVxcdD0gX191ZHBfdHVubmVsX25pY19kdW1wX3NpemUsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzE6XFx0LmR1bXBfd3JpdGVcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZHVtcF93cml0ZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3MjpcXHQuYXNzZXJ0X2xvY2tlZFxcdD0gX191ZHBfdHVubmVsX25pY19hc3NlcnRfbG9ja2VkLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjczOlxcdC5sb2NrXFx0XFx0PSBfX3VkcF90dW5uZWxfbmljX2xvY2ssXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NzQ6XFx0LnVubG9ja1xcdFxcdD0gX191ZHBfdHVubmVsX25pY191bmxvY2ssXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzUtfTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njc3PXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzg6dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02Nzkte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjgwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjgxLVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODctXFx0XFx0XFx0aWYgKGFkal9jbnQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2ODg6XFx0XFx0XFx0XFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfYWRqKHV0biwgaSwgaiwgYWRqX2NudCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODktXFx0XFx0fVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjkwLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjkxOlxcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoZGV2LCB1dG4pO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjkyLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03MDA9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjcwMTp1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MDIte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzAzOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzA0OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwNS1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzExLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTI6XFx0XFx0XFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXFx1MDAyNnV0bi1cXHUwMDNlZW50cmllc1tpXVtqXSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTMtXFx0dXRuLVxcdTAwM2VtaXNzZWQgPSAwO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MjQtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjcyNTpcXHRcXHRcXHR1ZHBfdHVubmVsX25pY19lbnRyeV91bmZyZWV6ZShcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcyNi19XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MjctXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mjg6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03Mjkte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzMtXFx0LyogV2UgY2Fubm90IGJsb2NrIG9uIFJUTkwgaGVyZSwgb3RoZXJ3aXNlIHdlIHdvdWxkIGRlYWRsb2NrIHdpdGhcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjczNDpcXHQgKiB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKCkgY2FsbGluZyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM1LVxcdCAqIHdoaWxlIGhvbGRpbmcgUlROTC4gUmVxdWV1ZSB3aXRoIDEgamlmZnkgZGVsYXkgaWYgUlROTCBpcyBjb250ZW5kZWQuXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTczNy1cXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzg6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXFx1MDAyNnV0bi1cXHUwMDNld29yaywgMSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzktXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NDEtXFx0bXV0ZXhfbG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc0MjpcXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cXHUwMDNlZGV2LCB1dG4pO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzQzLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzQ0LVxcdGlmICh1dG4tXFx1MDAzZW5lZWRfcmVwbGF5KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzQ1OlxcdFxcdHVkcF90dW5uZWxfbmljX3JlcGxheSh1dG4tXFx1MDAzZWRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc0Ni1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzUxPXN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzUyOnVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzUzLVxcdFxcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NjEtXFx0dXRuLVxcdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzYyOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzYzLVxcdG11dGV4X2luaXQoXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc4MC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc4MTpzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzgyLXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzg5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzkwOnN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc5MS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTI6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTM6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlID0gTlVMTDtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc5NC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODMxLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODMyOlxcdGlmIChpbmZvLVxcdTAwM2VzaGFyZWQgXFx1MDAyNlxcdTAwMjYgaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MzM6XFx0XFx0dXRuID0gaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM0LVxcdH0gZWxzZSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MzU6XFx0XFx0dXRuID0gdWRwX3R1bm5lbF9uaWNfYWxsb2MoaW5mbywgbl90YWJsZXMpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM2LVxcdFxcdGlmICghdXRuKSB7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Mi1cXHRpZiAoaW5mby1cXHUwMDNlc2hhcmVkKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NDM6XFx0XFx0aWYgKCFpbmZvLVxcdTAwM2VzaGFyZWQtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0NC1cXHRcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2VkZXZpY2VzKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0NTpcXHRcXHRcXHRpbmZvLVxcdTAwM2VzaGFyZWQtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB1dG47XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDYtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NTUtXFx0aWYgKCEoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19JTkZPX09QRU5fT05MWSkpIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg1NjpcXHRcXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NTctXFx0XFx0dWRwX3R1bm5lbF9nZXRfcnhfaW5mbyhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODU4OlxcdFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODU5LVxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY0PXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NjU6dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2Ni17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njc6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjgtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njk6XFx0dWRwX3R1bm5lbF9uaWNfbG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODcwLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NzQtXFx0aWYgKGluZm8tXFx1MDAzZXNoYXJlZCkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODc1OlxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSwgKmZpcnN0O1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODc2LVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODAtXFx0XFx0aWYgKGxpc3RfZW50cnlfaXNfaGVhZChub2RlLCBcXHUwMDI2aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2VkZXZpY2VzLCBsaXN0KSkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODgxOlxcdFxcdFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODgyLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODkyLVxcdFxcdFxcdHV0bi1cXHUwMDNlZGV2ID0gZmlyc3QtXFx1MDAzZWRldjtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg5MzpcXHRcXHRcXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5NC1cXHRcXHRcXHRnb3RvIHJlbGVhc2VfZGV2O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OTYtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4OTc6XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5OC1cXHR9XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkwMi1cXHQgKi9cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkwMzpcXHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MDQ6XFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MDUtXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkxMS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkxMjpcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MTMtcmVsZWFzZV9kZXY6XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxOD1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTk6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjowNi4wNjgxNDE1OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2MjgzMDE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgVURQIFR1bm5lbCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB1ZHBfdHVubmVsX25pYy5jYCBoZXJlLiBUaGUgcXVpY2sgc2NhbiB0ZWxscyBtZSB0aGlzIGlzbid0IG1lYW50IGZvciBkaXJlY3QgbW9kdWxlIGFjY2VzczsgaXQncyBtb3JlIG9mIGFuIGludGVybmFsIHBpZWNlLCBwcm9iYWJseSBsaW5rZWQgaW50byB0aGUgY29yZSBVRFAgdHVubmVsaW5nIGxvZ2ljLCBsaWtlbHkgd2l0aGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuY2AuIE9yIG1heWJlIGl0J3MgaGFuZGxpbmcgYSBuZXRkZXZpY2Ugbm90aWZpZXIuIEkndmUgZ290IHRvIGZpbmQgb3V0IHdoaWNoLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gaG9uZSBpbiBvbiBlaXRoZXIgdGhlIGB1ZHBfdHVubmVsX25pY19pbml0YCBmdW5jdGlvbiBvciB0aGUgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgZnVuY3Rpb24uIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gaXMsIHdoZXJlIEknbGwgc2VlIGhvdyB0aGlzIHRoaW5nIGdldHMgaW50ZWdyYXRlZCBvciBob3cgaXQncyBvYnNlcnZpbmcgbmV0d29yayBldmVudHMuIE9uY2UgSSBrbm93ICp0aGF0KiwgSSdsbCBoYXZlIGEgbXVjaCBiZXR0ZXIgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MjMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxMC4wMzA5NzQ3MDhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODc1MjEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkxOD1zdGF0aWMgaW50XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTk6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTIwLVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk2OT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHVkcF90dW5uZWxfbmljX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5NzA6XFx0Lm5vdGlmaWVyX2NhbGwgPSB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NzEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MTAuMzQ5NzM2MjYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODcxNzU3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gYHVkcF90dW5uZWxfbmljLmNgIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIHdvcmtzLiBGaXJzdCB0aGluZyBJIHNlZSBpcyB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgbmV0ZGV2aWNlIG5vdGlmaWVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhwb3NlZCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgaXMgdGhlIGtleSDigJMgdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIEl0IGNhbGxzIHRoaW5ncyBsaWtlIGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYW5kIGB1ZHBfdHVubmVsX25pY19mbHVzaGAuIEFscmlnaHQsIHNvIHRoZSBlbnRyeSBwb2ludHMgYXJlIHRyaWdnZXJlZCBieSBuZXRkZXZpY2UgZXZlbnRzOiBgTkVUREVWX1JFR0lTVEVSYCwgYE5FVERFVl9VTlJFR0lTVEVSYCwgYE5FVERFVl9VUGAsIGBORVRERVZfRE9XTmDigKYgdGhhdCBtYWtlcyBzZW5zZS5cblxuVGhlbiBJIHNlZSBjYWxscyB0byBgdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgLiBXaGVyZSBhcmUgdGhlc2UgdHJpZ2dlcmVkIGZyb20/IE9oLCBsb29rcyBsaWtlIHRoZXkncmUgY2FsbGVkIGZyb20gYHVkcF90dW5uZWxfZ2V0X3J4X2luZm9gIG9yIHNvbWV0aGluZyBzaW1pbGFyLlxuXG5XYWl0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSXMgYHVkcF90dW5uZWxfbmljX29wc2AgdXNlZCBpbiBgdWRwX3R1bm5lbF9jb3JlLmNgPyBObywgaXQgbG9va3MgbGlrZSBpdCdzIHN0YXRpYyB3aXRoaW4gYHVkcF90dW5uZWxfbmljLmNgLiBPa2F5LCBub3cgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9fdWRwX3R1bm5lbF9uaWNfb3BzYCBpcyB1c2VkIGluc3RlYWQuIFRoYXQncyB0aGUgbmV4dCBwb2ludCBvZiBpbnRlcmVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MTQuOTM2OTE2NTkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM2MjkyNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX191ZHBfdHVubmVsX25pY19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY1NT1zdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NjMtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NjQ6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMgX191ZHBfdHVubmVsX25pY19vcHMgPSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NjUtXFx0LmdldF9wb3J0XFx0PSBfX3VkcF90dW5uZWxfbmljX2dldF9wb3J0LFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05NzM9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTgxLVxcdHJ0bmxfbG9jaygpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTgyOlxcdHVkcF90dW5uZWxfbmljX29wcyA9IFxcdTAwMjZfX3VkcF90dW5uZWxfbmljX29wcztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk4My1cXHRydG5sX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxNS4xODA1NTE5MjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2ODkwOTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgdWRwX3R1bm5lbF9uaWNfb3BzYCBQb2ludGVyKipcblxuT2theSwgc28gSSBzZWUgYHVkcF90dW5uZWxfbmljX29wc2AuIFRoYXQncyBhIGdsb2JhbCBwb2ludGVyLCByaWdodD8gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IGl0J3MgbGlrZWx5IGRlZmluZWQgaW4gZWl0aGVyIGBuZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuY2Agb3IgcGVyaGFwcyB3aXRoaW4gYGluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaGAuIEdpdmVuIGl0cyBuYW1lLCBpdCBwcm9iYWJseSBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggTmV0d29yayBJbnRlcmZhY2UgQ29udHJvbGxlciAoTklDKSBvcGVyYXRpb25zIGZvciBVRFAgdHVubmVscy4gSSdkIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbG9jYXRpb24gdG8ga25vdyBmb3IgY2VydGFpbiwgYnV0IHRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBsb29raW5nIGZvciBpdHMgZGVjbGFyYXRpb24uIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIGl0cyB1c2FnZSBhbmQgZmlndXJlIG91dCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIHR1bm5lbCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4MzksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxOC42NDk0NjU2NTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjM0NjA2MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoxOC43NzE4MjA0NFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgwNjUxNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVRFAgVHVubmVsIEhlYWRlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIFVEUCB0dW5uZWxpbmcgaXMgaW1wbGVtZW50ZWQsIHBhcnRpY3VsYXJseSBhdCB0aGUga2VybmVsIGxldmVsLiBMZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgIGhlYWRlciBmaWxlLiBUaGlzIGlzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzIHRoYXQgZGVmaW5lIHRoZSB0dW5uZWwncyBiZWhhdmlvdXIuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGJ1aWxkaW5nIGJsb2NrczogSG93IGRvZXMgaXQgaGFuZGxlIGVuY2Fwc3VsYXRpb24sIHdoYXQgYXJlIHRoZSByZWxldmFudCBjb250cm9sIGZsYWdzLCB3aGF0IGtpbmQgb2Ygc29ja2V0IG9wdGlvbnMgbWlnaHQgYmUgZXhwb3NlZCwgYXJlIHRoZXJlIGFueSBjdXN0b20gcHJvdG9jb2wgaGVhZGVycyBJIG5lZWQgdG8ga25vdyBhYm91dD8gQXJlIHRoZXJlIGFueSBpbmRpY2F0aW9ucyBpbiBoZXJlIG9mIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBzdHJhdGVnaWVzIEkgbmVlZCB0byBjb25zaWRlciBsYXRlciBvbj8gSSdsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbnMsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgYW55IGlubGluZSBjb21tZW50cy4gVGhpcyBoZWFkZXIgZmlsZSB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb25hbCBjb250ZXh0IGZvciBkaXNzZWN0aW5nIHRoZSBhY3R1YWwgdHVubmVsaW5nIGxvZ2ljLiBIb3BlZnVsbHkgaXQncyB3ZWxsLWNvbW1lbnRlZC4gSSdsbCBiZSBtZW50YWxseSBtYXBwaW5nIHRoZSBkYXRhIGZsb3cgdG8gcHJlcGFyZSBmb3IgbW9yZSBpbnRlbnNlIGRlYnVnZ2luZyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwOTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoyMi4zNTI0NzU0MTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTkzMDQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yOTc9c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8ge1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTMyOC0gKi9cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzI5OnN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMzAtXFx0dm9pZCAoKmdldF9wb3J0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzQ2LSNpZmRlZiBDT05GSUdfSU5FVFxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNDc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMgKnVkcF90dW5uZWxfbmljX29wcztcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzQ4LSNlbHNlXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM0OTojZGVmaW5lIHVkcF90dW5uZWxfbmljX29wc1xcdCgoc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyAqKU5VTEwpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM1MC0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zNTM9dWRwX3R1bm5lbF9uaWNfZ2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM2My1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzY0OlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM2NTpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWdldF9wb3J0KGRldiwgdGFibGUsIGlkeCwgdGkpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNjYtfVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM2OT11ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zNzEte1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNzI6XFx0aWYgKHVkcF90dW5uZWxfbmljX29wcykge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozNzM6XFx0XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2Vhc3NlcnRfbG9ja2VkKGRldik7XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM3NDpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZXNldF9wb3J0X3ByaXYoZGV2LCB0YWJsZSwgaWR4LCBwcml2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzc1LVxcdH1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zNzg9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX2Fzc2VydF9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzc5LXtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzgwOlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM4MTpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWFzc2VydF9sb2NrZWQoZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzgyLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zODQ9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzg1LXtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzg2OlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM4NzpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzg4LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTA9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfbmljX3VubG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zOTEte1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDozOTI6XFx0aWYgKHVkcF90dW5uZWxfbmljX29wcylcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzkzOlxcdFxcdHVkcF90dW5uZWxfbmljX29wcy1cXHUwMDNldW5sb2NrKGRldik7XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5NC19XFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9Mzk3PXVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQwMC1cXHRcXHRyZXR1cm47XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQwMTpcXHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0MDI6XFx0XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2VhZGRfcG9ydChkZXYsIHRpKTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDAzLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD00MDY9dWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDA5LVxcdFxcdHJldHVybjtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDEwOlxcdGlmICh1ZHBfdHVubmVsX25pY19vcHMpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQxMTpcXHRcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWRlbF9wb3J0KGRldiwgdGkpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MTItfVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQyNj1zdGF0aWMgaW5saW5lIHZvaWQgdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTQyNy17XFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQyODpcXHRpZiAodWRwX3R1bm5lbF9uaWNfb3BzKVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0Mjk6XFx0XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2VyZXNldF9udGYoZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDMwLX1cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD00MzM9dWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzYtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQzNzpcXHRpZiAoIXVkcF90dW5uZWxfbmljX29wcylcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDM4LVxcdFxcdHJldHVybiAwO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00MzktXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ0MDpcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDQxOlxcdHJldCA9IHVkcF90dW5uZWxfbmljX29wcy1cXHUwMDNlZHVtcF9zaXplKGRldiwgdGFibGUpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NDI6XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2V1bmxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDQzLVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTQ0OD11ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00NTItXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1MzpcXHRpZiAoIXVkcF90dW5uZWxfbmljX29wcylcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU0LVxcdFxcdHJldHVybiAwO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC00NTUtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjQ1NjpcXHR1ZHBfdHVubmVsX25pY19vcHMtXFx1MDAzZWxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6NDU3OlxcdHJldCA9IHVkcF90dW5uZWxfbmljX29wcy1cXHUwMDNlZHVtcF93cml0ZShkZXYsIHRhYmxlLCBza2IpO1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDo0NTg6XFx0dWRwX3R1bm5lbF9uaWNfb3BzLVxcdTAwM2V1bmxvY2soZGV2KTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtNDU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjoyMi40NTQ0MTI0MjdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzOTg3Nzc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHVkcF90dW5uZWxfbmljX29wc2Agc3RydWN0dXJlKipcblxuUmlnaHQsIHNvIEkgc2VlIGB1ZHBfdHVubmVsX25pY19vcHNgIGlzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgdGhlIGlubGluZSBmdW5jdGlvbnMgZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oYC4gVGhpcyBzdWdnZXN0cyBpdCdzIGEgY3JpdGljYWwgc3RydWN0dXJlLCBwcm9iYWJseSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBwb2ludGVycyB0aGF0IGRlZmluZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBVRFAgdHVubmVsIG5ldHdvcmsgaW50ZXJmYWNlcy4gTm93LCBhIGdvb2QgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIHdvdWxkIGJlIHRvIHRyYWNlIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGZ1bmN0aW9uLCBhIGtleSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgaW50ZXJmYWNlLCBpcyBhY3R1YWxseSAqY2FsbGVkKiBmcm9tLiBUaGF0J2xsIHRlbGwgbWUgYSBsb3QgYWJvdXQgaG93IHRoZXNlIFVEUCB0dW5uZWwgaW50ZXJmYWNlcyBhcmUgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBzeXN0ZW0sIGdpdmluZyBtZSBjb250ZXh0IG9uIHRoZSBzdXJyb3VuZGluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDExMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjI1LjY5NDI5MzAzOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MDg3NTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTM5Nj1zdGF0aWMgaW5saW5lIHZvaWRcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzk3OnVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zOTgte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTA4LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEwOTpcXHR1ZHBfdHVubmVsX25pY19hZGRfcG9ydChkZXYsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEyNz12b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0MC1cXHRcXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM6MTQxOlxcdFxcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXFx1MDAyNnRpKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNDItXFx0XFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ4OT1zdGF0aWMgdm9pZFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDkwOl9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTEte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19vcHMgX191ZHBfdHVubmVsX25pY19vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2Ni1cXHQuc2V0X3BvcnRfcHJpdlxcdD0gX191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjY3OlxcdC5hZGRfcG9ydFxcdD0gX191ZHBfdHVubmVsX25pY19hZGRfcG9ydCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY2OC1cXHQuZGVsX3BvcnRcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjI4LjA2NTE3NTEzNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTM4MTUzMDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVURQIFR1bm5lbCBSWCBQb3J0IEZ1bmN0aW9uIENhbGxzKipcblxuUmlnaHQsIHNvIGB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydGAgYW5kIGB1ZHBfdHVubmVsX3B1c2hfcnhfcG9ydGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIGFuZCB0aGV5J3JlIGJvdGggZ2V0dGluZyBjYWxsZWQuIFRoZXkncmUgKmV4cG9ydGVkKiwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgdGhleSdyZSBwYXJ0IG9mIHNvbWUgcHVibGljIEFQSSBvciBpbnRlcmZhY2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGVyZSBgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgaW52b2NhdGlvbiwgc28gSSBjYW4gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yLiBUaW1lIHRvIHRyYWNlIHRob3NlIGNhbGxzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDk0NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjMxLjAwMzMzMTI1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUyMDk4MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9nZW5ldmUuYz0xMDExPXN0YXRpYyBzdHJ1Y3QgZ2VuZXZlX3NvY2sgKmdlbmV2ZV9zb2NrZXRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2dlbmV2ZS5jLTEwMzUtXFx0LyogSW5pdGlhbGl6ZSB0aGUgZ2VuZXZlIHVkcCBvZmZsb2FkcyBzdHJ1Y3R1cmUgKi9cXG5kcml2ZXJzL25ldC9nZW5ldmUuYzoxMDM2OlxcdHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHNrLCBVRFBfVFVOTkVMX1RZUEVfR0VORVZFKTtcXG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xMDM3LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTM1Nzc9c3RhdGljIHN0cnVjdCB2eGxhbl9zb2NrICp2eGxhbl9zb2NrZXRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgYm9vbCBpcHY2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2MDUtXFx0aGxpc3RfYWRkX2hlYWRfcmN1KFxcdTAwMjZ2cy1cXHUwMDNlaGxpc3QsIHZzX2hlYWQobmV0LCBwb3J0KSk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2MDY6XFx0dWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc2ssXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2MDctXFx0XFx0XFx0XFx0ICAgICAgKHZzLVxcdTAwM2VmbGFncyBcXHUwMDI2IFZYTEFOX0ZfR1BFKSA/XFxuLS1cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MTMyPXZvaWQgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0xMzMtXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MTM0OnZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMTM1LXZvaWQgdWRwX3R1bm5lbF9ub3RpZnlfZGVsX3J4X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCB0eXBlKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEyND1FWFBPUlRfU1lNQk9MX0dQTCh1ZHBfdHVubmVsX2Ryb3BfcnhfcG9ydCk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjYtLyogTm90aWZ5IG5ldGRldnMgdGhhdCBVRFAgcG9ydCBzdGFydGVkIGxpc3RlbmluZyAqL1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEyNzp2b2lkIHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0KHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgdHlwZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xMjgte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQ0LX1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDU6RVhQT1JUX1NZTUJPTF9HUEwodWRwX3R1bm5lbF9ub3RpZnlfYWRkX3J4X3BvcnQpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTE0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6NTY6MzIuOTU1NDM2NzI4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTE2NTg5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBVRFAgVHVubmVsIE9mZmxvYWQgZm9yIFZYTEFOIGFuZCBHRU5FVkUgaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IGBWWExBTmAgYW5kIGBHRU5FVkVgIGhhbmRsZSBVRFAgdHVubmVscywgYW5kIGl0IGxvb2tzIGxpa2UgdGhleSB1bHRpbWF0ZWx5IGNhbGwgYHVkcF90dW5uZWxfbm90aWZ5X2FkZF9yeF9wb3J0YC4gUmlnaHQgYXdheSwgdGhpcyB0ZWxscyBtZSB0aGF0IHdlIG5lZWQgdG8gZW5zdXJlIGJvdGggYFZYTEFOYCBhbmQgYEdFTkVWRWAgYXJlIGFjdGl2YXRlZCB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgLiBCdXQgaXQncyBub3QgZW5vdWdoIHRvIHNpbXBseSBlbmFibGUgdGhlIHByb3RvY29sczogSSBoYXZlIHRvIHRoaW5rIGFib3V0IG9mZmxvYWRpbmcuXG5cbk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHVkcF90dW5uZWxfbmljLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIGZvciBvZmZsb2FkaW5nIFVEUCB0dW5uZWxzIHRvIHRoZSBOSUMsIGFuZCBub3cgSSdtIGN1cmlvdXMgaWYgd2UgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGggd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiBhbnkgZW11bGF0ZWQgTklDIHN1cHBvcnRzIHRoaXMga2luZCBvZiBVRFAgdHVubmVsIG9mZmxvYWQuIEkga25vdyB0aGF0IGB1ZHBfdHVubmVsX25pY19pbmZvYCBpcyByZWdpc3RlcmVkIGJ5IHRoZSBOSUMgZHJpdmVyIGl0c2VsZiwgc28gdGhhdCdzIHRoZSBrZXkuIEkgaGF2ZSB0byBzaGlmdCBteSBmb2N1cyBhbmQgc3RhcnQgbG9va2luZyBhdCB3aGljaCBzcGVjaWZpYyBOSUMgZHJpdmVycyBhY3R1YWxseSByZWdpc3RlciB0aGlzIGluZm9ybWF0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgYW5zd2VyIHdpbGwgbGllLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc5OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1NjozNi44NDcxMDAyMjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNzE0NzAwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTg5NT1zdGF0aWMgaW50IHhnYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNy1cXHQuc2V0X3BvcnRcXHQ9IHhnYmVfdnhsYW5fc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxNTpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM9MTUyPWludCB4Z2JlX2NvbmZpZ19uZXRkZXYoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jOjI2MzpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8oKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYy0yNjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oPTEyOTY9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICp4Z2JlX2dldF9ldGh0b29sX29wcyh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6MTI5Nzpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC0xMjk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjExPXN0YXRpYyBpbnQgYm54MnhfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAyMjI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueDJ4X3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyMy1cXHQuc3luY190YWJsZVxcdD0gYm54MnhfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDQwPXN0YXRpYyBpbnQgYm54MnhfaW5pdF9kZXYoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDctXFx0XFx0aWYgKElTX1BGKGJwKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTMyMDg6XFx0XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmJueDJ4X3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNTk2Mj1zdGF0aWMgaW50IGJueHRfdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE1OTc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibnh0X3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc5LVxcdC5zZXRfcG9ydFxcdD0gYm54dF91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTItXFx0aWYgKGJwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJOWFRfRkxBR19DSElQX1A3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDUzOlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZibnh0X3VkcF90dW5uZWxzX3A3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDU0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1NTpcXHRcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Ym54dF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI2ODU9c3RhdGljIGludCBsaXF1aWRpb191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY5NjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Ny1cXHQuc2V0X3BvcnRcXHQ9IGxpcXVpZGlvX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMzIyPXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM1ODM6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmxpcXVpZGlvX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM1ODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xNzcyPXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3ODM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODQtXFx0LnNldF9wb3J0XFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTkxOT1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5My1cXHRcXHQgICAgKGxpby1cXHUwMDNlZW5jX2Rldl9jYXBhYmlsaXR5IFxcdTAwMjYgfk5FVElGX0ZfTFJPKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMDk0OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMDk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTktXFx0LnNldF9wb3J0XFx0PSBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz02NTcxPXN0YXRpYyBpbnQgaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAwLVxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VyYXdmX2NudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzo2ODAxOlxcdFxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZjeGdiX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYz0yMDc9c3RhdGljIGludCBlbmljX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyMjk6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVuaWNfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMzAtXFx0LnNldF9wb3J0XFx0PSBlbmljX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jPTI2NzU9c3RhdGljIGludCBlbmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTQ4LVxcdFxcdCAgICBlbmljLVxcdTAwM2V2eGxhbi5mbGFncyBcXHUwMDI2IEVOSUNfVlhMQU5fTVVMVElfV1EpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jOjI5NDk6XFx0XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmVuaWNfdWRwX3R1bm5lbHNfdjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUwLVxcdFxcdFxcdGlmIChlbmljLVxcdTAwM2V2eGxhbi5mbGFncyBcXHUwMDI2IEVOSUNfVlhMQU5fT1VURVJfSVBWNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jOjI5NTE6XFx0XFx0XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmVuaWNfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM9NDAxNT1zdGF0aWMgaW50IGJlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NDAzNDpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYmVfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDM1LVxcdC5zZXRfcG9ydFxcdD0gYmVfdnhsYW5fc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTUxNzk9c3RhdGljIHZvaWQgYmVfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNTIwNy1cXHRpZiAoIWxhbmNlcl9jaGlwKGFkYXB0ZXIpIFxcdTAwMjZcXHUwMDI2ICFCRXhfY2hpcChhZGFwdGVyKSBcXHUwMDI2XFx1MDAyNiAhYmVfaXNfbWMoYWRhcHRlcikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYzo1MjA4OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZiZV91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz00MDI9c3RhdGljIGludCBmbTEwa191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjQxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZm0xMGtfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtNDE4LVxcdC5zeW5jX3RhYmxlXFx0PSBmbTEwa191ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz0xNTQxPXN0cnVjdCBuZXRfZGV2aWNlICpmbTEwa19hbGxvY19uZXRkZXYoY29uc3Qgc3RydWN0IGZtMTBrX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjE1ODE6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmZtMTBrX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmg9NDY4PXN0cnVjdCBpNDBlX3BmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHVkcF90dW5uZWxfc2hhcmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oOjUyMjpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNjM3PXN0YXRpYyBpbnQgaTQwZV9jb25maWdfbmV0ZGV2KHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xMzY4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjgxOlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwZi1cXHUwMDNldWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xMzY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTM0NDM9c3RhdGljIHZvaWQgaWNlX3NldF9vcHMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM0NTQtXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmljZV9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM0NTU6XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnBmLVxcdTAwM2Vody51ZHBfdHVubmVsX25pYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU2LVxcdG5ldGRldi1cXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFxcdTAwMjZpY2VfeGRwX21kX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTM5NzA9aW50IGljZV9pbml0X3BmKHN0cnVjdCBpY2VfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM5NzI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnVkcF90dW5uZWxfbmljID0gXFx1MDAyNnBmLVxcdTAwM2Vody51ZHBfdHVubmVsX25pYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTczLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGljZV9wZl90b19kZXYocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmg9ODk5PXN0cnVjdCBpY2VfaHcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgtMTAxMS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHVkcF90dW5uZWxfc2hhcmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oOjEwMTI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgtMTAxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz01NDQ4PXN0YXRpYyBpbnQgaXhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY4LVxcdC5zeW5jX3RhYmxlXFx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ3NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2EgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzYtXFx0LnN5bmNfdGFibGVcXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMTU0OD1zdGF0aWMgaW50IGl4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNjk5LVxcdGNhc2UgaXhnYmVfbWFjX2U2MTA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExNzAwOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwMS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDItXFx0Y2FzZSBpeGdiZV9tYWNfeDU1MGVtX2E6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExNzAzOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTI2Mzk9c3RhdGljIGludCBtbHg0X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYzoyNjU3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBtbHg0X3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1OC1cXHQuc3luY190YWJsZVxcdD0gbWx4NF91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTMxNjE9aW50IG1seDRfZW5faW5pdF9uZXRkZXYoc3RydWN0IG1seDRfZW5fZGV2ICptZGV2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjMzNDc6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNm1seDRfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0zMzQ4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU3OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1OC0jaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTQ1Nz12b2lkIG1seDVlX3Z4bGFuX3NldF9uZXRkZXZfaW5mbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU0NzA6XFx0cHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnByaXYtXFx1MDAzZW5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ3MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjM3Nj1zdGF0aWMgaW50IG5mcF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTIzOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjIzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5mcF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjM5Ni1cXHQuc3luY190YWJsZSAgICAgPSBuZnBfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTI2NjY9c3RhdGljIHZvaWQgbmZwX25ldF9uZXRkZXZfaW5pdChzdHJ1Y3QgbmZwX25ldCAqbm4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcxOC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjI3MTk6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNm5mcF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcyMC1cXHRcXHRubi1cXHUwMDNlZHAuY3RybCB8PSBORlBfTkVUX0NGR19DVFJMX1ZYTEFOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYz05NTc9c3RhdGljIGludCBxZWRlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjk4ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWVkZV91ZHBfdHVubmVsc19ib3RoID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtOTg5LVxcdC5zeW5jX3RhYmxlXFx0PSBxZWRlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9MTAwNj12b2lkIHFlZGVfc2V0X3VkcF90dW5uZWxzKHN0cnVjdCBxZWRlX2RldiAqZWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAwOS1cXHQgICAgZWRldi1cXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzoxMDEwOlxcdFxcdGVkZXYtXFx1MDAzZW5kZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cWVkZV91ZHBfdHVubmVsc19ib3RoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMS1cXHRlbHNlIGlmIChlZGV2LVxcdTAwM2VkZXZfaW5mby5jb21tb24udnhsYW5fZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMjpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfdnhsYW47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDEzLVxcdGVsc2UgaWYgKGVkZXYtXFx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxNDpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfZ2VuZXZlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxNS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM9NDcxPXN0YXRpYyBpbnQgcWxjbmljX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYzo0ODc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFsY25pY191ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg4LVxcdC5zeW5jX3RhYmxlXFx0PSBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTIyNTQ9cWxjbmljX3NldHVwX25ldGRldihzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6MjMwNDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cWxjbmljX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYy0yMzA1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NDI9c3RhdGljIGludCBlZnhfZWYxMF9zZXRfdWRwX3RubF9wb3J0cyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCBib29sIHVubG9hZGluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NTI1PXN0YXRpYyBpbnQgZWZ4X2VmMTBfcHJvYmUoc3RydWN0IGVmeF9uaWMgKmVmeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgwLVxcdCAgICAoMSBcXHUwMDNjXFx1MDAzYyBNQ19DTURfRFJWX0FUVEFDSF9FWFRfT1VUX0ZMQUdfVFJVU1RFRCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo2ODE6XFx0XFx0ZWZ4LVxcdTAwM2VuZXRfZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmVmeF9lZjEwX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYz0zOTYyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfdWRwX3RubF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzozOTg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlZnhfZWYxMF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODYtXFx0LnNldF9wb3J0XFx0PSBlZnhfZWYxMF91ZHBfdG5sX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjE5PXN0YXRpYyBpbnQgdHhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2NDI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHR4Z2JlX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0My1cXHQuc3luY190YWJsZVxcdD0gdHhnYmVfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy03NDctXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNnR4Z2JlX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NzQ4OlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZ0eGdiZV91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy03NDktXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz02Nj1uc2ltX3VkcF90dW5uZWxfc3luY190YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy04NC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzo4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbnNpbV91ZHBfdHVubmVsX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODYtXFx0LnNldF9wb3J0XFx0PSBuc2ltX3VkcF90dW5uZWxfc2V0X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz0xMjU9aW50IG5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEyOC1cXHRzdHJ1Y3QgbmV0ZGV2c2ltICpucyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI5OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE4NC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxODU6XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gaW5mbztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xODYtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz0xODk9dm9pZCBuc2ltX3VkcF90dW5uZWxzX2luZm9fZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTkzLVxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShucy1cXHUwMDNldWRwX3BvcnRzLmRkaXIpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NDpcXHRrZnJlZShkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NTpcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5Ni19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjM3LjE2NDI1MzI2OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODQ4ODU2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVRFAgVHVubmVsIFRlc3RpbmcgaW4gYSBLZXJuZWwgQ29udGV4dCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jYCByZWdpc3RlcnMgYHVkcF90dW5uZWxfbmljX2luZm9gLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB3ZSBjYW4gbGV2ZXJhZ2UgYG5ldGRldnNpbWAgdG8gdGVzdCB0aGlzIGZlYXR1cmUuIEJyaWxsaWFudCEgVXNpbmcgYG5ldGRldnNpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlLCBtYWtlcyBvZmZsb2FkIHRlc3RpbmcgaW4gdGhlIGtlcm5lbCBhIGJyZWV6ZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgbWVhbnMgSSBjYW4gY29uZmlybSB0aGlzIGNvZGUgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uLiBMZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGF0IGVuYWJsZXMgYG5ldGRldnNpbWAuIEFoLCBpdCdzIGBDT05GSUdfTkVUREVWU0lNYC4gU28sIEknbGwgZGVmaW5pdGVseSBuZWVkIHRvIGFkZCBgTkVUREVWU0lNYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gbWFrZSBzdXJlIGBuZXRkZXZzaW1gIGlzIGVuYWJsZWQgaW4gbXkgYnVpbGQuIEFuZCwgSSdsbCBuZWVkIGBWWExBTmAgYW5kIGBHRU5FVkVgIGFzIHdlbGwgdG8gdHJpZ2dlciB0aGUgVURQIHR1bm5lbCBjcmVhdGlvbi5cblxuSSdtIGdvaW5nIHRvIHJldmlzaXQgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgIHRvIGxvb2sgYXQgdGhlIGltcG9ydGFudCBzeW1ib2xzIGFnYWluLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCB0b3VjaGVzOiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY19hbGxvY2AsIGFuZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAuXG5cbldhaXQgYSBtaW51dGUsIGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhpbmdzIGEgbGl0dGxlLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIHN0YXRpYy4gYHVkcF90dW5uZWxfbmljX2FsbG9jYCBpcyBzdGF0aWMuIEFuZCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIHN0YXRpYy5cblxuSG9sZCBvbiwgSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gSWYgdGhleSdyZSBzdGF0aWMsIHRoZXkgbWlnaHQgYmUgaW5saW5lZCBvciBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBidXQgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGNhbGxiYWNrLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLiBBbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGlzIGNhbGxlZCBmcm9tIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLCB3aGljaCBpcyBhIG5vdGlmaWVyIGNhbGxiYWNrLiBTbywgaXQgaGFzIHRvIGJlIHJlYWNoYWJsZS4gVGltZSB0byBjaGVjayB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEFjdHVhbGx5LCBJJ3ZlIGFscmVhZHkgZ3JlcHBlZCBmb3IgYEVYUE9SVF9TWU1CT0xgLCBhbmQgZm91bmQgbm90aGluZy4gQXJlIHRoZXJlICphbnkqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCBhdCBhbGw/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjAyLCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjU2OjQ1LjAxMzExMjQ3N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgzNzg2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogdWRwX3R1bm5lbF9uaWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyOmVudW0gdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnlfZmxhZ3Mge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTMtXFx0VURQX1RVTk5FTF9OSUNfRU5UUllfQUREXFx0PSBCSVQoMCksXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTk6c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIwLVxcdF9fYmUxNiBwb3J0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzo1Njo0NS4xMTE1MDA2OTJaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1ODU2MTE0OTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBTY29wZSBDcmVlcCBpbiBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGZ1bmN0aW9uIHZpc2liaWxpdHkuIEl0J3MgdGltZSB0byBleGFtaW5lIHRoZSBjb2RlYmFzZSBhbmQgcGlucG9pbnQgZnVuY3Rpb25zIHRoYXQgKmFyZW4ndCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgc2NvcGUgY3JlZXAg4oCTIGZ1bmN0aW9ucyB1bmludGVudGlvbmFsbHkgZXhwb3NlZCB0byBwYXJ0cyBvZiB0aGUgcHJvZ3JhbSB0aGF0IHNob3VsZG4ndCBiZSBpbnRlcmFjdGluZyB3aXRoIHRoZW0uIFdlIHdhbnQgdG8gdGlnaHRlbiB1cCBlbmNhcHN1bGF0aW9uIHdoZXJlIHBvc3NpYmxlLiBBIHF1aWNrIGBncmVwYCBmb3IgZnVuY3Rpb25zIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHRydWUgaW50ZW5kZWQgYWNjZXNzaWJpbGl0eSBvZiB0aGVzZSBmdW5jdGlvbnMgYW5kLCBpZiBuZWNlc3NhcnksIGFkanVzdCB0aGUgZGVjbGFyYXRpb25zIHRvIGJlIG1vcmUgcmVzdHJpY3RpdmUuIFRoaXMgc3lzdGVtYXRpYyBzY2FuIGxldHMgbWUgZW5zdXJlIHByb3BlciBwcm9ncmFtIHN0cnVjdHVyZSBhbmQgZGVzaWduLiBJIGNvdWxkIGFsc28gdXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmV2aWV3IHRoZSBsb2dpYyBvZiB0aGUgY29kZSBibG9ja3MgdGhlc2UgZnVuY3Rpb25zIHJlc2lkZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0MTQsIk91dHB1dFRva2VucyI6NjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjoyMC45Njc2MTkyODNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5OTYwMDE4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjIxLjI2NzIyODIyOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjU5MDI4MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyBNeSBQYXR0ZXJuLU1hdGNoaW5nIEFwcHJvYWNoKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGlzIHJlZ2V4IEkndmUgYmVlbiBjcmFmdGluZyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBhcnNpbmcgdGFzayBpcyBsb29raW5nIGEgbGl0dGxlIGZyYWdpbGUuIEknbSBzdGFydGluZyB0byBvdmVydGhpbmsgdGhlIGVkZ2UgY2FzZXMuIEl0J3MgYmVjb21pbmcgbW9yZSBjb21wbGV4IHRoYW4gaXQgbmVlZHMgdG8gYmUsIGFuZCBJIGNhbiBmZWVsIGEgcG90ZW50aWFsIGJ1ZyBsdXJraW5nIGluIHRoZXJlLlxuXG5JbnN0ZWFkIG9mIHdyZXN0bGluZyB3aXRoIHRoaXMgaW50cmljYXRlIHBhdHRlcm4sIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgYSBzaW1wbGVyLCBtb3JlIHJvYnVzdCBhcHByb2FjaCwgYXQgbGVhc3QgZm9yIGEgZmlyc3QgcGFzcy4gSSBjYW4gcXVpY2tseSBncmVwIHRoZSByZWxldmFudCBmaWxlcyBhbmQgc2VhcmNoIGZvciB0aGUgYmVnaW5uaW5nIG9mIGxpbmVzIGNvbnRhaW5pbmcgb25seSB0aGUgbW9zdCBjb21tb24gZGF0YSB0eXBlcyB3aXRoIHNpbXBsZSBzdHJpbmdzLCBzdWNoIGFzIGBedm9pZCBgLCBgXmludCBgLCBvciBgXnN0cnVjdCBgLlxuXG5UaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGNvbnNpZGVyYWJseS4gVGhpcyBhcHByb2FjaCBtaWdodCBub3QgY2FwdHVyZSAqZXZlcnl0aGluZyogaW1tZWRpYXRlbHksIGFuZCBpdCBtaWdodCBoYXZlIHNvbWUgZmFsc2UgcG9zaXRpdmVzLCBidXQgaXQnbGwgYmUgb3JkZXJzIG9mIG1hZ25pdHVkZSBmYXN0ZXIgdG8gaW1wbGVtZW50IGFuZCB0ZXN0LiBJIGNhbiBhbHdheXMgcmVmaW5lIHRoZSBmaWx0ZXJpbmcgbG9naWMgbGF0ZXIgb25jZSBJJ3ZlIGdvdCBhIGJhc2VsaW5lLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGdldCB0aGUgcHJvY2VzcyBydW5uaW5nIHF1aWNrbHkgYW5kIGVmZmVjdGl2ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY4OSwiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjI1LjUyNjI1ODY0NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwNDkyMzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4odm9pZHxpbnR8c3RydWN0IFthLXpBLVpfXSsgXFxcXCopIFthLXpBLVpfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjoyNS42MDYzMTUwODFaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MzIyMzQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkdyYXNwaW5nIGF0IGEgU29sdXRpb246IFRoZSBcImdyZXBcIiBJbnN0aW5jdCBLaWNrcyBJbioqXG5cbkFscmlnaHQsIEkgc2VlIGEgcHJvYmxlbSwgYW5kIG15IGltbWVkaWF0ZSByZWFjdGlvbiBpcywgbGV0J3MgcmVhY2ggZm9yIHRoZSBmYW1pbGlhciB0b29scy4gSSdtIHRoaW5raW5nLCBcIk9rYXksIHdoYXQncyB0aGUgcXVpY2tlc3QsIGRpcnRpZXN0IHdheSB0byB0YWNrbGUgdGhpcz9cIiBUaGF0IGBncmVwYCBpcyBwcmFjdGljYWxseSBhbiBleHRlbnNpb24gb2YgbXkgYnJhaW4gYXQgdGhpcyBwb2ludC4gVGhlIHBhdHRlcm4gYF57YCBpcyBwcm9iYWJseSB0YXJnZXRpbmcgYSBzcGVjaWZpYyBjb2RlIHN0cnVjdHVyZSwgbGlrZWx5IEpTT04sIFlBTUwgb3IgbWF5YmUgZXZlbiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gSSBzdXNwZWN0IEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IGlzIHByZWNlZGVkIGJ5IGEgY3VybHkgYnJhY2UuIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmc6XG5cblwiSSBuZWVkIHRvIGdyYWIgc29tZXRoaW5nIHdpdGggY29udGV4dFwiLiBUaGUgbWVudGFsIG1vZGVsIGlzIGxpa2VseSBzdHJ1Y3R1cmVkLiBUaGVyZSBpcyBzb21ldGhpbmcsIHBlcmhhcHMgYSBuZXN0ZWQgb2JqZWN0LCB0aGF0IHN0YXJ0cyB3aXRoIGEgY3VybHkgYnJhY2UuIFRoaXMgaXMgbXkgYmFzZSBvZiBvcGVyYXRpb25zLiBcIkxldCdzIHVzZSBgZ3JlcGAgd2l0aCBzb21lIGNvbnRleHRcIi4gVGhlIHRob3VnaHQgXCJMZXQncyBqdXN0XCIgbWVhbnMgSSBkb24ndCBuZWVkIGEgaGlnaGx5IHNvcGhpc3RpY2F0ZWQgb3IgZWZmaWNpZW50IHBhdHRlcm4uIFRoaXMgaXMgYSBxdWljayBhbmQgZGlydHkgd2F5IHRvIGlkZW50aWZ5IHRoaXMuIEkgbWlnaHQgbmVlZCBtb3JlIGFkdmFuY2VkIHRlY2huaXF1ZXMgbGF0ZXIsIGJ1dCBmb3Igbm93LCB0aGlzIGlzIHdoZXJlIEknbSBzdGFydGluZy4gVGhpcyBpcyB0aGUgZmlyc3QgZGlhZ25vc3RpYyBzdGVwLiBJJ20gbG9va2luZyBmb3IgYSBxdWljayB3aW4gdG8gdW5kZXJzdGFuZCB0aGUgbGF5b3V0IG9mIHNvbWV0aGluZy4gSSdtIGxlYW5pbmcgaGVhdmlseSBvbiB3aGF0IEkga25vdyBhYm91dCBgZ3JlcGAgYW5kIGl0cyBjYXBhYmlsaXRpZXM7IEknbSBiZXR0aW5nIHRoYXQgdGhpcyBpcyBhIG1hbmFnZWFibGUgcHJvYmxlbSBJIGNhbiBhZGRyZXNzIHRoaXMgd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAxMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjI5LjQ1OTU0MTU1OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3MDAzODcsIkVycm9yIjoiYmFkIGV4cHJlc3Npb246IGZhdGFsOiAtZSBvcHRpb24sICdeeyc6IEludmFsaWQgcHJlY2VkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl57XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJiYWQgZXhwcmVzc2lvbjogZmF0YWw6IC1lIG9wdGlvbiwgJ157JzogSW52YWxpZCBwcmVjZWRpbmcgcmVndWxhciBleHByZXNzaW9uXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjI5LjUxMTI0Njk1NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjk0NjQ0MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ29ycmVjdGluZyBJbnZhbGlkIFN5bnRheCoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBleHByZXNzaW9uLi4uICpobW0qLCBpdCBzZWVtcyBsaWtlIHRoZXJlJ3MgYW4gZXJyb3IuIFRoZSBjdXJyZW50IHN5bnRheCwgYF57YCwgaXMgY2xlYXJseSBpbnZhbGlkLiBUaGUgcGFyc2VyIGlzIGdvaW5nIHRvIGNob2tlIG9uIHRoYXQsIG5vIHF1ZXN0aW9uLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGUgcHJvYmxlbTsgdGhlIG9wZW5pbmcgY3VybHkgYnJhY2UgbmVlZHMgdG8gYmUgZXNjYXBlZC4gTGV0J3MgZml4IHRoaXMuIEkgbmVlZCB0byBtYWtlIHRoZSBjaGFuZ2UgdG8gYF5cXHtgLiBUaGF0IHNob3VsZCByZXNvbHZlIHRoZSBpc3N1ZSBhbmQga2VlcCB0aGluZ3Mgc3ludGFjdGljYWxseSBzb3VuZC4gVGhhdCBzaG91bGQgYWRkcmVzcyB0aGF0IGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM4NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjMyLjIwNTg5NDY1NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxNzUwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01OT1zdGF0aWMgY29uc3QgY2hhciAqdWRwX3R1bm5lbF9uaWNfdHVubmVsX3R5cGVfbmFtZSh1bnNpZ25lZCBpbnQgdHlwZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYwOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVxcdHN3aXRjaCAodHlwZSkge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03ND11ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03Ni1cXHRyZXR1cm4gZW50cnktXFx1MDAzZXVzZV9jbnQgPT0gMCBcXHUwMDI2XFx1MDAyNiAhZW50cnktXFx1MDAzZWZsYWdzO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04MD11ZHBfdHVubmVsX25pY19lbnRyeV9pc19wcmVzZW50KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04Mi1cXHRyZXR1cm4gZW50cnktXFx1MDAzZXVzZV9jbnQgXFx1MDAyNlxcdTAwMjYgIShlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB+VURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY9dWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJvemVuKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Nzp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OC1cXHRyZXR1cm4gZW50cnktXFx1MDAzZWZsYWdzIFxcdTAwMjYgVURQX1RVTk5FTF9OSUNfRU5UUllfRlJPWkVOO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05Mj11ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTM6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTQtXFx0aWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTk9dWRwX3R1bm5lbF9uaWNfZW50cnlfdW5mcmVlemUoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMDp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDEtXFx0ZW50cnktXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5VRFBfVFVOTkVMX05JQ19FTlRSWV9GUk9aRU47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwNT11ZHBfdHVubmVsX25pY19lbnRyeV9pc19xdWV1ZWQoc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwNjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDctXFx0cmV0dXJuIGVudHJ5LVxcdTAwM2VmbGFncyBcXHUwMDI2IChVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQgfFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMTI9dWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTExNC1cXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZmxhZylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjExNTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMTYtXFx0ZW50cnktXFx1MDAzZWZsYWdzIHw9IGZsYWc7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEyMT11ZHBfdHVubmVsX25pY190aV9mcm9tX2VudHJ5KHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMjItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEyMzp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMjQtXFx0bWVtc2V0KHRpLCAwLCBzaXplb2YoKnRpKSk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEzMT11ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEzMjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzMtXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE0ND11ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTQ1OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE0Ni1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE2Nj1fX3VkcF90dW5uZWxfbmljX2dldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE2Ny1cXHRcXHRcXHQgIHVuc2lnbmVkIGludCBpZHgsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTY4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE2OS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xODA9X191ZHBfdHVubmVsX25pY19zZXRfcG9ydF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE4MS1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlkeCwgdTggcHJpdilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE4Mjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODMtXFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pYy1cXHUwMDNlZW50cmllc1t0YWJsZV1baWR4XS5od19wcml2ID0gcHJpdjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTg3PXVkcF90dW5uZWxfbmljX2VudHJ5X3VwZGF0ZV9kb25lKHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnksXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xODgtXFx0XFx0XFx0XFx0IGludCBlcnIpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxODk6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTkwLVxcdGJvb2wgZG9kZ3kgPSBlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9PUF9GQUlMO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMTA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxMi1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHRhYmxlLCB1bnNpZ25lZCBpbnQgaWR4KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjEzOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIxNC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMzk9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQxOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0Mi1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUxPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjUzOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NC1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjgyPV9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODM6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjg0LVxcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwMD11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMwMTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMDItXFx0aWYgKCF1dG4tXFx1MDAzZW5lZWRfc3luYylcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzA5PXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEwLVxcdFxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzExOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMi1cXHRyZXR1cm4gdGFibGUtXFx1MDAzZXR1bm5lbF90eXBlcyBcXHUwMDI2IHRpLVxcdTAwM2V0eXBlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMTY9dWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxNy1cXHRcXHRcXHQgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzE4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxOS1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzM0PXVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMzUtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMzNjp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMzctXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM1Nj11ZHBfdHVubmVsX25pY19lbnRyeV9hZGooc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNTctXFx0XFx0XFx0IHVuc2lnbmVkIGludCB0YWJsZSwgdW5zaWduZWQgaW50IGlkeCwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzU4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM1OS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTM5ND11ZHBfdHVubmVsX25pY19lbnRyeV90cnlfYWRqKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zOTYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSwgaW50IHVzZV9jbnRfYWRqKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Mzk3OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM5OC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5ID0gIFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbdGFibGVdW2lkeF07XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQxOD11ZHBfdHVubmVsX25pY190cnlfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MTktXFx0XFx0XFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpLCBpbnQgdXNlX2NudF9hZGopXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MjA6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDIxLVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDM5PXVkcF90dW5uZWxfbmljX2FkZF9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0MC1cXHRcXHRcXHQgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NDE6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDQyLVxcdHJldHVybiB1ZHBfdHVubmVsX25pY190cnlfZXhpc3RpbmcoZGV2LCB1dG4sIHRpLCArMSk7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ0Nj11ZHBfdHVubmVsX25pY19kZWxfZXhpc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NDctXFx0XFx0XFx0ICAgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDQ4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ0OS1cXHRyZXR1cm4gdWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKGRldiwgdXRuLCB0aSwgLTEpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NTM9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ1NC1cXHRcXHQgICAgICAgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0NTU6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDU2LVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDkwPV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTE6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDkyLVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01MjQ9X191ZHBfdHVubmVsX25pY19kZWxfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjUyNTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01MjYtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU0MD1zdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTQxOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0Mi1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTc2PV9fdWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU3Nzp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NzgtXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYwMT1fX3VkcF90dW5uZWxfbmljX2R1bXBfd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjAyLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjAzOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYwNC1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjM3PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfYXNzZXJ0X2xvY2tlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjM4OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYzOS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjQ2PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfbG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjQ3OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY0OC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjU1PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2NTY6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjU3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02Nzg9dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2Nzk6e1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjgwLVxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03MDE9dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzAyOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwMy1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzI4PXN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzI5OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTczMC1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biA9XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc1Mj11ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc1My1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBuX3RhYmxlcylcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc1NDp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTUtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc4MT1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzgyOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc4My1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzkwPXN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjc5MTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTItXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg2NT11ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY2OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2Ny1cXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTE5PXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyMC1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTIxOntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyMi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk3Mz1zdGF0aWMgaW50IF9faW5pdCB1ZHBfdHVubmVsX25pY19pbml0X21vZHVsZSh2b2lkKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTc0OntcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk3NS1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMDAwPXN0YXRpYyB2b2lkIF9fZXhpdCB1ZHBfdHVubmVsX25pY19jbGVhbnVwX21vZHVsZSh2b2lkKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTAwMTp7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDAyLVxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZ1ZHBfdHVubmVsX25pY19ub3RpZmllcl9ibG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjMyLjI4MTA3Njk4MVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTc5Mjg4NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVRFAgVHVubmVsIE5JQyBTeW5jaHJvbml6YXRpb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nIGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCwgdGhlIGNvcmUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlIGZvciBzeW1ib2wgdmlzaWJpbGl0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgbW9zdCBvZiB0aGVtIHdvbid0IGJlIGV4cG9zZWQgYXMgc3ltYm9scy4gQnV0IHdhaXQsIHNvbWUgb2YgdGhlbSBhcmUgY2xlYXJseSB1c2VkIGluIHdheXMgdGhhdCBwcmV2ZW50IGlubGluaW5nLiBTcGVjaWZpY2FsbHksIHRoZSBhZGRyZXNzZXMgb2YgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgICh1c2VkIHdpdGggYElOSVRfREVMQVlFRF9XT1JLYCksIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgICh1c2VkIHdpdGggYG5vdGlmaWVyX2Jsb2NrYCksIGBfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBhbmQgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgIChwYXNzZWQgaW50byBgdWRwX3R1bm5lbF9uaWNfb3BzYCkuIFRob3NlIHNob3VsZCBiZSBnb29kIHRhcmdldHMuXG5cbk9rYXksIGxldCdzIGNvbmZpcm0gdGhlIHN0YXRpYyBuYXR1cmUgb2YgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCB5ZXAsIGl0J3Mgc3RhdGljLCBidXQgdGhhdCdzIGZpbmUgc2luY2Ugd2UgdGFrZSBpdHMgYWRkcmVzcywgc28gaXQgbXVzdCBiZSBhIHZhbGlkIHN5bWJvbCBmb3IgZnV6emluZy4gTm93LCB3aGF0IGFib3V0IGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYD8gSG1tLCBpdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLiBMaWtlbHkgaW5saW5lZCwgc28gbWF5YmUgbm90IHRoZSBiZXN0IHN5bWJvbC4gYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAgbG9va3MgbGlrZSBhIG1vcmUgcHJvbWlzaW5nIGNhbmRpZGF0ZSBzaW5jZSBpdCdzIHVzZWQgd2l0aCBgbm90aWZpZXJfYmxvY2tgLlxuXG5TbywgdGhlIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgaXM6IHRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIHN5bmNocm9uaXphdGlvbiBtZXRob2QgaW4gVURQIHR1bm5lbCBOSUMgb2ZmbG9hZGluZywgc3dpdGNoaW5nIHRvIGEgZGVsYXllZCB3b3JrcXVldWUgYW5kIHJlZmluaW5nIHRoZSBsb2NraW5nIG1lY2hhbmlzbSB3aXRoIGBydG5sX3RyeWxvY2soKWAgYW5kIGEgcmVxdWV1ZSBkZWxheSB0byBkZWFsIHdpdGggcG90ZW50aWFsIGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5LCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBlbXVsYXRlZCBkZXZpY2VzIGxpa2UgbmV0ZGV2c2ltLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gY2F0Y2ggYW55IG5ld2x5IGludHJvZHVjZWQgcmFjZSBjb25kaXRpb25zIG9yIGRlYWRsb2Nrcy5cblxuSGVyZSdzIG15IGRpc3RpbGxlZCBsaXN0OlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZVxuKiAgICoqUmVhc29uaW5nOioqIENoYW5nZXMgdG8gY29yZSBuZXR3b3JraW5nIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgbG9ja2luZywgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgZGVhZGxvY2tzLCByZWFjaGFibGUgdmlhIGVtdWxhdGVkIGRldmljZXMuXG4qICAgKipGb2N1c1N5bWJvbHM6KipcbiAgICAqICAgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgXG4gICAgKiAgIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgXG4gICAgKiAgIGBfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0YFxuICAgICogICBgX191ZHBfdHVubmVsX25pY19kZWxfcG9ydGBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KipcbiAgICAqICAgYE5FVF9VRFBfVFVOTkVMYCAoZXhwbGljaXRseSBsaXN0ZWQsIGJ1dCBzZWxlY3RlZCBieSBgVlhMQU5gIG9yIGBHRU5FVkVgKVxuICAgICogICBgVlhMQU5gXG4gICAgKiAgIGBHRU5FVkVgXG4gICAgKiAgIGBORVRERVZTSU1gXG5cbkFuZCBsZXQncyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBORVRERVZTSU1gIGRvZXNuJ3QgZGVwZW5kIG9uIG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBqdXN0IGluIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQxLjQ2MDM2OTMwMVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE0NDk2ODUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQxLjU0MTgyNTUzN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQzMTMxMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBDaGVjayBmb3IgTkVUREVWU0lNKipcblxuT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuIEknbGwgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVmaW5pdGlvbiBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYE5FVERFVlNJTWAuIEl0J3MgcG9zc2libGUgSSdtIG92ZXJsb29raW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhYm91dCBob3cgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBjb25maWd1cmVkLCBvciBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWcgSSBoYXZlIHRvIGVuYWJsZSBhbG9uZ3NpZGUuIERvdWJsZS1jaGVja2luZyBgS2NvbmZpZ2AgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uIGlzc3VlcyB0aGF0IGFyZSBhbHJlYWR5IGFkZHJlc3NlZCBpbiB0aGUgcHJvamVjdCBidWlsZCBjb25maWd1cmF0aW9uLiBJdCdzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgc2FuaXR5IGNoZWNrIGZvciBzb21ldGhpbmcgbGlrZSB0aGlzIGFuZCBhbHdheXMgd29ydGggYSBzZWNvbmQgZ2xhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg4MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ1Ljk4NDk1OTU5NFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2NDY4MDMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ2LjE3MTQzNTE4NFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY5NzQ2Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVyeTpcblxuKipXaGVyZSdzIHRoZSBgbmV0ZGV2c2ltYCBNYWdpYz8qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MuIEkgc2VlIFwibmV0ZGV2c2ltXCIgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IGdvZXMsIFwiRGVmaW5lIHRoYXQgdGhpbmchXCIgSXQncyB0aGF0IGluaXRpYWwgcmVhY3Rpb24gdG8gZW5jb3VudGVyaW5nIGFuIHVuZmFtaWxpYXIgdGVybSwgZXNwZWNpYWxseSBvbmUgdGhhdCBzb3VuZHMgbGlrZSBpdCBjb3VsZCBiZSBjcnVjaWFsLiBJIG1lYW4sIGlmIHRoaXMgaXMgY2VudHJhbCB0byBzb21ldGhpbmcsIEkgKm5lZWQqIHRvIGtub3cgd2hlcmUgaXQncyByb290ZWQuIElzIGl0IGEgbW9kdWxlIEkgbmVlZCB0byBpbXBvcnQ/IEEgZnVuY3Rpb24gY2FsbD8gQSBsaWJyYXJ5IGRlcGVuZGVuY3k/IElzIGl0IHNvbWV0aGluZyBJJ3ZlIHNvbWVob3cgbWlzc2VkLCBkZXNwaXRlIG15IGV4cGVyaWVuY2U/IFRoaXMgYWJzZW5jZSBvZiBjb250ZXh0IGlzIG1ha2luZyBtZSBmZWVsIGxpa2UgSSdtIG1pc3NpbmcgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBjYW4ndCByZWFsbHkgYW5hbHl6ZSB0aGlzIGZ1cnRoZXIgdW50aWwgSSBrbm93IGV4YWN0bHkgd2hhdCBgbmV0ZGV2c2ltYCBhY3R1YWxseSAqaXMqLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzExNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ5LjM0MTE4NTI2OVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NzAzMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjQ5LjUyNjg5MzAwOVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDY3OTAzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgTG9jYXRpb24gRm91bmQqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkgd2FzIGp1c3QgdHJhY2luZyB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0cnlpbmcgdG8gcmVtZW1iZXIgd2hlcmUgSSBzYXcgaXQgZGVmaW5lZC4gQmluZ28hIEFmdGVyIGEgcXVpY2sgc2VhcmNoLCBpdCdzIHJpZ2h0IHRoZXJlLCBwcmVjaXNlbHkgd2hlcmUgSSBzdXNwZWN0ZWQ6IGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGUgbmV0d29ya2luZyBkcml2ZXJzIGFyZSB1c3VhbGx5IGFsbCBvcmdhbml6ZWQgaW4gdGhhdCBhcmVhLiBOb3cgSSBjYW4gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgKnRoYXQqIEtjb25maWcgZmlsZSBhbmQgZmlndXJlIG91dCB3aGF0IG90aGVyIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0cyBhcmUgdGllZCB0byB0aGF0IG9wdGlvbi4gS25vd2luZyB0aGlzIHBhdGggc2F2ZXMgdGltZSwgYW5kIGxldHMgbWUgbW92ZSBvbiB0byB0aGUgbW9yZSBpbnRlcmVzdGluZyBwYXJ0OiBkZWNpcGhlcmluZyB0aGUgcmVsYXRpb25zaGlwcyBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgc2V0dGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0MjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjo1My41OTQ3OTk3ODZaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzUxMjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjo1My42NjE1NTU5NjJaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2MjAzNTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgaW5jb21wbGV0ZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc3RydWN0dXJlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEknbSB0aGlua2luZywgXCJXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/XCIgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbid0IGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjk1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMjo1Ni42MjM1OTQ1NTdaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjYxNTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVERFVlNJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAyOjU2LjY5NTI2MzQyNFoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg2NjcwMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gbmV0d29yayBzaW11bGF0aW9uIG9yIHJlbGF0ZWQgZmllbGRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEaXJlY3RpdmUqKlxuXG5BbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGBjb25maWcgTkVUREVWU0lNYCBqdXN0IHBvcHBlZCB1cC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2UncmUgaW4gY29uZmlndXJhdGlvbiBtb2RlLCBsaWtlbHkgd2l0aGluIGEgbmV0d29yayBzaW11bGF0aW9uIGVudmlyb25tZW50IG9yIGEgc3lzdGVtIHRoYXQgdXRpbGl6ZXMgYSBuZXR3b3JrIGRldmljZSBzaW11bGF0aW9uIGNvbXBvbmVudC5cIiBUaGlzIGlzIHByb2JhYmx5IHNvbWUga2luZCBvZiBpbml0aWFsaXphdGlvbiBvciBzZXR1cCBjb21tYW5kLiBJJ20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgcGFyYW1ldGVycyBvciBzZXR0aW5ncyBhcmUgYmVpbmcgZGVmaW5lZCBoZXJlLCBvciBpZiB0aGlzIGlzIGp1c3QgYW4gZW50cnkgcG9pbnQgdG8gZnVydGhlciBjb25maWd1cmF0aW9ucy4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGRpY3RhdGUgdGhlIG92ZXJhbGwgYmVoYXZpb3Igb2Ygc29tZSBzaW11bGF0ZWQgbmV0d29yayBkZXZpY2UsIG9yIHRoZSBlbnZpcm9ubWVudCBmb3IgaXQuIFRoZSBsaW5lcyBmb2xsb3dpbmcgdGhpcyBhcmUgZ29pbmcgdG8gYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0J3MgYmVpbmcgaW1wbGVtZW50ZWQuIFNvLCBsZXQncyBkaXZlIGludG8gdGhvc2UgbGluZXMgdG8gc2VlIHdoYXQgdGhleSByZXZlYWwgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTc0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6MDM6MDAuMDgxOTM2Mzc2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwNCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwNDpcXHRjb25maWcgTkVUREVWU0lNXFxuIDYwNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbiA2MDY6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiA2MDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDYwODpcXHRcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuIDYwOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuIDYxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gNjExOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gNjEyOlxcdFxcdHNlbGVjdCBORVRfU0hBUEVSXFxuIDYxMzpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjAwLjA4MjA0NTQxNloiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI0MzQ1NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyBORVRERVZTSU0gYW5kIFZYTEFOIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgTkVUREVWU0lNYCBhbmQgaG93IHJvYnVzdCBpdCBpcy4gVGhlIGRlcGVuZGVuY2Ugb24gYERFQlVHX0ZTYCBhbmQgYElORVRgIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQ29uc2lkZXJpbmcgYERFQlVHX0ZTYCBpcyBnZW5lcmFsbHkgZW5hYmxlZCBvbiBtb3N0IHN5c3RlbXMgSSB3b3JrIHdpdGgsIHRoYXQgYXNwZWN0IG9mIGBORVRERVZTSU1gIGxvb2tzIHNvbGlkIGFuZCBzaG91bGRuJ3QgcHJlc2VudCBhbiBpc3N1ZS4gSXQncyBhIGZhaXJseSBzYWZlIGFzc3VtcHRpb24uXG5cbk5vdywgbGV0J3MgcGl2b3QgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBWWExBTmAuIFRoYXQgd2lsbCBuZWVkIGEgYml0IG1vcmUgaW52ZXN0aWdhdGlvbiwgYXMgaXQncyBhIGNyaXRpY2FsIHRlY2hub2xvZ3kgYW5kIHVuZGVyc3RhbmRpbmcgYWxsIGl0cyBjb21wb25lbnRzIGlzIHBhcmFtb3VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQzNjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjAzLjIwNjM5NTQzM1oiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDkzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzA6XFx0Y29uZmlnIFZYTEFOXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbiAyMzI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjM0OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjM1OlxcdFxcdGhlbHBcXG4gMjM2OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDIzNzpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuIDIzODpcXHRcXHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxcbiAyMzk6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjAzLjIwNjcwOTcwM1oiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU0OTY2MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqVlhMQU4gYW5kIHRoZSBQYXRoIEZvcndhcmQqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgbmV0d29yayB2aXJ0dWFsaXphdGlvbi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyBWWExBTiByZWxpZXMgb24gdGhlIHVuZGVybHlpbmcgSU5FVCBpbmZyYXN0cnVjdHVyZS4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQgSSBuZWVkIGEgYnJvYWRlciB2aWV3IG9mIHRoZSBsYW5kc2NhcGUuIE15IG5leHQgdGhvdWdodCBpcyB0byBkaWcgaW50byBHRU5FVkUuIEkgc2hvdWxkIGNoZWNrIHdoYXQgZGVwZW5kZW5jaWVzICp0aGF0KiBwcm90b2NvbCBoYXMsIHNlZSBpZiBpdCBpcyBhIG1vcmUgdmlhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ3NDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjAzOjA2LjA2MTY3OTAyM1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0NTpcXHRjb25maWcgR0VORVZFXFxuIDI0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuIDI0NzpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjQ4OlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAyNDk6XFx0XFx0c2VsZWN0IEdST19DRUxMU1xcbiAyNTA6XFx0XFx0aGVscFxcbiAyNTE6XFx0XFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIGdlbmV2ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDI1MjpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBHRU5FVkUgaXMgb2Z0ZW4gdXNlZFxcbiAyNTM6XFx0XFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cXG4gMjU0OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMzowNi4wNjE3NjM1NTNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgxOTY5MzU3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYEdFTkVWRWAgQ29uZmlndXJhdGlvbiBhbmQgUmVsYXRlZCBDb2RlKipcblxuT2theSwgc28gSSdtIGJyZWFraW5nIGRvd24gdGhpcyBgR0VORVZFYCBzZXR1cC4gSXQncyBidWlsdCBvbiBgSU5FVGAsIHRoYXQncyB0aGUgZm91bmRhdGlvbi4gQW5kIGJlY2F1c2Ugb2YgdGhhdCwgSSBjYW4gc2VlIHRoZSBjb25maWd1cmF0aW9uIGludm9sdmVzIGBORVRERVZTSU1gLCBgVlhMQU5gLCBhbmQgYEdFTkVWRWAgdGhlbXNlbHZlcy4gQSBxdWljayByZW1pbmRlciBpcyB1c2VmdWwsIGBORVRfVURQX1RVTk5FTGAgaXMgc2VsZWN0ZWQgYnkgYm90aCBgVlhMQU5gIGFuZCBgR0VORVZFYCwgc28sIGV2ZW4gdGhvdWdoIEkgZG9uJ3QgdGVjaG5pY2FsbHkgKm5lZWQqIHRvIGxpc3QgaXQsIGl0J3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhvc2UgZm9jdXMgc3ltYm9scyBhZ2FpbiwganVzdCB0byBtYWtlIHN1cmUgSSdtIG9uIHRoZSByaWdodCB0cmFjazogYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgLCBhbmQgYF9fdWRwX3R1bm5lbF9uaWNfZGVsX3BvcnRgLlxuXG5IbW0sIGFueSBvdGhlciBmdW5jdGlvbnMgZ290IHR3ZWFrZWQ/IEFoLCB5ZXMuIGB1ZHBfdHVubmVsX25pY19hbGxvY2AgaXMgbW9kaWZpZWQgdG8gdXNlIGBJTklUX0RFTEFZRURfV09SS2AuIEFsc28sIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYC4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCBub3cgdXNlcyBgcXVldWVfZGVsYXllZF93b3JrYCwgYW5kIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AgaXMgY2hhbmdlZCB0byBza2lwIHRoZSBjaGVjayBmb3IgYHV0bi1cdTAwM2V3b3JrX3BlbmRpbmdgLlxuXG5TaW5jZSBgdWRwX3R1bm5lbF9uaWNfYWxsb2NgIGlzIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBieSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgYSBmb2N1cyBvbiBmdXp6aW5nIGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgIHdpbGwgZWZmZWN0aXZlbHkgY292ZXIgdGhhdCBmdW5jdGlvbi4gQW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCBpcyAqYWxzbyogY2FsbGVkIGJ5IGB1ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnRgLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX191ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0YC5cblxuWWVhaCwgdGhhdCBtYWtlcyBzZW5zZS4gQ29uc2lkZXJpbmcgaG93IHRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgYW5kIHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZW0sIG15IGNob3NlbiBmb2N1cyBzeW1ib2xzIHNob3VsZCBjb3ZlciBhbGwgdGhlIHJlbGV2YW50IG1vZGlmaWVkIGNvZGUgcGF0aHMuIEknbSBzYXRpc2ZpZWQgd2l0aCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA1NSwiT3V0cHV0VG9rZW5zIjoyMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDowMzoxMy44ODE0NjA1MjRaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYwODM5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCIsXG4gICAgXCJORVRfVURQX1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZWxfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCIsXG4gICAgXCJORVRfVURQX1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19hZGRfcG9ydFwiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZWxfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZm9yIFVEUCB0dW5uZWwgTklDIG9mZmxvYWRpbmcgZnJvbSBhIHJlZ3VsYXIgd29ya3F1ZXVlIHRvIGEgZGVsYXllZCB3b3JrcXVldWUsIGFuZCBtb2RpZmllcyB0aGUgbG9ja2luZyBpbiB0aGUgd29yayBoYW5kbGVyIHRvIHVzZSBydG5sX3RyeWxvY2soKSB3aXRoIGEgcmVxdWV1ZSBkZWxheSB0byBwcmV2ZW50IGRlYWRsb2NrcyBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBkZXZpY2VzIChsaWtlIG5ldGRldnNpbSkgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG5ldyByYWNlcyBvciBkZWFkbG9ja3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowhxgxf[1] Phase: Succeeded StartedAt: 2026-07-25 14:04:15 +0000 UTC FinishedAt: 2026-07-25 14:04:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 14:04:15 +0000 UTC FinishedAt: 2026-07-25 14:04:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2] Phase: Succeeded StartedAt: 2026-07-25 14:04:15 +0000 UTC FinishedAt: 2026-07-25 18:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 14:04:15 +0000 UTC FinishedAt: 2026-07-25 18:23:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 14:04:15 +0000 UTC FinishedAt: 2026-07-25 14:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 14:04:15 +0000 UTC FinishedAt: 2026-07-25 14:04:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhxgxf/series-workflowhxgxf-convert-artifact-4048402150/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 14:04:36 +0000 UTC FinishedAt: 2026-07-25 14:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 14:04:36 +0000 UTC FinishedAt: 2026-07-25 14:36:26 +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:*b5084b0f-ab5b-4fee-93ae-e78d14c2bcfe,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-workflowhxgxf/series-workflowhxgxf-convert-artifact-4048402150/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": "4430a7ee-9bb5-4c59-b55c-489dde22fc6c", "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-workflowhxgxf/series-workflowhxgxf-build-action-3377354364/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 14:04:36 +0000 UTC FinishedAt: 2026-07-25 14:35:49 +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:*b5084b0f-ab5b-4fee-93ae-e78d14c2bcfe,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-workflowhxgxf/series-workflowhxgxf-convert-artifact-4048402150/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": "4430a7ee-9bb5-4c59-b55c-489dde22fc6c", "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-workflowhxgxf/series-workflowhxgxf-build-action-3377354364/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 14:36:26 +0000 UTC FinishedAt: 2026-07-25 14:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 14:36:27 +0000 UTC FinishedAt: 2026-07-25 14:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 14:36:27 +0000 UTC FinishedAt: 2026-07-25 14:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 14:36:27 +0000 UTC FinishedAt: 2026-07-25 14:37:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhxgxf/series-workflowhxgxf-convert-artifact-4198203449/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 14:38:01 +0000 UTC FinishedAt: 2026-07-25 14:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 14:38:01 +0000 UTC FinishedAt: 2026-07-25 14:40:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4430a7ee-9bb5-4c59-b55c-489dde22fc6c,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-workflowhxgxf/series-workflowhxgxf-build-action-3377354364/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-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 14:40:11 +0000 UTC FinishedAt: 2026-07-25 14:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 14:40:11 +0000 UTC FinishedAt: 2026-07-25 14:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 14:40:11 +0000 UTC FinishedAt: 2026-07-25 15:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 14:40:11 +0000 UTC FinishedAt: 2026-07-25 15:19:34 +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:*b5084b0f-ab5b-4fee-93ae-e78d14c2bcfe,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-workflowhxgxf/series-workflowhxgxf-convert-artifact-4198203449/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": "291cbd5c-32f8-42a5-b672-28e2c5fd41b2", "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-workflowhxgxf/series-workflowhxgxf-build-action-3203881237/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 14:40:11 +0000 UTC FinishedAt: 2026-07-25 15:19:24 +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:*b5084b0f-ab5b-4fee-93ae-e78d14c2bcfe,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-workflowhxgxf/series-workflowhxgxf-convert-artifact-4198203449/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": "291cbd5c-32f8-42a5-b672-28e2c5fd41b2", "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-workflowhxgxf/series-workflowhxgxf-build-action-3203881237/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 15:19:34 +0000 UTC FinishedAt: 2026-07-25 15:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 15:19:34 +0000 UTC FinishedAt: 2026-07-25 15:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 15:19:34 +0000 UTC FinishedAt: 2026-07-25 15:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 15:19:34 +0000 UTC FinishedAt: 2026-07-25 15:21:14 +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:*291cbd5c-32f8-42a5-b672-28e2c5fd41b2,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-workflowhxgxf/series-workflowhxgxf-build-action-3203881237/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-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 18:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 18:23: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":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"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:*4430a7ee-9bb5-4c59-b55c-489dde22fc6c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*291cbd5c-32f8-42a5-b672-28e2c5fd41b2,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-workflowhxgxf/series-workflowhxgxf-build-action-3377354364/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-workflowhxgxf/series-workflowhxgxf-build-action-3203881237/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 15:21:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 15:21:37 +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":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"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-workflowhxgxf/series-workflowhxgxf-convert-artifact-911504558/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 15:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 15:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 15:21:26 +0000 UTC FinishedAt: 2026-07-25 15:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 15:21:48 +0000 UTC FinishedAt: 2026-07-25 18:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxgxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_netdevice_event","__udp_tunnel_nic_add_port","__udp_tunnel_nic_del_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE","NET_UDP_TUNNEL"],"series_id":"4d90b240-0908-4cd6-b443-dc185e2b1124","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 15:21:48 +0000 UTC FinishedAt: 2026-07-25 18:23:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4430a7ee-9bb5-4c59-b55c-489dde22fc6c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*291cbd5c-32f8-42a5-b672-28e2c5fd41b2,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-workflowhxgxf/series-workflowhxgxf-build-action-3377354364/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-workflowhxgxf/series-workflowhxgxf-build-action-3203881237/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-workflowhxgxf/series-workflowhxgxf-convert-artifact-911504558/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,}