Name: series-workflowgc8ck Phase: Succeeded StartedAt: 2026-08-31 05:54:11 +0000 UTC FinishedAt: 2026-08-31 10:25:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[0] Phase: Succeeded StartedAt: 2026-08-31 05:54:11 +0000 UTC FinishedAt: 2026-08-31 06:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 05:54:11 +0000 UTC FinishedAt: 2026-08-31 06:39:10 +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": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "INET", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "INET", "IPV6" ], "series_id": "e87c6cbe-d57c-4707-9d6d-70a150d7fa09" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_xmit", "vxlan_xmit_one" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX3htaXQmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cdTAwM2VkZXZgLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5vIGNoYW5nZSBpbiBydW50aW1lIHZhbHVlcywgbWVtb3J5IGxheW91dCwgYnVmZmVyIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcHlpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgaGVhZHJvb20gY2FsY3VsYXRpb24gYW5kIHJlc2VydmF0aW9uIGluIHZ4bGFuX25hX2NyZWF0ZSgpIHdoZW4gY29uc3RydWN0aW5nIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBwYWNrZXRzIGluIHRoZSBWWExBTiBkcml2ZXIuIFRoaXMgdmlydHVhbCBuZXR3b3JraW5nIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVlhMQU4gcHJveHkgbW9kZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTc3Mzc5ODhkNzNkNTU3MGUxM2U4NzYwMWQ0NDU0ZjY2MGE1ZmJiNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA2OjM3OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuaW5kZXggNDU5ZjE5ZjcwNzFlNS4uZTVhOTJkMzAxMTNjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5AQCAtMTk0NywxMyAmIzQzOzE5NDcsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXG4gXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcbiBcdHU4ICpkYWRkcjtcbiBcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciAmIzQzOyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovXG4mIzQzO1x0aW50IGhlYWRyb29tO1xuIFx0aW50IG5zX29sZW47XG4gXHRpbnQgaSwgbGVuO1xuIFxuIFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXHUwMDNlbGVuKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MztcbiYjNDM7XHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4mIzQzO1x0bGVuID0gaGVhZHJvb20gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzO1xuIFx0XHRzaXplb2YoKm5hKSAmIzQzOyBuYV9vbGVuICYjNDM7IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4gXHRyZXBseSA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIFx0aWYgKHJlcGx5ID09IE5VTEwpXG5AQCAtMTk2MSw3ICYjNDM7MTk2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuIFxuIFx0cmVwbHktXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcbiBcdHJlcGx5LVx1MDAzZWRldiA9IGRldjtcbi1cdHNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldikpO1xuJiM0MztcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XG4gXHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcbiBcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHJlcGx5KTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl94bWl0JiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBoZWFkcm9vbSBjYWxjdWxhdGlvbiBhbmQgcmVzZXJ2YXRpb24gaW4gdnhsYW5fbmFfY3JlYXRlKCkgd2hlbiBjb25zdHJ1Y3RpbmcgSVB2NiBOZWlnaGJvciBBZHZlcnRpc2VtZW50IHBhY2tldHMgaW4gdGhlIFZYTEFOIGRyaXZlci4gVGhpcyB2aXJ0dWFsIG5ldHdvcmtpbmcgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWWExBTiBwcm94eSBtb2RlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNzczNzk4OGQ3M2Q1NTcwZTEzZTg3NjAxZDQ0NTRmNjYwYTVmYmI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDY6Mzc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMKaW5kZXggNDU5ZjE5ZjcwNzFlNS4uZTVhOTJkMzAxMTNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwpAQCAtMTk0NywxMyAmIzQzOzE5NDcsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsCiAJc3RydWN0IGlwdjZoZHIgKnBpcDY7CiAJdTggKmRhZGRyOwogCWludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciAmIzQzOyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovCiYjNDM7CWludCBoZWFkcm9vbTsKIAlpbnQgbnNfb2xlbjsKIAlpbnQgaSwgbGVuOwogCiAJaWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtJmd0O2xlbikpCiAJCXJldHVybiBOVUxMOwogCi0JbGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICYjNDM7CiYjNDM7CWhlYWRyb29tID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTsKJiM0MzsJbGVuID0gaGVhZHJvb20gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzOwogCQlzaXplb2YoKm5hKSAmIzQzOyBuYV9vbGVuICYjNDM7IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwogCXJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7CiAJaWYgKHJlcGx5ID09IE5VTEwpCkBAIC0xOTYxLDcgJiM0MzsxOTYzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsCiAKIAlyZXBseS0mZ3Q7cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTsKIAlyZXBseS0mZ3Q7ZGV2ID0gZGV2OwotCXNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LSZndDtkZXYpKTsKJiM0MzsJc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTsKIAlza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTsKIAlza2JfcmVzZXRfbWFjX2hlYWRlcihyZXBseSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDUyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZYTEFOIE5laWdoYm9yIEFkdmVydGlzZW1lbnQgQ3JlYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJJiMzOTttIGxvb2tpbmcgYXQgYHZ4bGFuX25hX2NyZWF0ZWAgd2l0aGluIGB2eGxhbl9jb3JlLmNgIOKAkyBzZWVtcyBsaWtlIHdlJiMzOTtyZSBvcHRpbWl6aW5nIHRoZSBjcmVhdGlvbiBvZiBOZWlnaGJvciBBZHZlcnRpc2VtZW50IChOQSkgcGFja2V0cyB3aXRoaW4gdGhlIFZYTEFOIGRyaXZlci4gVGhlIGRpZmYgaXRzZWxmIGlzIHJlbGF0aXZlbHkgZm9jdXNlZCwgc28gSSB0aGluayBJIGNhbiB1bmRlcnN0YW5kIGl0IGZhaXJseSBxdWlja2x5LgoKVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIGBza19idWZmYCBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBOQSByZXBseS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBhZGp1c3RpbmcgdGhlIGNhbGN1bGF0aW9uIG9mIGBsZW5gIHBhc3NlZCBpbnRvIGBhbGxvY19za2IoKWAuIFRoZSBvcmlnaW5hbCBjb2RlIGFwcGVhcnMgdG8gaGF2ZSBoYWQgYSBzbGlnaHRseSBvZmYgY2FsY3VsYXRpb24gZm9yIHRoZSBidWZmZXIgc2l6ZSwgYW5kIHRoaXMgcGF0Y2ggYWltcyB0byBjb3JyZWN0IGl0IGJ5IGV4cGxpY2l0bHkgY2FsY3VsYXRpbmcgYGhlYWRyb29tYC4gVGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgY2FsY3VsYXRlcyBhbmQgc2V0cyB0aGUgYGhlYWRyb29tYCByZXF1aXJlZCB1c2luZyBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAsIHdoaWNoIGlzIHRoZW4gdXNlZCB3aGVuIGFsbG9jYXRpbmcgYW5kIHJlc2VydmluZyB0aGUgYHNrYmAuIFRoYXQgc2hvdWxkIGZpeCB0aGUgaXNzdWUhIFRoZSB1cGRhdGVkIGBsZW5gIGFsc28gaW5jb3Jwb3JhdGVzIHRoZSBJUHY2IGhlYWRlciwgTkEgc3RydWN0dXJlLCBvcHRpb24gaGVhZGVycywgRXRoZXJuZXQgYWRkcmVzcyBhbmQgdGFpbHJvb20sIGFsbCBjcml0aWNhbCB0byB0aGUgcGFja2V0JiMzOTtzIGZvcm1hdC4KCkl0JiMzOTtzIGEgZ29vZCBwcmFjdGljZSB0byBkb3VibGUtY2hlY2sgdGhlc2UgY2FsY3VsYXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGJ1ZmZlciBhbGxvY2F0aW9uIGluIG5ldHdvcmsgZHJpdmVycy4gSW5jb3JyZWN0IGJ1ZmZlciBzaXppbmcgY2FuIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGlzc3VlcywgZnJvbSBidWZmZXIgb3ZlcmZsb3dzIHRvIHBhY2tldCBjb3JydXB0aW9uIGFuZCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi4gU28sIEkgc2VlIHRoZSBjaGFuZ2UgYW5kIGFtIGluIGFncmVlbWVudCB3aXRoIGl0LiBMb29rcyBsaWtlIGEgc29saWQgZml4IHRvIGFkZHJlc3MgYSBzdWJ0bGUgcG90ZW50aWFsIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxOTMwOlx0XHRcdH07XG4xOTMxOlx0XG4xOTMyOlx0XHRcdHZ4bGFuX2lwX21pc3MoZGV2LCBcdTAwMjZpcGEpO1xuMTkzMzpcdFx0fVxuMTkzNDpcdG91dDpcbjE5MzU6XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4xOTM2Olx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuMTkzNzpcdH1cbjE5Mzg6XHRcbjE5Mzk6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbjE5NDA6XHRzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbjE5NDE6XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXG4xOTQyOlx0XHRcdFx0XHQgICAgICAgYm9vbCBpc3JvdXRlcilcbjE5NDM6XHR7XG4xOTQ0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcmVxdWVzdC1cdTAwM2VkZXY7XG4xOTQ1Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqcmVwbHk7XG4xOTQ2Olx0XHRzdHJ1Y3QgbmRfbXNnICpucywgKm5hO1xuMTk0NzpcdFx0c3RydWN0IGlwdjZoZHIgKnBpcDY7XG4xOTQ4Olx0XHR1OCAqZGFkZHI7XG4xOTQ5Olx0XHRpbnQgbmFfb2xlbiA9IDg7IC8qIG9wdCBoZHIgJiM0MzsgRVRIX0FMRU4gZm9yIHRhcmdldCAqL1xuMTk1MDpcdFx0aW50IGhlYWRyb29tO1xuMTk1MTpcdFx0aW50IG5zX29sZW47XG4xOTUyOlx0XHRpbnQgaSwgbGVuO1xuMTk1MzpcdFxuMTk1NDpcdFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXHUwMDNlbGVuKSlcbjE5NTU6XHRcdFx0cmV0dXJuIE5VTEw7XG4xOTU2Olx0XG4xOTU3Olx0XHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4xOTU4Olx0XHRsZW4gPSBoZWFkcm9vbSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICYjNDM7XG4xOTU5Olx0XHRcdHNpemVvZigqbmEpICYjNDM7IG5hX29sZW4gJiM0MzsgZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbjE5NjA6XHRcdHJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4xOTYxOlx0XHRpZiAocmVwbHkgPT0gTlVMTClcbjE5NjI6XHRcdFx0cmV0dXJuIE5VTEw7XG4xOTYzOlx0XG4xOTY0Olx0XHRyZXBseS1cdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpO1xuMTk2NTpcdFx0cmVwbHktXHUwMDNlZGV2ID0gZGV2O1xuMTk2NjpcdFx0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcbjE5Njc6XHRcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuMTk2ODpcdFx0c2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpO1xuMTk2OTpcdFxuMTk3MDpcdFx0bnMgPSAoc3RydWN0IG5kX21zZyAqKShpcHY2X2hkcihyZXF1ZXN0KSAmIzQzOyAxKTtcbjE5NzE6XHRcbjE5NzI6XHRcdGRhZGRyID0gZXRoX2hkcihyZXF1ZXN0KS1cdTAwM2VoX3NvdXJjZTtcbjE5NzM6XHRcdG5zX29sZW4gPSByZXF1ZXN0LVx1MDAzZWxlbiAtIHNrYl9uZXR3b3JrX29mZnNldChyZXF1ZXN0KSAtXG4xOTc0Olx0XHRcdHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgLSBzaXplb2YoKm5zKTtcbjE5NzU6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5zX29sZW4tMTsgaSAmIzQzOz0gKG5zLVx1MDAzZW9wdFtpJiM0MzsxXVx1MDAzY1x1MDAzYzMpKSB7XG4xOTc2Olx0XHRcdGlmICghbnMtXHUwMDNlb3B0W2kgJiM0MzsgMV0gfHwgaSAmIzQzOyAobnMtXHUwMDNlb3B0W2kgJiM0MzsgMV0gXHUwMDNjXHUwMDNjIDMpIFx1MDAzZSBuc19vbGVuKSB7XG4xOTc3Olx0XHRcdFx0a2ZyZWVfc2tiKHJlcGx5KTtcbjE5Nzg6XHRcdFx0XHRyZXR1cm4gTlVMTDtcbjE5Nzk6XHRcdFx0fVxuMTk4MDpcdFx0XHRpZiAobnMtXHUwMDNlb3B0W2ldID09IE5EX09QVF9TT1VSQ0VfTExfQUREUikge1xuMTk4MTpcdFx0XHRcdGlmICgobnMtXHUwMDNlb3B0W2kgJiM0MzsgMV0gXHUwMDNjXHUwMDNjIDMpIFx1MDAzZT1cbjE5ODI6XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBuZF9vcHRfaGRyKSAmIzQzOyBFVEhfQUxFTilcbjE5ODM6XHRcdFx0XHRcdGRhZGRyID0gbnMtXHUwMDNlb3B0ICYjNDM7IGkgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBuZF9vcHRfaGRyKTtcbjE5ODQ6XHRcdFx0XHRicmVhaztcbjE5ODU6XHRcdFx0fVxuMTk4NjpcdFx0fVxuMTk4NzpcdFxuMTk4ODpcdFx0LyogRXRoZXJuZXQgaGVhZGVyICovXG4xOTg5Olx0XHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihyZXBseSktXHUwMDNlaF9kZXN0LCBkYWRkcik7XG4xOTkwOlx0XHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihyZXBseSktXHUwMDNlaF9zb3VyY2UsIGhhKTtcbjE5OTE6XHRcdGV0aF9oZHIocmVwbHkpLVx1MDAzZWhfcHJvdG8gPSBodG9ucyhFVEhfUF9JUFY2KTtcbjE5OTI6XHRcdHJlcGx5LVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XG4xOTkzOlx0XG4xOTk0Olx0XHRza2JfcHVsbChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcbjE5OTU6XHRcdHNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihyZXBseSk7XG4xOTk2Olx0XHRza2JfcHV0KHJlcGx5LCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTtcbjE5OTc6XHRcbjE5OTg6XHRcdC8qIElQdjYgaGVhZGVyICovXG4xOTk5Olx0XG4yMDAwOlx0XHRwaXA2ID0gaXB2Nl9oZHIocmVwbHkpO1xuMjAwMTpcdFx0bWVtc2V0KHBpcDYsIDAsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xuMjAwMjpcdFx0cGlwNi1cdTAwM2V2ZXJzaW9uID0gNjtcbjIwMDM6XHRcdHBpcDYtXHUwMDNlcHJpb3JpdHkgPSBpcHY2X2hkcihyZXF1ZXN0KS1cdTAwM2Vwcmlvcml0eTtcbjIwMDQ6XHRcdHBpcDYtXHUwMDNlbmV4dGhkciA9IElQUFJPVE9fSUNNUFY2O1xuMjAwNTpcdFx0cGlwNi1cdTAwM2Vob3BfbGltaXQgPSAyNTU7XG4yMDA2Olx0XHRwaXA2LVx1MDAzZWRhZGRyID0gaXB2Nl9oZHIocmVxdWVzdCktXHUwMDNlc2FkZHI7XG4yMDA3Olx0XHRwaXA2LVx1MDAzZXNhZGRyID0gKihzdHJ1Y3QgaW42X2FkZHIgKiluLVx1MDAzZXByaW1hcnlfa2V5O1xuMjAwODpcdFxuMjAwOTpcdFx0c2tiX3B1bGwocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MzMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgdnhsYW5fbmFfY3JlYXRlYCBhbmQgUmVsYXRlZCBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGB2eGxhbl9jb3JlLmNgIGNvZGUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHZ4bGFuX25hX2NyZWF0ZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGhpZXJhcmNoeSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvcmUgdnhsYW4gZnVuY3Rpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYHZ4bGFuX25hX2NyZWF0ZWAgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZSBvZiBob3cgaXQgZml0cyB3aXRoaW4gdGhlIG92ZXJhbGwgdnhsYW4gZGF0YSBwbGFuZSBzZXR1cC4gQmV5b25kIHRoYXQsIEkgbmVlZCB0byBsb29rIGZvciBmdW5jdGlvbnMgY2xvc2VseSByZWxhdGVkIHRvIHRoZSBvcGVyYXRpb24sIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIHRoZSBjb2RlLiBUaGlzIHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLCBhbmQgdGhlIG92ZXJhbGwgZGF0YSBmbG93LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgZW50cnkgcG9pbnRzIGFuZCBleGl0IHBhdGhzLCBzbyBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgaXRzIGJlaGF2aW9yIGluIHRoZSBvdmVyYWxsIGNvbnRyb2wgcGF0aC4gSSYjMzk7bGwgZm9jdXMgb24gZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUsIGNvbmZpZ3VyZSwgb3IgZGVhbGxvY2F0ZSByZXNvdXJjZXMgdGhhdCBhcmUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIHRvIHNlZSBob3cgdGhlIG92ZXJhbGwgcHJvY2VzcyB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9uYV9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTE4NDI9c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE5MzktI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTk0MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjAzNj1zdGF0aWMgaW50IG5laWdoX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDc4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwNzk6XHRcdHJlcGx5ID0gdnhsYW5fbmFfY3JlYXRlKHNrYiwgbiwgaGEsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjA4MC1cdFx0XHRcdFx0ISEoZiA/IGYtXHUwMDNlZmxhZ3MgXHUwMDI2IE5URl9ST1VURVIgOiAwKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBuZWlnaF9yZWR1Y2VgIGFuZCBWWExBTiBGdW5jdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYG5laWdoX3JlZHVjZWAgYW5kIFZYTEFOLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGRpcmVjdCBjYWxsZXJzIGFuZCwgaWYgcG9zc2libGUsIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IFZYTEFOIGlzIGludm9sdmVkIGluIHRob3NlIGNhbGxzLiBBcmUgd2UgdGFsa2luZyBhYm91dCBwYWNrZXQgaGFuZGxpbmcsIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBzaW1wbGUgY2FsbCBncmFwaCB3b3VsZCBiZSBpZGVhbCBoZXJlLCBidXQgSeKAmWxsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgdG9vbHMgb3IgbWV0aG9kcyB0byBnZW5lcmF0ZSB0aGF0IGlmIGl0JiMzOTtzIG5vdCByZWFkaWx5IGF2YWlsYWJsZS4gRnJvbSB0aGF0LCBJIGNhbiBxdWlja2x5IGZvcm0gYSBoeXBvdGhlc2lzIHJlZ2FyZGluZyB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVpZ2hfcmVkdWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xOTQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDM1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwMzY6c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDM3LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjczOT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzgwLVx0XHRcdCAgICBtLVx1MDAzZWljbXBoLmljbXA2X3R5cGUgPT0gTkRJU0NfTkVJR0hCT1VSX1NPTElDSVRBVElPTilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzgxOlx0XHRcdFx0cmV0dXJuIG5laWdoX3JlZHVjZShkZXYsIHNrYiwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzgyLVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY0MgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgVlhMQU4gS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IGFyZSBzdHJ1Y3R1cmVkLiBNeSBnb2FsIGhlcmUgaXMgbGlrZWx5IHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBmZWF0dXJlcyBhcmUgYmVpbmcgZXhwb3NlZCwgdGhlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0sIGFuZCBwb3RlbnRpYWxseSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIHRoZSBtYWluIHN5bWJvbHMsIGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZToKCiogICBUaGUgYmFzZSBWWExBTiBkcml2ZXIgaXRzZWxmIChgQ09ORklHX1ZYTEFOYCkg4oCTIGlzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIHdoYXQmIzM5O3MgaXRzIHN0YXR1cz8KKiAgIEFueSBvcHRpb25zIGZvciBkaWZmZXJlbnQgZW5jYXBzdWxhdGlvbiB0eXBlcyBvciB0dW5uZWxpbmcgcHJvdG9jb2xzIGJlc2lkZXMgVURQIFZYTEFOLgoqICAgRmVhdHVyZSBmbGFnczogQXJlIHRoZXJlIGNvbnRyb2xzIGZvciBjaGVja3N1bSBvZmZsb2FkaW5nLCBUU08sIEdSTy9HU08sIG9yIG90aGVyIHBlcmZvcm1hbmNlLXJlbGF0ZWQgb3B0aW9ucz8gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIG9uZXMgYXJlIGV4cG9zZWQgc28gSSBjYW4gZXZhbHVhdGUgdGhlIGltcGxlbWVudGF0aW9uJiMzOTtzIGNhcGFiaWxpdGllcy4KKiAgIEhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIE5JQy1zcGVjaWZpYyBvZmZsb2FkcyBvciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvbiBjZXJ0YWluIGhhcmR3YXJlIGZlYXR1cmVzIG9yIHBsYXRmb3Jtcy4KKiAgIERlYnVnZ2luZyBvciB0cmFjaW5nIG9wdGlvbnMsIHNpbmNlIEkgbWlnaHQgYmUgbG9va2luZyBpbnRvIHRyYWNpbmcgYSBmYXVsdCBhbmQgZGVidWdnaW5nLgoKSSB3aWxsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBzcG90IGlmIGFueSBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIGFyZSByZXF1aXJlZCBmb3IgdGhlIFZYTEFOIGZ1bmN0aW9uYWxpdHkgdG8gYmUgZW5hYmxlZCBhbmQgd29ya2luZyBjb3JyZWN0bHkuIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmcsIGxvb2tpbmcgYXQgdGhlIGhpZXJhcmNoeSBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRob3NlIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoZSBidWlsZCBwcm9jZXNzLCB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlLCBhbmQsIHVsdGltYXRlbHksIHRoZSBwZXJmb3JtYW5jZSBhbmQgYmVoYXZpb3Igb2YgVlhMQU4gaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWWExBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDYyMiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMTY9Y29uZmlnIElQVlRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjI5LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzA6Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMTpcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzItXHRkZXBlbmRzIG9uIElORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzNi1cdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzNzpcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIFZYTEFOIGlzIG9mdGVuIHVzZWRcbmRyaXZlcnMvbmV0L0tjb25maWctMjM4LVx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cbi0tXG5kcml2ZXJzL25ldC9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVklSVElPX05FVCkgJiM0Mzs9IHZpcnRpb19uZXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1ZYTEFOKSAmIzQzOz0gdnhsYW4vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfR0VORVZFKSAmIzQzOz0gZ2VuZXZlLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oLTExNjctI2RlZmluZSBUWF9QQUNLRVRfQVRUUklCVVRFU19QVFBfV0lEVEhcdFx0MVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMTY4OiNkZWZpbmUgVFhfUEFDS0VUX0FUVFJJQlVURVNfVlhMQU5fSU5ERVhcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmg6MTE2OTojZGVmaW5lIFRYX1BBQ0tFVF9BVFRSSUJVVEVTX1ZYTEFOX1dJRFRIXHQxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oLTExNzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaC0xMjEzLSNkZWZpbmUgVFhfTk9STUFMX0RFU0MyX1ZMQU5fSU5TRVJUXHRcdDB4MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMjE0OiNkZWZpbmUgVFhfTk9STUFMX0RFU0MzX1ZYTEFOX1BBQ0tFVFx0XHQweDNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmgtMTIxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTM5MD1zdGF0aWMgdm9pZCB4Z2JlX3NldF92eGxhbl9pZChzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM5MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjM5MjpcdC8qIFByb2dyYW0gdGhlIFZYTEFOIHBvcnQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzkzLVx0WEdNQUNfSU9XUklURV9CSVRTKHBkYXRhLCBNQUNfVElSLCBUTklELCBwZGF0YS1cdTAwM2V2eGxhbl9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzozOTU6XHRuZXRpZl9kYmcocGRhdGEsIGRydiwgcGRhdGEtXHUwMDNlbmV0ZGV2LCBcJiMzNDtWWExBTiB0dW5uZWwgaWQgc2V0IHRvICVoeFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzk2LVx0XHQgIHBkYXRhLVx1MDAzZXZ4bGFuX3BvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9Mzk5PXN0YXRpYyB2b2lkIHhnYmVfZW5hYmxlX3Z4bGFuKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDA0Olx0LyogUHJvZ3JhbSB0aGUgVlhMQU4gcG9ydCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDUtXHR4Z2JlX3NldF92eGxhbl9pZChwZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDA3Olx0LyogQWxsb3cgZm9yIElQdjYvVURQIHplcm8tY2hlY2tzdW0gVlhMQU4gcGFja2V0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDgtXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19QRlIsIFZVQ0MsIDEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQxMDpcdC8qIEVuYWJsZSBWWExBTiB0dW5uZWxpbmcgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MTEtXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19UQ1IsIFZOTSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQxNDpcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O1ZYTEFOIGFjY2VsZXJhdGlvbiBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDE1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTQxNz1zdGF0aWMgdm9pZCB4Z2JlX2Rpc2FibGVfdnhsYW4oc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzo0MjU6XHQvKiBDbGVhciBJUHY2L1VEUCB6ZXJvLWNoZWNrc3VtIFZYTEFOIHBhY2tldHMgc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MjYtXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19QRlIsIFZVQ0MsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQyODpcdC8qIENsZWFyIHRoZSBWWExBTiBwb3J0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQyOS1cdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1RJUiwgVE5JRCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDMxOlx0bmV0aWZfZGJnKHBkYXRhLCBkcnYsIHBkYXRhLVx1MDAzZW5ldGRldiwgXCYjMzQ7VlhMQU4gYWNjZWxlcmF0aW9uIGRpc2FibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDMyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTE2MTU9c3RhdGljIHZvaWQgeGdiZV9kZXZfeG1pdChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMTY0MS1cdHZ4bGFuID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LVx1MDAzZWF0dHJpYnV0ZXMsIFRYX1BBQ0tFVF9BVFRSSUJVVEVTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzoxNjQyOlx0XHRcdCAgICAgICBWWExBTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE2NDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0xNzc1LVx0XHRYR01BQ19TRVRfQklUU19MRShyZGVzYy1cdTAwM2VkZXNjMywgVFhfTk9STUFMX0RFU0MzLCBWTlAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjE3NzY6XHRcdFx0XHQgIFRYX05PUk1BTF9ERVNDM19WWExBTl9QQUNLRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0xNzc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9MzU3MT12b2lkIHhnYmVfaW5pdF9mdW5jdGlvbl9wdHJzX2RldihzdHJ1Y3QgeGdiZV9od19pZiAqaHdfaWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0zNjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzozNjcwOlx0LyogRm9yIFZYTEFOICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM2NzEtXHRod19pZi1cdTAwM2VlbmFibGVfdnhsYW4gPSB4Z2JlX2VuYWJsZV92eGxhbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTY5MD12b2lkIHhnYmVfZ2V0X2FsbF9od19mZWF0dXJlcyhzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy04MzgtXHRcdFx0aHdfZmVhdC1cdTAwM2VzYV92bGFuX2lucyA/IFwmIzM0O3llc1wmIzM0OyA6IFwmIzM0O25vXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6ODM5Olx0XHRkZXZfZGJnKHBkYXRhLVx1MDAzZWRldiwgXCYjMzQ7ICBWWExBTi9OVkdSRSBzdXBwb3J0ICAgICAgIDogJXNcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTg0MC1cdFx0XHRod19mZWF0LVx1MDAzZXZ4biA/IFwmIzM0O3llc1wmIzM0OyA6IFwmIzM0O25vXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTkwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxMC1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxMTpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTEyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTE0NDA9c3RhdGljIGludCB4Z2JlX3ByZXBfdHNvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4Z2JlX3BhY2tldF9kYXRhICpwYWNrZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNDUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxNDUyOlx0aWYgKFhHTUFDX0dFVF9CSVRTKHBhY2tldC1cdTAwM2VhdHRyaWJ1dGVzLCBUWF9QQUNLRVRfQVRUUklCVVRFUywgVlhMQU4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE0NTMtXHRcdHBhY2tldC1cdTAwM2VoZWFkZXJfbGVuID0gc2tiX2lubmVyX3RjcF9hbGxfaGVhZGVycyhza2IpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MTUyMT1zdGF0aWMgdm9pZCB4Z2JlX3BhY2tldF9pbmZvKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE1NTctXHRcdFhHTUFDX1NFVF9CSVRTKHBhY2tldC1cdTAwM2VhdHRyaWJ1dGVzLCBUWF9QQUNLRVRfQVRUUklCVVRFUyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6MTU1ODpcdFx0XHQgICAgICAgVlhMQU4sIDEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MTkzNT1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgeGdiZV9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjE5NDY6XHQvKiBWWExBTiBDU1VNIHJlcXVpcmVzIFZYTEFOIGJhc2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMTk0Ny1cdGlmICgoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfR1NPX1VEUF9UVU5ORUxfQ1NVTSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oPTcwND1zdHJ1Y3QgeGdiZV9od19pZiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTgwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaDo4MDE6XHQvKiBGb3IgVlhMQU4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC04MDItXHR2b2lkICgqZW5hYmxlX3Z4bGFuKShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9OTMyPXN0cnVjdCB4Z2JlX2h3X2ZlYXR1cmVzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtOTUwLVx0dW5zaWduZWQgaW50IHNhX3ZsYW5faW5zO1x0LyogU291cmNlIEFkZHJlc3Mgb3IgVkxBTiBJbnNlcnRpb24gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaDo5NTE6XHR1bnNpZ25lZCBpbnQgdnhuO1x0XHQvKiBWWExBTi9OVkdSRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTk1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9OTkzPXN0cnVjdCB4Z2JlX3Bydl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaDoxMTQyOlx0LyogVlhMQU4gc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC0xMTQzLVx0dTE2IHZ4bGFuX3BvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oLTUwLSNkZWZpbmUgSFdfQVRMX0EwX1RYRF9DVExfQ01EX1dCICAgICAgQklUKDI3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oOjUxOiNkZWZpbmUgSFdfQVRMX0EwX1RYRF9DVExfQ01EX1ZYTEFOICAgQklUKDI4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaC01NS0jZGVmaW5lIEhXX0FUTF9CMF9UWERfQ1RMX0NNRF9XQiAgICAgIEJJVCgyNylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaDo1NjojZGVmaW5lIEhXX0FUTF9CMF9UWERfQ1RMX0NNRF9WWExBTiAgIEJJVCgyOClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYz0xNDM2PXN0YXRpYyB2b2lkIGJuZ2VfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jLTE0NDUtXHRpZiAoYm4tXHUwMDNldnhsYW5fcG9ydClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jOjE0NDY6XHRcdHR1bmxfdHBhX2JtYXAgfD0gVk5JQ19UUEFfQ0ZHX1JFUV9UTkxfVFBBX0VOX0JJVE1BUF9WWExBTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jLTE0NDctXHRpZiAoYm4tXHUwMDNldnhsYW5fZ3BlX3BvcnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYzoxNDQ4Olx0XHR0dW5sX3RwYV9ibWFwIHw9IFZOSUNfVFBBX0NGR19SRVFfVE5MX1RQQV9FTl9CSVRNQVBfVlhMQU5fR1BFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMtMTQ0OS1cdGlmIChibi1cdTAwM2VuZ2VfcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oPTEzMzk9ZW51bSBibngyeF91ZHBfcG9ydF90eXBlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4Lmg6MTM0MDpcdEJOWDJYX1VEUF9QT1JUX1ZYTEFOLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xMzQxLVx0Qk5YMlhfVURQX1BPUlRfR0VORVZFLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTIwODA9aW50IGJueDJ4X3JzcyhzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfcnNzX2NvbmZpZ19vYmogKnJzc19vYmosXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjEwOS1cdFx0aWYgKCFDSElQX0lTX0UxeChicCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjIxMTA6XHRcdFx0LyogdmFsaWQgb25seSBmb3IgVFVOTl9NT0RFX1ZYTEFOIHR1bm5lbCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyMTExOlx0XHRcdF9fc2V0X2JpdChCTlgyWF9SU1NfSVBWNF9WWExBTiwgXHUwMDI2cGFyYW1zLnJzc19mbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyMTEyOlx0XHRcdF9fc2V0X2JpdChCTlgyWF9SU1NfSVBWNl9WWExBTiwgXHUwMDI2cGFyYW1zLnJzc19mbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTMzNjI9c3RhdGljIHUzMiBibngyeF94bWl0X3R5cGUoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0zNDA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQwOTovKiBWWExBTjogNCA9IDEgKGZvciBsaW5lYXIgZGF0YSBCRCkgJiM0MzsgMyAoMiBmb3IgUEJEIGFuZCBsYXN0IEJEKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQxMDojZGVmaW5lIEJOWDJYX05VTV9WWExBTl9UU09fV0lOX1NVQl9CRFMgICAgICAgICA0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0zNDExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTM0MTk9c3RhdGljIGludCBibngyeF9wa3RfcmVxX2xpbihzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jLTM0MjUtXHRpZiAoeG1pdF90eXBlIFx1MDAyNiBYTUlUX0dTT19FTkMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzozNDI2Olx0XHRudW1fdHNvX3dpbl9zdWIgPSBCTlgyWF9OVU1fVlhMQU5fVFNPX1dJTl9TVUJfQkRTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMzQyNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaD05MjE9c3RhdGljIGlubGluZSBpbnQgYm54MnhfZnVuY19zdGFydChzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTk2Mi1cdFx0c3RhcnRfcGFyYW1zLVx1MDAzZW5ldHdvcmtfY29zX21vZGUgPSBGV19XUlI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaDo5NjM6XHRpZiAoYnAtXHUwMDNldWRwX3R1bm5lbF9wb3J0c1tCTlgyWF9VRFBfUE9SVF9WWExBTl0pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjk2NDpcdFx0cG9ydCA9IGJwLVx1MDAzZXVkcF90dW5uZWxfcG9ydHNbQk5YMlhfVURQX1BPUlRfVlhMQU5dO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmgtOTY1LVx0XHRzdGFydF9wYXJhbXMtXHUwMDNldnhsYW5fZHN0X3BvcnQgPSBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oPTM4ODU9c3RydWN0IGV0aF9jbGFzc2lmeV92bGFuX2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtMzg5My0vKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6Mzg5NDogKiBDb21tYW5kIGZvciBhZGRpbmcvcmVtb3ZpbmcgYSBWWExBTiBjbGFzc2lmaWNhdGlvbiBydWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC0zODk1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oPTQyMzg9c3RydWN0IGV0aF9yc3NfdXBkYXRlX3JhbXJvZF9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00MjQ3LSNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNF9VRFBfQ0FQQUJJTElUWV9TSElGVCAyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0MjQ4OiNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNF9WWExBTl9DQVBBQklMSVRZICgweDFcdTAwM2NcdTAwM2MzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6NDI0OTojZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWV9TSElGVCAzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00MjUwLSNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9DQVBBQklMSVRZICgweDFcdTAwM2NcdTAwM2M0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTUtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X1VEUF9DQVBBQklMSVRZX1NISUZUIDZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oOjQyNTY6I2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X1ZYTEFOX0NBUEFCSUxJVFkgKDB4MVx1MDAzY1x1MDAzYzcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0MjU3OiNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9WWExBTl9DQVBBQklMSVRZX1NISUZUIDdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTgtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9UVU5OX0lOTkVSX0hEUlNfQ0FQQUJJTElUWSAoMHgxXHUwMDNjXHUwMDNjOClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD00NDQ4PWVudW0gZXRoX3R1bm5fdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00NDQ5LVx0VFVOTl9UWVBFX05PTkUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0NDUwOlx0VFVOTl9UWVBFX1ZYTEFOLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtNDQ1MS1cdFRVTk5fVFlQRV9MMl9HUkUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMTY1PXN0YXRpYyBpbnQgYm54MnhfdWRwX3BvcnRfdXBkYXRlKHN0cnVjdCBibngyeCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMTkwOlx0aWYgKGJwLVx1MDAzZXVkcF90dW5uZWxfcG9ydHNbQk5YMlhfVURQX1BPUlRfVlhMQU5dKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAxOTE6XHRcdHZ4bGFuX3BvcnQgPSBicC1cdTAwM2V1ZHBfdHVubmVsX3BvcnRzW0JOWDJYX1VEUF9QT1JUX1ZYTEFOXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDE5Mi1cdFx0c3dpdGNoX3VwZGF0ZV9wYXJhbXMtXHUwMDNldnhsYW5fZHN0X3BvcnQgPSB2eGxhbl9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYm54MnhfdWRwX3R1bm5lbHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjI1LVx0LnRhYmxlc1x0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMDIyNjpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjctXHRcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfR0VORVZFLCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9NDQ4Mz1zdGF0aWMgaW50IGJueDJ4X3NldHVwX3JzcyhzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzMTpcdGlmICh0ZXN0X2JpdChCTlgyWF9SU1NfSVBWNF9WWExBTiwgXHUwMDI2cC1cdTAwM2Vyc3NfZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTMyOlx0XHRjYXBzIHw9IEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzNDpcdGlmICh0ZXN0X2JpdChCTlgyWF9SU1NfSVBWNl9WWExBTiwgXHUwMDI2cC1cdTAwM2Vyc3NfZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTM1Olx0XHRjYXBzIHw9IEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjZfVlhMQU5fQ0FQQUJJTElUWTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTYxOTk9c3RhdGljIGlubGluZSBpbnQgYm54MnhfZnVuY19zZW5kX3N3aXRjaF91cGRhdGUoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTYyNDktXHRcdFx0cmRhdGEtXHUwMDNlaW5uZXJfY2xzc19sMmdyZSA9IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjYyNTA6XHRcdGlmICh0ZXN0X2JpdChCTlgyWF9GX1VQREFURV9UVU5ORUxfSU5ORVJfQ0xTU19WWExBTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNjI1MS1cdFx0XHQgICAgIFx1MDAyNnN3aXRjaF91cGRhdGVfcGFyYW1zLVx1MDAzZWNoYW5nZXMpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9NzE1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNzI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo3Mjk6XHRCTlgyWF9SU1NfSVBWNF9WWExBTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NzMwOlx0Qk5YMlhfUlNTX0lQVjZfVlhMQU4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTczMS1cdEJOWDJYX1JTU19UVU5OX0lOTkVSX0hEUlMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaD0xMTE3PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtMTEyNS1cdEJOWDJYX0ZfVVBEQVRFX1RVTk5FTF9JTk5FUl9DTFNTX0wyR1JFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxMTI2Olx0Qk5YMlhfRl9VUERBVEVfVFVOTkVMX0lOTkVSX0NMU1NfVlhMQU4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTExMjctXHRCTlgyWF9GX1VQREFURV9UVU5ORUxfSU5ORVJfQ0xTU19MMkdFTkVWRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTExNzk9c3RydWN0IGJueDJ4X2Z1bmNfc3RhcnRfcGFyYW1zIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTExOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjExOTM6XHQvKiBVRFAgZGVzdCBwb3J0IGZvciBWWExBTiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xMTk0LVx0dTE2IHZ4bGFuX2RzdF9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTU5MDY9c3RhdGljIGludCBibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoc3RydWN0IGJueHQgKmJwLCB1OCB0dW5uZWxfdHlwZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NTkxMTpcdGlmICh0dW5uZWxfdHlwZSA9PSBUVU5ORUxfRFNUX1BPUlRfRlJFRV9SRVFfVFVOTkVMX1RZUEVfVlhMQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTEyLVx0ICAgIGJwLVx1MDAzZXZ4bGFuX2Z3X2RzdF9wb3J0X2lkID09IElOVkFMSURfSFdfUklOR19JRClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTI0LVx0c3dpdGNoICh0dW5uZWxfdHlwZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NTkyNTpcdGNhc2UgVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTkyNi1cdFx0cmVxLVx1MDAzZXR1bm5lbF9kc3RfcG9ydF9pZCA9IGNwdV90b19sZTE2KGJwLVx1MDAzZXZ4bGFuX2Z3X2RzdF9wb3J0X2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTM0LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjU5MzU6XHRjYXNlIFRVTk5FTF9EU1RfUE9SVF9GUkVFX1JFUV9UVU5ORUxfVFlQRV9WWExBTl9HUEU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTM2LVx0XHRyZXEtXHUwMDNldHVubmVsX2RzdF9wb3J0X2lkID0gY3B1X3RvX2xlMTYoYnAtXHUwMDNldnhsYW5fZ3BlX2Z3X2RzdF9wb3J0X2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz01OTUzPXN0YXRpYyBpbnQgYm54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9hbGxvYyhzdHJ1Y3QgYm54dCAqYnAsIF9fYmUxNiBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5NzUtXHRzd2l0Y2ggKHR1bm5lbF90eXBlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTc2Olx0Y2FzZSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk3Ny1cdFx0YnAtXHUwMDNldnhsYW5fcG9ydCA9IHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk4NC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTg1Olx0Y2FzZSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5ODYtXHRcdGJwLVx1MDAzZXZ4bGFuX2dwZV9wb3J0ID0gcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz02NTI5PXN0YXRpYyB2b2lkIGJueHRfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm54dCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNjUzNy1cdGlmIChicC1cdTAwM2V2eGxhbl9wb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NjUzODpcdFx0dHVubF90cGFfYm1hcCB8PSBWTklDX1RQQV9DRkdfUkVRX1ROTF9UUEFfRU5fQklUTUFQX1ZYTEFOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNjUzOS1cdGlmIChicC1cdTAwM2V2eGxhbl9ncGVfcG9ydClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjY1NDA6XHRcdHR1bmxfdHBhX2JtYXAgfD0gVk5JQ19UUEFfQ0ZHX1JFUV9UTkxfVFBBX0VOX0JJVE1BUF9WWExBTl9HUEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy02NTQxLVx0aWYgKGJwLVx1MDAzZW5nZV9wb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTEwNzQ0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9mcmVlX3R1bm5lbF9wb3J0cyhzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTA3NDYtXHRibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxMDc0NzpcdFx0VFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTEwNzQ4LVx0Ym54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9mcmVlKGJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDYwPXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3NldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDY2Olx0aWYgKHRpLVx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwNjc6XHRcdGNtZCA9IFRVTk5FTF9EU1RfUE9SVF9BTExPQ19SRVFfVFVOTkVMX1RZUEVfVlhMQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA2OC1cdGVsc2UgaWYgKHRpLVx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA3MC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDcxOlx0XHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDc2PXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwODI6XHRpZiAodGktXHUwMDNldHlwZSA9PSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4MzpcdFx0Y21kID0gVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODQtXHRlbHNlIGlmICh0aS1cdTAwM2V0eXBlID09IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4NzpcdFx0Y21kID0gVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDg4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibnh0X3VkcF90dW5uZWxzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDk2LVx0LnRhYmxlc1x0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDk3Olx0XHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCAgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDk4LVx0XHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSwgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNC1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjEwNTpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNi1cdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjEwNzpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTl9HUEUsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwOC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM9NzkzPXN0YXRpYyBpbnQgaHdybV9jZmFfZGVjYXBfZmlsdGVyX2FsbG9jKHN0cnVjdCBibnh0ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy04MTEtXHRcdCAgIENGQV9ERUNBUF9GSUxURVJfQUxMT0NfUkVRX0VOQUJMRVNfSVBfUFJPVE9DT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYzo4MTI6XHRyZXEtXHUwMDNldHVubmVsX3R5cGUgPSBDRkFfREVDQVBfRklMVEVSX0FMTE9DX1JFUV9UVU5ORUxfVFlQRV9WWExBTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTgxMy1cdHJlcS1cdTAwM2VpcF9wcm90b2NvbCA9IENGQV9ERUNBUF9GSUxURVJfQUxMT0NfUkVRX0lQX1BST1RPQ09MX1VEUDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYz04ODM9c3RhdGljIGludCBod3JtX2NmYV9lbmNhcF9yZWNvcmRfYWxsb2Moc3RydWN0IGJueHQgKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTg5OC1cdGVuY2FwID0gKHN0cnVjdCBod3JtX2NmYV9lbmNhcF9kYXRhX3Z4bGFuICopXHUwMDI2cmVxLVx1MDAzZWVuY2FwX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYzo4OTk6XHRyZXEtXHUwMDNlZW5jYXBfdHlwZSA9IENGQV9FTkNBUF9SRUNPUkRfQUxMT0NfUkVRX0VOQ0FQX1RZUEVfVlhMQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy05MDAtXHRldGhlcl9hZGRyX2NvcHkoZW5jYXAtXHUwMDNlZHN0X21hY19hZGRyLCBsMl9pbmZvLVx1MDAzZWRtYWMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTkwOC1cdGVuY2FwX2lwdjQgPSAoc3RydWN0IGh3cm1fdnhsYW5faXB2NF9oZHIgKillbmNhcC1cdTAwM2VsMztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jOjkwOTpcdGVuY2FwX2lwdjQtXHUwMDNldmVyX2hsZW4gPSA0IFx1MDAzY1x1MDAzYyBWWExBTl9JUFY0X0hEUl9WRVJfSExFTl9WRVJTSU9OX1NGVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jOjkxMDpcdGVuY2FwX2lwdjQtXHUwMDNldmVyX2hsZW4gfD0gNSBcdTAwM2NcdTAwM2MgVlhMQU5fSVBWNF9IRFJfVkVSX0hMRU5fSEVBREVSX0xFTkdUSF9TRlQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy05MTEtXHRlbmNhcF9pcHY0LVx1MDAzZXR0bCA9IGVuY2FwX2tleS1cdTAwM2V0dGw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg9NzE9c3RydWN0IGJueHRfdGNfYWN0aW9ucyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmgtNzMtI2RlZmluZSBCTlhUX1RDX0FDVElPTl9GTEFHX0ZXRFx0XHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg6NzQ6I2RlZmluZSBCTlhUX1RDX0FDVElPTl9GTEFHX0ZXRF9WWExBTlx0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5oLTc1LSNkZWZpbmUgQk5YVF9UQ19BQ1RJT05fRkxBR19QVVNIX1ZMQU5cdFx0QklUKDMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0zMy0vKiBDaGFuZ2UgdGhlIHZhbHVlIG9mIFNMSSBQYWNrZXQgSW5wdXQgSmFiYmVyIFJlZ2lzdGVyIHRvIGFsbG93XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjM0OiAqIFZYTEFOIFRTTyBwYWNrZXRzIHdoaWNoIGNhbiBiZSA2NDQyNCBieXRlcywgZXhjZWVkaW5nIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0zNS0gKiBNQVhfR1NPX1NJWkUgd2Ugc3VwcGxpZWQgdG8gdGhlIGtlcm5lbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9Mzk1PXN0YXRpYyBpbnQgY24yM3h4X3NldHVwX3BmX2RldmljZV9yZWdzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy00MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjQxMzpcdC8qIFNldCBTTElfUEtUX0lOX0pBQkJFUiB0byBoYW5kbGUgbGFyZ2UgVlhMQU4gcGFja2V0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy00MTQtXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX1BLVF9JTl9KQUJCRVIsIENOMjNYWF9JTlBVVF9KQUJCRVIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jPTI1Nj12b2lkIGxpcXVpZGlvX2xpbmtfY3RybF9jbWRfY29tcGxldGlvbih2b2lkICpuY3RybF9wdHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmM6MzczOlx0XHQvKiBDYXNlIHRvIGhhbmRsZSBcJiMzNDtPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzQtXHRcdCAqIENvbW1hbmQgcGFzc2VkIGJ5IE5JQyBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM3NS1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzozNzY6XHRjYXNlIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzozNzc6XHRcdGlmIChuY3RybC1cdTAwM2VuY21kLnMubW9yZSA9PSBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQUREKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzgtXHRcdFx0bmV0aWZfaW5mbyhsaW8sIHByb2JlLCBsaW8tXHUwMDNlbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM4MS1cdFx0fSBlbHNlIGlmIChuY3RybC1cdTAwM2VuY21kLnMubW9yZSA9PVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmM6MzgyOlx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM4My1cdFx0XHRuZXRpZl9pbmZvKGxpbywgcHJvYmUsIGxpby1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjYwOT1zdGF0aWMgaW50IGxpcXVpZGlvX3NldF9yeGNzdW1fY29tbWFuZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgY29tbWFuZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjM5LSAqIEBuZXRkZXY6ICAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2NDA6ICogQGNvbW1hbmQ6ICAgICAgICAgICAgICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY0MS0gKiBAdnhsYW5fcG9ydDogICAgICAgICAgICBWeExBTiBwb3J0IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2NDI6ICogQHZ4bGFuX2NtZF9iaXQ6ICAgICAgICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0FERCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2NDM6ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjQ0LSAqIFJldHVybjogICAgICAgICAgICAgICAgICAgICBTVUNDRVNTIG9yIEZBSUxVUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjc1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2NzktXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2ODA6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjgxLVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2ODI6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY4My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY4NT1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTAtXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTE6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjkyLVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTM6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5OS1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNzAwOlx0XHR7IC5uX2VudHJpZXMgPSAxMDI0LCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjcwMS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTY5OD1zdGF0aWMgaW50IGxpcXVpZGlvX3NldF9yeGNzdW1fY29tbWFuZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgY29tbWFuZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzI2LSAqIEBwYXJhbSBuZXRkZXYgICAgICAgICAgICAgICAgcG9pbnRlciB0byBuZXR3b3JrIGRldmljZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTcyNzogKiBAcGFyYW0gY29tbWFuZCAgICAgICAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3MjgtICogQHBhcmFtIHZ4bGFuX3BvcnQgICAgICAgICAgICBWeExBTiBwb3J0IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Mjk6ICogQHBhcmFtIHZ4bGFuX2NtZF9iaXQgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQURELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTczMDogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3MzEtICogQHJldHVybnMgICAgICAgICAgICAgICAgICAgICBTVUNDRVNTIG9yIEZBSUxVUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xNzYyPXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NjYtXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Njc6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzY4LVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Njk6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc3MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NzctXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Nzg6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzc5LVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3ODA6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4MS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4Ni1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzg3Olx0XHR7IC5uX2VudHJpZXMgPSAxMDI0LCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oPTE3Mz1zdGF0aWMgaW5saW5lIHZvaWQgYWRkX3NnX3NpemUoc3RydWN0IG9jdGVvbl9zZ19lbnRyeSAqc2dfZW50cnksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTIzMi0jZGVmaW5lICAgT0NUTkVUX0NNRF9ERUxfVkxBTl9GSUxURVIgIDB4MThcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzM6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcgMHgxOVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTIzNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI0NjojZGVmaW5lICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0FERCAgICAweDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyNDc6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwgICAgMHgxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ4LSNkZWZpbmUgICBPQ1RORVRfQ01EX1JYQ1NVTV9FTkFCTEUgICAgIDB4MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmM9ODI3PXN0YXRpYyB2b2lkIG5pY19lbmFibGVfdHVubmVsX3BhcnNpbmcoc3RydWN0IG5pY3BmICpuaWMsIGludCB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jLTgzOS1cdFx0ICAgICAgKCg3VUxMIFx1MDAzY1x1MDAzYyA2MSkgfCBwcm90X2RlZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYzo4NDA6XHRuaWNfcmVnX3dyaXRlKG5pYywgTklDX1BGX1JYX1ZYTEFOX0RFRl8wXzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jOjg0MTpcdFx0ICAgICAgKCgxVUxMIFx1MDAzY1x1MDAzYyA2MykgfCBVRFBfVlhMQU5fUE9SVF9OVU0pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmM6ODQyOlx0bmljX3JlZ193cml0ZShuaWMsIE5JQ19QRl9SWF9WWExBTl9QUk9UX0RFRixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMtODQzLVx0XHQgICAgICAoKDB4ZlVMTCBcdTAwM2NcdTAwM2MgNjApIHwgdnhsYW5fcHJvdF9kZWYpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfcmVnLmgtNDItI2RlZmluZSAgIE5JQ19QRl9SWF9OVkdSRV9QUk9UX0RFRlx0XHQoMHgwNTk4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQzOiNkZWZpbmUgICBOSUNfUEZfUlhfVlhMQU5fREVGXzBfMVx0XHQoMHgwNUEwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQ0OiNkZWZpbmUgICAgVURQX1ZYTEFOX1BPUlRfTlVNXHRcdFx0XHQweDEyQjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19yZWcuaDo0NTojZGVmaW5lICAgTklDX1BGX1JYX1ZYTEFOX1BST1RfREVGXHRcdCgweDA1QjApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfcmVnLmgtNDYtI2RlZmluZSAgICBJUFY2X1BST1RfREVGXHRcdFx0XHQweDJVTExcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz0zNzI3PXN0YXRpYyBpbnQgY3hnYl91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzM2LVx0c3dpdGNoICh0aS1cdTAwM2V0eXBlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozNzM3Olx0Y2FzZSBVRFBfVFVOTkVMX1RZUEVfVlhMQU46XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzM4LVx0XHRhZGFwdGVyLVx1MDAzZXZ4bGFuX3BvcnQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzczOTpcdFx0dDRfd3JpdGVfcmVnKGFkYXB0ZXIsIE1QU19SWF9WWExBTl9UWVBFX0EsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzc0MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3NzktXHRzd2l0Y2ggKHRpLVx1MDAzZXR5cGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3ODA6XHRjYXNlIFVEUF9UVU5ORUxfVFlQRV9WWExBTjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3ODEtXHRcdGFkYXB0ZXItXHUwMDNldnhsYW5fcG9ydCA9IHRpLVx1MDAzZXBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozNzgyOlx0XHR0NF93cml0ZV9yZWcoYWRhcHRlciwgTVBTX1JYX1ZYTEFOX1RZUEVfQSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3ODM6XHRcdFx0ICAgICBWWExBTl9WKGJlMTZfdG9fY3B1KHRpLVx1MDAzZXBvcnQpKSB8IFZYTEFOX0VOX0YpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzc4NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9MzgxOD1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODIxLVx0LnRhYmxlc1x0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM4MjI6XHRcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4sICB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgyMy1cdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYz0xMjY3PWVudW0gY3BsX3R4X3RubF9sc29fdHlwZSBjeGdiX2VuY2FwX29mZmxvYWRfc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYy0xMjkxLVx0XHRpZiAoYWRhcHRlci1cdTAwM2V2eGxhbl9wb3J0ID09IHVkcF9oZHIoc2tiKS1cdTAwM2VkZXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYzoxMjkyOlx0XHRcdHRubF90eXBlID0gVFhfVE5MX1RZUEVfVlhMQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEyOTMtXHRcdGVsc2UgaWYgKGFkYXB0ZXItXHUwMDNlZ2VuZXZlX3BvcnQgPT0gdWRwX2hkcihza2IpLVx1MDAzZWRlc3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYz0xMzAzPXN0YXRpYyBpbmxpbmUgdm9pZCB0Nl9maWxsX3RubF9sc28oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEzMzItXHRzd2l0Y2ggKHRubF90eXBlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jOjEzMzM6XHRjYXNlIFRYX1ROTF9UWVBFX1ZYTEFOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYy0xMzM0LVx0Y2FzZSBUWF9UTkxfVFlQRV9HRU5FVkU6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9tc2cuaD0xNTc4PWVudW0gY3BsX3R4X3RubF9sc29fdHlwZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9tc2cuaC0xNTgwLVx0VFhfVE5MX1RZUEVfTlZHUkUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X21zZy5oOjE1ODE6XHRUWF9UTkxfVFlQRV9WWExBTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfbXNnLmgtMTU4Mi1cdFRYX1ROTF9UWVBFX0dFTkVWRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaC0yNTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3MjojZGVmaW5lIE1QU19SWF9WWExBTl9UWVBFX0EgMHgxMTIzNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmgtMjU3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oOjI1NzQ6I2RlZmluZSBWWExBTl9FTl9TICAgIDE2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc1OiNkZWZpbmUgVlhMQU5fRU5fVih4KSAoKHgpIFx1MDAzY1x1MDAzYyBWWExBTl9FTl9TKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3NjojZGVmaW5lIFZYTEFOX0VOX0YgICAgVlhMQU5fRU5fVigxVSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oLTI1NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc4OiNkZWZpbmUgVlhMQU5fUyAgICAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc5OiNkZWZpbmUgVlhMQU5fTSAgICAweGZmZmZVXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTgwOiNkZWZpbmUgVlhMQU5fVih4KSAoKHgpIFx1MDAzY1x1MDAzYyBWWExBTl9TKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFZYTEFOIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyBhcmUgdGhlIGBkcml2ZXJzL25ldC92eGxhbi9NYWtlZmlsZWAgYW5kIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlcy4gVGhlc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdW5kZXJzdGFuZGluZyBob3cgVlhMQU4gc3VwcG9ydCBpcyBjb21waWxlZCwgd2hhdCBidWlsZCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGFuZCB3aGF0IEtjb25maWcgc3ltYm9scyBjb250cm9sIHRoZSBmZWF0dXJlJiMzOTtzIGluY2x1c2lvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBWWExBTiBtb2R1bGUgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MuIEkgd2FudCB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIGV2ZXJ5IGFzcGVjdCBvZiBpdHMgY29uc3RydWN0aW9uIGFuZCBwb3NzaWJsZSBkZXBlbmRlbmNpZXMuIE9uY2UgSSBoYXZlIHRoZSBsYXlvdXQgb2YgdGhlIEtjb25maWcgb3B0aW9ucywgSSBjYW4gZnVydGhlciBkZWJ1ZyBidWlsZCBpc3N1ZXMgaWYgYW55IGFyaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0I1xuICAgMjpcdCMgTWFrZWZpbGUgZm9yIHRoZSB2eGxhbiBkcml2ZXJcbiAgIDM6XHQjXG4gICA0Olx0XG4gICA1Olx0b2JqLSQoQ09ORklHX1ZYTEFOKSAmIzQzOz0gdnhsYW4ub1xuICAgNjpcdFxuICAgNzpcdHZ4bGFuLW9ianMgOj0gdnhsYW5fY29yZS5vIHZ4bGFuX211bHRpY2FzdC5vIHZ4bGFuX3ZuaWZpbHRlci5vIHZ4bGFuX21kYi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODAwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIEJhc2VkIG9uIHRoZSB0YXNrIGF0IGhhbmQgKHdoaWNoIEkmIzM5O20gbm90IHByaXZ5IHRvLCBidXQgSSYjMzk7bGwgYXNzdW1lIGludm9sdmVzIGEgbmV0d29yayBkcml2ZXIsIGdpdmVuIHRoZSBjb250ZXh0KSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG5hdmlnYXRlIHRvIHRoZSBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIHpvb20gaW4gYXJvdW5kIGxpbmUgMjMwLiBUaGF0IGxvY2F0aW9uIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuIEl0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbmZpZ3VyZWQsIHdoYXQgdGhlIGV4aXN0aW5nIG9wdGlvbnMgYXJlLCBhbmQgaWYgc29tZXRoaW5nIHJlbGV2YW50IHRvIG15IHRhc2sgaXMgZGVmaW5lZCB0aGVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIHVuZWFydGghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjI1Olx0XHQgIGlwdnRhcCYjMzk7LCBhbmQgdGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSB0YXAgdXNlciBzcGFjZSBpbnRlcmZhY2UuXG4gMjI2Olx0XG4gMjI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyMjg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaXB2dGFwLlxuIDIyOTpcdFxuIDIzMDpcdGNvbmZpZyBWWExBTlxuIDIzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXCYjMzQ7XG4gMjMyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAyMzM6XHRcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuIDIzNDpcdFx0c2VsZWN0IEdST19DRUxMU1xuIDIzNTpcdFx0aGVscFxuIDIzNjpcdFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZ4bGFuIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyMzc6XHRcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIFZYTEFOIGlzIG9mdGVuIHVzZWRcbiAyMzg6XHRcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG4gMjM5Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAyNDA6XHRcdCAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1tYWhhbGluZ2FtLWR1dHQtZGNvcHMtdnhsYW4tMDJcbiAyNDE6XHRcbiAyNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDI0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cbiAyNDQ6XHRcbiAyNDU6XHRjb25maWcgR0VORVZFXG4gMjQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuIDI0NzpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjQ4Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAyNDk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiAyNTA6XHRcdGhlbHBcbiAyNTE6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBnZW5ldmUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxuIDI1MjpcdFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gR0VORVZFIGlzIG9mdGVuIHVzZWRcbiAyNTM6XHRcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG4gMjU0Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY29kZSBjaGFuZ2UuIEZpcnN0LCBsZXQmIzM5O3MgaXNvbGF0ZSB0aGUgYnVnIHRoYXQgd2FzIGFkZHJlc3NlZC4gSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgY29kZToKCmBgYGMKLQlza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC0mZ3Q7ZGV2KSk7CiYjNDM7CXNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7CmBgYAoKdXNlZCBgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC0mZ3Q7ZGV2KWAgZm9yIHRoZSBgc2tiX3Jlc2VydmVgIGNhbGwsIHdoaWxlIGNhbGN1bGF0aW5nIGBsZW5gIHVzZWQgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgLiBUaGUgZml4IGhhcyByZXBsYWNlZCBpdCB3aXRoIGBoZWFkcm9vbWAgd2hpY2ggaXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgLiBJIHNlZSB0aGF0IGBkZXZgIGlzIGFzc2lnbmVkIHRvIGByZXF1ZXN0LSZndDtkZXZgIHNvIHRoZXJlIG1heSBub3QgaGF2ZSBiZWVuIGEgZnVuY3Rpb25hbCBidWcsIGJ1dCB0aGlzIG1ha2VzIHRoZSBjb2RlIGNvbnNpc3RlbnQuIFRoZSBvcmlnaW5hbCBjYWxjdWxhdGlvbiBvZiB0aGUgbGVuZ3RoIHdhcyBjb3JyZWN0IGJ1dCB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZm9yIGEgbWlzbWF0Y2gsIG9yIGF0IGxlYXN0IGEgcmVkdW5kYW50IGNhbGN1bGF0aW9uIGlmIGByZXF1ZXN0LSZndDtkZXZgIGhhZCBjaGFuZ2VkLiBVc2luZyBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgbWFrZXMgdGhlIGludGVudGlvbiBjbGVhciBhbmQgdGhlIGNvZGUgY2xlYW5lci4KCkFscmlnaHQsIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGlzIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIGlzIGd1YXJkZWQgYnkgYCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50OyBpdCYjMzk7cyBzcGVjaWZpYyB0byBJUHY2LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUgd2l0aGluIHRoZSBWWExBTiBtb2R1bGUsIHBhcnRpY3VsYXJseSBhcm91bmQgbmVpZ2hib3IgZGlzY292ZXJ5IG9yIHRyYW5zbWlzc2lvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYnJvYWRlciBjb2RlYmFzZSBvZiBgdnhsYW5fY29yZS5jYCBhbmQgYWxzbyBsb29rIGF0IGVudHJ5IHBvaW50cyB0byBmdW5jdGlvbnMgbGlrZSBgbmVpZ2hfcmVkdWNlYCBvciBgdnhsYW5feG1pdGAgdG8gZ2V0IGEgZnVsbCB1bmRlcnN0YW5kaW5nLgoKSSBzaG91bGQgYWxzbyBleGFtaW5lIHRoZSByZXN0IG9mIHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBmdW5jdGlvbiB0byBjaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgaXNzdWVzIGFuZCB0aGVuIGNvbnNpZGVyIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluc2lkZSBgbmVpZ2hfcmVkdWNlYCBmb3IgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIwMTA6XHRcdHNrYl9yZXNldF90cmFuc3BvcnRfaGVhZGVyKHJlcGx5KTtcbjIwMTE6XHRcbjIwMTI6XHRcdC8qIE5laWdoYm9yIEFkdmVydGlzZW1lbnQgKi9cbjIwMTM6XHRcdG5hID0gc2tiX3B1dF96ZXJvKHJlcGx5LCBzaXplb2YoKm5hKSAmIzQzOyBuYV9vbGVuKTtcbjIwMTQ6XHRcdG5hLVx1MDAzZWljbXBoLmljbXA2X3R5cGUgPSBORElTQ19ORUlHSEJPVVJfQURWRVJUSVNFTUVOVDtcbjIwMTU6XHRcdG5hLVx1MDAzZWljbXBoLmljbXA2X3JvdXRlciA9IGlzcm91dGVyO1xuMjAxNjpcdFx0bmEtXHUwMDNlaWNtcGguaWNtcDZfb3ZlcnJpZGUgPSAxO1xuMjAxNzpcdFx0bmEtXHUwMDNlaWNtcGguaWNtcDZfc29saWNpdGVkID0gMTtcbjIwMTg6XHRcdG5hLVx1MDAzZXRhcmdldCA9IG5zLVx1MDAzZXRhcmdldDtcbjIwMTk6XHRcdGV0aGVyX2FkZHJfY29weShcdTAwMjZuYS1cdTAwM2VvcHRbMl0sIGhhKTtcbjIwMjA6XHRcdG5hLVx1MDAzZW9wdFswXSA9IE5EX09QVF9UQVJHRVRfTExfQUREUjtcbjIwMjE6XHRcdG5hLVx1MDAzZW9wdFsxXSA9IG5hX29sZW4gXHUwMDNlXHUwMDNlIDM7XG4yMDIyOlx0XG4yMDIzOlx0XHRuYS1cdTAwM2VpY21waC5pY21wNl9ja3N1bSA9IGNzdW1faXB2Nl9tYWdpYyhcdTAwMjZwaXA2LVx1MDAzZXNhZGRyLFxuMjAyNDpcdFx0XHRcdTAwMjZwaXA2LVx1MDAzZWRhZGRyLCBzaXplb2YoKm5hKSYjNDM7bmFfb2xlbiwgSVBQUk9UT19JQ01QVjYsXG4yMDI1Olx0XHRcdGNzdW1fcGFydGlhbChuYSwgc2l6ZW9mKCpuYSkmIzQzO25hX29sZW4sIDApKTtcbjIwMjY6XHRcbjIwMjc6XHRcdHBpcDYtXHUwMDNlcGF5bG9hZF9sZW4gPSBodG9ucyhzaXplb2YoKm5hKSYjNDM7bmFfb2xlbik7XG4yMDI4Olx0XG4yMDI5Olx0XHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG4yMDMwOlx0XG4yMDMxOlx0XHRyZXBseS1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcbjIwMzI6XHRcbjIwMzM6XHRcdHJldHVybiByZXBseTtcbjIwMzQ6XHR9XG4yMDM1Olx0XG4yMDM2Olx0c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcbjIwMzc6XHR7XG4yMDM4Olx0XHRzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiA9IG5ldGRldl9wcml2KGRldik7XG4yMDM5Olx0XHRjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyO1xuMjA0MDpcdFx0Y29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwaGRyO1xuMjA0MTpcdFx0c3RydWN0IG5laWdoYm91ciAqbjtcbjIwNDI6XHRcdHN0cnVjdCBuZF9tc2cgKm1zZztcbjIwNDM6XHRcbjIwNDQ6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjIwNDU6XHRcdGlmICh1bmxpa2VseSghaXB2Nl9tb2RfZW5hYmxlZCgpKSlcbjIwNDY6XHRcdFx0Z290byBvdXQ7XG4yMDQ3Olx0XG4yMDQ4Olx0XHRpcGhkciA9IGlwdjZfaGRyKHNrYik7XG4yMDQ5Olx0XHRkYWRkciA9IFx1MDAyNmlwaGRyLVx1MDAzZWRhZGRyO1xuMjA1MDpcdFx0bXNnID0gKHN0cnVjdCBuZF9tc2cgKikoaXBoZHIgJiM0MzsgMSk7XG4yMDUxOlx0XG4yMDUyOlx0XHRpZiAoaXB2Nl9hZGRyX2xvb3BiYWNrKGRhZGRyKSB8fFxuMjA1MzpcdFx0ICAgIGlwdjZfYWRkcl9pc19tdWx0aWNhc3QoXHUwMDI2bXNnLVx1MDAzZXRhcmdldCkpXG4yMDU0Olx0XHRcdGdvdG8gb3V0O1xuMjA1NTpcdFxuMjA1NjpcdFx0biA9IG5laWdoX2xvb2t1cChcdTAwMjZuZF90YmwsIFx1MDAyNm1zZy1cdTAwM2V0YXJnZXQsIGRldik7XG4yMDU3Olx0XG4yMDU4Olx0XHRpZiAobikge1xuMjA1OTpcdFx0XHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XG4yMDYwOlx0XHRcdHU4IGhhW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XG4yMDYxOlx0XHRcdHN0cnVjdCB2eGxhbl9mZGIgKmY7XG4yMDYyOlx0XHRcdHN0cnVjdCBza19idWZmICpyZXBseTtcbjIwNjM6XHRcbjIwNjQ6XHRcdFx0aWYgKCEoUkVBRF9PTkNFKG4tXHUwMDNlbnVkX3N0YXRlKSBcdTAwMjYgTlVEX0NPTk5FQ1RFRCkpIHtcbjIwNjU6XHRcdFx0XHRuZWlnaF9yZWxlYXNlKG4pO1xuMjA2NjpcdFx0XHRcdGdvdG8gb3V0O1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XG4yMDY5Olx0XHRcdG5laWdoX2hhX3NuYXBzaG90KGhhLCBuLCBuLVx1MDAzZWRldik7XG4yMDcwOlx0XHRcdGYgPSB2eGxhbl9maW5kX21hY190eCh2eGxhbiwgaGEsIHZuaSk7XG4yMDcxOlx0XHRcdGlmIChmKVxuMjA3MjpcdFx0XHRcdHJkc3QgPSBmaXJzdF9yZW1vdGVfcmN1KGYpO1xuMjA3MzpcdFx0XHRpZiAocmRzdCBcdTAwMjZcdTAwMjYgdnhsYW5fYWRkcl9hbnkoXHUwMDI2cmRzdC1cdTAwM2VyZW1vdGVfaXApKSB7XG4yMDc0Olx0XHRcdFx0LyogYnJpZGdlLWxvY2FsIG5laWdoYm9yICovXG4yMDc1Olx0XHRcdFx0bmVpZ2hfcmVsZWFzZShuKTtcbjIwNzY6XHRcdFx0XHRnb3RvIG91dDtcbjIwNzc6XHRcdFx0fVxuMjA3ODpcdFxuMjA3OTpcdFx0XHRyZXBseSA9IHZ4bGFuX25hX2NyZWF0ZShza2IsIG4sIGhhLFxuMjA4MDpcdFx0XHRcdFx0XHQhIShmID8gZi1cdTAwM2VmbGFncyBcdTAwMjYgTlRGX1JPVVRFUiA6IDApKTtcbjIwODE6XHRcbjIwODI6XHRcdFx0bmVpZ2hfcmVsZWFzZShuKTtcbjIwODM6XHRcbjIwODQ6XHRcdFx0aWYgKHJlcGx5ID09IE5VTEwpXG4yMDg1Olx0XHRcdFx0Z290byBvdXQ7XG4yMDg2Olx0XG4yMDg3Olx0XHRcdGlmIChuZXRpZl9yeChyZXBseSkgPT0gTkVUX1JYX0RST1ApIHtcbjIwODg6XHRcdFx0XHRkZXZfZHN0YXRzX3J4X2Ryb3BwZWQoZGV2KTtcbjIwODk6XHRcdFx0XHR2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgTlVMTCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2MTkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIGB2eGxhbl94bWl0YCBhbmQgYG5laWdoX3JlZHVjZWA6CgoqKkRpdmluZyBpbnRvIHRoZSBWWExBTiBUcmFuc21pc3Npb24gUGF0aCBhbmQgTmVpZ2hib3IgRGlzY292ZXJ5KioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgaW4gb24gdGhlIFZYTEFOIHRyYW5zbWl0IGZ1bmN0aW9uIChgdnhsYW5feG1pdGApIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBwb2ludCB3aGVyZSBgbmVpZ2hfcmVkdWNlYCBnZXRzIGNhbGxlZC4gVGhpcyBtZWFucyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzZW5kaW5nIFZYTEFOIGVuY2Fwc3VsYXRlZCB0cmFmZmljLiBUaGUgZmFjdCB0aGF0IGBuZWlnaF9yZWR1Y2VgIGlzIGludm9sdmVkIHRlbGxzIG1lIHRoZSBzeXN0ZW0gaXMgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIG5laWdoYm9yIGRpc2NvdmVyeSBhbmQgcmVzb2x1dGlvbiBzY2VuYXJpby4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiBob3cgdGhlIHN5c3RlbSBmaWd1cmVzIG91dCB0aGUgTGF5ZXIgMiAoTUFDKSBhZGRyZXNzIG5lZWRlZCB0byByZWFjaCB0aGUgZGVzdGluYXRpb24gVlhMQU4gdHVubmVsIGVuZHBvaW50IChWVEVQKS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGBuZWlnaF9yZWR1Y2VgIGlzIGhhcHBlbmluZyBhdCB0aGlzIHBvaW50LiBJcyBpdCBiZWNhdXNlIHRoZSBBUlAvTkQgY2FjaGUgZW50cnkgZm9yIHRoZSBkZXN0aW5hdGlvbiBWVEVQIGlzIHN0YWxlIG9yIG1pc3Npbmc/IE9yIGlzIHRoZSBzeXN0ZW0gYWN0aXZlbHkgcHJvYmluZyB0byBjb25maXJtIGNvbm5lY3Rpdml0eT8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBgdnhsYW5feG1pdGAgdG8gYG5laWdoX3JlZHVjZWAgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHNpdHVhdGlvbi4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhIG11bHRpY2FzdCBzZXR1cCB3aGVyZSB0aGUgbmVpZ2hib3IgY2FjaGUgZW50cnkgbWF5IGJlIGR5bmFtaWM/IAoKSSBzdXNwZWN0IHRoaXMgaW52b2x2ZXMgc29tZSBmb3JtIG9mIEFSUC9ORCBzb2xpY2l0YXRpb24gb3IgZ3JhdHVpdG91cyBBUlAsIGJ1dCBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlIHN5c3RlbSBkZWNpZGVzICp3aGVuKiB0byBpbnZva2UgYG5laWdoX3JlZHVjZWAgaW4gdGhlIGB2eGxhbl94bWl0YCBjb2RlIHBhdGguIElzIHRoZXJlIGEgdGltZXIgaW52b2x2ZWQ/IFdoYXQgYXJlIHRoZSBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGUgbmVpZ2hib3IgY2FjaGUgdG8gYmUgY29uc2lkZXJlZCBzdGFsZT8gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBpcyBjcml0aWNhbC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IFZYTEFOIGFkZHMgYW4gb3V0ZXIgSVAvVURQIGhlYWRlciwgc28gcmVndWxhciBBUlAvTkQgbmVlZHMgdG8gYmUgYWRhcHRlZC4KCkkmIzM5O2xsIGNoZWNrIHRoZSBhc3NvY2lhdGVkIHZhcmlhYmxlcyB0byBjb25maXJtLiBJcyB0aGVyZSBhbnkgYnVmZmVyaW5nIGhhcHBlbmluZyBiZWZvcmUgbmVpZ2hib3IgcmVzb2x1dGlvbj8gRG9lcyB0aGlzIGhhdmUgaW1wbGljYXRpb25zIGZvciB0aGUgcGFja2V0IGRlbGl2ZXJ5IGxhdGVuY3k/IEFueSBwb3RlbnRpYWwgZm9yIHBhY2tldCBkcm9wcyBkdXJpbmcgdGhlIG5laWdoYm9yIHJlc29sdXRpb24gcHJvY2Vzcz8gSSBoYXZlIHRvIGxvb2sgZm9yIGFueSBvcHRpbWl6YXRpb25zIG9yIHdvcmthcm91bmRzIGZvciB0aGlzIGNyaXRpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNzUwOlx0XHRpbmZvID0gc2tiX3R1bm5lbF9pbmZvKHNrYik7XG4yNzUxOlx0XG4yNzUyOlx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuMjc1MzpcdFxuMjc1NDpcdFx0aWYgKHZ4bGFuLVx1MDAzZWNmZy5mbGFncyBcdTAwMjYgVlhMQU5fRl9DT0xMRUNUX01FVEFEQVRBKSB7XG4yNzU1Olx0XHRcdGlmIChpbmZvIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZW1vZGUgXHUwMDI2IElQX1RVTk5FTF9JTkZPX0JSSURHRSBcdTAwMjZcdTAwMjZcbjI3NTY6XHRcdFx0ICAgIGluZm8tXHUwMDNlbW9kZSBcdTAwMjYgSVBfVFVOTkVMX0lORk9fVFgpIHtcbjI3NTc6XHRcdFx0XHR2bmkgPSB0dW5uZWxfaWRfdG9fa2V5MzIoaW5mby1cdTAwM2VrZXkudHVuX2lkKTtcbjI3NTg6XHRcdFx0XHRuaGlkID0gaW5mby1cdTAwM2VrZXkubmhpZDtcbjI3NTk6XHRcdFx0fSBlbHNlIHtcbjI3NjA6XHRcdFx0XHRpZiAoaW5mbyBcdTAwMjZcdTAwMjYgaW5mby1cdTAwM2Vtb2RlIFx1MDAyNiBJUF9UVU5ORUxfSU5GT19UWClcbjI3NjE6XHRcdFx0XHRcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIE5VTEwsIGZhbHNlKTtcbjI3NjI6XHRcdFx0XHRlbHNlXG4yNzYzOlx0XHRcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX1RVTk5FTF9UWElORk8pO1xuMjc2NDpcdFx0XHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4yNzY1Olx0XHRcdH1cbjI3NjY6XHRcdH1cbjI3Njc6XHRcbjI3Njg6XHRcdGlmICh2eGxhbi1cdTAwM2VjZmcuZmxhZ3MgXHUwMDI2IFZYTEFOX0ZfUFJPWFkpIHtcbjI3Njk6XHRcdFx0ZXRoID0gZXRoX2hkcihza2IpO1xuMjc3MDpcdFx0XHRpZiAobnRvaHMoZXRoLVx1MDAzZWhfcHJvdG8pID09IEVUSF9QX0FSUClcbjI3NzE6XHRcdFx0XHRyZXR1cm4gYXJwX3JlZHVjZShkZXYsIHNrYiwgdm5pKTtcbjI3NzI6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbjI3NzM6XHRcdFx0ZWxzZSBpZiAobnRvaHMoZXRoLVx1MDAzZWhfcHJvdG8pID09IEVUSF9QX0lQVjYgXHUwMDI2XHUwMDI2XG4yNzc0Olx0XHRcdFx0IHBza2JfbmV0d29ya19tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MztcbjI3NzU6XHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBuZF9tc2cpKSBcdTAwMjZcdTAwMjZcbjI3NzY6XHRcdFx0XHQgaXB2Nl9oZHIoc2tiKS1cdTAwM2VuZXh0aGRyID09IElQUFJPVE9fSUNNUFY2KSB7XG4yNzc3Olx0XHRcdFx0c3RydWN0IG5kX21zZyAqbSA9IChzdHJ1Y3QgbmRfbXNnICopKGlwdjZfaGRyKHNrYikgJiM0MzsgMSk7XG4yNzc4Olx0XG4yNzc5Olx0XHRcdFx0aWYgKG0tXHUwMDNlaWNtcGguaWNtcDZfY29kZSA9PSAwIFx1MDAyNlx1MDAyNlxuMjc4MDpcdFx0XHRcdCAgICBtLVx1MDAzZWljbXBoLmljbXA2X3R5cGUgPT0gTkRJU0NfTkVJR0hCT1VSX1NPTElDSVRBVElPTilcbjI3ODE6XHRcdFx0XHRcdHJldHVybiBuZWlnaF9yZWR1Y2UoZGV2LCBza2IsIHZuaSk7XG4yNzgyOlx0XHRcdH1cbjI3ODM6XHQjZW5kaWZcbjI3ODQ6XHRcdH1cbjI3ODU6XHRcbjI3ODY6XHRcdGlmIChuaGlkKVxuMjc4NzpcdFx0XHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xuMjc4ODpcdFxuMjc4OTpcdFx0aWYgKHZ4bGFuLVx1MDAzZWNmZy5mbGFncyBcdTAwMjYgVlhMQU5fRl9NREIpIHtcbjI3OTA6XHRcdFx0c3RydWN0IHZ4bGFuX21kYl9lbnRyeSAqbWRiX2VudHJ5O1xuMjc5MTpcdFxuMjc5MjpcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4yNzkzOlx0XHRcdG1kYl9lbnRyeSA9IHZ4bGFuX21kYl9lbnRyeV9za2JfZ2V0KHZ4bGFuLCBza2IsIHZuaSk7XG4yNzk0Olx0XHRcdGlmIChtZGJfZW50cnkpIHtcbjI3OTU6XHRcdFx0XHRuZXRkZXZfdHhfdCByZXQ7XG4yNzk2Olx0XG4yNzk3Olx0XHRcdFx0cmV0ID0gdnhsYW5fbWRiX3htaXQodnhsYW4sIG1kYl9lbnRyeSwgc2tiKTtcbjI3OTg6XHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjI3OTk6XHRcdFx0XHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk5MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWWExBTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHRvdWNoaW5nIGB2eGxhbl9uYV9jcmVhdGVgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhcm91bmQgaG93IHdlIGFsbG9jYXRlIGFuZCBwcmVwYXJlIHRoZSBTS0IuIEkgc2VlIHRoZSBvcmlnaW5hbCBjb2RlIGFuZCB0aGUgdXBkYXRlZCBjb2RlIHNpZGUtYnktc2lkZS4KCkluaXRpYWxseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IE9yIGp1c3Qgc29tZSByZWZhY3RvcmluZz8mIzM0OyBUaGUgb3JpZ2luYWwgY29kZSBkaXJlY3RseSBjb21wdXRlZCB0aGUgbGVuZ3RoIGFuZCB0aGVuIGFsbG9jYXRlZCB0aGUgU0tCLCB3aGlsZSB0aGUgbmV3IGNvZGUgaW50cm9kdWNlcyBhIGBoZWFkcm9vbWAgdmFyaWFibGUuIEl0IGxvb2tzIGxpa2UgaXQgY29tcHV0ZXMgdGhlIGxlbmd0aCB0aGUgZXhhY3Qgc2FtZSB3YXkuCgpMZXQmIzM5O3MgdHJhY2UgaXQgdGhyb3VnaDogYGRldmAgaXMgYXNzaWduZWQgdG8gYHJlcXVlc3QtJmd0O2RldmAgb24gbGluZSAxOTQ0LiBBaCwgaXQmIzM5O3MgY2xlYXIgbm93LiBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgYW5kIGBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LSZndDtkZXYpYCBhcmUgZXF1aXZhbGVudCBiZWNhdXNlIGBkZXZgIGlzIGxpdGVyYWxseSBgcmVxdWVzdC0mZ3Q7ZGV2YC4gVGhpcyBsb29rcyBsaWtlIHNvbWUgbWlub3IgY2xlYW4tdXAsIG1heWJlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkgb3IgcHJlcGFyZSBmb3IgZnV0dXJlIGNoYW5nZXMuCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgTExfUkVTRVJWRURfU1BBQ0VgLiBJdCB3b3VsZCBiZSBnb29kIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGp1c3QgYSB2YXJpYWJsZSBhc3NpZ25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIExMX1JFU0VSVkVEX1NQQUNFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjgyPXN0cnVjdCBoaF9jYWNoZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDItICovXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjMwMzojZGVmaW5lIExMX1JFU0VSVkVEX1NQQUNFX0VYKGRldiwgaGxlbikgXFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMzA0LVx0KCgoKGhsZW4pICYjNDM7IFJFQURfT05DRSgoZGV2KS1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDUtXHQgIFx1MDAyNiB+KEhIX0RBVEFfTU9EIC0gMSkpICYjNDM7IEhIX0RBVEFfTU9EKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDY6I2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpIFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwNy1cdExMX1JFU0VSVkVEX1NQQUNFX0VYKGRldiwgKGRldiktXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDg6I2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRV9FWFRSQShkZXYsZXh0cmEpIFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwOS1cdCgoKChkZXYpLVx1MDAzZWhhcmRfaGVhZGVyX2xlbiAmIzQzOyBSRUFEX09OQ0UoKGRldiktXHUwMDNlbmVlZGVkX2hlYWRyb29tKSAmIzQzOyAoZXh0cmEpKSBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzEwNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIERhdGEgUmFjZXMgaW4gTmV0d29yayBCdWZmZXIgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgbWFjcm8sIHNwZWNpZmljYWxseSBob3cgaXQgdXNlcyBgUkVBRF9PTkNFKChkZXYpLSZndDtuZWVkZWRfaGVhZHJvb20pYC4gVGhlIHJlZCBmbGFnIGlzIGltbWVkaWF0ZTogaWYgYGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tYCBpcyByZWFkIGluIHR3byBwbGFjZXMsIGFuZCAqZXNwZWNpYWxseSogaWYgdGhhdCBoYXBwZW5zIGFyb3VuZCB0aGUgdGltZSB3ZSYjMzk7cmUgc2V0dGluZyB1cCBhIG5ldHdvcmsgYnVmZmVyIChgc2tiYCksIHRoZW4gd2UgY291bGQgaGF2ZSBhIGNsYXNzaWMgVGltZS1vZi1DaGVjay10by1UaW1lLW9mLVVzZSAoVE9DVE9VKSBkYXRhIHJhY2UuIEkgc2VlIGBuZWVkZWRfaGVhZHJvb21gIGJlaW5nIHJlYWQgZm9yIGNhbGN1bGF0aW5nIHRoZSBvdmVyYWxsIGxlbmd0aCAoYGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldikgJiM0MzsgLi4uYCkgYW5kIGFnYWluIHdoZW4gd2UgYWN0dWFsbHkgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnVmZmVyIChgc2tiX3Jlc2VydmUocmVwbHksIExMX1JFU0VSVkVEX1NQQUNFKHJlcXVlc3QtJmd0O2RldikpO2ApLiBNeSBjb25jZXJuIGlzLCBpZiBgbmVlZGVkX2hlYWRyb29tYCBpcyBtb2RpZmllZCBjb25jdXJyZW50bHksIHRoZSBjYWxjdWxhdGVkIGBsZW5gIGFuZCB0aGUgcmVzZXJ2ZWQgc3BhY2UgaW4gdGhlIFNLQiB3aWxsIGJlIGluY29uc2lzdGVudC4gVGhpcyBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBuYXN0eSBidWZmZXIgb3ZlcmZsb3dzIG9yIHVuZGVyZmxvd3MsIGFuZCBJJiMzOTttIHZlcnkga2VlbiB0byBhdm9pZCB0aGF0LgoKQnV0LCBob2xkIG9uLiBUaGlzICpjb3VsZCogYmUgYSBzdHJhaWdodGZvcndhcmQgcmVmYWN0b3JpbmcuIE1heWJlIEkmIzM5O20gYmVpbmcgdG9vIHBhcmFub2lkLiBJIGJldHRlciB2ZXJpZnkgdGhpcyB1c2luZyBvdGhlciBhcmVhcywgbGlrZSBgYXJwX3JlZHVjZWAgb3IgYGFycF9jcmVhdGVgLiBMZXQgbWUgY29tcGFyZSB0aG9zZSBpbXBsZW1lbnRhdGlvbnMgYW5kIHNlZSBob3cgc2ltaWxhciBzaXR1YXRpb25zIGFyZSBoYW5kbGVkIHRoZXJlLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcnBfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2FycC5jLTYzLSAqXHRcdEFybmFsZG8gQy4gTWVsbyA6XHRjb252ZXJ0IC9wcm9jL25ldC9hcnAgdG8gc2VxX2ZpbGVcbm5ldC9pcHY0L2FycC5jOjY0OiAqXHRcdFNobXVsaWsgSGVuOlx0XHRTcGxpdCBhcnBfc2VuZCB0byBhcnBfY3JlYXRlIGFuZFxubmV0L2lwdjQvYXJwLmMtNjUtICpcdFx0XHRcdFx0YXJwX3htaXQgc28gaW50ZXJtZWRpYXRlIGRyaXZlcnMgbGlrZVxuLS1cbm5ldC9pcHY0L2FycC5jPTMwMT1zdGF0aWMgdm9pZCBhcnBfc2VuZF9kc3QoaW50IHR5cGUsIGludCBwdHlwZSwgX19iZTMyIGRlc3RfaXAsXG4tLVxubmV0L2lwdjQvYXJwLmMtMzEzLVxubmV0L2lwdjQvYXJwLmM6MzE0Olx0c2tiID0gYXJwX2NyZWF0ZSh0eXBlLCBwdHlwZSwgZGVzdF9pcCwgZGV2LCBzcmNfaXAsXG5uZXQvaXB2NC9hcnAuYy0zMTUtXHRcdFx0IGRlc3RfaHcsIHNyY19odywgdGFyZ2V0X2h3KTtcbi0tXG5uZXQvaXB2NC9hcnAuYz01MTk9c3RhdGljIGlubGluZSBpbnQgYXJwX2Z3ZF9wdmxhbihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXG4tLVxubmV0L2lwdjQvYXJwLmMtNTQ0LSAqL1xubmV0L2lwdjQvYXJwLmM6NTQ1OnN0cnVjdCBza19idWZmICphcnBfY3JlYXRlKGludCB0eXBlLCBpbnQgcHR5cGUsIF9fYmUzMiBkZXN0X2lwLFxubmV0L2lwdjQvYXJwLmMtNTQ2LVx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUzMiBzcmNfaXAsXG4tLVxubmV0L2lwdjQvYXJwLmMtNjUwLX1cbm5ldC9pcHY0L2FycC5jOjY1MTpFWFBPUlRfU1lNQk9MKGFycF9jcmVhdGUpO1xubmV0L2lwdjQvYXJwLmMtNjUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzk4NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGNvZGU6CgoqKkRpdmluZyBpbnRvIGBhcnBfY3JlYXRlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gbG9va2luZyBhdCBgYXJwX2NyZWF0ZWAgaW4gYG5ldC9pcHY0L2FycC5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgb2YgQWRkcmVzcyBSZXNvbHV0aW9uIFByb3RvY29sIGdldHMgYmFrZWQgaW50byB0aGUga2VybmVsJiMzOTtzIElQdjQgc3RhY2suIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGNydWNpYWw7IGl0JiMzOTtzIHRoZSBnYXRla2VlcGVyLCBkZWNpZGluZyB3aGV0aGVyIGEgbmV3IEFSUCBlbnRyeSBnZXRzIGNyZWF0ZWQgb3IgaWYgd2UgbmVlZCB0byBkbyBzb21lIGRldGVjdGl2ZSB3b3JrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucywgdGhlIGNoZWNrcywgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCYjMzk7cyBtYW5pcHVsYXRpbmcuIEVzc2VudGlhbGx5LCBJJiMzOTttIHBlZWxpbmcgYmFjayB0aGUgbGF5ZXJzIG9uIGhvdyB0aGUga2VybmVsIGJ1aWxkcyBhbmQgbWFuYWdlcyBpdHMgQVJQIGNhY2hlIGZvciBJUHY0LiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgbG9ja2luZyBzdHJhdGVnaWVzLCBvciBldmVuIG9wdGltaXphdGlvbnMgdGhhdCBjb3VsZCBhZmZlY3QgcGVyZm9ybWFuY2UuIFRoaXMgbG9va3MgbGlrZSBhbiBpbnRlcmVzdGluZyBzdGFydGluZyBwb2ludC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQgaW5zaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2FycC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NDU6XHRzdHJ1Y3Qgc2tfYnVmZiAqYXJwX2NyZWF0ZShpbnQgdHlwZSwgaW50IHB0eXBlLCBfX2JlMzIgZGVzdF9pcCxcbiA1NDY6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMzIgc3JjX2lwLFxuIDU0NzpcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRlc3RfaHcsXG4gNTQ4Olx0XHRcdFx0ICAgY29uc3QgdW5zaWduZWQgY2hhciAqc3JjX2h3LFxuIDU0OTpcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhcmdldF9odylcbiA1NTA6XHR7XG4gNTUxOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDU1MjpcdFx0c3RydWN0IGFycGhkciAqYXJwO1xuIDU1MzpcdFx0dW5zaWduZWQgY2hhciAqYXJwX3B0cjtcbiA1NTQ6XHRcdGludCBobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbiA1NTU6XHRcdGludCB0bGVuID0gZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiA1NTY6XHRcbiA1NTc6XHRcdC8qXG4gNTU4Olx0XHQgKlx0QWxsb2NhdGUgYSBidWZmZXJcbiA1NTk6XHRcdCAqL1xuIDU2MDpcdFxuIDU2MTpcdFx0c2tiID0gYWxsb2Nfc2tiKGFycF9oZHJfbGVuKGRldikgJiM0MzsgaGxlbiAmIzQzOyB0bGVuLCBHRlBfQVRPTUlDKTtcbiA1NjI6XHRcdGlmICghc2tiKVxuIDU2MzpcdFx0XHRyZXR1cm4gTlVMTDtcbiA1NjQ6XHRcbiA1NjU6XHRcdHNrYl9yZXNlcnZlKHNrYiwgaGxlbik7XG4gNTY2Olx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbiA1Njc6XHRcdHNrYl9wdXQoc2tiLCBhcnBfaGRyX2xlbihkZXYpKTtcbiA1Njg6XHRcdHNrYi1cdTAwM2VkZXYgPSBkZXY7XG4gNTY5Olx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9BUlApO1xuIDU3MDpcdFx0aWYgKCFzcmNfaHcpXG4gNTcxOlx0XHRcdHNyY19odyA9IGRldi1cdTAwM2VkZXZfYWRkcjtcbiA1NzI6XHRcdGlmICghZGVzdF9odylcbiA1NzM6XHRcdFx0ZGVzdF9odyA9IGRldi1cdTAwM2Vicm9hZGNhc3Q7XG4gNTc0Olx0XG4gNTc1Olx0XHQvKiBGaWxsIHRoZSBkZXZpY2UgaGVhZGVyIGZvciB0aGUgQVJQIGZyYW1lLlxuIDU3NjpcdFx0ICogTm90ZTogc2tiLVx1MDAzZWhlYWQgY2FuIGJlIGNoYW5nZWQuXG4gNTc3Olx0XHQgKi9cbiA1Nzg6XHRcdGlmIChkZXZfaGFyZF9oZWFkZXIoc2tiLCBkZXYsIHB0eXBlLCBkZXN0X2h3LCBzcmNfaHcsIHNrYi1cdTAwM2VsZW4pIFx1MDAzYyAwKVxuIDU3OTpcdFx0XHRnb3RvIG91dDtcbiA1ODA6XHRcbiA1ODE6XHRcdGFycCA9IGFycF9oZHIoc2tiKTtcbiA1ODI6XHRcdC8qXG4gNTgzOlx0XHQgKiBGaWxsIG91dCB0aGUgYXJwIHByb3RvY29sIHBhcnQuXG4gNTg0Olx0XHQgKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODg1MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgYXMgdGhvdWdoIEkmIzM5O20gcHJvY2Vzc2luZyB0aGUgcHJvbXB0OgoKKipBbmFseXppbmcgYGFycF9yZWR1Y2VgIGluIHRoZSBDb250ZXh0IG9mIFZYTEFOKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gdGhpbmsgdGhyb3VnaCB0aGUgaW1wbGljYXRpb25zIG9mIGBhcnBfcmVkdWNlYCBpbiBhIFZYTEFOIGVudmlyb25tZW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IEFSUCAoQWRkcmVzcyBSZXNvbHV0aW9uIFByb3RvY29sKSB0cmFmZmljIGlzIGhhbmRsZWQgaW4gdGhpcyBvdmVybGF5IG5ldHdvcmssIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIG1lYW50IHRvIG9wdGltaXplIGl0LiBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IGhlYWQ6IFdoYXQgc3BlY2lmaWMgcHJvYmxlbSBpcyBgYXJwX3JlZHVjZWAgdHJ5aW5nIHRvIHNvbHZlPyBJcyBpdCByZWxhdGVkIHRvIGJyb2FkY2FzdCBkb21haW4gbGltaXRhdGlvbnMgaW5oZXJlbnQgaW4gVlhMQU4/IElzIGl0IGFib3V0IHJlZHVjaW5nIEFSUCBmbG9vZHMgd2l0aGluIHRoZSB1bmRlcmxheSBuZXR3b3JrPyBXaGF0IHN0cmF0ZWdpZXMgZG9lcyBpdCBlbXBsb3k/IERvZXMgaXQgaW52b2x2ZSBBUlAgcHJveHlpbmcsIHN1cHByZXNzaW9uLCBjYWNoaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG51YW5jZXMgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggVlRFUHMgKFZYTEFOIFR1bm5lbCBFbmRwb2ludHMpIGFuZCB0aGUgY29udHJvbCBwbGFuZSwgaWYgYW55LCBhcmUga2V5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgcG90ZW50aWFsIHRyYWRlLW9mZnMgaW4gdGVybXMgb2YgY29udmVyZ2VuY2UgdGltZSwgYW5kIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gbW9kaWZ5aW5nIHRoZSBzdGFuZGFyZCBBUlAgYmVoYXZpb3IuIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciB0byBmaW5kIHRoZSBleGFjdCBtZWNoYW5pc20gdXNlZCBieSB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBhbiBleGlzdGluZyBmdW5jdGlvbiBhbmQgbm90IHNvbWV0aGluZyBuZXcsIHNvIGxvb2tpbmcgZm9yIHJlZmVyZW5jZXMgdG8gZG9jdW1lbnRhdGlvbiB0aGF0IGRlc2NyaWJlcyBpdCB3aWxsIGJlIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4NDA6XHR9XG4xODQxOlx0XG4xODQyOlx0c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG4xODQzOlx0e1xuMTg0NDpcdFx0c3RydWN0IHZ4bGFuX2RldiAqdnhsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xuMTg0NTpcdFx0c3RydWN0IGFycGhkciAqcGFycDtcbjE4NDY6XHRcdHU4ICphcnBwdHIsICpzaGE7XG4xODQ3Olx0XHRfX2JlMzIgc2lwLCB0aXA7XG4xODQ4Olx0XHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xuMTg0OTpcdFxuMTg1MDpcdFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX05PQVJQKVxuMTg1MTpcdFx0XHRnb3RvIG91dDtcbjE4NTI6XHRcbjE4NTM6XHRcdGlmICghcHNrYl9uZXR3b3JrX21heV9wdWxsKHNrYiwgYXJwX2hkcl9sZW4oZGV2KSkpIHtcbjE4NTQ6XHRcdFx0ZGV2X2RzdGF0c190eF9kcm9wcGVkKGRldik7XG4xODU1Olx0XHRcdHZ4bGFuX3ZuaWZpbHRlcl9jb3VudCh2eGxhbiwgdm5pLCBOVUxMLFxuMTg1NjpcdFx0XHRcdFx0ICAgICAgVlhMQU5fVk5JX1NUQVRTX1RYX0RST1BTLCAwKTtcbjE4NTc6XHRcdFx0Z290byBvdXQ7XG4xODU4Olx0XHR9XG4xODU5Olx0XHRwYXJwID0gYXJwX2hkcihza2IpO1xuMTg2MDpcdFxuMTg2MTpcdFx0aWYgKChwYXJwLVx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfRVRIRVIpIFx1MDAyNlx1MDAyNlxuMTg2MjpcdFx0ICAgICBwYXJwLVx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfSUVFRTgwMikpIHx8XG4xODYzOlx0XHQgICAgcGFycC1cdTAwM2Vhcl9wcm8gIT0gaHRvbnMoRVRIX1BfSVApIHx8XG4xODY0Olx0XHQgICAgcGFycC1cdTAwM2Vhcl9vcCAhPSBodG9ucyhBUlBPUF9SRVFVRVNUKSB8fFxuMTg2NTpcdFx0ICAgIHBhcnAtXHUwMDNlYXJfaGxuICE9IGRldi1cdTAwM2VhZGRyX2xlbiB8fFxuMTg2NjpcdFx0ICAgIHBhcnAtXHUwMDNlYXJfcGxuICE9IDQpXG4xODY3Olx0XHRcdGdvdG8gb3V0O1xuMTg2ODpcdFx0YXJwcHRyID0gKHU4ICopcGFycCAmIzQzOyBzaXplb2Yoc3RydWN0IGFycGhkcik7XG4xODY5Olx0XHRzaGEgPSBhcnBwdHI7XG4xODcwOlx0XHRhcnBwdHIgJiM0Mzs9IGRldi1cdTAwM2VhZGRyX2xlbjtcdC8qIHNoYSAqL1xuMTg3MTpcdFx0bWVtY3B5KFx1MDAyNnNpcCwgYXJwcHRyLCBzaXplb2Yoc2lwKSk7XG4xODcyOlx0XHRhcnBwdHIgJiM0Mzs9IHNpemVvZihzaXApO1xuMTg3MzpcdFx0YXJwcHRyICYjNDM7PSBkZXYtXHUwMDNlYWRkcl9sZW47XHQvKiB0aGEgKi9cbjE4NzQ6XHRcdG1lbWNweShcdTAwMjZ0aXAsIGFycHB0ciwgc2l6ZW9mKHRpcCkpO1xuMTg3NTpcdFxuMTg3NjpcdFx0aWYgKGlwdjRfaXNfbG9vcGJhY2sodGlwKSB8fFxuMTg3NzpcdFx0ICAgIGlwdjRfaXNfbXVsdGljYXN0KHRpcCkpXG4xODc4Olx0XHRcdGdvdG8gb3V0O1xuMTg3OTpcdFxuMTg4MDpcdFx0biA9IG5laWdoX2xvb2t1cChcdTAwMjZhcnBfdGJsLCBcdTAwMjZ0aXAsIGRldik7XG4xODgxOlx0XG4xODgyOlx0XHRpZiAobikge1xuMTg4MzpcdFx0XHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XG4xODg0Olx0XHRcdHU4IGhhW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XG4xODg1Olx0XHRcdHN0cnVjdCB2eGxhbl9mZGIgKmY7XG4xODg2Olx0XHRcdHN0cnVjdCBza19idWZmXHQqcmVwbHk7XG4xODg3Olx0XG4xODg4Olx0XHRcdGlmICghKFJFQURfT05DRShuLVx1MDAzZW51ZF9zdGF0ZSkgXHUwMDI2IE5VRF9DT05ORUNURUQpKSB7XG4xODg5Olx0XHRcdFx0bmVpZ2hfcmVsZWFzZShuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMjMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBbmFseXNpczogYHZ4bGFuX25hX2NyZWF0ZWAgaW4gVlhMQU4gUHJveHkgTW9kZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdnhsYW5fbmFfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyB3aXRoaW4gVlhMQU4sIHNwZWNpZmljYWxseSBpbiBwcm94eSBtb2RlIOKAkyBlaXRoZXIgdGhyb3VnaCBgVlhMQU5fRl9QUk9YWWAgb3IgdGhlIElQdjYgbmVpZ2hib3IgcmVkdWN0aW9uIG1lY2hhbmlzbS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGlzIGNvZGUgcGF0aCBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VPwoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgVlhMQU4gaXMgYSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLCBjcmVhdGVkIHVzaW5nIGBpcCBsaW5rIGFkZCB0eXBlIHZ4bGFuYC4gUUVNVSBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIFZYTEFOIGludGVyZmFjZXMsIGluY2x1ZGluZyB0aG9zZSB3aXRoIHByb3h5IG1vZGUgZW5hYmxlZC4gRnVydGhlcm1vcmUsIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCB0byBzZW5kIElQdjYgbmVpZ2hib3Igc29saWNpdGF0aW9uIHBhY2tldHMsIHdoaWNoIHNob3VsZCB0cmlnZ2VyIGB2eGxhbl9uYV9jcmVhdGVgLiBUaGUgY2hhbmdlIGRpcmVjdGx5IHRvdWNoZXMgdGhlIGNvcmUgVlhMQU4gZHJpdmVyIGxvZ2ljIGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLCBzbyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBzaWduaWZpY2FudCBhcmVhLgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGBXb3J0aEZ1enppbmdgIGNyaXRlcmlhLgoKKiAgIERvZXMgaXQgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcz8gWWVzLCBpdCYjMzk7cyB0aGUgVlhMQU4gZHJpdmVyLCBhIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnQuCiogICBEb2VzIHRoZSBwYXRjaCBjb25zaXN0IHNvbGVseSBvZiBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29tbWVudHM/IE5vLgoqICAgSXMgaXQgcHVyZWx5IGNvc21ldGljIGNoYW5nZXMgbGlrZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzPyBOby4KKiAgIElzIGl0IG1lcmVseSBjaGFuZ2VzIHRvIG51bWVyaWNhbCBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbj8gTm8uCiogICBJcyB0aGlzIGEgY29kZSBwYXRoIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBBYnNvbHV0ZWx5IG5vdCwgVlhMQU4gaXMgYSB2aXJ0dWFsIGRldmljZSBhbmQgaXMgd2lkZWx5IHVzZWQgYW5kIGZ1enplZCBpbiBRRU1VLgoqICAgSXMgaXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnM/IE5vLgoqICAgSXMgaXQgYSBkcml2ZXIgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2s/IE5vLgoKVGhlcmVmb3JlLCBieSBwcm9jZXNzIG9mIGVsaW1pbmF0aW9uIGFuZCBleHBlcnQganVkZ2VtZW50LCB0aGlzIGNsZWFybHkgcXVhbGlmaWVzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC4KCk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBzeW1ib2xzIGFyZSBtb2RpZmllZCBvciBhcmUgZGlyZWN0bHkgY2FsbGluZyB0aGUgbW9kaWZpZWQgbG9naWMuIEl0IGxvb2tzIGxpa2UgYHZ4bGFuX25hX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIGFzIGlzIGBuZWlnaF9yZWR1Y2VgLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiBgdnhsYW5fY29yZS5jYCBhbmQgVlhMQU4mIzM5O3MgTkRPIG9wZXJhdGlvbnMgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5feG1pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjMxOT1zdGF0aWMgaW50IGVuY2FwX2J5cGFzc19pZl9sb2NhbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzU3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzNTg6dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzNTktXHRcdCAgICBfX2JlMzIgZGVmYXVsdF92bmksIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0LCBib29sIGRpZF9yc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY2NDpzdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cdFx0XHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MC1cdGlmIChsaWtlbHkoZG9feG1pdCkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MTpcdFx0dnhsYW5feG1pdF9vbmUoc2tiLCBkZXYsIHZuaSwgXHUwMDI2bmhfcmRzdCwgZGlkX3JzYyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4Mi1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5My1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk0OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk1LVx0XHRcdFx0ICAgdTMyIG5oaWQsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3MTgtXHRpZiAobGlrZWx5KGRvX3htaXQpKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI3MTk6XHRcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIFx1MDAyNm5oX3Jkc3QsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzIwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzM4LSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI3Mzk6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzQwLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc2MC1cdFx0XHRpZiAoaW5mbyBcdTAwMjZcdTAwMjYgaW5mby1cdTAwM2Vtb2RlIFx1MDAyNiBJUF9UVU5ORUxfSU5GT19UWClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzYxOlx0XHRcdFx0dnhsYW5feG1pdF9vbmUoc2tiLCBkZXYsIHZuaSwgTlVMTCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NjItXHRcdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzg2LVx0aWYgKG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc4NzpcdFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzg4LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODMzLVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVx1MDAzZW5oKSkge1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MzQ6XHRcdHZ4bGFuX3htaXRfbmgoc2tiLCBkZXYsIGYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgzNS1cdFx0XHQgICAgICAodm5pID8gOiB2eGxhbi1cdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NDUtXHRcdFx0aWYgKHNrYjEpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg0NjpcdFx0XHRcdHZ4bGFuX3htaXRfb25lKHNrYjEsIGRldiwgdm5pLCByZHN0LCBkaWRfcnNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODQ3LVx0XHR9XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg0OC1cdFx0aWYgKGZkc3QpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg0OTpcdFx0XHR2eGxhbl94bWl0X29uZShza2IsIGRldiwgdm5pLCBmZHN0LCBkaWRfcnNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODUwLVx0XHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMyOTM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfZXRoZXJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk3LVx0Lm5kb19zdG9wXHRcdD0gdnhsYW5fc3RvcCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMjk4Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gdnhsYW5feG1pdCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk5LVx0Lm5kb19zZXRfcnhfbW9kZVx0PSB2eGxhbl9zZXRfbXVsdGljYXN0X2xpc3QsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfcmF3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMyMC1cdC5uZG9fc3RvcFx0XHQ9IHZ4bGFuX3N0b3AsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMyMTpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IHZ4bGFuX3htaXQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMyMi1cdC5uZG9fY2hhbmdlX210dVx0XHQ9IHZ4bGFuX2NoYW5nZV9tdHUsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTcwMj1uZXRkZXZfdHhfdCB2eGxhbl9tZGJfeG1pdChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNzIzLVx0XHRpZiAoc2tiMSlcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE3MjQ6XHRcdFx0dnhsYW5feG1pdF9vbmUoc2tiMSwgdnhsYW4tXHUwMDNlZGV2LCBzcmNfdm5pLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTcyNS1cdFx0XHRcdCAgICAgICByY3VfZGVyZWZlcmVuY2UocmVtb3RlLVx1MDAzZXJkKSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE3MjgtXHRpZiAoZnJlbW90ZSlcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE3Mjk6XHRcdHZ4bGFuX3htaXRfb25lKHNrYiwgdnhsYW4tXHUwMDNlZGV2LCBzcmNfdm5pLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTczMC1cdFx0XHQgICAgICAgcmN1X2RlcmVmZXJlbmNlKGZyZW1vdGUtXHUwMDNlcmQpLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTE5MT1pbnQgdnhsYW5fZmRiX3VwZGF0ZShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMTk2LVx0XHQgICAgIGJvb2wgc3dkZXZfbm90aWZ5LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oOjE5Nzp2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMTk4LVx0XHQgICAgX19iZTMyIGRlZmF1bHRfdm5pLCBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCwgYm9vbCBkaWRfcnNjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5NDcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFZYTEFOIE5laWdoYm9yIERpc2NvdmVyeSBhbmQgVHJhbnNtaXNzaW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgdnhsYW5fY29yZS5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2VzIG1hZGUgYXJvdW5kIGB2eGxhbl9uYV9jcmVhdGVgIOKAkyB0aGF0JiMzOTtzIHRoZSBmb2NhbCBwb2ludCwgaXNuJiMzOTt0IGl0PyBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgaW1wYWN0IG5laWdoYm9yIGRpc2NvdmVyeSBhbmQgdHJhbnNtaXNzaW9uLgoKUmlnaHQsIHNvIGBuZWlnaF9yZWR1Y2VgIGlzIGNhbGxpbmcgYHZ4bGFuX25hX2NyZWF0ZWAuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGludGVyYWN0aW9uLiBBbHNvLCBgdnhsYW5feG1pdGAgYXBwZWFycyB0byBiZSBoYW5kbGluZyBuZG9fc3RhcnRfeG1pdCwgYW5kIGl0IGFsc28gY2FsbHMgYG5laWdoX3JlZHVjZWAuIEludGVyZXN0aW5nLCBpbnRlcmVzdGluZy4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIG1vZGlmaWNhdGlvbiwgSSB3aWxsIGNoZWNrIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIGZ1bmN0aW9ucyB3aXRoIGB2eGxhbl9uYV9jcmVhdGVgLiAKClRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyB6b29tIG91dCBhbmQgY2hlY2sgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiBgdnhsYW5fY29yZS5jYCBhcmUgbm90IGlubGluZWQgb3Igc3RhdGljLCBhbmQgdGhlcmVmb3JlIHBvc3NpYmx5IG1vcmUgcHVibGljbHkgYWNjZXNzaWJsZSBvciBoYXZlIGEgbW9yZSBjb21wbGV4IHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIGB2eGxhbl94bWl0X29uZWAgbG9va3MgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQg4oCTIGl0JiMzOTtzIG5vbi1zdGF0aWMsIHNvIHRoZXJlJiMzOTtzIGFuIGV4dGVybmFsIGhvb2sgdGhlcmUuIEFuZCB0aGVuIEkgc2hvdWxkIGNvbnNpZGVyIG90aGVyIHBvdGVudGlhbGx5IHNpZ25pZmljYW50IGZ1bmN0aW9ucyBsaWtlIGB2eGxhbl9mZGJfdXBkYXRlYCwgYHZ4bGFuX2ZkYl9hZGRgLCBgdnhsYW5fZGV2X2lvY3RsYCwgYW5kIGB2eGxhbl9jaGFuZ2VsaW5rYCwganVzdCB0byBiZSBzYWZlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhpcyBjaGFuZ2UgcmlwcGxlcyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTQyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDk9c3RhdGljIHVuc2lnbmVkIHNob3J0IHZ4bGFuX3BvcnQgX19yZWFkX21vc3RseSA9IDg0NzI7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTA6bW9kdWxlX3BhcmFtX25hbWVkKHVkcF9wb3J0LCB2eGxhbl9wb3J0LCB1c2hvcnQsIDA0NDQpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjUxOk1PRFVMRV9QQVJNX0RFU0ModWRwX3BvcnQsIFwmIzM0O0Rlc3RpbmF0aW9uIFVEUCBwb3J0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz01Mz1zdGF0aWMgYm9vbCBsb2dfZWNuX2Vycm9yID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NDptb2R1bGVfcGFyYW0obG9nX2Vjbl9lcnJvciwgYm9vbCwgMDY0NCk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTU6TU9EVUxFX1BBUk1fREVTQyhsb2dfZWNuX2Vycm9yLCBcJiMzNDtMb2cgcGFja2V0cyByZWNlaXZlZCB3aXRoIGNvcnJ1cHRlZCBFQ05cJiMzNDspO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU2LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz02MD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhsYW5fbGlua19vcHM7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjI6c3RhdGljIGludCB2eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbik7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjQ6c3RhdGljIHZvaWQgdnhsYW5fdnNfZGVsX2RldihzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbik7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NjY9c3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyB2eGxhbl9mZGJfcmh0X3BhcmFtcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzM6c3RhdGljIGlubGluZSBib29sIHZ4bGFuX2NvbGxlY3RfbWV0YWRhdGEoc3RydWN0IHZ4bGFuX3NvY2sgKnZzKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtODItICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6ODM6c3RhdGljIHN0cnVjdCB2eGxhbl9zb2NrICp2eGxhbl9maW5kX3NvY2soc3RydWN0IG5ldCAqbmV0LCBzYV9mYW1pbHlfdCBmYW1pbHksXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtODQtXHRcdFx0XHRcdCAgX19iZTE2IHBvcnQsIHUzMiBmbGFncywgaW50IGlmaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEwMDpzdGF0aWMgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW5fdnNfZmluZF92bmkoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwMS1cdFx0XHRcdFx0ICAgaW50IGlmaW5kZXgsIF9fYmUzMiB2bmksXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0MC0vKiBMb29rIHVwIFZOSSBpbiBhIHBlciBuZXQgbmFtZXNwYWNlIHRhYmxlICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQxOnN0YXRpYyBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbl9maW5kX3ZuaShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0Mi1cdFx0XHRcdFx0X19iZTMyIHZuaSwgc2FfZmFtaWx5X3QgZmFtaWx5LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTQtLyogRmlsbCBpbiBuZWlnaGJvdXIgbWVzc2FnZSBpbiBza2J1ZmYuICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTU1OnN0YXRpYyBpbnQgdnhsYW5fZmRiX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTU2LVx0XHRcdCAgY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNTAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjUxOnN0YXRpYyBpbmxpbmUgc2l6ZV90IHZ4bGFuX25sbXNnX3NpemUodm9pZClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjYzOnN0YXRpYyB2b2lkIF9fdnhsYW5fZmRiX25vdGlmeShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NC1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBpbnQgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4ODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfc3dpdGNoZGV2X25vdGlmaWVyX2luZm8oY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiICpmZGIsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDY6c3RhdGljIGludCB2eGxhbl9mZGJfc3dpdGNoZGV2X2NhbGxfbm90aWZpZXJzKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNy1cdFx0XHRcdFx0ICAgICAgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjYtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI3OnN0YXRpYyBpbnQgdnhsYW5fZmRiX25vdGlmeShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyOC1cdFx0XHQgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBpbnQgdHlwZSwgYm9vbCBzd2Rldl9ub3RpZnksXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTI6c3RhdGljIHZvaWQgdnhsYW5faXBfbWlzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bmlvbiB2eGxhbl9hZGRyICppcGEpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzUzLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzY1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2NjpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfbWlzcyhzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgY29uc3QgdTggZXRoX2FkZHJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2Ny17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3OC0vKiBMb29rIHVwIEV0aGVybmV0IGFkZHJlc3MgaW4gZm9yd2FyZGluZyB0YWJsZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM3OTpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmluZF9tYWNfcmN1KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM4MC1cdFx0XHRcdFx0ICAgIGNvbnN0IHU4ICptYWMsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozOTU6c3RhdGljIHN0cnVjdCB2eGxhbl9mZGIgKnZ4bGFuX2ZpbmRfbWFjX3R4KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5Ni1cdFx0XHRcdFx0ICAgY29uc3QgdTggKm1hYywgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDEwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQxMTpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmluZF9tYWMoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDEyLVx0XHRcdFx0XHRjb25zdCB1OCAqbWFjLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjUtLyogY2FsbGVyIHNob3VsZCBob2xkIHZ4bGFuLVx1MDAzZWhhc2hfbG9jayAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQyNjpzdGF0aWMgc3RydWN0IHZ4bGFuX3Jkc3QgKnZ4bGFuX2ZkYl9maW5kX3Jkc3Qoc3RydWN0IHZ4bGFuX2ZkYiAqZixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjctXHRcdFx0XHRcdCAgICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLCBfX2JlMTYgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ0MzppbnQgdnhsYW5fZmRiX2ZpbmRfdWMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKm1hYywgX19iZTMyIHZuaSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDQtXHRcdCAgICAgIHN0cnVjdCBzd2l0Y2hkZXZfbm90aWZpZXJfdnhsYW5fZmRiX2luZm8gKmZkYl9pbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzMtfVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3NDpFWFBPUlRfU1lNQk9MX0dQTCh2eGxhbl9mZGJfZmluZF91Yyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3NjpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9ub3RpZnlfb25lKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc3LVx0XHRcdFx0Y29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ5MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0OTE6aW50IHZ4bGFuX2ZkYl9yZXBsYXkoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTMyIHZuaSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00OTItXHRcdCAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTIxLX1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1MjI6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX3JlcGxheSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTIzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjUyNDp2b2lkIHZ4bGFuX2ZkYl9jbGVhcl9vZmZsb2FkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUzMiB2bmkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTI1LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTQzLX1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NDQ6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX2NsZWFyX29mZmxvYWQpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU0NS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NDYtLyogUmVwbGFjZSBkZXN0aW5hdGlvbiBvZiB1bmljYXN0IG1hYyAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU0NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9yZXBsYWNlKHN0cnVjdCB2eGxhbl9mZGIgKmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTQ4LVx0XHRcdCAgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiBwb3J0LCBfX2JlMzIgdm5pLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NzEtLyogQWRkL3VwZGF0ZSBkZXN0aW5hdGlvbnMgZm9yIG11bHRpY2FzdCAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU3MjpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9hcHBlbmQoc3RydWN0IHZ4bGFuX2ZkYiAqZixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NzMtXHRcdFx0ICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLCBfX2JlMTYgcG9ydCwgX19iZTMyIHZuaSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjAyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYwMzpzdGF0aWMgYm9vbCB2eGxhbl9wYXJzZV9ncGVfcHJvdG8oY29uc3Qgc3RydWN0IHZ4bGFuaGRyICpoZHIsIF9fYmUxNiAqcHJvdG9jb2wpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjA0LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjI4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYyOTpzdGF0aWMgc3RydWN0IHZ4bGFuaGRyICp2eGxhbl9ncm9fcmVtY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTYzMC1cdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgb2ZmLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02NTQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjU1OnN0YXRpYyBzdHJ1Y3QgdnhsYW5oZHIgKnZ4bGFuX2dyb19wcmVwYXJlX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTY1Ni1cdFx0XHRcdFx0XHQgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTcwOC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3MDk6c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9ncm9fcmVjZWl2ZShzdHJ1Y3Qgc29jayAqc2ssXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzEwLVx0XHRcdFx0XHQgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzI0LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjcyNTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX2dwZV9ncm9fcmVjZWl2ZShzdHJ1Y3Qgc29jayAqc2ssXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzI2LVx0XHRcdFx0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc1MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3NTE6c3RhdGljIGludCB2eGxhbl9ncm9fY29tcGxldGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhvZmYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzUyLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzU4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc1OTpzdGF0aWMgaW50IHZ4bGFuX2dwZV9ncm9fY29tcGxldGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhvZmYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzYwLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzczLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc3NDpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmRiX2FsbG9jKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBjb25zdCB1OCAqbWFjLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc3NS1cdFx0XHRcdFx0IF9fdTE2IHN0YXRlLCBfX2JlMzIgc3JjX3ZuaSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzk2LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc5NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9uaF91cGRhdGUoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03OTgtXHRcdFx0ICAgICAgIHUzMiBuaGlkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTg1OC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo4NTk6aW50IHZ4bGFuX2ZkYl9jcmVhdGUoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtODYwLVx0XHQgICAgIGNvbnN0IHU4ICptYWMsIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MTEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTEyOnN0YXRpYyB2b2lkIF9fdnhsYW5fZmRiX2ZyZWUoc3RydWN0IHZ4bGFuX2ZkYiAqZilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MTMte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTMxOnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzIte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTM4OnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9kZXN0cm95KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBzdHJ1Y3QgdnhsYW5fZmRiICpmLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTkzOS1cdFx0XHQgICAgICBib29sIGRvX25vdGlmeSwgYm9vbCBzd2Rldl9ub3RpZnkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk2Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo5NjM6c3RhdGljIHZvaWQgdnhsYW5fZHN0X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk2NC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk3MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo5NzE6c3RhdGljIGludCB2eGxhbl9mZGJfdXBkYXRlX2V4aXN0aW5nKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk3Mi1cdFx0XHRcdCAgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwNjktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTA3MDpzdGF0aWMgaW50IHZ4bGFuX2ZkYl91cGRhdGVfY3JlYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwNzEtXHRcdFx0XHQgICBjb25zdCB1OCAqbWFjLCB1bmlvbiB2eGxhbl9hZGRyICppcCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTEwNS0vKiBBZGQgbmV3IGVudHJ5IHRvIGZvcndhcmRpbmcgdGFibGUgLS0gYXNzdW1lcyBsb2NrIGhlbGQgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMTA2OmludCB2eGxhbl9mZGJfdXBkYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExMDctXHRcdCAgICAgY29uc3QgdTggKm1hYywgdW5pb24gdnhsYW5fYWRkciAqaXAsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExMzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTEzODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfZHN0X2Rlc3Ryb3koc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTEzOS1cdFx0XHRcdCAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBib29sIHN3ZGV2X25vdGlmeSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTE0NS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMTQ2OnN0YXRpYyBpbnQgdnhsYW5fZmRiX3BhcnNlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExNDctXHRcdFx0ICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiAqcG9ydCwgX19iZTMyICpzcmNfdm5pLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMjMyLS8qIEFkZCBzdGF0aWMgZW50cnkgKHZpYSBuZXRsaW5rKSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEyMzM6c3RhdGljIGludCB2eGxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyMzQtXHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyNzUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTI3NjppbnQgX192eGxhbl9mZGJfZGVsZXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyNzctXHRcdCAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLCB1bmlvbiB2eGxhbl9hZGRyIGlwLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzA5LS8qIERlbGV0ZSBlbnRyeSAodmlhIG5ldGxpbmspICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTMxMDpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9kZWxldGUoc3RydWN0IG5kbXNnICpuZG0sIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTMxMS1cdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTMzOC0vKiBEdW1wIGZvcndhcmRpbmcgdGFibGUgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMzM5OnN0YXRpYyBpbnQgdnhsYW5fZmRiX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzNDAtXHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzg4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzODk6c3RhdGljIGludCB2eGxhbl9mZGJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTM5MC1cdFx0XHQgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQyNC0gKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxNDI1OnN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB2eGxhbl9zbm9vcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0MjYtXHRcdFx0XHRcdHVuaW9uIHZ4bGFuX2FkZHIgKnNyY19pcCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQ4OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxNDkwOnN0YXRpYyBib29sIF9fdnhsYW5fc29ja19yZWxlYXNlX3ByZXAoc3RydWN0IHZ4bGFuX3NvY2sgKnZzKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0OTEte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTA3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1MDg6c3RhdGljIHZvaWQgdnhsYW5fc29ja19yZWxlYXNlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1MDkte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTM2LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1Mzc6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3JlbWNzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHZ4ZmxhZ3MpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTUzOC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NTctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTU1ODpzdGF0aWMgdm9pZCB2eGxhbl9wYXJzZV9nYnBfaGRyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiB2eGZsYWdzLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NTktXHRcdFx0XHRzdHJ1Y3QgdnhsYW5fbWV0YWRhdGEgKm1kKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTg4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1ODk6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3NldF9tYWMoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTU5MC1cdFx0XHRcdFx0ICBzdHJ1Y3QgdnhsYW5fc29jayAqdnMsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE2MjEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTYyMjpzdGF0aWMgYm9vbCB2eGxhbl9lY25fZGVjYXBzdWxhdGUoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLCB2b2lkICpvaXBoLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE2MjMtXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE2NDUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTY0NjpzdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTY0Ny17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE4MTQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTgxNTpzdGF0aWMgaW50IHZ4bGFuX2Vycl9sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE4MTYte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODQxLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE4NDI6c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTg0My17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE5MzktI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTk0MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMDM2OnN0YXRpYyBpbnQgbmVpZ2hfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNy17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIxMDctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjEwODpzdGF0aWMgYm9vbCByb3V0ZV9zaG9ydGNpcmN1aXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTA5LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjE5MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMTkxOnN0YXRpYyBpbnQgdnhsYW5fYnVpbGRfZ3BlX2hkcihzdHJ1Y3QgdnhsYW5oZHIgKnZ4aCwgX19iZTE2IHByb3RvY29sKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIxOTIte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMjAxLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIyMDI6c3RhdGljIGludCB2eGxhbl9idWlsZF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIyMDMtXHRcdFx0ICAgaW50IGlwaGRyX2xlbiwgX19iZTMyIHZuaSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjI2OC0vKiBCeXBhc3MgZW5jYXBzdWxhdGlvbiBpZiB0aGUgZGVzdGluYXRpb24gaXMgbG9jYWwgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMjY5OnN0YXRpYyB2b2lkIHZ4bGFuX2VuY2FwX2J5cGFzcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdnhsYW5fZGV2ICpzcmNfdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjI3MC1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX2RldiAqZHN0X3Z4bGFuLCBfX2JlMzIgdm5pLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzE4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzMTk6c3RhdGljIGludCBlbmNhcF9ieXBhc3NfaWZfbG9jYWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzIwLVx0XHRcdFx0IHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzU3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzNTg6dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzNTktXHRcdCAgICBfX2JlMzIgZGVmYXVsdF92bmksIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0LCBib29sIGRpZF9yc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY2NDpzdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cdFx0XHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5My1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk0OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk1LVx0XHRcdFx0ICAgdTMyIG5oaWQsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3MzgtICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjczOTpzdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NDAte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODU5LS8qIFdhbGsgdGhlIGZvcndhcmRpbmcgdGFibGUgYW5kIHB1cmdlIHN0YWxlIGVudHJpZXMgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyODYwOnN0YXRpYyB2b2lkIHZ4bGFuX2NsZWFudXAoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg2MS17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OTctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg5ODpzdGF0aWMgdm9pZCB2eGxhbl92c19kZWxfZGV2KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OTkte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yOTA3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5MDg6c3RhdGljIHZvaWQgdnhsYW5fdnNfYWRkX2RldihzdHJ1Y3QgdnhsYW5fc29jayAqdnMsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MDktXHRcdFx0ICAgICBzdHJ1Y3QgdnhsYW5fZGV2X25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MTktLyogU2V0dXAgc3RhdHMgd2hlbiBkZXZpY2UgaXMgY3JlYXRlZCAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5MjA6c3RhdGljIGludCB2eGxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjkyMS17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NTUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjk1NjpzdGF0aWMgdm9pZCB2eGxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yOTU3LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjk3MC0vKiBTdGFydCBhZ2VpbmcgdGltZXIgYW5kIGpvaW4gZ3JvdXAgd2hlbiBkZXZpY2UgaXMgYnJvdWdodCB1cCAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5NzE6c3RhdGljIGludCB2eGxhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjk3Mi17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI5OTI9c3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjIHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAwNC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDA1OnN0YXRpYyBib29sIHZ4bGFuX2ZkYl9pc19kZWZhdWx0X2VudHJ5KGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAwNi1cdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbilcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAxMS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDEyOnN0YXRpYyBib29sIHZ4bGFuX2ZkYl9uaGlkX21hdGNoZXMoY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgdTMyIG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAxMy17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMTgtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzAxOTpzdGF0aWMgYm9vbCB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiICpmLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMjAtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNDE9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDQyOnZ4bGFuX2ZkYl9mbHVzaF9zaG91bGRfbWF0Y2hfcmVtb3Rlcyhjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA0My17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNDc9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDQ4OnZ4bGFuX2ZkYl9mbHVzaF9yZW1vdGVfbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA0OS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDY0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA2NTp2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDY2LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA4NC0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwODU6c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA4Ni1cdFx0XHRjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxMTc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX2RlbF9idWxrX3BvbGljeVtOREFfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTMyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxMzM6c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzEzNC1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxOTctLyogQ2xlYW51cCB0aW1lciBhbmQgZm9yd2FyZGluZyB0YWJsZSBvbiBzaHV0ZG93biAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxOTg6c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5OS17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMTgtLyogU3R1Yiwgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLiAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMTk6c3RhdGljIHZvaWQgdnhsYW5fc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIyMC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMjItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzIyMzpzdGF0aWMgaW50IHZ4bGFuX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIyNC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyNDItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI0MzpzdGF0aWMgaW50IHZ4bGFuX2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI0NC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMzMjc9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSB2eGxhbl90eXBlID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMzM0LSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMzMzU6c3RhdGljIHZvaWQgdnhsYW5fb2ZmbG9hZF9yeF9wb3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHB1c2gpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMzNi17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzNjEtLyogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlIHN0cnVjdHVyZS4gKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzYyOnN0YXRpYyB2b2lkIHZ4bGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzM2My17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0MDktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzQxMDpzdGF0aWMgdm9pZCB2eGxhbl9ldGhlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0MTEte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNDE2LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM0MTc6c3RhdGljIHZvaWQgdnhsYW5fcmF3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxOC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTM0Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX3BvbGljeVtJRkxBX1ZYTEFOX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQ2NC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNDY1OnN0YXRpYyBpbnQgdnhsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0NjYtXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MzEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzUzMjpzdGF0aWMgdm9pZCB2eGxhbl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MzMtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzUzOC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTM5OnN0YXRpYyBpbnQgdnhsYW5fZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU0MC1cdFx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zNTU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdnhsYW5fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzU2NDpzdGF0aWMgc3RydWN0IHNvY2sgKnZ4bGFuX2NyZWF0ZV9zb2NrKHN0cnVjdCBuZXQgKm5ldCwgYm9vbCBpcHY2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NjUtXHRcdFx0XHQgICAgICBfX2JlMTYgcG9ydCwgdTMyIGZsYWdzLCBpbnQgaWZpbmRleClcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU5NC0vKiBDcmVhdGUgbmV3IGxpc3RlbiBzb2NrZXQgaWYgbmVlZGVkICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzU5NTpzdGF0aWMgc3RydWN0IHZ4bGFuX3NvY2sgKnZ4bGFuX3NvY2tldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBib29sIGlwdjYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU5Ni1cdFx0XHRcdFx0ICAgICAgX19iZTE2IHBvcnQsIHUzMiBmbGFncyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzY0OC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjQ5OnN0YXRpYyBpbnQgX192eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgYm9vbCBpcHY2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2NTAte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjk3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2OTg6c3RhdGljIGludCB2eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjk5LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzcyMC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNzIxOmludCB2eGxhbl92bmlfaW5fdXNlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3MjItXHRcdCAgICAgc3RydWN0IHZ4bGFuX2NvbmZpZyAqY29uZiwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzc1MS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNzUyOnN0YXRpYyBpbnQgdnhsYW5fY29uZmlnX3ZhbGlkYXRlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzc1My1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqKmxvd2VyLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTAzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM5MDQ6c3RhdGljIHZvaWQgdnhsYW5fY29uZmlnX2FwcGx5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzkwNS1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX2NvbmZpZyAqY29uZixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzk2MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozOTYxOnN0YXRpYyBpbnQgdnhsYW5fZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgbmV0ICpzcmNfbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NjItXHRcdFx0ICAgICAgIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mzk3ODpzdGF0aWMgaW50IHZ4bGFuX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NzktXHRcdFx0ICAgIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNDYtLyogU2V0L2NsZWFyIGZsYWdzIGJhc2VkIG9uIGF0dHJpYnV0ZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQwNDc6c3RhdGljIGludCB2eGxhbl9ubDJmbGFnKHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDA0OC1cdFx0XHQgIGludCBhdHRydHlwZSwgdW5zaWduZWQgbG9uZyBtYXNrLCBib29sIGNoYW5nZWxpbmssXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNzMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDA3NDpzdGF0aWMgaW50IHZ4bGFuX25sMmNvbmYoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNzUtXHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ0MTMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDQxNDpzdGF0aWMgaW50IHZ4bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDE1LVx0XHRcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDMwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ0MzE6c3RhdGljIGludCB2eGxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQzMi1cdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTI4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1Mjk6c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MzAte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTQxLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1NDI6c3RhdGljIHNpemVfdCB2eGxhbl9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1NDMte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1ODA6c3RhdGljIGludCB2eGxhbl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTgxLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDY4OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NjkwOnN0YXRpYyBzdHJ1Y3QgbmV0ICp2eGxhbl9nZXRfbGlua19uZXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NjkxLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDY5Nz1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhsYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDcxMS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzEyOnN0YXRpYyB2b2lkIHZ4bGFuX2hhbmRsZV9sb3dlcmRldl91bnJlZ2lzdGVyKHN0cnVjdCB2eGxhbl9uZXQgKnZuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MTMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDczMy1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzM0OnN0YXRpYyBpbnQgdnhsYW5fbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MzUtXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NzU0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc1NTp2eGxhbl9mZGJfb2ZmbG9hZGVkX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3NTYtXHRcdFx0c3RydWN0IHN3aXRjaGRldl9ub3RpZmllcl92eGxhbl9mZGJfaW5mbyAqZmRiX2luZm8pXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ3ODE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3ODI6dnhsYW5fZmRiX2V4dGVybmFsX2xlYXJuX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3ODMtXHRcdFx0ICAgICBzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDgwNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDgwNzp2eGxhbl9mZGJfZXh0ZXJuYWxfbGVhcm5fZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDgwOC1cdFx0XHQgICAgIHN0cnVjdCBzd2l0Y2hkZXZfbm90aWZpZXJfdnhsYW5fZmRiX2luZm8gKmZkYl9pbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00ODMyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ4MzM6c3RhdGljIGludCB2eGxhbl9zd2l0Y2hkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDgzNC1cdFx0XHRcdCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ4Njk9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB2eGxhbl9zd2l0Y2hkZXZfbm90aWZpZXJfYmxvY2sgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDg3Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0ODczOnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9uaF9mbHVzaChzdHJ1Y3QgbmV4dGhvcCAqbmgpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzMzIKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogNDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBWWExBTiBhbmQgSVB2NiBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgZm9yIFZYTEFOLiBMb29raW5nIGF0IGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXQmIzM5O3MgY2xlYXIgdGhhdCBgVlhMQU5gIGRlcGVuZHMgb24gYElORVRgIGFuZCBzZWxlY3RzIGJvdGggYE5FVF9VRFBfVFVOTkVMYCBhbmQgYEdST19DRUxMU2AuIEdvb2QsIHN0YW5kYXJkIHN0dWZmLgoKTm93LCBJIHNlZSB0aGF0IHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBmdW5jdGlvbiwgY3JpdGljYWwgaGVyZSwgaXMgZ3VhcmRlZCBieSBgI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpYCBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gIFRoZXJlZm9yZSwgZW5hYmxpbmcgdGhlIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBjcmVhdGlvbiBwYXRoIHJlcXVpcmVzIGJvdGggYElQVjZgIGFuZCBgVlhMQU5gIHRvIGJlIGVuYWJsZWQsIGluIGFkZGl0aW9uIHRvIGBJTkVUYC4gWXVwLCBgSVBWNmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgYWZmZWN0ZWQgc3ltYm9scy4gSSYjMzk7bSBmb2N1c2luZyBvbiBgdnhsYW5feG1pdGAsIGJlY2F1c2UgdGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBwYWNrZXQgdHJhbnNtaXQgaGFuZGxlciwgYW5kIEkgY2FuIHNlZSBob3cgaXQgcm91dGVzIHRocm91Z2ggYG5laWdoX3JlZHVjZWAgYW5kIHRoZW4gb24gdG8gYHZ4bGFuX25hX2NyZWF0ZWAuIEFsc28gd2FudCB0byByZW1lbWJlciBgdnhsYW5feG1pdF9vbmVgLiBQZXJoYXBzIEkgYWxzbyBzaG91bGQgbm90ZSBgdnhsYW5fZmRiX2NyZWF0ZWAsIGFuZCBgdnhsYW5fcmN2YC4KCkFscmlnaHQsIGxldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnM6IGBJTkVUYCwgYElQVjZgLCBhbmQgYFZYTEFOYC4gTWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIENvbmZpcm1lZC4gYFZYTEFOYCBuZWVkcyBgSU5FVGAgYW5kIHNlbGVjdHMgYE5FVF9VRFBfVFVOTkVMYCBhbmQgYEdST19DRUxMU2AuIFNvIHRoYXQgc29saWRpZmllcyBgVlhMQU5gLCBgSU5FVGAsIGFuZCBgSVBWNmAuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gY3JhZnQgdGhlIGBzZXQtcmVzdWx0c2AgcGFyYW1ldGVycy4KCiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSB0cnVlLgoqICAgYFJlYXNvbmluZ2A6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgaGVhZHJvb20gY2FsY3VsYXRpb25zIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIHRoZSBWWExBTiBkcml2ZXIgdG8gZW5zdXJlIHJlc2VydmVkIHNwYWNlIG1hdGNoZXMgYWxsb2NhdGVkIGhlYWRyb29tIGZvciBJUHY2IG5laWdoYm9yIGFkdmVydGlzZW1lbnRzLiBUaGlzIGlzIGluIGNvcmUgdmlydHVhbCBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtWWExBTiYjMzQ7LCAmIzM0O0lORVQmIzM0OywgJiMzNDtJUFY2JiMzNDtdYCDigJMgdGhhdCBzaG91bGQgYmUgY29tcHJlaGVuc2l2ZS4KKiAgIGBGb2N1c1N5bWJvbHNgOiBJJiMzOTtsbCB1c2UgYFsmIzM0O3Z4bGFuX3htaXQmIzM0OywgJiMzNDt2eGxhbl94bWl0X29uZSYjMzQ7XWAuIEkgY291bGQgYWxzbyBjb25zaWRlciBhZGRpbmcgYHZ4bGFuX3JjdmAsIGJ1dCBJJiMzOTtsbCBzdGljayB3aXRoIHRoZXNlIGZvciBub3csIGFuZCBrZWVwIHRoZSBvdGhlcnMgaW4gbWluZC4KCkEgcXVpY2sgZmluYWwgc2FuaXR5IGNoZWNrLi4uIFl1cCwgbG9va3Mgc291bmQuIFRpbWUgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX3htaXQmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5feG1pdCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgaGVhZHJvb20gY2FsY3VsYXRpb24gYW5kIHJlc2VydmF0aW9uIGluIHZ4bGFuX25hX2NyZWF0ZSgpIHdoZW4gY29uc3RydWN0aW5nIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBwYWNrZXRzIGluIHRoZSBWWExBTiBkcml2ZXIuIFRoaXMgdmlydHVhbCBuZXR3b3JraW5nIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVlhMQU4gcHJveHkgbW9kZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcGVyZm9ybXMgYSBtaW5vciByZWZhY3RvcmluZyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSXQgY2FjaGVzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBpbiBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgYW5kIHJldXNlcyBpdCBmb3IgYm90aCB0aGUgYWxsb2NhdGlvbiBzaXplIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKWAuIEJlY2F1c2UgYGRldmAgaXMgaW5pdGlhbGl6ZWQgYXMgYHJlcXVlc3QtXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTc3Mzc5ODhkNzNkNTU3MGUxM2U4NzYwMWQ0NDU0ZjY2MGE1ZmJiNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDA2OjM3OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCmluZGV4IDQ1OWYxOWY3MDcxZTUuLmU1YTkyZDMwMTEzYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMKQEAgLTE5NDcsMTMgJiM0MzsxOTQ3LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LAogCXN0cnVjdCBpcHY2aGRyICpwaXA2OwogCXU4ICpkYWRkcjsKIAlpbnQgbmFfb2xlbiA9IDg7IC8qIG9wdCBoZHIgJiM0MzsgRVRIX0FMRU4gZm9yIHRhcmdldCAqLwomIzQzOwlpbnQgaGVhZHJvb207CiAJaW50IG5zX29sZW47CiAJaW50IGksIGxlbjsKIAogCWlmIChkZXYgPT0gTlVMTCB8fCAhcHNrYl9tYXlfcHVsbChyZXF1ZXN0LCByZXF1ZXN0LSZndDtsZW4pKQogCQlyZXR1cm4gTlVMTDsKIAotCWxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldikgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzOwomIzQzOwloZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CiYjNDM7CWxlbiA9IGhlYWRyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MzsKIAkJc2l6ZW9mKCpuYSkgJiM0MzsgbmFfb2xlbiAmIzQzOyBkZXYtJmd0O25lZWRlZF90YWlscm9vbTsKIAlyZXBseSA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpOwogCWlmIChyZXBseSA9PSBOVUxMKQpAQCAtMTk2MSw3ICYjNDM7MTk2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LAogCiAJcmVwbHktJmd0O3Byb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7CiAJcmVwbHktJmd0O2RldiA9IGRldjsKLQlza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC0mZ3Q7ZGV2KSk7CiYjNDM7CXNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7CiAJc2tiX3B1c2gocmVwbHksIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7CiAJc2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVlhMQU4gTkEgQ3JlYXRpb24gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgZGlmZiBhZ2FpbnN0IGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYHZ4bGFuX25hX2NyZWF0ZWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5pcHVsYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIE5ldHdvcmsgQWRkcmVzcyAoTkEpIGNyZWF0aW9uIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLgoKVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHJlcXVpcmVkIGJ1ZmZlciBsZW5ndGggKGBsZW5gKSBpcyBjYWxjdWxhdGVkIGZvciB0aGUgcmVwbHkgYHNrX2J1ZmZgLiBCZWZvcmUsIHRoZSBjYWxjdWxhdGlvbiB3YXMgYSBzaW1wbGUgYWRkaXRpb246IGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MzsgLi4uYC4gTm93LCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBhIGBoZWFkcm9vbWAgdmFyaWFibGU6CgpgYGBjCgloZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CglsZW4gPSBoZWFkcm9vbSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICYjNDM7IC4uLgpgYGAKCmFuZCB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3Jlc2VydmVgIGNhbGwgbm93IHVzZXMgdGhpcyBgaGVhZHJvb21gIHZhcmlhYmxlOgoKYGBgYwoJc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTsKYGBgCgpNeSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGNoYW5nZSBpcyBhYm91dCBvcHRpbWl6aW5nIG9yIG1ha2luZyB0aGUgaGVhZHJvb20gcmVzZXJ2YXRpb24gbW9yZSBleHBsaWNpdCBmb3IgdGhlIGByZXBseWAgc2tfYnVmZi4gIFRoZSBwcmV2aW91cyBpbXBsaWNpdCB1c2Ugb2YgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGZvciBib3RoIGBsZW5gIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmVgIG1pZ2h0IGhhdmUgYmVlbiBzdWJ0bGUgb3IgbGVzcyBjbGVhciB0aGFuIGFzc2lnbmluZyBpdCB0byBhIHNlcGFyYXRlIGBoZWFkcm9vbWAgdmFyaWFibGUuICBJIG5lZWQgdG8gY29uZmlybSBpZiBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgZG9lcyB3aGF0IEkgdGhpbmsgaXQgZG9lcyAtIHJldHVybnMgdGhlIGxpbmsgbGF5ZXIgaGVhZGVyIGxlbmd0aCBwbHVzIGFueSBvdGhlciByZXNlcnZlZCBzcGFjZSBmb3IgYSBnaXZlbiBkZXZpY2UuIFRoZSBjaGFuZ2Ugc2VlbXMgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJlYWRhYmxlIGJ5IGV4cGxpY2l0bHkgc2hvd2luZyB0aGUgYGhlYWRyb29tYCBhbGxvY2F0aW9uLCB3aGljaCBpcyBhIGdvb2QgcHJhY3RpY2UuIE5vIHNpZ25pZmljYW50IGNoYW5nZSBpbiB0aGUgb3ZlcmFsbCBzaXplIGNhbGN1bGF0aW9uIGlzIG9ic2VydmVkIGZyb20gdGhlIHBhdGNoIGl0c2VsZiwgYnV0IEkgd2FudCB0byBlbnN1cmUgdGhpcyBpc24mIzM5O3QgYSBwcmUtZW1wdGl2ZSBtZWFzdXJlIGZvciBhIGxhcmdlciBjaGFuZ2UuCgpUbyBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byBrZWVwIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIGluIG1pbmQsIGFuZCBhbHNvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYGhlYWRyb29tYCBhbmQgdGhlIGFzc29jaWF0ZWQgYExMX1JFU0VSVkVEX1NQQUNFYCBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCBvdGhlciBmdW5jdGlvbnMgdXNlZC4gVGhlIGNvbnRleHQgb2YgbmV0d29yayBhZGRyZXNzIGNyZWF0aW9uIGlzIGFsc28gaW1wb3J0YW50IC0gd2h5IGFyZSB3ZSB1c2luZyBJUHY2IGluIHRoaXMgY29udGV4dD8gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgcG9zc2libHkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdG8gY29uZmlybSB0aGUgcmVhc29uIGFuZCBmdWxseSB2YWxpZGF0ZSB0aGF0IHRoaXMgc2VlbWluZ2x5IHNtYWxsIGNoYW5nZSBpcyBpbmRlZWQgc2FmZSBhbmQgZWZmZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTk0MDpcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuMTk0MTpcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcbjE5NDI6XHRcdFx0XHRcdCAgICAgICBib29sIGlzcm91dGVyKVxuMTk0MzpcdHtcbjE5NDQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXF1ZXN0LVx1MDAzZWRldjtcbjE5NDU6XHRcdHN0cnVjdCBza19idWZmICpyZXBseTtcbjE5NDY6XHRcdHN0cnVjdCBuZF9tc2cgKm5zLCAqbmE7XG4xOTQ3Olx0XHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcbjE5NDg6XHRcdHU4ICpkYWRkcjtcbjE5NDk6XHRcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciAmIzQzOyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovXG4xOTUwOlx0XHRpbnQgaGVhZHJvb207XG4xOTUxOlx0XHRpbnQgbnNfb2xlbjtcbjE5NTI6XHRcdGludCBpLCBsZW47XG4xOTUzOlx0XG4xOTU0Olx0XHRpZiAoZGV2ID09IE5VTEwgfHwgIXBza2JfbWF5X3B1bGwocmVxdWVzdCwgcmVxdWVzdC1cdTAwM2VsZW4pKVxuMTk1NTpcdFx0XHRyZXR1cm4gTlVMTDtcbjE5NTY6XHRcbjE5NTc6XHRcdGhlYWRyb29tID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbjE5NTg6XHRcdGxlbiA9IGhlYWRyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MztcbjE5NTk6XHRcdFx0c2l6ZW9mKCpuYSkgJiM0MzsgbmFfb2xlbiAmIzQzOyBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuMTk2MDpcdFx0cmVwbHkgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbjE5NjE6XHRcdGlmIChyZXBseSA9PSBOVUxMKVxuMTk2MjpcdFx0XHRyZXR1cm4gTlVMTDtcbjE5NjM6XHRcbjE5NjQ6XHRcdHJlcGx5LVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XG4xOTY1Olx0XHRyZXBseS1cdTAwM2VkZXYgPSBkZXY7XG4xOTY2Olx0XHRza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pO1xuMTk2NzpcdFx0c2tiX3B1c2gocmVwbHksIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7XG4xOTY4Olx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihyZXBseSk7XG4xOTY5Olx0XG4xOTcwOlx0XHRucyA9IChzdHJ1Y3QgbmRfbXNnICopKGlwdjZfaGRyKHJlcXVlc3QpICYjNDM7IDEpO1xuMTk3MTpcdFxuMTk3MjpcdFx0ZGFkZHIgPSBldGhfaGRyKHJlcXVlc3QpLVx1MDAzZWhfc291cmNlO1xuMTk3MzpcdFx0bnNfb2xlbiA9IHJlcXVlc3QtXHUwMDNlbGVuIC0gc2tiX25ldHdvcmtfb2Zmc2V0KHJlcXVlc3QpIC1cbjE5NzQ6XHRcdFx0c2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAtIHNpemVvZigqbnMpO1xuMTk3NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnNfb2xlbi0xOyBpICYjNDM7PSAobnMtXHUwMDNlb3B0W2kmIzQzOzFdXHUwMDNjXHUwMDNjMykpIHtcbjE5NzY6XHRcdFx0aWYgKCFucy1cdTAwM2VvcHRbaSAmIzQzOyAxXSB8fCBpICYjNDM7IChucy1cdTAwM2VvcHRbaSAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgMykgXHUwMDNlIG5zX29sZW4pIHtcbjE5Nzc6XHRcdFx0XHRrZnJlZV9za2IocmVwbHkpO1xuMTk3ODpcdFx0XHRcdHJldHVybiBOVUxMO1xuMTk3OTpcdFx0XHR9XG4xOTgwOlx0XHRcdGlmIChucy1cdTAwM2VvcHRbaV0gPT0gTkRfT1BUX1NPVVJDRV9MTF9BRERSKSB7XG4xOTgxOlx0XHRcdFx0aWYgKChucy1cdTAwM2VvcHRbaSAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgMykgXHUwMDNlPVxuMTk4MjpcdFx0XHRcdCAgICBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpICYjNDM7IEVUSF9BTEVOKVxuMTk4MzpcdFx0XHRcdFx0ZGFkZHIgPSBucy1cdTAwM2VvcHQgJiM0MzsgaSAmIzQzOyBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpO1xuMTk4NDpcdFx0XHRcdGJyZWFrO1xuMTk4NTpcdFx0XHR9XG4xOTg2Olx0XHR9XG4xOTg3Olx0XG4xOTg4Olx0XHQvKiBFdGhlcm5ldCBoZWFkZXIgKi9cbjE5ODk6XHRcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cdTAwM2VoX2Rlc3QsIGRhZGRyKTtcbjE5OTA6XHRcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cdTAwM2VoX3NvdXJjZSwgaGEpO1xuMTk5MTpcdFx0ZXRoX2hkcihyZXBseSktXHUwMDNlaF9wcm90byA9IGh0b25zKEVUSF9QX0lQVjYpO1xuMTk5MjpcdFx0cmVwbHktXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcbjE5OTM6XHRcbjE5OTQ6XHRcdHNrYl9wdWxsKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuMTk5NTpcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHJlcGx5KTtcbjE5OTY6XHRcdHNrYl9wdXQocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xuMTk5NzpcdFxuMTk5ODpcdFx0LyogSVB2NiBoZWFkZXIgKi9cbjE5OTk6XHRcbjIwMDA6XHRcdHBpcDYgPSBpcHY2X2hkcihyZXBseSk7XG4yMDAxOlx0XHRtZW1zZXQocGlwNiwgMCwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG4yMDAyOlx0XHRwaXA2LVx1MDAzZXZlcnNpb24gPSA2O1xuMjAwMzpcdFx0cGlwNi1cdTAwM2Vwcmlvcml0eSA9IGlwdjZfaGRyKHJlcXVlc3QpLVx1MDAzZXByaW9yaXR5O1xuMjAwNDpcdFx0cGlwNi1cdTAwM2VuZXh0aGRyID0gSVBQUk9UT19JQ01QVjY7XG4yMDA1Olx0XHRwaXA2LVx1MDAzZWhvcF9saW1pdCA9IDI1NTtcbjIwMDY6XHRcdHBpcDYtXHUwMDNlZGFkZHIgPSBpcHY2X2hkcihyZXF1ZXN0KS1cdTAwM2VzYWRkcjtcbjIwMDc6XHRcdHBpcDYtXHUwMDNlc2FkZHIgPSAqKHN0cnVjdCBpbjZfYWRkciAqKW4tXHUwMDNlcHJpbWFyeV9rZXk7XG4yMDA4Olx0XG4yMDA5Olx0XHRza2JfcHVsbChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFByb2JsZW1hdGljIENvZGUgU25pcHBldCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNvZGUmIzM5O3MgbG9naWMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBhIHBhcnRpY3VsYXIgbGluZTogYHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXF1ZXN0LSZndDtkZXY7YCBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gSG93ZXZlciwgSSBuZWVkIHRvIGtub3cgdGhlIG9yaWdpbiBvZiB0aGUgdmFyaWFibGUgYGRldmAuIFdoZXJlIHdhcyBpdCBpbml0aWFsaXplZD8gSSYjMzk7bSBzZWVpbmcgaXQgcmlnaHQgaGVyZSBvbiBsaW5lIDE5NDQuICpCdXQqIEkmIzM5O20gYWx3YXlzIGNhdXRpb3VzIGFib3V0IGFzc3VtcHRpb25zLiBUaGlzIGRpcmVjdCBhc3NpZ25tZW50IG1ha2VzIG1lIGEgbGl0dGxlIHVuZWFzeSDigJMgaXMgdGhlcmUgYSBjaGFuY2UgYGRldmAgaXNuJiMzOTt0IHdoYXQgSSBleHBlY3QgaXQgdG8gYmUsIHBhcnRpY3VsYXJseSBpZiBpdHMgdmFsdWUgaXMgYWx0ZXJlZCBvdXRzaWRlIHRoaXMgaW1tZWRpYXRlIGZ1bmN0aW9uPwoKSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsZXIgb2YgYHZ4bGFuX25hX2NyZWF0ZWAgdG8gZW5zdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGEgY3JpdGljYWwgcG9pbnQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgcmVxdWVzdC0mZ3Q7ZGV2YCBpcyBiZWluZyBwYXNzZWQgdG8gc2VlIGlmIGBkZXZgIGNvdWxkIGJlIGFsdGVyZWQgb3IgY2hhbmdlZCBpbiBhIHdheSB0aGF0IEkgc2hvdWxkIHVuZGVyc3RhbmQuIEEgZGVlcGVyIGRpdmUgaXMgaW4gb3JkZXIgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEkmIzM5O2xsIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY2FsbCBzdGFjayB0byBzZWUgaWYgYW55dGhpbmcgaXMgc3VidGx5IGFmZmVjdGluZyB0aGUgYGRldmAgdmFsdWUuIFRoaXMgaXMgYSBwb3RlbnRpYWwgYnVnIG9yIHBlcmZvcm1hbmNlIGlzc3VlIGhvdHNwb3QsIHNvIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fbmFfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xODQyPXN0YXRpYyBpbnQgYXJwX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTM5LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE5NDA6c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTk0MS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIwMzY9c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjA3OC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMDc5Olx0XHRyZXBseSA9IHZ4bGFuX25hX2NyZWF0ZShza2IsIG4sIGhhLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwODAtXHRcdFx0XHRcdCEhKGYgPyBmLVx1MDAzZWZsYWdzIFx1MDAyNiBOVEZfUk9VVEVSIDogMCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTI5CgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDY5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBhIE5ldHdvcmsgU0tCIEhlYWRyb29tIENhbGN1bGF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGNvZGUgY2hhbmdlLiBQcmV2aW91c2x5LCB3ZSBjYWxjdWxhdGVkIHRoZSBsZW5ndGggb2YgdGhlIHNrYiBhbGxvY2F0aW9uIHVzaW5nIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCB0d2ljZTogb25jZSBkaXJlY3RseSBhbmQgYWdhaW4gdGhyb3VnaCBgcmVxdWVzdC0mZ3Q7ZGV2YC4gTm93LCB0aGlzIHJlZHVuZGFuY3kgaGFzIGJlZW4gY2xlYW5lZCB1cCBieSBzdG9yaW5nIHRoZSB2YWx1ZSBpbiBhIHRlbXBvcmFyeSB2YXJpYWJsZSwgYGhlYWRyb29tYC4gVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIHJlZmFjdG9yaW5nIGZvciBjbGFyaXR5IGFuZCBwb3NzaWJseSBwZXJmb3JtYW5jZSwgYXZvaWRpbmcgcmVkdW5kYW50IGZ1bmN0aW9uIGNhbGxzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgaXNzdWVzLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBjYXNlIHdoZXJlIHRoZSByZWZhY3RvcmluZyBtaWdodCBhbHRlciBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zIG9yIGludHJvZHVjZSBuZXcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIExldCYjMzk7cyBzZWUuLi4gd2UmIzM5O3JlIGNhbGN1bGF0aW5nIGBoZWFkcm9vbWAgYW5kIHRoZW4gdXNpbmcgaXQgY29uc2lzdGVudGx5IHRocm91Z2hvdXQgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uLiBUaGUgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmUuIGByZXBseWAgaXMgY29ycmVjdGx5IGFsbG9jYXRlZCB3aXRoIGBhbGxvY19za2JgLCBhbmQgdGhlIGV0aGVybmV0IGhlYWRlciwgSVB2NiBoZWFkZXIsIGFuZCBORCBtZXNzYWdlIGFyZSB3cml0dGVuIHRvIGl0LiBUaGUga2V5IGlzIHRoYXQgYGRldmAgYW5kIGByZXF1ZXN0LSZndDtkZXZgIGFyZSB0aGUgc2FtZSBkZXZpY2UsIHNvIHRoZSBjYWxjdWxhdGVkIGhlYWRyb29tIGlzIGNvbnNpc3RlbnQuCgpMZXQmIzM5O3MgZG8gYSBtb3JlIHRob3JvdWdoIGNoZWNrOgoKKiAgIE5vIHN0cnVjdHMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIHdpdGhvdXQgcHJvcGVyIGluaXRpYWxpemF0aW9uOyB3ZSYjMzk7cmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUga2VybmVsLgoqICAgTm8gY29uZGl0aW9uYWwgbG9naWMgaXMgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgYXMgaW5wdXQuCiogICBObyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgbGVmdCB1bmluaXRpYWxpemVkLgoqICAgTm8gaW5mb3JtYXRpb24gbGVha3MsIGFuZCB0aGUgYm91bmRzIGFyZW4mIzM5O3QgY2hhbmdlZCBpbiBhIHdheSB0aGF0IHdvdWxkIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBieXRlcy4KClRoaXMgc2VlbXMgbGlrZSBhIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UsIG9yIG1heWJlIGEgbWlub3Igb3B0aW1pemF0aW9uIHRoYXQgaXMgYWxzbyBtb3JlIHJlYWRhYmxlLiBObyBLTVNBTiByaXNrcyBhcmUgaW52b2x2ZWQsIGFzIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHNhZmUgcmVmYWN0b3JpbmcuCgpHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCB0aGUgY29yZSBvZiB0aGlzIGFzc2Vzc21lbnQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIGludHJvZHVjZXMgb3IgZXhwb3NlcyBhbnkgKnVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgb25seSBiZSBkZXRlY3RlZCBieSBLTVNBTiouIEtBU0FOLCBMb2NrRGVwLCBhbmQgdGhlIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIGVub3VnaCBmb3IgaGVyZS4gVGhpcyBpcyBub3QgdGhlIGNhc2UuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuIEkgY2FuIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoYXQsIGFsb25nIHdpdGggYSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IGNvbnRyYXN0cyB0aGUgcm9sZSBhbmQgYmVuZWZpdHMgb2YgS01TQU4gYW5kIEtBU0FOIGluIHRoaXMgcGFydGljdWxhciBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cdTAwM2VkZXZgLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5vIGNoYW5nZSBpbiBydW50aW1lIHZhbHVlcywgbWVtb3J5IGxheW91dCwgYnVmZmVyIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcHlpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcGVyZm9ybXMgYSBtaW5vciByZWZhY3RvcmluZyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSXQgY2FjaGVzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBpbiBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgYW5kIHJldXNlcyBpdCBmb3IgYm90aCB0aGUgYWxsb2NhdGlvbiBzaXplIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKWAuIEJlY2F1c2UgYGRldmAgaXMgaW5pdGlhbGl6ZWQgYXMgYHJlcXVlc3QtXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzIuOTM4MjM2MDM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYzNzcwNDU4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl94bWl0XCIsXG4gICAgXCJ2eGxhbl94bWl0X29uZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcGVyZm9ybXMgYSBtaW5vciByZWZhY3RvcmluZyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSXQgY2FjaGVzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBpbiBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgYW5kIHJldXNlcyBpdCBmb3IgYm90aCB0aGUgYWxsb2NhdGlvbiBzaXplIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKWAuIEJlY2F1c2UgYGRldmAgaXMgaW5pdGlhbGl6ZWQgYXMgYHJlcXVlc3QtXFx1MDAzZWRldmAsIHRoaXMgY2hhbmdlIGludHJvZHVjZXMgbm8gY2hhbmdlIGluIHJ1bnRpbWUgdmFsdWVzLCBtZW1vcnkgbGF5b3V0LCBidWZmZXIgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29weWluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzIuOTM4MjQ5NzY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyNDUyMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTc3Mzc5ODhkNzNkNTU3MGUxM2U4NzYwMWQ0NDU0ZjY2MGE1ZmJiNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNjozNzozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcXG5pbmRleCA0NTlmMTlmNzA3MWU1Li5lNWE5MmQzMDExM2M2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbkBAIC0xOTQ3LDEzICsxOTQ3LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbiBcXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcXG4gXFx0dTggKmRhZGRyO1xcbiBcXHRpbnQgbmFfb2xlbiA9IDg7IC8qIG9wdCBoZHIgKyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovXFxuK1xcdGludCBoZWFkcm9vbTtcXG4gXFx0aW50IG5zX29sZW47XFxuIFxcdGludCBpLCBsZW47XFxuIFxcbiBcXHRpZiAoZGV2ID09IE5VTEwgfHwgIXBza2JfbWF5X3B1bGwocmVxdWVzdCwgcmVxdWVzdC1cXHUwMDNlbGVuKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSArXFxuK1xcdGhlYWRyb29tID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcXG4rXFx0bGVuID0gaGVhZHJvb20gKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICtcXG4gXFx0XFx0c2l6ZW9mKCpuYSkgKyBuYV9vbGVuICsgZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuIFxcdHJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XFxuIFxcdGlmIChyZXBseSA9PSBOVUxMKVxcbkBAIC0xOTYxLDcgKzE5NjMsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcXG4gXFxuIFxcdHJlcGx5LVxcdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpO1xcbiBcXHRyZXBseS1cXHUwMDNlZGV2ID0gZGV2O1xcbi1cXHRza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC1cXHUwMDNlZGV2KSk7XFxuK1xcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XFxuIFxcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbiBcXHRza2JfcmVzZXRfbWFjX2hlYWRlcihyZXBseSk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzozNC40MzEyNzU4NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Njg0OTc1ODg2MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl94bWl0XCIsXG4gICAgXCJ2eGxhbl94bWl0X29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHRoZSBoZWFkcm9vbSBjYWxjdWxhdGlvbiBhbmQgcmVzZXJ2YXRpb24gaW4gdnhsYW5fbmFfY3JlYXRlKCkgd2hlbiBjb25zdHJ1Y3RpbmcgSVB2NiBOZWlnaGJvciBBZHZlcnRpc2VtZW50IHBhY2tldHMgaW4gdGhlIFZYTEFOIGRyaXZlci4gVGhpcyB2aXJ0dWFsIG5ldHdvcmtpbmcgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWWExBTiBwcm94eSBtb2RlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE3NzM3OTg4ZDczZDU1NzBlMTNlODc2MDFkNDQ1NGY2NjBhNWZiYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNjozNzozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuaW5kZXggNDU5ZjE5ZjcwNzFlNS4uZTVhOTJkMzAxMTNjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5AQCAtMTk0NywxMyArMTk0NywxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbiBcdHN0cnVjdCBpcHY2aGRyICpwaXA2O1xuIFx0dTggKmRhZGRyO1xuIFx0aW50IG5hX29sZW4gPSA4OyAvKiBvcHQgaGRyICsgRVRIX0FMRU4gZm9yIHRhcmdldCAqL1xuK1x0aW50IGhlYWRyb29tO1xuIFx0aW50IG5zX29sZW47XG4gXHRpbnQgaSwgbGVuO1xuIFxuIFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXHUwMDNlbGVuKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSArXG4rXHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4rXHRsZW4gPSBoZWFkcm9vbSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xuIFx0XHRzaXplb2YoKm5hKSArIG5hX29sZW4gKyBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuIFx0cmVwbHkgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChyZXBseSA9PSBOVUxMKVxuQEAgLTE5NjEsNyArMTk2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuIFxuIFx0cmVwbHktXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcbiBcdHJlcGx5LVx1MDAzZWRldiA9IGRldjtcbi1cdHNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldikpO1xuK1x0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcbiBcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuIFx0c2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzQuNDMxMjc3MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTE1ODAzMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBDcmVhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJJ20gbG9va2luZyBhdCBgdnhsYW5fbmFfY3JlYXRlYCB3aXRoaW4gYHZ4bGFuX2NvcmUuY2Ag4oCTIHNlZW1zIGxpa2Ugd2UncmUgb3B0aW1pemluZyB0aGUgY3JlYXRpb24gb2YgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCAoTkEpIHBhY2tldHMgd2l0aGluIHRoZSBWWExBTiBkcml2ZXIuIFRoZSBkaWZmIGl0c2VsZiBpcyByZWxhdGl2ZWx5IGZvY3VzZWQsIHNvIEkgdGhpbmsgSSBjYW4gdW5kZXJzdGFuZCBpdCBmYWlybHkgcXVpY2tseS5cblxuVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIGBza19idWZmYCBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBOQSByZXBseS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHdlJ3JlIGFkanVzdGluZyB0aGUgY2FsY3VsYXRpb24gb2YgYGxlbmAgcGFzc2VkIGludG8gYGFsbG9jX3NrYigpYC4gVGhlIG9yaWdpbmFsIGNvZGUgYXBwZWFycyB0byBoYXZlIGhhZCBhIHNsaWdodGx5IG9mZiBjYWxjdWxhdGlvbiBmb3IgdGhlIGJ1ZmZlciBzaXplLCBhbmQgdGhpcyBwYXRjaCBhaW1zIHRvIGNvcnJlY3QgaXQgYnkgZXhwbGljaXRseSBjYWxjdWxhdGluZyBgaGVhZHJvb21gLiBUaGUgY29kZSBub3cgZXhwbGljaXRseSBjYWxjdWxhdGVzIGFuZCBzZXRzIHRoZSBgaGVhZHJvb21gIHJlcXVpcmVkIHVzaW5nIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCwgd2hpY2ggaXMgdGhlbiB1c2VkIHdoZW4gYWxsb2NhdGluZyBhbmQgcmVzZXJ2aW5nIHRoZSBgc2tiYC4gVGhhdCBzaG91bGQgZml4IHRoZSBpc3N1ZSEgVGhlIHVwZGF0ZWQgYGxlbmAgYWxzbyBpbmNvcnBvcmF0ZXMgdGhlIElQdjYgaGVhZGVyLCBOQSBzdHJ1Y3R1cmUsIG9wdGlvbiBoZWFkZXJzLCBFdGhlcm5ldCBhZGRyZXNzIGFuZCB0YWlscm9vbSwgYWxsIGNyaXRpY2FsIHRvIHRoZSBwYWNrZXQncyBmb3JtYXQuXG5cbkl0J3MgYSBnb29kIHByYWN0aWNlIHRvIGRvdWJsZS1jaGVjayB0aGVzZSBjYWxjdWxhdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYnVmZmVyIGFsbG9jYXRpb24gaW4gbmV0d29yayBkcml2ZXJzLiBJbmNvcnJlY3QgYnVmZmVyIHNpemluZyBjYW4gbGVhZCB0byBhbGwgc29ydHMgb2YgbmFzdHkgaXNzdWVzLCBmcm9tIGJ1ZmZlciBvdmVyZmxvd3MgdG8gcGFja2V0IGNvcnJ1cHRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLiBTbywgSSBzZWUgdGhlIGNoYW5nZSBhbmQgYW0gaW4gYWdyZWVtZW50IHdpdGggaXQuIExvb2tzIGxpa2UgYSBzb2xpZCBmaXggdG8gYWRkcmVzcyBhIHN1YnRsZSBwb3RlbnRpYWwgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzozOS41NDcwOTY2MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzEwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE5MzA6XFx0XFx0XFx0fTtcXG4xOTMxOlxcdFxcbjE5MzI6XFx0XFx0XFx0dnhsYW5faXBfbWlzcyhkZXYsIFxcdTAwMjZpcGEpO1xcbjE5MzM6XFx0XFx0fVxcbjE5MzQ6XFx0b3V0OlxcbjE5MzU6XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4xOTM2OlxcdFxcdHJldHVybiBORVRERVZfVFhfT0s7XFxuMTkzNzpcXHR9XFxuMTkzODpcXHRcXG4xOTM5OlxcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbjE5NDA6XFx0c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXFxuMTk0MTpcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5laWdoYm91ciAqbiwgdTggKmhhLFxcbjE5NDI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgaXNyb3V0ZXIpXFxuMTk0MzpcXHR7XFxuMTk0NDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcmVxdWVzdC1cXHUwMDNlZGV2O1xcbjE5NDU6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnJlcGx5O1xcbjE5NDY6XFx0XFx0c3RydWN0IG5kX21zZyAqbnMsICpuYTtcXG4xOTQ3OlxcdFxcdHN0cnVjdCBpcHY2aGRyICpwaXA2O1xcbjE5NDg6XFx0XFx0dTggKmRhZGRyO1xcbjE5NDk6XFx0XFx0aW50IG5hX29sZW4gPSA4OyAvKiBvcHQgaGRyICsgRVRIX0FMRU4gZm9yIHRhcmdldCAqL1xcbjE5NTA6XFx0XFx0aW50IGhlYWRyb29tO1xcbjE5NTE6XFx0XFx0aW50IG5zX29sZW47XFxuMTk1MjpcXHRcXHRpbnQgaSwgbGVuO1xcbjE5NTM6XFx0XFxuMTk1NDpcXHRcXHRpZiAoZGV2ID09IE5VTEwgfHwgIXBza2JfbWF5X3B1bGwocmVxdWVzdCwgcmVxdWVzdC1cXHUwMDNlbGVuKSlcXG4xOTU1OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbjE5NTY6XFx0XFxuMTk1NzpcXHRcXHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XFxuMTk1ODpcXHRcXHRsZW4gPSBoZWFkcm9vbSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xcbjE5NTk6XFx0XFx0XFx0c2l6ZW9mKCpuYSkgKyBuYV9vbGVuICsgZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuMTk2MDpcXHRcXHRyZXBseSA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xcbjE5NjE6XFx0XFx0aWYgKHJlcGx5ID09IE5VTEwpXFxuMTk2MjpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4xOTYzOlxcdFxcbjE5NjQ6XFx0XFx0cmVwbHktXFx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XFxuMTk2NTpcXHRcXHRyZXBseS1cXHUwMDNlZGV2ID0gZGV2O1xcbjE5NjY6XFx0XFx0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcXG4xOTY3OlxcdFxcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbjE5Njg6XFx0XFx0c2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpO1xcbjE5Njk6XFx0XFxuMTk3MDpcXHRcXHRucyA9IChzdHJ1Y3QgbmRfbXNnICopKGlwdjZfaGRyKHJlcXVlc3QpICsgMSk7XFxuMTk3MTpcXHRcXG4xOTcyOlxcdFxcdGRhZGRyID0gZXRoX2hkcihyZXF1ZXN0KS1cXHUwMDNlaF9zb3VyY2U7XFxuMTk3MzpcXHRcXHRuc19vbGVuID0gcmVxdWVzdC1cXHUwMDNlbGVuIC0gc2tiX25ldHdvcmtfb2Zmc2V0KHJlcXVlc3QpIC1cXG4xOTc0OlxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgLSBzaXplb2YoKm5zKTtcXG4xOTc1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuc19vbGVuLTE7IGkgKz0gKG5zLVxcdTAwM2VvcHRbaSsxXVxcdTAwM2NcXHUwMDNjMykpIHtcXG4xOTc2OlxcdFxcdFxcdGlmICghbnMtXFx1MDAzZW9wdFtpICsgMV0gfHwgaSArIChucy1cXHUwMDNlb3B0W2kgKyAxXSBcXHUwMDNjXFx1MDAzYyAzKSBcXHUwMDNlIG5zX29sZW4pIHtcXG4xOTc3OlxcdFxcdFxcdFxcdGtmcmVlX3NrYihyZXBseSk7XFxuMTk3ODpcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4xOTc5OlxcdFxcdFxcdH1cXG4xOTgwOlxcdFxcdFxcdGlmIChucy1cXHUwMDNlb3B0W2ldID09IE5EX09QVF9TT1VSQ0VfTExfQUREUikge1xcbjE5ODE6XFx0XFx0XFx0XFx0aWYgKChucy1cXHUwMDNlb3B0W2kgKyAxXSBcXHUwMDNjXFx1MDAzYyAzKSBcXHUwMDNlPVxcbjE5ODI6XFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgbmRfb3B0X2hkcikgKyBFVEhfQUxFTilcXG4xOTgzOlxcdFxcdFxcdFxcdFxcdGRhZGRyID0gbnMtXFx1MDAzZW9wdCArIGkgKyBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpO1xcbjE5ODQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTk4NTpcXHRcXHRcXHR9XFxuMTk4NjpcXHRcXHR9XFxuMTk4NzpcXHRcXG4xOTg4OlxcdFxcdC8qIEV0aGVybmV0IGhlYWRlciAqL1xcbjE5ODk6XFx0XFx0ZXRoZXJfYWRkcl9jb3B5KGV0aF9oZHIocmVwbHkpLVxcdTAwM2VoX2Rlc3QsIGRhZGRyKTtcXG4xOTkwOlxcdFxcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cXHUwMDNlaF9zb3VyY2UsIGhhKTtcXG4xOTkxOlxcdFxcdGV0aF9oZHIocmVwbHkpLVxcdTAwM2VoX3Byb3RvID0gaHRvbnMoRVRIX1BfSVBWNik7XFxuMTk5MjpcXHRcXHRyZXBseS1cXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcXG4xOTkzOlxcdFxcbjE5OTQ6XFx0XFx0c2tiX3B1bGwocmVwbHksIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7XFxuMTk5NTpcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIocmVwbHkpO1xcbjE5OTY6XFx0XFx0c2tiX3B1dChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XFxuMTk5NzpcXHRcXG4xOTk4OlxcdFxcdC8qIElQdjYgaGVhZGVyICovXFxuMTk5OTpcXHRcXG4yMDAwOlxcdFxcdHBpcDYgPSBpcHY2X2hkcihyZXBseSk7XFxuMjAwMTpcXHRcXHRtZW1zZXQocGlwNiwgMCwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XFxuMjAwMjpcXHRcXHRwaXA2LVxcdTAwM2V2ZXJzaW9uID0gNjtcXG4yMDAzOlxcdFxcdHBpcDYtXFx1MDAzZXByaW9yaXR5ID0gaXB2Nl9oZHIocmVxdWVzdCktXFx1MDAzZXByaW9yaXR5O1xcbjIwMDQ6XFx0XFx0cGlwNi1cXHUwMDNlbmV4dGhkciA9IElQUFJPVE9fSUNNUFY2O1xcbjIwMDU6XFx0XFx0cGlwNi1cXHUwMDNlaG9wX2xpbWl0ID0gMjU1O1xcbjIwMDY6XFx0XFx0cGlwNi1cXHUwMDNlZGFkZHIgPSBpcHY2X2hkcihyZXF1ZXN0KS1cXHUwMDNlc2FkZHI7XFxuMjAwNzpcXHRcXHRwaXA2LVxcdTAwM2VzYWRkciA9ICooc3RydWN0IGluNl9hZGRyICopbi1cXHUwMDNlcHJpbWFyeV9rZXk7XFxuMjAwODpcXHRcXG4yMDA5OlxcdFxcdHNrYl9wdWxsKHJlcGx5LCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzkuNTQ3MzY5Mzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI4MjA3MzY2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHZ4bGFuX25hX2NyZWF0ZWAgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHZ4bGFuX2NvcmUuY2AgY29kZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBgdnhsYW5fbmFfY3JlYXRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgaGllcmFyY2h5IGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgY29yZSB2eGxhbiBmdW5jdGlvbnMuIEknbSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCBmb3IgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGB2eGxhbl9uYV9jcmVhdGVgIHRvIGdldCB0aGUgYmlnIHBpY3R1cmUgb2YgaG93IGl0IGZpdHMgd2l0aGluIHRoZSBvdmVyYWxsIHZ4bGFuIGRhdGEgcGxhbmUgc2V0dXAuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIGNsb3NlbHkgcmVsYXRlZCB0byB0aGUgb3BlcmF0aW9uLCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiB0aGUgY29kZS4gVGhpcyB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgYW5kIHRoZSBvdmVyYWxsIGRhdGEgZmxvdy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBrZXkgZW50cnkgcG9pbnRzIGFuZCBleGl0IHBhdGhzLCBzbyBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgaXRzIGJlaGF2aW9yIGluIHRoZSBvdmVyYWxsIGNvbnRyb2wgcGF0aC4gSSdsbCBmb2N1cyBvbiBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSwgY29uZmlndXJlLCBvciBkZWFsbG9jYXRlIHJlc291cmNlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gdG8gc2VlIGhvdyB0aGUgb3ZlcmFsbCBwcm9jZXNzIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTMzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0MS44Mjk0NDQ5NDJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3ODc2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbmFfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MTg0Mj1zdGF0aWMgaW50IGFycF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTM5LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxOTQwOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjAzNj1zdGF0aWMgaW50IG5laWdoX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwNzgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwNzk6XFx0XFx0cmVwbHkgPSB2eGxhbl9uYV9jcmVhdGUoc2tiLCBuLCBoYSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjA4MC1cXHRcXHRcXHRcXHRcXHQhIShmID8gZi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBOVEZfUk9VVEVSIDogMCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0MS44NzUyMzcyNDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTg5MTUzMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbmVpZ2hfcmVkdWNlYCBhbmQgVlhMQU4gRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYG5laWdoX3JlZHVjZWAgYW5kIFZYTEFOLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGRpcmVjdCBjYWxsZXJzIGFuZCwgaWYgcG9zc2libGUsIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IFZYTEFOIGlzIGludm9sdmVkIGluIHRob3NlIGNhbGxzLiBBcmUgd2UgdGFsa2luZyBhYm91dCBwYWNrZXQgaGFuZGxpbmcsIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBzaW1wbGUgY2FsbCBncmFwaCB3b3VsZCBiZSBpZGVhbCBoZXJlLCBidXQgSeKAmWxsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgdG9vbHMgb3IgbWV0aG9kcyB0byBnZW5lcmF0ZSB0aGF0IGlmIGl0J3Mgbm90IHJlYWRpbHkgYXZhaWxhYmxlLiBGcm9tIHRoYXQsIEkgY2FuIHF1aWNrbHkgZm9ybSBhIGh5cG90aGVzaXMgcmVnYXJkaW5nIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM3OjQ1LjQ2NDM5Mjg0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjY0MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZWlnaF9yZWR1Y2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xOTQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwMzUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwMzY6c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNy17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjczOT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3ODAtXFx0XFx0XFx0ICAgIG0tXFx1MDAzZWljbXBoLmljbXA2X3R5cGUgPT0gTkRJU0NfTkVJR0hCT1VSX1NPTElDSVRBVElPTilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc4MTpcXHRcXHRcXHRcXHRyZXR1cm4gbmVpZ2hfcmVkdWNlKGRldiwgc2tiLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzgyLVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6NDUuNTExMDQwOTA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg4NTQ1MzkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWWExBTiBLY29uZmlnKipcblxuT2theSwgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3Z4bGFuL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSBhcmUgc3RydWN0dXJlZC4gTXkgZ29hbCBoZXJlIGlzIGxpa2VseSB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGJlaW5nIGV4cG9zZWQsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLCBhbmQgcG90ZW50aWFsbHkgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIHRoZSBtYWluIHN5bWJvbHMsIGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgIFRoZSBiYXNlIFZYTEFOIGRyaXZlciBpdHNlbGYgKGBDT05GSUdfVlhMQU5gKSDigJMgaXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hhdCdzIGl0cyBzdGF0dXM/XG4qICAgQW55IG9wdGlvbnMgZm9yIGRpZmZlcmVudCBlbmNhcHN1bGF0aW9uIHR5cGVzIG9yIHR1bm5lbGluZyBwcm90b2NvbHMgYmVzaWRlcyBVRFAgVlhMQU4uXG4qICAgRmVhdHVyZSBmbGFnczogQXJlIHRoZXJlIGNvbnRyb2xzIGZvciBjaGVja3N1bSBvZmZsb2FkaW5nLCBUU08sIEdSTy9HU08sIG9yIG90aGVyIHBlcmZvcm1hbmNlLXJlbGF0ZWQgb3B0aW9ucz8gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggb25lcyBhcmUgZXhwb3NlZCBzbyBJIGNhbiBldmFsdWF0ZSB0aGUgaW1wbGVtZW50YXRpb24ncyBjYXBhYmlsaXRpZXMuXG4qICAgSGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgTklDLXNwZWNpZmljIG9mZmxvYWRzIG9yIGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9uIGNlcnRhaW4gaGFyZHdhcmUgZmVhdHVyZXMgb3IgcGxhdGZvcm1zLlxuKiAgIERlYnVnZ2luZyBvciB0cmFjaW5nIG9wdGlvbnMsIHNpbmNlIEkgbWlnaHQgYmUgbG9va2luZyBpbnRvIHRyYWNpbmcgYSBmYXVsdCBhbmQgZGVidWdnaW5nLlxuXG5JIHdpbGwgYWxzbyBiZSBvbiB0aGUgbG9va291dCBmb3IgYW55IGRlcGVuZGVuY2llcy4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IHNwb3QgaWYgYW55IG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgVlhMQU4gZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCB3b3JraW5nIGNvcnJlY3RseS4gTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZywgbG9va2luZyBhdCB0aGUgaGllcmFyY2h5IGFuZCB0aGlua2luZyBhYm91dCBob3cgdGhvc2Ugb3B0aW9ucyBtaWdodCBhZmZlY3QgdGhlIGJ1aWxkIHByb2Nlc3MsIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UsIGFuZCwgdWx0aW1hdGVseSwgdGhlIHBlcmZvcm1hbmNlIGFuZCBiZWhhdmlvciBvZiBWWExBTiBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0OC4zOTY0OTcxNDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDIxODkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWWExBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0NjIyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMDpjb25maWcgVlhMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMTpcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMjMyLVxcdGRlcGVuZHMgb24gSU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzYtXFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZ4bGFuIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzNzpcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzgtXFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cXG4tLVxcbmRyaXZlcnMvbmV0L01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19WSVJUSU9fTkVUKSArPSB2aXJ0aW9fbmV0Lm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfVlhMQU4pICs9IHZ4bGFuL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19HRU5FVkUpICs9IGdlbmV2ZS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oLTExNjctI2RlZmluZSBUWF9QQUNLRVRfQVRUUklCVVRFU19QVFBfV0lEVEhcXHRcXHQxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMTY4OiNkZWZpbmUgVFhfUEFDS0VUX0FUVFJJQlVURVNfVlhMQU5fSU5ERVhcXHQ0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMTY5OiNkZWZpbmUgVFhfUEFDS0VUX0FUVFJJQlVURVNfVlhMQU5fV0lEVEhcXHQxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaC0xMTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaC0xMjEzLSNkZWZpbmUgVFhfTk9STUFMX0RFU0MyX1ZMQU5fSU5TRVJUXFx0XFx0MHgyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMjE0OiNkZWZpbmUgVFhfTk9STUFMX0RFU0MzX1ZYTEFOX1BBQ0tFVFxcdFxcdDB4M1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmgtMTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9MzkwPXN0YXRpYyB2b2lkIHhnYmVfc2V0X3Z4bGFuX2lkKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM5MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzozOTI6XFx0LyogUHJvZ3JhbSB0aGUgVlhMQU4gcG9ydCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzkzLVxcdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1RJUiwgVE5JRCwgcGRhdGEtXFx1MDAzZXZ4bGFuX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6Mzk1OlxcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwiVlhMQU4gdHVubmVsIGlkIHNldCB0byAlaHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0zOTYtXFx0XFx0ICBwZGF0YS1cXHUwMDNldnhsYW5fcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTM5OT1zdGF0aWMgdm9pZCB4Z2JlX2VuYWJsZV92eGxhbihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQwNDpcXHQvKiBQcm9ncmFtIHRoZSBWWExBTiBwb3J0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDUtXFx0eGdiZV9zZXRfdnhsYW5faWQocGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDA3OlxcdC8qIEFsbG93IGZvciBJUHY2L1VEUCB6ZXJvLWNoZWNrc3VtIFZYTEFOIHBhY2tldHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwOC1cXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19QRlIsIFZVQ0MsIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDEwOlxcdC8qIEVuYWJsZSBWWExBTiB0dW5uZWxpbmcgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDExLVxcdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1RDUiwgVk5NLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDE0OlxcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwiVlhMQU4gYWNjZWxlcmF0aW9uIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9NDE3PXN0YXRpYyB2b2lkIHhnYmVfZGlzYWJsZV92eGxhbihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQyNTpcXHQvKiBDbGVhciBJUHY2L1VEUCB6ZXJvLWNoZWNrc3VtIFZYTEFOIHBhY2tldHMgc2V0dGluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDI2LVxcdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1BGUiwgVlVDQywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzo0Mjg6XFx0LyogQ2xlYXIgdGhlIFZYTEFOIHBvcnQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQyOS1cXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19USVIsIFROSUQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDMxOlxcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwiVlhMQU4gYWNjZWxlcmF0aW9uIGRpc2FibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTE2MTU9c3RhdGljIHZvaWQgeGdiZV9kZXZfeG1pdChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0xNjQxLVxcdHZ4bGFuID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LVxcdTAwM2VhdHRyaWJ1dGVzLCBUWF9QQUNLRVRfQVRUUklCVVRFUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjE2NDI6XFx0XFx0XFx0ICAgICAgIFZYTEFOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE2NDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE3NzUtXFx0XFx0WEdNQUNfU0VUX0JJVFNfTEUocmRlc2MtXFx1MDAzZWRlc2MzLCBUWF9OT1JNQUxfREVTQzMsIFZOUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjE3NzY6XFx0XFx0XFx0XFx0ICBUWF9OT1JNQUxfREVTQzNfVlhMQU5fUEFDS0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE3NzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTM1NzE9dm9pZCB4Z2JlX2luaXRfZnVuY3Rpb25fcHRyc19kZXYoc3RydWN0IHhnYmVfaHdfaWYgKmh3X2lmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0zNjY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6MzY3MDpcXHQvKiBGb3IgVlhMQU4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM2NzEtXFx0aHdfaWYtXFx1MDAzZWVuYWJsZV92eGxhbiA9IHhnYmVfZW5hYmxlX3Z4bGFuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz02OTA9dm9pZCB4Z2JlX2dldF9hbGxfaHdfZmVhdHVyZXMoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy04MzgtXFx0XFx0XFx0aHdfZmVhdC1cXHUwMDNlc2Ffdmxhbl9pbnMgPyBcXFwieWVzXFxcIiA6IFxcXCJub1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6ODM5OlxcdFxcdGRldl9kYmcocGRhdGEtXFx1MDAzZWRldiwgXFxcIiAgVlhMQU4vTlZHUkUgc3VwcG9ydCAgICAgICA6ICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtODQwLVxcdFxcdFxcdGh3X2ZlYXQtXFx1MDAzZXZ4biA/IFxcXCJ5ZXNcXFwiIDogXFxcIm5vXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTkwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTEwLVxcdC50YWJsZXNcXHRcXHQ9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxMTpcXHRcXHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTEyLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTE0NDA9c3RhdGljIGludCB4Z2JlX3ByZXBfdHNvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4Z2JlX3BhY2tldF9kYXRhICpwYWNrZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE0NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxNDUyOlxcdGlmIChYR01BQ19HRVRfQklUUyhwYWNrZXQtXFx1MDAzZWF0dHJpYnV0ZXMsIFRYX1BBQ0tFVF9BVFRSSUJVVEVTLCBWWExBTikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE0NTMtXFx0XFx0cGFja2V0LVxcdTAwM2VoZWFkZXJfbGVuID0gc2tiX2lubmVyX3RjcF9hbGxfaGVhZGVycyhza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xNTIxPXN0YXRpYyB2b2lkIHhnYmVfcGFja2V0X2luZm8oc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNTU3LVxcdFxcdFhHTUFDX1NFVF9CSVRTKHBhY2tldC1cXHUwMDNlYXR0cmlidXRlcywgVFhfUEFDS0VUX0FUVFJJQlVURVMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxNTU4OlxcdFxcdFxcdCAgICAgICBWWExBTiwgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xOTM1PXN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCB4Z2JlX2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xOTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6MTk0NjpcXHQvKiBWWExBTiBDU1VNIHJlcXVpcmVzIFZYTEFOIGJhc2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5NDctXFx0aWYgKChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfR1NPX1VEUF9UVU5ORUxfQ1NVTSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD03MDQ9c3RydWN0IHhnYmVfaHdfaWYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTgwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6ODAxOlxcdC8qIEZvciBWWExBTiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC04MDItXFx0dm9pZCAoKmVuYWJsZV92eGxhbikoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9OTMyPXN0cnVjdCB4Z2JlX2h3X2ZlYXR1cmVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC05NTAtXFx0dW5zaWduZWQgaW50IHNhX3ZsYW5faW5zO1xcdC8qIFNvdXJjZSBBZGRyZXNzIG9yIFZMQU4gSW5zZXJ0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjk1MTpcXHR1bnNpZ25lZCBpbnQgdnhuO1xcdFxcdC8qIFZYTEFOL05WR1JFICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTk1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD05OTM9c3RydWN0IHhnYmVfcHJ2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTExNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjExNDI6XFx0LyogVlhMQU4gc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTE0My1cXHR1MTYgdnhsYW5fcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYTBfaW50ZXJuYWwuaC01MC0jZGVmaW5lIEhXX0FUTF9BMF9UWERfQ1RMX0NNRF9XQiAgICAgIEJJVCgyNylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9od19hdGwvaHdfYXRsX2EwX2ludGVybmFsLmg6NTE6I2RlZmluZSBIV19BVExfQTBfVFhEX0NUTF9DTURfVlhMQU4gICBCSVQoMjgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9iMF9pbnRlcm5hbC5oLTU1LSNkZWZpbmUgSFdfQVRMX0IwX1RYRF9DVExfQ01EX1dCICAgICAgQklUKDI3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaDo1NjojZGVmaW5lIEhXX0FUTF9CMF9UWERfQ1RMX0NNRF9WWExBTiAgIEJJVCgyOClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9od19hdGwvaHdfYXRsX2IwX2ludGVybmFsLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYz0xNDM2PXN0YXRpYyB2b2lkIGJuZ2VfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMtMTQ0NS1cXHRpZiAoYm4tXFx1MDAzZXZ4bGFuX3BvcnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmM6MTQ0NjpcXHRcXHR0dW5sX3RwYV9ibWFwIHw9IFZOSUNfVFBBX0NGR19SRVFfVE5MX1RQQV9FTl9CSVRNQVBfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMtMTQ0Ny1cXHRpZiAoYm4tXFx1MDAzZXZ4bGFuX2dwZV9wb3J0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jOjE0NDg6XFx0XFx0dHVubF90cGFfYm1hcCB8PSBWTklDX1RQQV9DRkdfUkVRX1ROTF9UUEFfRU5fQklUTUFQX1ZYTEFOX0dQRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYy0xNDQ5LVxcdGlmIChibi1cXHUwMDNlbmdlX3BvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oPTEzMzk9ZW51bSBibngyeF91ZHBfcG9ydF90eXBlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oOjEzNDA6XFx0Qk5YMlhfVURQX1BPUlRfVlhMQU4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xMzQxLVxcdEJOWDJYX1VEUF9QT1JUX0dFTkVWRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTIwODA9aW50IGJueDJ4X3JzcyhzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfcnNzX2NvbmZpZ19vYmogKnJzc19vYmosXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTA5LVxcdFxcdGlmICghQ0hJUF9JU19FMXgoYnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjExMDpcXHRcXHRcXHQvKiB2YWxpZCBvbmx5IGZvciBUVU5OX01PREVfVlhMQU4gdHVubmVsIG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyMTExOlxcdFxcdFxcdF9fc2V0X2JpdChCTlgyWF9SU1NfSVBWNF9WWExBTiwgXFx1MDAyNnBhcmFtcy5yc3NfZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjIxMTI6XFx0XFx0XFx0X19zZXRfYml0KEJOWDJYX1JTU19JUFY2X1ZYTEFOLCBcXHUwMDI2cGFyYW1zLnJzc19mbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTMzNjI9c3RhdGljIHUzMiBibngyeF94bWl0X3R5cGUoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jLTM0MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQwOTovKiBWWExBTjogNCA9IDEgKGZvciBsaW5lYXIgZGF0YSBCRCkgKyAzICgyIGZvciBQQkQgYW5kIGxhc3QgQkQpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQxMDojZGVmaW5lIEJOWDJYX05VTV9WWExBTl9UU09fV0lOX1NVQl9CRFMgICAgICAgICA0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMzQxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTM0MTk9c3RhdGljIGludCBibngyeF9wa3RfcmVxX2xpbihzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMzQyNS1cXHRpZiAoeG1pdF90eXBlIFxcdTAwMjYgWE1JVF9HU09fRU5DKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjM0MjY6XFx0XFx0bnVtX3Rzb193aW5fc3ViID0gQk5YMlhfTlVNX1ZYTEFOX1RTT19XSU5fU1VCX0JEUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0zNDI3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg9OTIxPXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X2Z1bmNfc3RhcnQoc3RydWN0IGJueDJ4ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTk2Mi1cXHRcXHRzdGFydF9wYXJhbXMtXFx1MDAzZW5ldHdvcmtfY29zX21vZGUgPSBGV19XUlI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg6OTYzOlxcdGlmIChicC1cXHUwMDNldWRwX3R1bm5lbF9wb3J0c1tCTlgyWF9VRFBfUE9SVF9WWExBTl0pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaDo5NjQ6XFx0XFx0cG9ydCA9IGJwLVxcdTAwM2V1ZHBfdHVubmVsX3BvcnRzW0JOWDJYX1VEUF9QT1JUX1ZYTEFOXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC05NjUtXFx0XFx0c3RhcnRfcGFyYW1zLVxcdTAwM2V2eGxhbl9kc3RfcG9ydCA9IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD0zODg1PXN0cnVjdCBldGhfY2xhc3NpZnlfdmxhbl9jbWQge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtMzg5My0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oOjM4OTQ6ICogQ29tbWFuZCBmb3IgYWRkaW5nL3JlbW92aW5nIGEgVlhMQU4gY2xhc3NpZmljYXRpb24gcnVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTM4OTUtICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD00MjM4PXN0cnVjdCBldGhfcnNzX3VwZGF0ZV9yYW1yb2RfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00MjQ3LSNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNF9VRFBfQ0FQQUJJTElUWV9TSElGVCAyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6NDI0ODojZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWSAoMHgxXFx1MDAzY1xcdTAwM2MzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oOjQyNDk6I2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY0X1ZYTEFOX0NBUEFCSUxJVFlfU0hJRlQgM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTAtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X0NBUEFCSUxJVFkgKDB4MVxcdTAwM2NcXHUwMDNjNClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTUtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X1VEUF9DQVBBQklMSVRZX1NISUZUIDZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0MjU2OiNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9WWExBTl9DQVBBQklMSVRZICgweDFcXHUwMDNjXFx1MDAzYzcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6NDI1NzojZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjZfVlhMQU5fQ0FQQUJJTElUWV9TSElGVCA3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtNDI1OC0jZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX1RVTk5fSU5ORVJfSERSU19DQVBBQklMSVRZICgweDFcXHUwMDNjXFx1MDAzYzgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD00NDQ4PWVudW0gZXRoX3R1bm5fdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtNDQ0OS1cXHRUVU5OX1RZUEVfTk9ORSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0NDUwOlxcdFRVTk5fVFlQRV9WWExBTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00NDUxLVxcdFRVTk5fVFlQRV9MMl9HUkUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM9MTAxNjU9c3RhdGljIGludCBibngyeF91ZHBfcG9ydF91cGRhdGUoc3RydWN0IGJueDJ4ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDE4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAxOTA6XFx0aWYgKGJwLVxcdTAwM2V1ZHBfdHVubmVsX3BvcnRzW0JOWDJYX1VEUF9QT1JUX1ZYTEFOXSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMDE5MTpcXHRcXHR2eGxhbl9wb3J0ID0gYnAtXFx1MDAzZXVkcF90dW5uZWxfcG9ydHNbQk5YMlhfVURQX1BPUlRfVlhMQU5dO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDE5Mi1cXHRcXHRzd2l0Y2hfdXBkYXRlX3BhcmFtcy1cXHUwMDNldnhsYW5fZHN0X3BvcnQgPSB2eGxhbl9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyNS1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjI2OlxcdFxcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4sICB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyNy1cXHRcXHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9NDQ4Mz1zdGF0aWMgaW50IGJueDJ4X3NldHVwX3JzcyhzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00NTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzMTpcXHRpZiAodGVzdF9iaXQoQk5YMlhfUlNTX0lQVjRfVlhMQU4sIFxcdTAwMjZwLVxcdTAwM2Vyc3NfZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzMjpcXHRcXHRjYXBzIHw9IEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQ1MzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTM0OlxcdGlmICh0ZXN0X2JpdChCTlgyWF9SU1NfSVBWNl9WWExBTiwgXFx1MDAyNnAtXFx1MDAzZXJzc19mbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTM1OlxcdFxcdGNhcHMgfD0gRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9WWExBTl9DQVBBQklMSVRZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9NjE5OT1zdGF0aWMgaW5saW5lIGludCBibngyeF9mdW5jX3NlbmRfc3dpdGNoX3VwZGF0ZShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy02MjQ5LVxcdFxcdFxcdHJkYXRhLVxcdTAwM2Vpbm5lcl9jbHNzX2wyZ3JlID0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjYyNTA6XFx0XFx0aWYgKHRlc3RfYml0KEJOWDJYX0ZfVVBEQVRFX1RVTk5FTF9JTk5FUl9DTFNTX1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNjI1MS1cXHRcXHRcXHQgICAgIFxcdTAwMjZzd2l0Y2hfdXBkYXRlX3BhcmFtcy1cXHUwMDNlY2hhbmdlcykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTcxNT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNzI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NzI5OlxcdEJOWDJYX1JTU19JUFY0X1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NzMwOlxcdEJOWDJYX1JTU19JUFY2X1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNzMxLVxcdEJOWDJYX1JTU19UVU5OX0lOTkVSX0hEUlMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTExMTc9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTExMjUtXFx0Qk5YMlhfRl9VUERBVEVfVFVOTkVMX0lOTkVSX0NMU1NfTDJHUkUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxMTI2OlxcdEJOWDJYX0ZfVVBEQVRFX1RVTk5FTF9JTk5FUl9DTFNTX1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtMTEyNy1cXHRCTlgyWF9GX1VQREFURV9UVU5ORUxfSU5ORVJfQ0xTU19MMkdFTkVWRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9MTE3OT1zdHJ1Y3QgYm54MnhfZnVuY19zdGFydF9wYXJhbXMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6MTE5MzpcXHQvKiBVRFAgZGVzdCBwb3J0IGZvciBWWExBTiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtMTE5NC1cXHR1MTYgdnhsYW5fZHN0X3BvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz01OTA2PXN0YXRpYyBpbnQgYm54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9mcmVlKHN0cnVjdCBibnh0ICpicCwgdTggdHVubmVsX3R5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjU5MTE6XFx0aWYgKHR1bm5lbF90eXBlID09IFRVTk5FTF9EU1RfUE9SVF9GUkVFX1JFUV9UVU5ORUxfVFlQRV9WWExBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5MTItXFx0ICAgIGJwLVxcdTAwM2V2eGxhbl9md19kc3RfcG9ydF9pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTI0LVxcdHN3aXRjaCAodHVubmVsX3R5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTI1OlxcdGNhc2UgVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5MjYtXFx0XFx0cmVxLVxcdTAwM2V0dW5uZWxfZHN0X3BvcnRfaWQgPSBjcHVfdG9fbGUxNihicC1cXHUwMDNldnhsYW5fZndfZHN0X3BvcnRfaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTkzNC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTM1OlxcdGNhc2UgVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTM2LVxcdFxcdHJlcS1cXHUwMDNldHVubmVsX2RzdF9wb3J0X2lkID0gY3B1X3RvX2xlMTYoYnAtXFx1MDAzZXZ4bGFuX2dwZV9md19kc3RfcG9ydF9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz01OTUzPXN0YXRpYyBpbnQgYm54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9hbGxvYyhzdHJ1Y3QgYm54dCAqYnAsIF9fYmUxNiBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk3NS1cXHRzd2l0Y2ggKHR1bm5lbF90eXBlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NTk3NjpcXHRjYXNlIFRVTk5FTF9EU1RfUE9SVF9BTExPQ19SRVFfVFVOTkVMX1RZUEVfVlhMQU46XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk3Ny1cXHRcXHRicC1cXHUwMDNldnhsYW5fcG9ydCA9IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTg0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjU5ODU6XFx0Y2FzZSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTg2LVxcdFxcdGJwLVxcdTAwM2V2eGxhbl9ncGVfcG9ydCA9IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz02NTI5PXN0YXRpYyB2b2lkIGJueHRfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm54dCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy02NTM3LVxcdGlmIChicC1cXHUwMDNldnhsYW5fcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo2NTM4OlxcdFxcdHR1bmxfdHBhX2JtYXAgfD0gVk5JQ19UUEFfQ0ZHX1JFUV9UTkxfVFBBX0VOX0JJVE1BUF9WWExBTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy02NTM5LVxcdGlmIChicC1cXHUwMDNldnhsYW5fZ3BlX3BvcnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NjU0MDpcXHRcXHR0dW5sX3RwYV9ibWFwIHw9IFZOSUNfVFBBX0NGR19SRVFfVE5MX1RQQV9FTl9CSVRNQVBfVlhMQU5fR1BFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTY1NDEtXFx0aWYgKGJwLVxcdTAwM2VuZ2VfcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTEwNzQ0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9mcmVlX3R1bm5lbF9wb3J0cyhzdHJ1Y3QgYm54dCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMDc0Ni1cXHRibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTA3NDc6XFx0XFx0VFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMDc0OC1cXHRibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNjA2MD1zdGF0aWMgaW50IGJueHRfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA2NjpcXHRpZiAodGktXFx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDY3OlxcdFxcdGNtZCA9IFRVTk5FTF9EU1RfUE9SVF9BTExPQ19SRVFfVFVOTkVMX1RZUEVfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwNjgtXFx0ZWxzZSBpZiAodGktXFx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDcwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA3MTpcXHRcXHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDc2PXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwODI6XFx0aWYgKHRpLVxcdTAwM2V0eXBlID09IFVEUF9UVU5ORUxfVFlQRV9WWExBTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4MzpcXHRcXHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfRlJFRV9SRVFfVFVOTkVMX1RZUEVfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODQtXFx0ZWxzZSBpZiAodGktXFx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDg2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4NzpcXHRcXHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfRlJFRV9SRVFfVFVOTkVMX1RZUEVfVlhMQU5fR1BFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTYwOTI9c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueHRfdWRwX3R1bm5lbHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA5Ni1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwOTc6XFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwOTgtXFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNC1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYxMDU6XFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYxMDYtXFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYxMDc6XFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTl9HUEUsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYxMDgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jPTc5Mz1zdGF0aWMgaW50IGh3cm1fY2ZhX2RlY2FwX2ZpbHRlcl9hbGxvYyhzdHJ1Y3QgYm54dCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy04MTEtXFx0XFx0ICAgQ0ZBX0RFQ0FQX0ZJTFRFUl9BTExPQ19SRVFfRU5BQkxFU19JUF9QUk9UT0NPTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYzo4MTI6XFx0cmVxLVxcdTAwM2V0dW5uZWxfdHlwZSA9IENGQV9ERUNBUF9GSUxURVJfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTgxMy1cXHRyZXEtXFx1MDAzZWlwX3Byb3RvY29sID0gQ0ZBX0RFQ0FQX0ZJTFRFUl9BTExPQ19SRVFfSVBfUFJPVE9DT0xfVURQO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM9ODgzPXN0YXRpYyBpbnQgaHdybV9jZmFfZW5jYXBfcmVjb3JkX2FsbG9jKHN0cnVjdCBibnh0ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTg5OC1cXHRlbmNhcCA9IChzdHJ1Y3QgaHdybV9jZmFfZW5jYXBfZGF0YV92eGxhbiAqKVxcdTAwMjZyZXEtXFx1MDAzZWVuY2FwX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM6ODk5OlxcdHJlcS1cXHUwMDNlZW5jYXBfdHlwZSA9IENGQV9FTkNBUF9SRUNPUkRfQUxMT0NfUkVRX0VOQ0FQX1RZUEVfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmMtOTAwLVxcdGV0aGVyX2FkZHJfY29weShlbmNhcC1cXHUwMDNlZHN0X21hY19hZGRyLCBsMl9pbmZvLVxcdTAwM2VkbWFjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTkwOC1cXHRlbmNhcF9pcHY0ID0gKHN0cnVjdCBod3JtX3Z4bGFuX2lwdjRfaGRyICopZW5jYXAtXFx1MDAzZWwzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jOjkwOTpcXHRlbmNhcF9pcHY0LVxcdTAwM2V2ZXJfaGxlbiA9IDQgXFx1MDAzY1xcdTAwM2MgVlhMQU5fSVBWNF9IRFJfVkVSX0hMRU5fVkVSU0lPTl9TRlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM6OTEwOlxcdGVuY2FwX2lwdjQtXFx1MDAzZXZlcl9obGVuIHw9IDUgXFx1MDAzY1xcdTAwM2MgVlhMQU5fSVBWNF9IRFJfVkVSX0hMRU5fSEVBREVSX0xFTkdUSF9TRlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmMtOTExLVxcdGVuY2FwX2lwdjQtXFx1MDAzZXR0bCA9IGVuY2FwX2tleS1cXHUwMDNldHRsO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg9NzE9c3RydWN0IGJueHRfdGNfYWN0aW9ucyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuaC03My0jZGVmaW5lIEJOWFRfVENfQUNUSU9OX0ZMQUdfRldEXFx0XFx0XFx0QklUKDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg6NzQ6I2RlZmluZSBCTlhUX1RDX0FDVElPTl9GTEFHX0ZXRF9WWExBTlxcdFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5oLTc1LSNkZWZpbmUgQk5YVF9UQ19BQ1RJT05fRkxBR19QVVNIX1ZMQU5cXHRcXHRCSVQoMylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMzMtLyogQ2hhbmdlIHRoZSB2YWx1ZSBvZiBTTEkgUGFja2V0IElucHV0IEphYmJlciBSZWdpc3RlciB0byBhbGxvd1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MzQ6ICogVlhMQU4gVFNPIHBhY2tldHMgd2hpY2ggY2FuIGJlIDY0NDI0IGJ5dGVzLCBleGNlZWRpbmcgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0zNS0gKiBNQVhfR1NPX1NJWkUgd2Ugc3VwcGxpZWQgdG8gdGhlIGtlcm5lbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0zOTU9c3RhdGljIGludCBjbjIzeHhfc2V0dXBfcGZfZGV2aWNlX3JlZ3Moc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtNDEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6NDEzOlxcdC8qIFNldCBTTElfUEtUX0lOX0pBQkJFUiB0byBoYW5kbGUgbGFyZ2UgVlhMQU4gcGFja2V0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtNDE0LVxcdG9jdGVvbl93cml0ZV9jc3I2NChvY3QsIENOMjNYWF9TTElfUEtUX0lOX0pBQkJFUiwgQ04yM1hYX0lOUFVUX0pBQkJFUik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYz0yNTY9dm9pZCBsaXF1aWRpb19saW5rX2N0cmxfY21kX2NvbXBsZXRpb24odm9pZCAqbmN0cmxfcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjM3MzpcXHRcXHQvKiBDYXNlIHRvIGhhbmRsZSBcXFwiT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJR1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzQtXFx0XFx0ICogQ29tbWFuZCBwYXNzZWQgYnkgTklDIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM3NS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzozNzY6XFx0Y2FzZSBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjM3NzpcXHRcXHRpZiAobmN0cmwtXFx1MDAzZW5jbWQucy5tb3JlID09IE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzgtXFx0XFx0XFx0bmV0aWZfaW5mbyhsaW8sIHByb2JlLCBsaW8tXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM4MS1cXHRcXHR9IGVsc2UgaWYgKG5jdHJsLVxcdTAwM2VuY21kLnMubW9yZSA9PVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjM4MjpcXHRcXHRcXHQgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMzgzLVxcdFxcdFxcdG5ldGlmX2luZm8obGlvLCBwcm9iZSwgbGlvLVxcdTAwM2VuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjA5PXN0YXRpYyBpbnQgbGlxdWlkaW9fc2V0X3J4Y3N1bV9jb21tYW5kKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBjb21tYW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjYzOS0gKiBAbmV0ZGV2OiAgICAgICAgICAgICAgICBwb2ludGVyIHRvIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY0MDogKiBAY29tbWFuZDogICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY0MS0gKiBAdnhsYW5fcG9ydDogICAgICAgICAgICBWeExBTiBwb3J0IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjQyOiAqIEB2eGxhbl9jbWRfYml0OiAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY0MzogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjQ0LSAqIFJldHVybjogICAgICAgICAgICAgICAgICAgICBTVUNDRVNTIG9yIEZBSUxVUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI2NzU9c3RhdGljIGludCBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjc5LVxcdHJldHVybiBsaXF1aWRpb192eGxhbl9wb3J0X2NvbW1hbmQobmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2ODA6XFx0XFx0XFx0XFx0XFx0ICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjgxLVxcdFxcdFxcdFxcdFxcdCAgIGh0b25zKHRpLVxcdTAwM2Vwb3J0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjgyOlxcdFxcdFxcdFxcdFxcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2ODMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY4NT1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5MC1cXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjkxOlxcdFxcdFxcdFxcdFxcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Mi1cXHRcXHRcXHRcXHRcXHQgICBodG9ucyh0aS1cXHUwMDNlcG9ydCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY5MzpcXHRcXHRcXHRcXHRcXHQgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjk0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI2OTY9c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5OS1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjcwMDpcXHRcXHR7IC5uX2VudHJpZXMgPSAxMDI0LCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI3MDEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE2OTg9c3RhdGljIGludCBsaXF1aWRpb19zZXRfcnhjc3VtX2NvbW1hbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IGNvbW1hbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzI2LSAqIEBwYXJhbSBuZXRkZXYgICAgICAgICAgICAgICAgcG9pbnRlciB0byBuZXR3b3JrIGRldmljZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Mjc6ICogQHBhcmFtIGNvbW1hbmQgICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTcyOC0gKiBAcGFyYW0gdnhsYW5fcG9ydCAgICAgICAgICAgIFZ4TEFOIHBvcnQgdG8gYmUgYWRkZWQgb3IgZGVsZXRlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Mjk6ICogQHBhcmFtIHZ4bGFuX2NtZF9iaXQgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQURELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3MzA6ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTczMS0gKiBAcmV0dXJucyAgICAgICAgICAgICAgICAgICAgIFNVQ0NFU1Mgb3IgRkFJTFVSRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc2Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NjYtXFx0cmV0dXJuIGxpcXVpZGlvX3Z4bGFuX3BvcnRfY29tbWFuZChuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTc2NzpcXHRcXHRcXHRcXHRcXHQgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NjgtXFx0XFx0XFx0XFx0XFx0ICAgaHRvbnModGktXFx1MDAzZXBvcnQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Njk6XFx0XFx0XFx0XFx0XFx0ICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0FERCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc3MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xNzcyPXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzc3LVxcdHJldHVybiBsaXF1aWRpb192eGxhbl9wb3J0X2NvbW1hbmQobmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Nzg6XFx0XFx0XFx0XFx0XFx0ICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzc5LVxcdFxcdFxcdFxcdFxcdCAgIGh0b25zKHRpLVxcdTAwM2Vwb3J0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgwOlxcdFxcdFxcdFxcdFxcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg2LVxcdC50YWJsZXNcXHRcXHQ9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzg3OlxcdFxcdHsgLm5fZW50cmllcyA9IDEwMjQsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4sIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oPTE3Mz1zdGF0aWMgaW5saW5lIHZvaWQgYWRkX3NnX3NpemUoc3RydWN0IG9jdGVvbl9zZ19lbnRyeSAqc2dfZW50cnksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjMyLSNkZWZpbmUgICBPQ1RORVRfQ01EX0RFTF9WTEFOX0ZJTFRFUiAgMHgxOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzM6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcgMHgxOVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyNDY6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQgICAgMHgwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI0NzojZGVmaW5lICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0RFTCAgICAweDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ4LSNkZWZpbmUgICBPQ1RORVRfQ01EX1JYQ1NVTV9FTkFCTEUgICAgIDB4MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYz04Mjc9c3RhdGljIHZvaWQgbmljX2VuYWJsZV90dW5uZWxfcGFyc2luZyhzdHJ1Y3QgbmljcGYgKm5pYywgaW50IHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYy04MzktXFx0XFx0ICAgICAgKCg3VUxMIFxcdTAwM2NcXHUwMDNjIDYxKSB8IHByb3RfZGVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYzo4NDA6XFx0bmljX3JlZ193cml0ZShuaWMsIE5JQ19QRl9SWF9WWExBTl9ERUZfMF8xLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmM6ODQxOlxcdFxcdCAgICAgICgoMVVMTCBcXHUwMDNjXFx1MDAzYyA2MykgfCBVRFBfVlhMQU5fUE9SVF9OVU0pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jOjg0MjpcXHRuaWNfcmVnX3dyaXRlKG5pYywgTklDX1BGX1JYX1ZYTEFOX1BST1RfREVGLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMtODQzLVxcdFxcdCAgICAgICgoMHhmVUxMIFxcdTAwM2NcXHUwMDNjIDYwKSB8IHZ4bGFuX3Byb3RfZGVmKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfcmVnLmgtNDItI2RlZmluZSAgIE5JQ19QRl9SWF9OVkdSRV9QUk9UX0RFRlxcdFxcdCgweDA1OTgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQzOiNkZWZpbmUgICBOSUNfUEZfUlhfVlhMQU5fREVGXzBfMVxcdFxcdCgweDA1QTApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQ0OiNkZWZpbmUgICAgVURQX1ZYTEFOX1BPUlRfTlVNXFx0XFx0XFx0XFx0MHgxMkI1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQ1OiNkZWZpbmUgICBOSUNfUEZfUlhfVlhMQU5fUFJPVF9ERUZcXHRcXHQoMHgwNUIwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19yZWcuaC00Ni0jZGVmaW5lICAgIElQVjZfUFJPVF9ERUZcXHRcXHRcXHRcXHQweDJVTExcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3Mjc9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzczNi1cXHRzd2l0Y2ggKHRpLVxcdTAwM2V0eXBlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzczNzpcXHRjYXNlIFVEUF9UVU5ORUxfVFlQRV9WWExBTjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzM4LVxcdFxcdGFkYXB0ZXItXFx1MDAzZXZ4bGFuX3BvcnQgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3Mzk6XFx0XFx0dDRfd3JpdGVfcmVnKGFkYXB0ZXIsIE1QU19SWF9WWExBTl9UWVBFX0EsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3NDAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz0zNzcwPXN0YXRpYyBpbnQgY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzc5LVxcdHN3aXRjaCAodGktXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozNzgwOlxcdGNhc2UgVURQX1RVTk5FTF9UWVBFX1ZYTEFOOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3ODEtXFx0XFx0YWRhcHRlci1cXHUwMDNldnhsYW5fcG9ydCA9IHRpLVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3ODI6XFx0XFx0dDRfd3JpdGVfcmVnKGFkYXB0ZXIsIE1QU19SWF9WWExBTl9UWVBFX0EsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6Mzc4MzpcXHRcXHRcXHQgICAgIFZYTEFOX1YoYmUxNl90b19jcHUodGktXFx1MDAzZXBvcnQpKSB8IFZYTEFOX0VOX0YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3ODQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz0zODE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgyMS1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgyMjpcXHRcXHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCAgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODIzLVxcdFxcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfR0VORVZFLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYz0xMjY3PWVudW0gY3BsX3R4X3RubF9sc29fdHlwZSBjeGdiX2VuY2FwX29mZmxvYWRfc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEyOTEtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXZ4bGFuX3BvcnQgPT0gdWRwX2hkcihza2IpLVxcdTAwM2VkZXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvc2dlLmM6MTI5MjpcXHRcXHRcXHR0bmxfdHlwZSA9IFRYX1ROTF9UWVBFX1ZYTEFOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvc2dlLmMtMTI5My1cXHRcXHRlbHNlIGlmIChhZGFwdGVyLVxcdTAwM2VnZW5ldmVfcG9ydCA9PSB1ZHBfaGRyKHNrYiktXFx1MDAzZWRlc3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jPTEzMDM9c3RhdGljIGlubGluZSB2b2lkIHQ2X2ZpbGxfdG5sX2xzbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYy0xMzMyLVxcdHN3aXRjaCAodG5sX3R5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jOjEzMzM6XFx0Y2FzZSBUWF9UTkxfVFlQRV9WWExBTjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEzMzQtXFx0Y2FzZSBUWF9UTkxfVFlQRV9HRU5FVkU6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X21zZy5oPTE1Nzg9ZW51bSBjcGxfdHhfdG5sX2xzb190eXBlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfbXNnLmgtMTU4MC1cXHRUWF9UTkxfVFlQRV9OVkdSRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X21zZy5oOjE1ODE6XFx0VFhfVE5MX1RZUEVfVlhMQU4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9tc2cuaC0xNTgyLVxcdFRYX1ROTF9UWVBFX0dFTkVWRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oLTI1NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3MjojZGVmaW5lIE1QU19SWF9WWExBTl9UWVBFX0EgMHgxMTIzNFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oLTI1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3NDojZGVmaW5lIFZYTEFOX0VOX1MgICAgMTZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc1OiNkZWZpbmUgVlhMQU5fRU5fVih4KSAoKHgpIFxcdTAwM2NcXHUwMDNjIFZYTEFOX0VOX1MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3NjojZGVmaW5lIFZYTEFOX0VOX0YgICAgVlhMQU5fRU5fVigxVSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaC0yNTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oOjI1Nzg6I2RlZmluZSBWWExBTl9TICAgIDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc5OiNkZWZpbmUgVlhMQU5fTSAgICAweGZmZmZVXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU4MDojZGVmaW5lIFZYTEFOX1YoeCkgKCh4KSBcXHUwMDNjXFx1MDAzYyBWWExBTl9TKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0OC41NjY3MjA4OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIwNDY4MDczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBWWExBTiBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMgYXJlIHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGFuZCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZXMuIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIHVuZGVyc3RhbmRpbmcgaG93IFZYTEFOIHN1cHBvcnQgaXMgY29tcGlsZWQsIHdoYXQgYnVpbGQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hhdCBLY29uZmlnIHN5bWJvbHMgY29udHJvbCB0aGUgZmVhdHVyZSdzIGluY2x1c2lvbi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFZYTEFOIG1vZHVsZSB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2Vzcy4gSSB3YW50IHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgZXZlcnkgYXNwZWN0IG9mIGl0cyBjb25zdHJ1Y3Rpb24gYW5kIHBvc3NpYmxlIGRlcGVuZGVuY2llcy4gT25jZSBJIGhhdmUgdGhlIGxheW91dCBvZiB0aGUgS2NvbmZpZyBvcHRpb25zLCBJIGNhbiBmdXJ0aGVyIGRlYnVnIGJ1aWxkIGlzc3VlcyBpZiBhbnkgYXJpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDg2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6NTAuNzcxNDA1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC92eGxhbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCNcXG4gICAyOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSB2eGxhbiBkcml2ZXJcXG4gICAzOlxcdCNcXG4gICA0OlxcdFxcbiAgIDU6XFx0b2JqLSQoQ09ORklHX1ZYTEFOKSArPSB2eGxhbi5vXFxuICAgNjpcXHRcXG4gICA3OlxcdHZ4bGFuLW9ianMgOj0gdnhsYW5fY29yZS5vIHZ4bGFuX211bHRpY2FzdC5vIHZ4bGFuX3ZuaWZpbHRlci5vIHZ4bGFuX21kYi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM3OjUwLjc3MTQ1NzY2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODk5NTUyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBCYXNlZCBvbiB0aGUgdGFzayBhdCBoYW5kICh3aGljaCBJJ20gbm90IHByaXZ5IHRvLCBidXQgSSdsbCBhc3N1bWUgaW52b2x2ZXMgYSBuZXR3b3JrIGRyaXZlciwgZ2l2ZW4gdGhlIGNvbnRleHQpLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbmF2aWdhdGUgdG8gdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byB6b29tIGluIGFyb3VuZCBsaW5lIDIzMC4gVGhhdCBsb2NhdGlvbiBvZnRlbiBob2xkcyB0aGUga2V5IHRvIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBJdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbmZpZ3VyZWQsIHdoYXQgdGhlIGV4aXN0aW5nIG9wdGlvbnMgYXJlLCBhbmQgaWYgc29tZXRoaW5nIHJlbGV2YW50IHRvIG15IHRhc2sgaXMgZGVmaW5lZCB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjE4MDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM3OjUyLjY3MTAxMjU3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyNTpcXHRcXHQgIGlwdnRhcCcsIGFuZCB0aGVuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIHRhcCB1c2VyIHNwYWNlIGludGVyZmFjZS5cXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDIyODpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGlwdnRhcC5cXG4gMjI5OlxcdFxcbiAyMzA6XFx0Y29uZmlnIFZYTEFOXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbiAyMzI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjM0OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjM1OlxcdFxcdGhlbHBcXG4gMjM2OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDIzNzpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuIDIzODpcXHRcXHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxcbiAyMzk6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XFxuIDI0MDpcXHRcXHQgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtbWFoYWxpbmdhbS1kdXR0LWRjb3BzLXZ4bGFuLTAyXFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cXG4gMjQ0OlxcdFxcbiAyNDU6XFx0Y29uZmlnIEdFTkVWRVxcbiAyNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXFxcIlxcbiAyNDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDI0ODpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjQ5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjUwOlxcdFxcdGhlbHBcXG4gMjUxOlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBnZW5ldmUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxcbiAyNTI6XFx0XFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gR0VORVZFIGlzIG9mdGVuIHVzZWRcXG4gMjUzOlxcdFxcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXFxuIDI1NDpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6NTIuNjcxMTEzODU5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNjQ4Mzg3Nzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHZ4bGFuX25hX2NyZWF0ZWAgRml4KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHZ4bGFuX25hX2NyZWF0ZWAgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjb2RlIGNoYW5nZS4gRmlyc3QsIGxldCdzIGlzb2xhdGUgdGhlIGJ1ZyB0aGF0IHdhcyBhZGRyZXNzZWQuIEkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIGNvZGU6XG5cbmBgYGNcbi1cdHNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldikpO1xuK1x0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcbmBgYFxuXG51c2VkIGBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldilgIGZvciB0aGUgYHNrYl9yZXNlcnZlYCBjYWxsLCB3aGlsZSBjYWxjdWxhdGluZyBgbGVuYCB1c2VkIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYC4gVGhlIGZpeCBoYXMgcmVwbGFjZWQgaXQgd2l0aCBgaGVhZHJvb21gIHdoaWNoIGlzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYC4gSSBzZWUgdGhhdCBgZGV2YCBpcyBhc3NpZ25lZCB0byBgcmVxdWVzdC1cdTAwM2VkZXZgIHNvIHRoZXJlIG1heSBub3QgaGF2ZSBiZWVuIGEgZnVuY3Rpb25hbCBidWcsIGJ1dCB0aGlzIG1ha2VzIHRoZSBjb2RlIGNvbnNpc3RlbnQuIFRoZSBvcmlnaW5hbCBjYWxjdWxhdGlvbiBvZiB0aGUgbGVuZ3RoIHdhcyBjb3JyZWN0IGJ1dCB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZm9yIGEgbWlzbWF0Y2gsIG9yIGF0IGxlYXN0IGEgcmVkdW5kYW50IGNhbGN1bGF0aW9uIGlmIGByZXF1ZXN0LVx1MDAzZWRldmAgaGFkIGNoYW5nZWQuIFVzaW5nIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBtYWtlcyB0aGUgaW50ZW50aW9uIGNsZWFyIGFuZCB0aGUgY29kZSBjbGVhbmVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGlzIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIGlzIGd1YXJkZWQgYnkgYCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KWAuIFRoYXQncyBpbXBvcnRhbnQ7IGl0J3Mgc3BlY2lmaWMgdG8gSVB2Ni4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgZWxzZXdoZXJlIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLCBwYXJ0aWN1bGFybHkgYXJvdW5kIG5laWdoYm9yIGRpc2NvdmVyeSBvciB0cmFuc21pc3Npb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYnJvYWRlciBjb2RlYmFzZSBvZiBgdnhsYW5fY29yZS5jYCBhbmQgYWxzbyBsb29rIGF0IGVudHJ5IHBvaW50cyB0byBmdW5jdGlvbnMgbGlrZSBgbmVpZ2hfcmVkdWNlYCBvciBgdnhsYW5feG1pdGAgdG8gZ2V0IGEgZnVsbCB1bmRlcnN0YW5kaW5nLlxuXG5JIHNob3VsZCBhbHNvIGV4YW1pbmUgdGhlIHJlc3Qgb2YgdGhlIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBpc3N1ZXMgYW5kIHRoZW4gY29uc2lkZXIgd2hhdCdzIGhhcHBlbmluZyBpbnNpZGUgYG5laWdoX3JlZHVjZWAgZm9yIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDc1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDQuMzE5NTA0MTI0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAxMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjAxMDpcXHRcXHRza2JfcmVzZXRfdHJhbnNwb3J0X2hlYWRlcihyZXBseSk7XFxuMjAxMTpcXHRcXG4yMDEyOlxcdFxcdC8qIE5laWdoYm9yIEFkdmVydGlzZW1lbnQgKi9cXG4yMDEzOlxcdFxcdG5hID0gc2tiX3B1dF96ZXJvKHJlcGx5LCBzaXplb2YoKm5hKSArIG5hX29sZW4pO1xcbjIwMTQ6XFx0XFx0bmEtXFx1MDAzZWljbXBoLmljbXA2X3R5cGUgPSBORElTQ19ORUlHSEJPVVJfQURWRVJUSVNFTUVOVDtcXG4yMDE1OlxcdFxcdG5hLVxcdTAwM2VpY21waC5pY21wNl9yb3V0ZXIgPSBpc3JvdXRlcjtcXG4yMDE2OlxcdFxcdG5hLVxcdTAwM2VpY21waC5pY21wNl9vdmVycmlkZSA9IDE7XFxuMjAxNzpcXHRcXHRuYS1cXHUwMDNlaWNtcGguaWNtcDZfc29saWNpdGVkID0gMTtcXG4yMDE4OlxcdFxcdG5hLVxcdTAwM2V0YXJnZXQgPSBucy1cXHUwMDNldGFyZ2V0O1xcbjIwMTk6XFx0XFx0ZXRoZXJfYWRkcl9jb3B5KFxcdTAwMjZuYS1cXHUwMDNlb3B0WzJdLCBoYSk7XFxuMjAyMDpcXHRcXHRuYS1cXHUwMDNlb3B0WzBdID0gTkRfT1BUX1RBUkdFVF9MTF9BRERSO1xcbjIwMjE6XFx0XFx0bmEtXFx1MDAzZW9wdFsxXSA9IG5hX29sZW4gXFx1MDAzZVxcdTAwM2UgMztcXG4yMDIyOlxcdFxcbjIwMjM6XFx0XFx0bmEtXFx1MDAzZWljbXBoLmljbXA2X2Nrc3VtID0gY3N1bV9pcHY2X21hZ2ljKFxcdTAwMjZwaXA2LVxcdTAwM2VzYWRkcixcXG4yMDI0OlxcdFxcdFxcdFxcdTAwMjZwaXA2LVxcdTAwM2VkYWRkciwgc2l6ZW9mKCpuYSkrbmFfb2xlbiwgSVBQUk9UT19JQ01QVjYsXFxuMjAyNTpcXHRcXHRcXHRjc3VtX3BhcnRpYWwobmEsIHNpemVvZigqbmEpK25hX29sZW4sIDApKTtcXG4yMDI2OlxcdFxcbjIwMjc6XFx0XFx0cGlwNi1cXHUwMDNlcGF5bG9hZF9sZW4gPSBodG9ucyhzaXplb2YoKm5hKStuYV9vbGVuKTtcXG4yMDI4OlxcdFxcbjIwMjk6XFx0XFx0c2tiX3B1c2gocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbjIwMzA6XFx0XFxuMjAzMTpcXHRcXHRyZXBseS1cXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XFxuMjAzMjpcXHRcXG4yMDMzOlxcdFxcdHJldHVybiByZXBseTtcXG4yMDM0OlxcdH1cXG4yMDM1OlxcdFxcbjIwMzY6XFx0c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG4yMDM3OlxcdHtcXG4yMDM4OlxcdFxcdHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4yMDM5OlxcdFxcdGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHI7XFxuMjA0MDpcXHRcXHRjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXBoZHI7XFxuMjA0MTpcXHRcXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xcbjIwNDI6XFx0XFx0c3RydWN0IG5kX21zZyAqbXNnO1xcbjIwNDM6XFx0XFxuMjA0NDpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuMjA0NTpcXHRcXHRpZiAodW5saWtlbHkoIWlwdjZfbW9kX2VuYWJsZWQoKSkpXFxuMjA0NjpcXHRcXHRcXHRnb3RvIG91dDtcXG4yMDQ3OlxcdFxcbjIwNDg6XFx0XFx0aXBoZHIgPSBpcHY2X2hkcihza2IpO1xcbjIwNDk6XFx0XFx0ZGFkZHIgPSBcXHUwMDI2aXBoZHItXFx1MDAzZWRhZGRyO1xcbjIwNTA6XFx0XFx0bXNnID0gKHN0cnVjdCBuZF9tc2cgKikoaXBoZHIgKyAxKTtcXG4yMDUxOlxcdFxcbjIwNTI6XFx0XFx0aWYgKGlwdjZfYWRkcl9sb29wYmFjayhkYWRkcikgfHxcXG4yMDUzOlxcdFxcdCAgICBpcHY2X2FkZHJfaXNfbXVsdGljYXN0KFxcdTAwMjZtc2ctXFx1MDAzZXRhcmdldCkpXFxuMjA1NDpcXHRcXHRcXHRnb3RvIG91dDtcXG4yMDU1OlxcdFxcbjIwNTY6XFx0XFx0biA9IG5laWdoX2xvb2t1cChcXHUwMDI2bmRfdGJsLCBcXHUwMDI2bXNnLVxcdTAwM2V0YXJnZXQsIGRldik7XFxuMjA1NzpcXHRcXG4yMDU4OlxcdFxcdGlmIChuKSB7XFxuMjA1OTpcXHRcXHRcXHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XFxuMjA2MDpcXHRcXHRcXHR1OCBoYVtFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xcbjIwNjE6XFx0XFx0XFx0c3RydWN0IHZ4bGFuX2ZkYiAqZjtcXG4yMDYyOlxcdFxcdFxcdHN0cnVjdCBza19idWZmICpyZXBseTtcXG4yMDYzOlxcdFxcbjIwNjQ6XFx0XFx0XFx0aWYgKCEoUkVBRF9PTkNFKG4tXFx1MDAzZW51ZF9zdGF0ZSkgXFx1MDAyNiBOVURfQ09OTkVDVEVEKSkge1xcbjIwNjU6XFx0XFx0XFx0XFx0bmVpZ2hfcmVsZWFzZShuKTtcXG4yMDY2OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjIwNjc6XFx0XFx0XFx0fVxcbjIwNjg6XFx0XFxuMjA2OTpcXHRcXHRcXHRuZWlnaF9oYV9zbmFwc2hvdChoYSwgbiwgbi1cXHUwMDNlZGV2KTtcXG4yMDcwOlxcdFxcdFxcdGYgPSB2eGxhbl9maW5kX21hY190eCh2eGxhbiwgaGEsIHZuaSk7XFxuMjA3MTpcXHRcXHRcXHRpZiAoZilcXG4yMDcyOlxcdFxcdFxcdFxcdHJkc3QgPSBmaXJzdF9yZW1vdGVfcmN1KGYpO1xcbjIwNzM6XFx0XFx0XFx0aWYgKHJkc3QgXFx1MDAyNlxcdTAwMjYgdnhsYW5fYWRkcl9hbnkoXFx1MDAyNnJkc3QtXFx1MDAzZXJlbW90ZV9pcCkpIHtcXG4yMDc0OlxcdFxcdFxcdFxcdC8qIGJyaWRnZS1sb2NhbCBuZWlnaGJvciAqL1xcbjIwNzU6XFx0XFx0XFx0XFx0bmVpZ2hfcmVsZWFzZShuKTtcXG4yMDc2OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjIwNzc6XFx0XFx0XFx0fVxcbjIwNzg6XFx0XFxuMjA3OTpcXHRcXHRcXHRyZXBseSA9IHZ4bGFuX25hX2NyZWF0ZShza2IsIG4sIGhhLFxcbjIwODA6XFx0XFx0XFx0XFx0XFx0XFx0ISEoZiA/IGYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTlRGX1JPVVRFUiA6IDApKTtcXG4yMDgxOlxcdFxcbjIwODI6XFx0XFx0XFx0bmVpZ2hfcmVsZWFzZShuKTtcXG4yMDgzOlxcdFxcbjIwODQ6XFx0XFx0XFx0aWYgKHJlcGx5ID09IE5VTEwpXFxuMjA4NTpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yMDg2OlxcdFxcbjIwODc6XFx0XFx0XFx0aWYgKG5ldGlmX3J4KHJlcGx5KSA9PSBORVRfUlhfRFJPUCkge1xcbjIwODg6XFx0XFx0XFx0XFx0ZGV2X2RzdGF0c19yeF9kcm9wcGVkKGRldik7XFxuMjA4OTpcXHRcXHRcXHRcXHR2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgTlVMTCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDQuMzE5NzgwMDMzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU0NzMzOTYyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIGB2eGxhbl94bWl0YCBhbmQgYG5laWdoX3JlZHVjZWA6XG5cbioqRGl2aW5nIGludG8gdGhlIFZYTEFOIFRyYW5zbWlzc2lvbiBQYXRoIGFuZCBOZWlnaGJvciBEaXNjb3ZlcnkqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgaW4gb24gdGhlIFZYTEFOIHRyYW5zbWl0IGZ1bmN0aW9uIChgdnhsYW5feG1pdGApIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBwb2ludCB3aGVyZSBgbmVpZ2hfcmVkdWNlYCBnZXRzIGNhbGxlZC4gVGhpcyBtZWFucyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHNlbmRpbmcgVlhMQU4gZW5jYXBzdWxhdGVkIHRyYWZmaWMuIFRoZSBmYWN0IHRoYXQgYG5laWdoX3JlZHVjZWAgaXMgaW52b2x2ZWQgdGVsbHMgbWUgdGhlIHN5c3RlbSBpcyBsaWtlbHkgZGVhbGluZyB3aXRoIGEgbmVpZ2hib3IgZGlzY292ZXJ5IGFuZCByZXNvbHV0aW9uIHNjZW5hcmlvLiBJdCdzIGEga2V5IHBhcnQgb2YgaG93IHRoZSBzeXN0ZW0gZmlndXJlcyBvdXQgdGhlIExheWVyIDIgKE1BQykgYWRkcmVzcyBuZWVkZWQgdG8gcmVhY2ggdGhlIGRlc3RpbmF0aW9uIFZYTEFOIHR1bm5lbCBlbmRwb2ludCAoVlRFUCkuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGBuZWlnaF9yZWR1Y2VgIGlzIGhhcHBlbmluZyBhdCB0aGlzIHBvaW50LiBJcyBpdCBiZWNhdXNlIHRoZSBBUlAvTkQgY2FjaGUgZW50cnkgZm9yIHRoZSBkZXN0aW5hdGlvbiBWVEVQIGlzIHN0YWxlIG9yIG1pc3Npbmc/IE9yIGlzIHRoZSBzeXN0ZW0gYWN0aXZlbHkgcHJvYmluZyB0byBjb25maXJtIGNvbm5lY3Rpdml0eT8gSSdsbCBwcm9iYWJseSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBmcm9tIGB2eGxhbl94bWl0YCB0byBgbmVpZ2hfcmVkdWNlYCB0byBuYWlsIGRvd24gdGhlIHNwZWNpZmljcyBvZiB0aGUgc2l0dWF0aW9uLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgbXVsdGljYXN0IHNldHVwIHdoZXJlIHRoZSBuZWlnaGJvciBjYWNoZSBlbnRyeSBtYXkgYmUgZHluYW1pYz8gXG5cbkkgc3VzcGVjdCB0aGlzIGludm9sdmVzIHNvbWUgZm9ybSBvZiBBUlAvTkQgc29saWNpdGF0aW9uIG9yIGdyYXR1aXRvdXMgQVJQLCBidXQgSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoZSBzeXN0ZW0gZGVjaWRlcyAqd2hlbiogdG8gaW52b2tlIGBuZWlnaF9yZWR1Y2VgIGluIHRoZSBgdnhsYW5feG1pdGAgY29kZSBwYXRoLiBJcyB0aGVyZSBhIHRpbWVyIGludm9sdmVkPyBXaGF0IGFyZSB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIG5laWdoYm9yIGNhY2hlIHRvIGJlIGNvbnNpZGVyZWQgc3RhbGU/IFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgaXMgY3JpdGljYWwuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IFZYTEFOIGFkZHMgYW4gb3V0ZXIgSVAvVURQIGhlYWRlciwgc28gcmVndWxhciBBUlAvTkQgbmVlZHMgdG8gYmUgYWRhcHRlZC5cblxuSSdsbCBjaGVjayB0aGUgYXNzb2NpYXRlZCB2YXJpYWJsZXMgdG8gY29uZmlybS4gSXMgdGhlcmUgYW55IGJ1ZmZlcmluZyBoYXBwZW5pbmcgYmVmb3JlIG5laWdoYm9yIHJlc29sdXRpb24/IERvZXMgdGhpcyBoYXZlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHBhY2tldCBkZWxpdmVyeSBsYXRlbmN5PyBBbnkgcG90ZW50aWFsIGZvciBwYWNrZXQgZHJvcHMgZHVyaW5nIHRoZSBuZWlnaGJvciByZXNvbHV0aW9uIHByb2Nlc3M/IEkgaGF2ZSB0byBsb29rIGZvciBhbnkgb3B0aW1pemF0aW9ucyBvciB3b3JrYXJvdW5kcyBmb3IgdGhpcyBjcml0aWNhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDYxOSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDkuNzkzMTc5MDc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc1MDpcXHRcXHRpbmZvID0gc2tiX3R1bm5lbF9pbmZvKHNrYik7XFxuMjc1MTpcXHRcXG4yNzUyOlxcdFxcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XFxuMjc1MzpcXHRcXG4yNzU0OlxcdFxcdGlmICh2eGxhbi1cXHUwMDNlY2ZnLmZsYWdzIFxcdTAwMjYgVlhMQU5fRl9DT0xMRUNUX01FVEFEQVRBKSB7XFxuMjc1NTpcXHRcXHRcXHRpZiAoaW5mbyBcXHUwMDI2XFx1MDAyNiBpbmZvLVxcdTAwM2Vtb2RlIFxcdTAwMjYgSVBfVFVOTkVMX0lORk9fQlJJREdFIFxcdTAwMjZcXHUwMDI2XFxuMjc1NjpcXHRcXHRcXHQgICAgaW5mby1cXHUwMDNlbW9kZSBcXHUwMDI2IElQX1RVTk5FTF9JTkZPX1RYKSB7XFxuMjc1NzpcXHRcXHRcXHRcXHR2bmkgPSB0dW5uZWxfaWRfdG9fa2V5MzIoaW5mby1cXHUwMDNla2V5LnR1bl9pZCk7XFxuMjc1ODpcXHRcXHRcXHRcXHRuaGlkID0gaW5mby1cXHUwMDNla2V5Lm5oaWQ7XFxuMjc1OTpcXHRcXHRcXHR9IGVsc2Uge1xcbjI3NjA6XFx0XFx0XFx0XFx0aWYgKGluZm8gXFx1MDAyNlxcdTAwMjYgaW5mby1cXHUwMDNlbW9kZSBcXHUwMDI2IElQX1RVTk5FTF9JTkZPX1RYKVxcbjI3NjE6XFx0XFx0XFx0XFx0XFx0dnhsYW5feG1pdF9vbmUoc2tiLCBkZXYsIHZuaSwgTlVMTCwgZmFsc2UpO1xcbjI3NjI6XFx0XFx0XFx0XFx0ZWxzZVxcbjI3NjM6XFx0XFx0XFx0XFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9UVU5ORUxfVFhJTkZPKTtcXG4yNzY0OlxcdFxcdFxcdFxcdHJldHVybiBORVRERVZfVFhfT0s7XFxuMjc2NTpcXHRcXHRcXHR9XFxuMjc2NjpcXHRcXHR9XFxuMjc2NzpcXHRcXG4yNzY4OlxcdFxcdGlmICh2eGxhbi1cXHUwMDNlY2ZnLmZsYWdzIFxcdTAwMjYgVlhMQU5fRl9QUk9YWSkge1xcbjI3Njk6XFx0XFx0XFx0ZXRoID0gZXRoX2hkcihza2IpO1xcbjI3NzA6XFx0XFx0XFx0aWYgKG50b2hzKGV0aC1cXHUwMDNlaF9wcm90bykgPT0gRVRIX1BfQVJQKVxcbjI3NzE6XFx0XFx0XFx0XFx0cmV0dXJuIGFycF9yZWR1Y2UoZGV2LCBza2IsIHZuaSk7XFxuMjc3MjpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4yNzczOlxcdFxcdFxcdGVsc2UgaWYgKG50b2hzKGV0aC1cXHUwMDNlaF9wcm90bykgPT0gRVRIX1BfSVBWNiBcXHUwMDI2XFx1MDAyNlxcbjI3NzQ6XFx0XFx0XFx0XFx0IHBza2JfbmV0d29ya19tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xcbjI3NzU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgbmRfbXNnKSkgXFx1MDAyNlxcdTAwMjZcXG4yNzc2OlxcdFxcdFxcdFxcdCBpcHY2X2hkcihza2IpLVxcdTAwM2VuZXh0aGRyID09IElQUFJPVE9fSUNNUFY2KSB7XFxuMjc3NzpcXHRcXHRcXHRcXHRzdHJ1Y3QgbmRfbXNnICptID0gKHN0cnVjdCBuZF9tc2cgKikoaXB2Nl9oZHIoc2tiKSArIDEpO1xcbjI3Nzg6XFx0XFxuMjc3OTpcXHRcXHRcXHRcXHRpZiAobS1cXHUwMDNlaWNtcGguaWNtcDZfY29kZSA9PSAwIFxcdTAwMjZcXHUwMDI2XFxuMjc4MDpcXHRcXHRcXHRcXHQgICAgbS1cXHUwMDNlaWNtcGguaWNtcDZfdHlwZSA9PSBORElTQ19ORUlHSEJPVVJfU09MSUNJVEFUSU9OKVxcbjI3ODE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIG5laWdoX3JlZHVjZShkZXYsIHNrYiwgdm5pKTtcXG4yNzgyOlxcdFxcdFxcdH1cXG4yNzgzOlxcdCNlbmRpZlxcbjI3ODQ6XFx0XFx0fVxcbjI3ODU6XFx0XFxuMjc4NjpcXHRcXHRpZiAobmhpZClcXG4yNzg3OlxcdFxcdFxcdHJldHVybiB2eGxhbl94bWl0X25oaWQoc2tiLCBkZXYsIG5oaWQsIHZuaSk7XFxuMjc4ODpcXHRcXG4yNzg5OlxcdFxcdGlmICh2eGxhbi1cXHUwMDNlY2ZnLmZsYWdzIFxcdTAwMjYgVlhMQU5fRl9NREIpIHtcXG4yNzkwOlxcdFxcdFxcdHN0cnVjdCB2eGxhbl9tZGJfZW50cnkgKm1kYl9lbnRyeTtcXG4yNzkxOlxcdFxcbjI3OTI6XFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbjI3OTM6XFx0XFx0XFx0bWRiX2VudHJ5ID0gdnhsYW5fbWRiX2VudHJ5X3NrYl9nZXQodnhsYW4sIHNrYiwgdm5pKTtcXG4yNzk0OlxcdFxcdFxcdGlmIChtZGJfZW50cnkpIHtcXG4yNzk1OlxcdFxcdFxcdFxcdG5ldGRldl90eF90IHJldDtcXG4yNzk2OlxcdFxcbjI3OTc6XFx0XFx0XFx0XFx0cmV0ID0gdnhsYW5fbWRiX3htaXQodnhsYW4sIG1kYl9lbnRyeSwgc2tiKTtcXG4yNzk4OlxcdFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjI3OTk6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDkuNzkzMzU1MDA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxODMyNzk2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVlhMQU4gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSdyZSB0b3VjaGluZyBgdnhsYW5fbmFfY3JlYXRlYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYXJvdW5kIGhvdyB3ZSBhbGxvY2F0ZSBhbmQgcHJlcGFyZSB0aGUgU0tCLiBJIHNlZSB0aGUgb3JpZ2luYWwgY29kZSBhbmQgdGhlIHVwZGF0ZWQgY29kZSBzaWRlLWJ5LXNpZGUuXG5cbkluaXRpYWxseSwgSSdtIHRoaW5raW5nLCBcIklzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZT8gT3IganVzdCBzb21lIHJlZmFjdG9yaW5nP1wiIFRoZSBvcmlnaW5hbCBjb2RlIGRpcmVjdGx5IGNvbXB1dGVkIHRoZSBsZW5ndGggYW5kIHRoZW4gYWxsb2NhdGVkIHRoZSBTS0IsIHdoaWxlIHRoZSBuZXcgY29kZSBpbnRyb2R1Y2VzIGEgYGhlYWRyb29tYCB2YXJpYWJsZS4gSXQgbG9va3MgbGlrZSBpdCBjb21wdXRlcyB0aGUgbGVuZ3RoIHRoZSBleGFjdCBzYW1lIHdheS5cblxuTGV0J3MgdHJhY2UgaXQgdGhyb3VnaDogYGRldmAgaXMgYXNzaWduZWQgdG8gYHJlcXVlc3QtXHUwMDNlZGV2YCBvbiBsaW5lIDE5NDQuIEFoLCBpdCdzIGNsZWFyIG5vdy4gYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGFuZCBgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC1cdTAwM2VkZXYpYCBhcmUgZXF1aXZhbGVudCBiZWNhdXNlIGBkZXZgIGlzIGxpdGVyYWxseSBgcmVxdWVzdC1cdTAwM2VkZXZgLiBUaGlzIGxvb2tzIGxpa2Ugc29tZSBtaW5vciBjbGVhbi11cCwgbWF5YmUgdG8gaW1wcm92ZSByZWFkYWJpbGl0eSBvciBwcmVwYXJlIGZvciBmdXR1cmUgY2hhbmdlcy5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYExMX1JFU0VSVkVEX1NQQUNFYC4gSXQgd291bGQgYmUgZ29vZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBqdXN0IGEgdmFyaWFibGUgYXNzaWdubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5OTAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODoxMi45NzY2MzY3MzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDAyODU2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTI4Mj1zdHJ1Y3QgaGhfY2FjaGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDItICovXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDM6I2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRV9FWChkZXYsIGhsZW4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwNC1cXHQoKCgoaGxlbikgKyBSRUFEX09OQ0UoKGRldiktXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFxcXFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwNS1cXHQgIFxcdTAwMjYgfihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzA2OiNkZWZpbmUgTExfUkVTRVJWRURfU1BBQ0UoZGV2KSBcXFxcXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDctXFx0TExfUkVTRVJWRURfU1BBQ0VfRVgoZGV2LCAoZGV2KS1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzA4OiNkZWZpbmUgTExfUkVTRVJWRURfU1BBQ0VfRVhUUkEoZGV2LGV4dHJhKSBcXFxcXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDktXFx0KCgoKGRldiktXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIFJFQURfT05DRSgoZGV2KS1cXHUwMDNlbmVlZGVkX2hlYWRyb29tKSArIChleHRyYSkpIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MTQuNTc2OTI3MDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTU0NTE1MzE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIERhdGEgUmFjZXMgaW4gTmV0d29yayBCdWZmZXIgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIG1hY3JvLCBzcGVjaWZpY2FsbHkgaG93IGl0IHVzZXMgYFJFQURfT05DRSgoZGV2KS1cdTAwM2VuZWVkZWRfaGVhZHJvb20pYC4gVGhlIHJlZCBmbGFnIGlzIGltbWVkaWF0ZTogaWYgYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb21gIGlzIHJlYWQgaW4gdHdvIHBsYWNlcywgYW5kICplc3BlY2lhbGx5KiBpZiB0aGF0IGhhcHBlbnMgYXJvdW5kIHRoZSB0aW1lIHdlJ3JlIHNldHRpbmcgdXAgYSBuZXR3b3JrIGJ1ZmZlciAoYHNrYmApLCB0aGVuIHdlIGNvdWxkIGhhdmUgYSBjbGFzc2ljIFRpbWUtb2YtQ2hlY2stdG8tVGltZS1vZi1Vc2UgKFRPQ1RPVSkgZGF0YSByYWNlLiBJIHNlZSBgbmVlZGVkX2hlYWRyb29tYCBiZWluZyByZWFkIGZvciBjYWxjdWxhdGluZyB0aGUgb3ZlcmFsbCBsZW5ndGggKGBsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICsgLi4uYCkgYW5kIGFnYWluIHdoZW4gd2UgYWN0dWFsbHkgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnVmZmVyIChgc2tiX3Jlc2VydmUocmVwbHksIExMX1JFU0VSVkVEX1NQQUNFKHJlcXVlc3QtXHUwMDNlZGV2KSk7YCkuIE15IGNvbmNlcm4gaXMsIGlmIGBuZWVkZWRfaGVhZHJvb21gIGlzIG1vZGlmaWVkIGNvbmN1cnJlbnRseSwgdGhlIGNhbGN1bGF0ZWQgYGxlbmAgYW5kIHRoZSByZXNlcnZlZCBzcGFjZSBpbiB0aGUgU0tCIHdpbGwgYmUgaW5jb25zaXN0ZW50LiBUaGlzIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGJ1ZmZlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cywgYW5kIEknbSB2ZXJ5IGtlZW4gdG8gYXZvaWQgdGhhdC5cblxuQnV0LCBob2xkIG9uLiBUaGlzICpjb3VsZCogYmUgYSBzdHJhaWdodGZvcndhcmQgcmVmYWN0b3JpbmcuIE1heWJlIEknbSBiZWluZyB0b28gcGFyYW5vaWQuIEkgYmV0dGVyIHZlcmlmeSB0aGlzIHVzaW5nIG90aGVyIGFyZWFzLCBsaWtlIGBhcnBfcmVkdWNlYCBvciBgYXJwX2NyZWF0ZWAuIExldCBtZSBjb21wYXJlIHRob3NlIGltcGxlbWVudGF0aW9ucyBhbmQgc2VlIGhvdyBzaW1pbGFyIHNpdHVhdGlvbnMgYXJlIGhhbmRsZWQgdGhlcmUuIFRoYXQnbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxMDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MjAuMTIyMDk0NDAyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUwNTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcnBfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9hcnAuYy02My0gKlxcdFxcdEFybmFsZG8gQy4gTWVsbyA6XFx0Y29udmVydCAvcHJvYy9uZXQvYXJwIHRvIHNlcV9maWxlXFxubmV0L2lwdjQvYXJwLmM6NjQ6ICpcXHRcXHRTaG11bGlrIEhlbjpcXHRcXHRTcGxpdCBhcnBfc2VuZCB0byBhcnBfY3JlYXRlIGFuZFxcbm5ldC9pcHY0L2FycC5jLTY1LSAqXFx0XFx0XFx0XFx0XFx0YXJwX3htaXQgc28gaW50ZXJtZWRpYXRlIGRyaXZlcnMgbGlrZVxcbi0tXFxubmV0L2lwdjQvYXJwLmM9MzAxPXN0YXRpYyB2b2lkIGFycF9zZW5kX2RzdChpbnQgdHlwZSwgaW50IHB0eXBlLCBfX2JlMzIgZGVzdF9pcCxcXG4tLVxcbm5ldC9pcHY0L2FycC5jLTMxMy1cXG5uZXQvaXB2NC9hcnAuYzozMTQ6XFx0c2tiID0gYXJwX2NyZWF0ZSh0eXBlLCBwdHlwZSwgZGVzdF9pcCwgZGV2LCBzcmNfaXAsXFxubmV0L2lwdjQvYXJwLmMtMzE1LVxcdFxcdFxcdCBkZXN0X2h3LCBzcmNfaHcsIHRhcmdldF9odyk7XFxuLS1cXG5uZXQvaXB2NC9hcnAuYz01MTk9c3RhdGljIGlubGluZSBpbnQgYXJwX2Z3ZF9wdmxhbihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXFxuLS1cXG5uZXQvaXB2NC9hcnAuYy01NDQtICovXFxubmV0L2lwdjQvYXJwLmM6NTQ1OnN0cnVjdCBza19idWZmICphcnBfY3JlYXRlKGludCB0eXBlLCBpbnQgcHR5cGUsIF9fYmUzMiBkZXN0X2lwLFxcbm5ldC9pcHY0L2FycC5jLTU0Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMzIgc3JjX2lwLFxcbi0tXFxubmV0L2lwdjQvYXJwLmMtNjUwLX1cXG5uZXQvaXB2NC9hcnAuYzo2NTE6RVhQT1JUX1NZTUJPTChhcnBfY3JlYXRlKTtcXG5uZXQvaXB2NC9hcnAuYy02NTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjIwLjE2OTYwNTU4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDIzMTM3MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSBwcm9jZXNzaW5nIHRoZSBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIGBhcnBfY3JlYXRlYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gbG9va2luZyBhdCBgYXJwX2NyZWF0ZWAgaW4gYG5ldC9pcHY0L2FycC5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgb2YgQWRkcmVzcyBSZXNvbHV0aW9uIFByb3RvY29sIGdldHMgYmFrZWQgaW50byB0aGUga2VybmVsJ3MgSVB2NCBzdGFjay4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgY3J1Y2lhbDsgaXQncyB0aGUgZ2F0ZWtlZXBlciwgZGVjaWRpbmcgd2hldGhlciBhIG5ldyBBUlAgZW50cnkgZ2V0cyBjcmVhdGVkIG9yIGlmIHdlIG5lZWQgdG8gZG8gc29tZSBkZXRlY3RpdmUgd29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMsIHRoZSBjaGVja3MsIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQncyBtYW5pcHVsYXRpbmcuIEVzc2VudGlhbGx5LCBJJ20gcGVlbGluZyBiYWNrIHRoZSBsYXllcnMgb24gaG93IHRoZSBrZXJuZWwgYnVpbGRzIGFuZCBtYW5hZ2VzIGl0cyBBUlAgY2FjaGUgZm9yIElQdjQuIEknbSBrZWVuIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGxvY2tpbmcgc3RyYXRlZ2llcywgb3IgZXZlbiBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgYWZmZWN0IHBlcmZvcm1hbmNlLiBUaGlzIGxvb2tzIGxpa2UgYW4gaW50ZXJlc3Rpbmcgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQgaW5zaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk4NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjIzLjE5Mjc0NDk2M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9hcnAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDU6XFx0c3RydWN0IHNrX2J1ZmYgKmFycF9jcmVhdGUoaW50IHR5cGUsIGludCBwdHlwZSwgX19iZTMyIGRlc3RfaXAsXFxuIDU0NjpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMzIgc3JjX2lwLFxcbiA1NDc6XFx0XFx0XFx0XFx0ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGVzdF9odyxcXG4gNTQ4OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNyY19odyxcXG4gNTQ5OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhcmdldF9odylcXG4gNTUwOlxcdHtcXG4gNTUxOlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIDU1MjpcXHRcXHRzdHJ1Y3QgYXJwaGRyICphcnA7XFxuIDU1MzpcXHRcXHR1bnNpZ25lZCBjaGFyICphcnBfcHRyO1xcbiA1NTQ6XFx0XFx0aW50IGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbiA1NTU6XFx0XFx0aW50IHRsZW4gPSBkZXYtXFx1MDAzZW5lZWRlZF90YWlscm9vbTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0LypcXG4gNTU4OlxcdFxcdCAqXFx0QWxsb2NhdGUgYSBidWZmZXJcXG4gNTU5OlxcdFxcdCAqL1xcbiA1NjA6XFx0XFxuIDU2MTpcXHRcXHRza2IgPSBhbGxvY19za2IoYXJwX2hkcl9sZW4oZGV2KSArIGhsZW4gKyB0bGVuLCBHRlBfQVRPTUlDKTtcXG4gNTYyOlxcdFxcdGlmICghc2tiKVxcbiA1NjM6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgaGxlbik7XFxuIDU2NjpcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcXG4gNTY3OlxcdFxcdHNrYl9wdXQoc2tiLCBhcnBfaGRyX2xlbihkZXYpKTtcXG4gNTY4OlxcdFxcdHNrYi1cXHUwMDNlZGV2ID0gZGV2O1xcbiA1Njk6XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0FSUCk7XFxuIDU3MDpcXHRcXHRpZiAoIXNyY19odylcXG4gNTcxOlxcdFxcdFxcdHNyY19odyA9IGRldi1cXHUwMDNlZGV2X2FkZHI7XFxuIDU3MjpcXHRcXHRpZiAoIWRlc3RfaHcpXFxuIDU3MzpcXHRcXHRcXHRkZXN0X2h3ID0gZGV2LVxcdTAwM2Vicm9hZGNhc3Q7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdC8qIEZpbGwgdGhlIGRldmljZSBoZWFkZXIgZm9yIHRoZSBBUlAgZnJhbWUuXFxuIDU3NjpcXHRcXHQgKiBOb3RlOiBza2ItXFx1MDAzZWhlYWQgY2FuIGJlIGNoYW5nZWQuXFxuIDU3NzpcXHRcXHQgKi9cXG4gNTc4OlxcdFxcdGlmIChkZXZfaGFyZF9oZWFkZXIoc2tiLCBkZXYsIHB0eXBlLCBkZXN0X2h3LCBzcmNfaHcsIHNrYi1cXHUwMDNlbGVuKSBcXHUwMDNjIDApXFxuIDU3OTpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNTgwOlxcdFxcbiA1ODE6XFx0XFx0YXJwID0gYXJwX2hkcihza2IpO1xcbiA1ODI6XFx0XFx0LypcXG4gNTgzOlxcdFxcdCAqIEZpbGwgb3V0IHRoZSBhcnAgcHJvdG9jb2wgcGFydC5cXG4gNTg0OlxcdFxcdCAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjIzLjE5Mjg0MjI1M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTIzNjcyMzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhlIHByb21wdDpcblxuKipBbmFseXppbmcgYGFycF9yZWR1Y2VgIGluIHRoZSBDb250ZXh0IG9mIFZYTEFOKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwcm9tcHQgaXMgYXNraW5nIG1lIHRvIHRoaW5rIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucyBvZiBgYXJwX3JlZHVjZWAgaW4gYSBWWExBTiBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBBUlAgKEFkZHJlc3MgUmVzb2x1dGlvbiBQcm90b2NvbCkgdHJhZmZpYyBpcyBoYW5kbGVkIGluIHRoaXMgb3ZlcmxheSBuZXR3b3JrLCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBtZWFudCB0byBvcHRpbWl6ZSBpdC4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IGhlYWQ6IFdoYXQgc3BlY2lmaWMgcHJvYmxlbSBpcyBgYXJwX3JlZHVjZWAgdHJ5aW5nIHRvIHNvbHZlPyBJcyBpdCByZWxhdGVkIHRvIGJyb2FkY2FzdCBkb21haW4gbGltaXRhdGlvbnMgaW5oZXJlbnQgaW4gVlhMQU4/IElzIGl0IGFib3V0IHJlZHVjaW5nIEFSUCBmbG9vZHMgd2l0aGluIHRoZSB1bmRlcmxheSBuZXR3b3JrPyBXaGF0IHN0cmF0ZWdpZXMgZG9lcyBpdCBlbXBsb3k/IERvZXMgaXQgaW52b2x2ZSBBUlAgcHJveHlpbmcsIHN1cHByZXNzaW9uLCBjYWNoaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG51YW5jZXMgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggVlRFUHMgKFZYTEFOIFR1bm5lbCBFbmRwb2ludHMpIGFuZCB0aGUgY29udHJvbCBwbGFuZSwgaWYgYW55LCBhcmUga2V5LiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBwb3RlbnRpYWwgdHJhZGUtb2ZmcyBpbiB0ZXJtcyBvZiBjb252ZXJnZW5jZSB0aW1lLCBhbmQgYW55IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSBtb2RpZnlpbmcgdGhlIHN0YW5kYXJkIEFSUCBiZWhhdmlvci4gSSB3aWxsIG5lZWQgdG8gZGVsdmUgZGVlcGVyIHRvIGZpbmQgdGhlIGV4YWN0IG1lY2hhbmlzbSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24uIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgYW4gZXhpc3RpbmcgZnVuY3Rpb24gYW5kIG5vdCBzb21ldGhpbmcgbmV3LCBzbyBsb29raW5nIGZvciByZWZlcmVuY2VzIHRvIGRvY3VtZW50YXRpb24gdGhhdCBkZXNjcmliZXMgaXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODUzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODoyNi43MTY1MTY1MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODQwOlxcdH1cXG4xODQxOlxcdFxcbjE4NDI6XFx0c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXFxuMTg0MzpcXHR7XFxuMTg0NDpcXHRcXHRzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuMTg0NTpcXHRcXHRzdHJ1Y3QgYXJwaGRyICpwYXJwO1xcbjE4NDY6XFx0XFx0dTggKmFycHB0ciwgKnNoYTtcXG4xODQ3OlxcdFxcdF9fYmUzMiBzaXAsIHRpcDtcXG4xODQ4OlxcdFxcdHN0cnVjdCBuZWlnaGJvdXIgKm47XFxuMTg0OTpcXHRcXG4xODUwOlxcdFxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX05PQVJQKVxcbjE4NTE6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg1MjpcXHRcXG4xODUzOlxcdFxcdGlmICghcHNrYl9uZXR3b3JrX21heV9wdWxsKHNrYiwgYXJwX2hkcl9sZW4oZGV2KSkpIHtcXG4xODU0OlxcdFxcdFxcdGRldl9kc3RhdHNfdHhfZHJvcHBlZChkZXYpO1xcbjE4NTU6XFx0XFx0XFx0dnhsYW5fdm5pZmlsdGVyX2NvdW50KHZ4bGFuLCB2bmksIE5VTEwsXFxuMTg1NjpcXHRcXHRcXHRcXHRcXHQgICAgICBWWExBTl9WTklfU1RBVFNfVFhfRFJPUFMsIDApO1xcbjE4NTc6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg1ODpcXHRcXHR9XFxuMTg1OTpcXHRcXHRwYXJwID0gYXJwX2hkcihza2IpO1xcbjE4NjA6XFx0XFxuMTg2MTpcXHRcXHRpZiAoKHBhcnAtXFx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfRVRIRVIpIFxcdTAwMjZcXHUwMDI2XFxuMTg2MjpcXHRcXHQgICAgIHBhcnAtXFx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfSUVFRTgwMikpIHx8XFxuMTg2MzpcXHRcXHQgICAgcGFycC1cXHUwMDNlYXJfcHJvICE9IGh0b25zKEVUSF9QX0lQKSB8fFxcbjE4NjQ6XFx0XFx0ICAgIHBhcnAtXFx1MDAzZWFyX29wICE9IGh0b25zKEFSUE9QX1JFUVVFU1QpIHx8XFxuMTg2NTpcXHRcXHQgICAgcGFycC1cXHUwMDNlYXJfaGxuICE9IGRldi1cXHUwMDNlYWRkcl9sZW4gfHxcXG4xODY2OlxcdFxcdCAgICBwYXJwLVxcdTAwM2Vhcl9wbG4gIT0gNClcXG4xODY3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4Njg6XFx0XFx0YXJwcHRyID0gKHU4ICopcGFycCArIHNpemVvZihzdHJ1Y3QgYXJwaGRyKTtcXG4xODY5OlxcdFxcdHNoYSA9IGFycHB0cjtcXG4xODcwOlxcdFxcdGFycHB0ciArPSBkZXYtXFx1MDAzZWFkZHJfbGVuO1xcdC8qIHNoYSAqL1xcbjE4NzE6XFx0XFx0bWVtY3B5KFxcdTAwMjZzaXAsIGFycHB0ciwgc2l6ZW9mKHNpcCkpO1xcbjE4NzI6XFx0XFx0YXJwcHRyICs9IHNpemVvZihzaXApO1xcbjE4NzM6XFx0XFx0YXJwcHRyICs9IGRldi1cXHUwMDNlYWRkcl9sZW47XFx0LyogdGhhICovXFxuMTg3NDpcXHRcXHRtZW1jcHkoXFx1MDAyNnRpcCwgYXJwcHRyLCBzaXplb2YodGlwKSk7XFxuMTg3NTpcXHRcXG4xODc2OlxcdFxcdGlmIChpcHY0X2lzX2xvb3BiYWNrKHRpcCkgfHxcXG4xODc3OlxcdFxcdCAgICBpcHY0X2lzX211bHRpY2FzdCh0aXApKVxcbjE4Nzg6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg3OTpcXHRcXG4xODgwOlxcdFxcdG4gPSBuZWlnaF9sb29rdXAoXFx1MDAyNmFycF90YmwsIFxcdTAwMjZ0aXAsIGRldik7XFxuMTg4MTpcXHRcXG4xODgyOlxcdFxcdGlmIChuKSB7XFxuMTg4MzpcXHRcXHRcXHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XFxuMTg4NDpcXHRcXHRcXHR1OCBoYVtFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xcbjE4ODU6XFx0XFx0XFx0c3RydWN0IHZ4bGFuX2ZkYiAqZjtcXG4xODg2OlxcdFxcdFxcdHN0cnVjdCBza19idWZmXFx0KnJlcGx5O1xcbjE4ODc6XFx0XFxuMTg4ODpcXHRcXHRcXHRpZiAoIShSRUFEX09OQ0Uobi1cXHUwMDNlbnVkX3N0YXRlKSBcXHUwMDI2IE5VRF9DT05ORUNURUQpKSB7XFxuMTg4OTpcXHRcXHRcXHRcXHRuZWlnaF9yZWxlYXNlKG4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODoyNi43MTY3MTg0MDdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQyNjEzNjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIEFuYWx5c2lzOiBgdnhsYW5fbmFfY3JlYXRlYCBpbiBWWExBTiBQcm94eSBNb2RlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdnhsYW5fbmFfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyB3aXRoaW4gVlhMQU4sIHNwZWNpZmljYWxseSBpbiBwcm94eSBtb2RlIOKAkyBlaXRoZXIgdGhyb3VnaCBgVlhMQU5fRl9QUk9YWWAgb3IgdGhlIElQdjYgbmVpZ2hib3IgcmVkdWN0aW9uIG1lY2hhbmlzbS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGlzIGNvZGUgcGF0aCBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VP1xuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nLCBWWExBTiBpcyBhIHZpcnR1YWwgbmV0d29yayBkcml2ZXIsIGNyZWF0ZWQgdXNpbmcgYGlwIGxpbmsgYWRkIHR5cGUgdnhsYW5gLiBRRU1VIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIHNldHRpbmcgdXAgYW5kIHJ1bm5pbmcgVlhMQU4gaW50ZXJmYWNlcywgaW5jbHVkaW5nIHRob3NlIHdpdGggcHJveHkgbW9kZSBlbmFibGVkLiBGdXJ0aGVybW9yZSwgaXQncyBzdHJhaWdodGZvcndhcmQgdG8gc2VuZCBJUHY2IG5laWdoYm9yIHNvbGljaXRhdGlvbiBwYWNrZXRzLCB3aGljaCBzaG91bGQgdHJpZ2dlciBgdnhsYW5fbmFfY3JlYXRlYC4gVGhlIGNoYW5nZSBkaXJlY3RseSB0b3VjaGVzIHRoZSBjb3JlIFZYTEFOIGRyaXZlciBsb2dpYyBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYCwgc28gdGhhdCdzIGRlZmluaXRlbHkgYSBzaWduaWZpY2FudCBhcmVhLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS5cblxuKiAgIERvZXMgaXQgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcz8gWWVzLCBpdCdzIHRoZSBWWExBTiBkcml2ZXIsIGEgY29yZSBuZXR3b3JraW5nIGNvbXBvbmVudC5cbiogICBEb2VzIHRoZSBwYXRjaCBjb25zaXN0IHNvbGVseSBvZiBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29tbWVudHM/IE5vLlxuKiAgIElzIGl0IHB1cmVseSBjb3NtZXRpYyBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50cz8gTm8uXG4qICAgSXMgaXQgbWVyZWx5IGNoYW5nZXMgdG8gbnVtZXJpY2FsIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24/IE5vLlxuKiAgIElzIHRoaXMgYSBjb2RlIHBhdGggdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/IEFic29sdXRlbHkgbm90LCBWWExBTiBpcyBhIHZpcnR1YWwgZGV2aWNlIGFuZCBpcyB3aWRlbHkgdXNlZCBhbmQgZnV6emVkIGluIFFFTVUuXG4qICAgSXMgaXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnM/IE5vLlxuKiAgIElzIGl0IGEgZHJpdmVyIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRlYXJkb3duIGNhbGxiYWNrPyBOby5cblxuVGhlcmVmb3JlLCBieSBwcm9jZXNzIG9mIGVsaW1pbmF0aW9uIGFuZCBleHBlcnQganVkZ2VtZW50LCB0aGlzIGNsZWFybHkgcXVhbGlmaWVzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuTmV4dCwgSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIHN5bWJvbHMgYXJlIG1vZGlmaWVkIG9yIGFyZSBkaXJlY3RseSBjYWxsaW5nIHRoZSBtb2RpZmllZCBsb2dpYy4gSXQgbG9va3MgbGlrZSBgdnhsYW5fbmFfY3JlYXRlYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgYXMgaXMgYG5laWdoX3JlZHVjZWAuIFNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gYHZ4bGFuX2NvcmUuY2AgYW5kIFZYTEFOJ3MgTkRPIG9wZXJhdGlvbnMgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMjMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODozMi4xNDI4NTc3NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4MDcyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5feG1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIzMTk9c3RhdGljIGludCBlbmNhcF9ieXBhc3NfaWZfbG9jYWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzU3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMzU4OnZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjM1OS1cXHRcXHQgICAgX19iZTMyIGRlZmF1bHRfdm5pLCBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCwgYm9vbCBkaWRfcnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NjQ6c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjY1LVxcdFxcdFxcdCAgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgX19iZTMyIHZuaSwgYm9vbCBkaWRfcnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODAtXFx0aWYgKGxpa2VseShkb194bWl0KSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MTpcXHRcXHR2eGxhbl94bWl0X29uZShza2IsIGRldiwgdm5pLCBcXHUwMDI2bmhfcmRzdCwgZGlkX3JzYyk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODItXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2OTMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2OTQ6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk1LVxcdFxcdFxcdFxcdCAgIHUzMiBuaGlkLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3MTgtXFx0aWYgKGxpa2VseShkb194bWl0KSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjcxOTpcXHRcXHR2eGxhbl94bWl0X29uZShza2IsIGRldiwgdm5pLCBcXHUwMDI2bmhfcmRzdCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzIwLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzM4LSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzM5OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NjAtXFx0XFx0XFx0aWYgKGluZm8gXFx1MDAyNlxcdTAwMjYgaW5mby1cXHUwMDNlbW9kZSBcXHUwMDI2IElQX1RVTk5FTF9JTkZPX1RYKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzYxOlxcdFxcdFxcdFxcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIE5VTEwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc2Mi1cXHRcXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc4Ni1cXHRpZiAobmhpZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc4NzpcXHRcXHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzg4LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MzMtXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVxcdTAwM2VuaCkpIHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgzNDpcXHRcXHR2eGxhbl94bWl0X25oKHNrYiwgZGV2LCBmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODM1LVxcdFxcdFxcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVxcdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg0NS1cXHRcXHRcXHRpZiAoc2tiMSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg0NjpcXHRcXHRcXHRcXHR2eGxhbl94bWl0X29uZShza2IxLCBkZXYsIHZuaSwgcmRzdCwgZGlkX3JzYyk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NDctXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODQ4LVxcdFxcdGlmIChmZHN0KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyODQ5OlxcdFxcdFxcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIGZkc3QsIGRpZF9yc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODUwLVxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk3LVxcdC5uZG9fc3RvcFxcdFxcdD0gdnhsYW5fc3RvcCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI5ODpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IHZ4bGFuX3htaXQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyOTktXFx0Lm5kb19zZXRfcnhfbW9kZVxcdD0gdnhsYW5fc2V0X211bHRpY2FzdF9saXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfcmF3X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMzIwLVxcdC5uZG9fc3RvcFxcdFxcdD0gdnhsYW5fc3RvcCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMyMTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IHZ4bGFuX3htaXQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzMjItXFx0Lm5kb19jaGFuZ2VfbXR1XFx0XFx0PSB2eGxhbl9jaGFuZ2VfbXR1LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTcwMj1uZXRkZXZfdHhfdCB2eGxhbl9tZGJfeG1pdChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE3MjMtXFx0XFx0aWYgKHNrYjEpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTcyNDpcXHRcXHRcXHR2eGxhbl94bWl0X29uZShza2IxLCB2eGxhbi1cXHUwMDNlZGV2LCBzcmNfdm5pLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE3MjUtXFx0XFx0XFx0XFx0ICAgICAgIHJjdV9kZXJlZmVyZW5jZShyZW1vdGUtXFx1MDAzZXJkKSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTcyOC1cXHRpZiAoZnJlbW90ZSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNzI5OlxcdFxcdHZ4bGFuX3htaXRfb25lKHNrYiwgdnhsYW4tXFx1MDAzZWRldiwgc3JjX3ZuaSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNzMwLVxcdFxcdFxcdCAgICAgICByY3VfZGVyZWZlcmVuY2UoZnJlbW90ZS1cXHUwMDNlcmQpLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg9MTkxPWludCB2eGxhbl9mZGJfdXBkYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTE5Ni1cXHRcXHQgICAgIGJvb2wgc3dkZXZfbm90aWZ5LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaDoxOTc6dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaC0xOTgtXFx0XFx0ICAgIF9fYmUzMiBkZWZhdWx0X3ZuaSwgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QsIGJvb2wgZGlkX3JzYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjMyLjE4ODY2NzU0OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTY1NjAyNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWWExBTiBOZWlnaGJvciBEaXNjb3ZlcnkgYW5kIFRyYW5zbWlzc2lvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGB2eGxhbl9jb3JlLmNgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMgbWFkZSBhcm91bmQgYHZ4bGFuX25hX2NyZWF0ZWAg4oCTIHRoYXQncyB0aGUgZm9jYWwgcG9pbnQsIGlzbid0IGl0PyBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgaW1wYWN0IG5laWdoYm9yIGRpc2NvdmVyeSBhbmQgdHJhbnNtaXNzaW9uLlxuXG5SaWdodCwgc28gYG5laWdoX3JlZHVjZWAgaXMgY2FsbGluZyBgdnhsYW5fbmFfY3JlYXRlYC4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBpbnRlcmFjdGlvbi4gQWxzbywgYHZ4bGFuX3htaXRgIGFwcGVhcnMgdG8gYmUgaGFuZGxpbmcgbmRvX3N0YXJ0X3htaXQsIGFuZCBpdCBhbHNvIGNhbGxzIGBuZWlnaF9yZWR1Y2VgLiBJbnRlcmVzdGluZywgaW50ZXJlc3RpbmcuIEdpdmVuIHRoZSBjb250ZXh0IG9mIHRoZSBtb2RpZmljYXRpb24sIEkgd2lsbCBjaGVjayB0aGUgcmVsYXRpb25zaGlwIG9mIHRoZSBmdW5jdGlvbnMgd2l0aCBgdnhsYW5fbmFfY3JlYXRlYC4gXG5cblRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyB6b29tIG91dCBhbmQgY2hlY2sgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiBgdnhsYW5fY29yZS5jYCBhcmUgbm90IGlubGluZWQgb3Igc3RhdGljLCBhbmQgdGhlcmVmb3JlIHBvc3NpYmx5IG1vcmUgcHVibGljbHkgYWNjZXNzaWJsZSBvciBoYXZlIGEgbW9yZSBjb21wbGV4IHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIGB2eGxhbl94bWl0X29uZWAgbG9va3MgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQg4oCTIGl0J3Mgbm9uLXN0YXRpYywgc28gdGhlcmUncyBhbiBleHRlcm5hbCBob29rIHRoZXJlLiBBbmQgdGhlbiBJIHNob3VsZCBjb25zaWRlciBvdGhlciBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBmdW5jdGlvbnMgbGlrZSBgdnhsYW5fZmRiX3VwZGF0ZWAsIGB2eGxhbl9mZGJfYWRkYCwgYHZ4bGFuX2Rldl9pb2N0bGAsIGFuZCBgdnhsYW5fY2hhbmdlbGlua2AsIGp1c3QgdG8gYmUgc2FmZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRoaXMgY2hhbmdlIHJpcHBsZXMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjk0NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODozOC4zNTQyNzI1MDFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTkyMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU0MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ5PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCB2eGxhbl9wb3J0IF9fcmVhZF9tb3N0bHkgPSA4NDcyO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1MDptb2R1bGVfcGFyYW1fbmFtZWQodWRwX3BvcnQsIHZ4bGFuX3BvcnQsIHVzaG9ydCwgMDQ0NCk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjUxOk1PRFVMRV9QQVJNX0RFU0ModWRwX3BvcnQsIFxcXCJEZXN0aW5hdGlvbiBVRFAgcG9ydFxcXCIpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01Mi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NTM9c3RhdGljIGJvb2wgbG9nX2Vjbl9lcnJvciA9IHRydWU7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU0Om1vZHVsZV9wYXJhbShsb2dfZWNuX2Vycm9yLCBib29sLCAwNjQ0KTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTU6TU9EVUxFX1BBUk1fREVTQyhsb2dfZWNuX2Vycm9yLCBcXFwiTG9nIHBhY2tldHMgcmVjZWl2ZWQgd2l0aCBjb3JydXB0ZWQgRUNOXFxcIik7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTYwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGxhbl9saW5rX29wcztcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYyOnN0YXRpYyBpbnQgdnhsYW5fc29ja19hZGQoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02My1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjQ6c3RhdGljIHZvaWQgdnhsYW5fdnNfZGVsX2RldihzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbik7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTY1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zIHZ4bGFuX2ZkYl9yaHRfcGFyYW1zID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTcyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3MzpzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fY29sbGVjdF9tZXRhZGF0YShzdHJ1Y3QgdnhsYW5fc29jayAqdnMpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy04Mi0gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6ODM6c3RhdGljIHN0cnVjdCB2eGxhbl9zb2NrICp2eGxhbl9maW5kX3NvY2soc3RydWN0IG5ldCAqbmV0LCBzYV9mYW1pbHlfdCBmYW1pbHksXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTg0LVxcdFxcdFxcdFxcdFxcdCAgX19iZTE2IHBvcnQsIHUzMiBmbGFncywgaW50IGlmaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtOTktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEwMDpzdGF0aWMgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW5fdnNfZmluZF92bmkoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMDEtXFx0XFx0XFx0XFx0XFx0ICAgaW50IGlmaW5kZXgsIF9fYmUzMiB2bmksXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQwLS8qIExvb2sgdXAgVk5JIGluIGEgcGVyIG5ldCBuYW1lc3BhY2UgdGFibGUgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQxOnN0YXRpYyBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbl9maW5kX3ZuaShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDItXFx0XFx0XFx0XFx0XFx0X19iZTMyIHZuaSwgc2FfZmFtaWx5X3QgZmFtaWx5LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NC0vKiBGaWxsIGluIG5laWdoYm91ciBtZXNzYWdlIGluIHNrYnVmZi4gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTU1OnN0YXRpYyBpbnQgdnhsYW5fZmRiX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1Ni1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNTAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI1MTpzdGF0aWMgaW5saW5lIHNpemVfdCB2eGxhbl9ubG1zZ19zaXplKHZvaWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjM6c3RhdGljIHZvaWQgX192eGxhbl9mZGJfbm90aWZ5KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBzdHJ1Y3QgdnhsYW5fZmRiICpmZGIsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4ODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfc3dpdGNoZGV2X25vdGlmaWVyX2luZm8oY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA2OnN0YXRpYyBpbnQgdnhsYW5fZmRiX3N3aXRjaGRldl9jYWxsX25vdGlmaWVycyhzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyNzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9ub3RpZnkoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI4LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmQsIGludCB0eXBlLCBib29sIHN3ZGV2X25vdGlmeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM1MjpzdGF0aWMgdm9pZCB2eGxhbl9pcF9taXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuaW9uIHZ4bGFuX2FkZHIgKmlwYSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2NjpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfbWlzcyhzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgY29uc3QgdTggZXRoX2FkZHJbRVRIX0FMRU5dKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3OC0vKiBMb29rIHVwIEV0aGVybmV0IGFkZHJlc3MgaW4gZm9yd2FyZGluZyB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNzk6c3RhdGljIHN0cnVjdCB2eGxhbl9mZGIgKnZ4bGFuX2ZpbmRfbWFjX3JjdShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzgwLVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCB1OCAqbWFjLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mzk1OnN0YXRpYyBzdHJ1Y3QgdnhsYW5fZmRiICp2eGxhbl9maW5kX21hY190eChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzk2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICptYWMsIF9fYmUzMiB2bmkpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDEwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0MTE6c3RhdGljIHN0cnVjdCB2eGxhbl9mZGIgKnZ4bGFuX2ZpbmRfbWFjKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MTItXFx0XFx0XFx0XFx0XFx0Y29uc3QgdTggKm1hYywgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjUtLyogY2FsbGVyIHNob3VsZCBob2xkIHZ4bGFuLVxcdTAwM2VoYXNoX2xvY2sgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDI2OnN0YXRpYyBzdHJ1Y3QgdnhsYW5fcmRzdCAqdnhsYW5fZmRiX2ZpbmRfcmRzdChzdHJ1Y3QgdnhsYW5fZmRiICpmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ0Mi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDQzOmludCB2eGxhbl9mZGJfZmluZF91YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqbWFjLCBfX2JlMzIgdm5pLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDQtXFx0XFx0ICAgICAgc3RydWN0IHN3aXRjaGRldl9ub3RpZmllcl92eGxhbl9mZGJfaW5mbyAqZmRiX2luZm8pXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDczLX1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc0OkVYUE9SVF9TWU1CT0xfR1BMKHZ4bGFuX2ZkYl9maW5kX3VjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzY6c3RhdGljIGludCB2eGxhbl9mZGJfbm90aWZ5X29uZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzctXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDkwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0OTE6aW50IHZ4bGFuX2ZkYl9yZXBsYXkoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTMyIHZuaSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDkyLVxcdFxcdCAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01MjEtfVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1MjI6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX3JlcGxheSk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTUyMy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTI0OnZvaWQgdnhsYW5fZmRiX2NsZWFyX29mZmxvYWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTMyIHZuaSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NDMtfVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NDQ6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX2NsZWFyX29mZmxvYWQpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NDUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU0Ni0vKiBSZXBsYWNlIGRlc3RpbmF0aW9uIG9mIHVuaWNhc3QgbWFjICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU0NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9yZXBsYWNlKHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU0OC1cXHRcXHRcXHQgICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLCBfX2JlMTYgcG9ydCwgX19iZTMyIHZuaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NzEtLyogQWRkL3VwZGF0ZSBkZXN0aW5hdGlvbnMgZm9yIG11bHRpY2FzdCAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NzI6c3RhdGljIGludCB2eGxhbl9mZGJfYXBwZW5kKHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU3My1cXHRcXHRcXHQgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiBwb3J0LCBfX2JlMzIgdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTYwMi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjAzOnN0YXRpYyBib29sIHZ4bGFuX3BhcnNlX2dwZV9wcm90byhjb25zdCBzdHJ1Y3QgdnhsYW5oZHIgKmhkciwgX19iZTE2ICpwcm90b2NvbClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02MjgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYyOTpzdGF0aWMgc3RydWN0IHZ4bGFuaGRyICp2eGxhbl9ncm9fcmVtY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02MzAtXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgb2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTY1NC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjU1OnN0YXRpYyBzdHJ1Y3QgdnhsYW5oZHIgKnZ4bGFuX2dyb19wcmVwYXJlX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02NTYtXFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTcwOC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzA5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fZ3JvX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03MTAtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzI0LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3MjU6c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9ncGVfZ3JvX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03MjYtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc1MC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzUxOnN0YXRpYyBpbnQgdnhsYW5fZ3JvX2NvbXBsZXRlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5ob2ZmKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc1OC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzU5OnN0YXRpYyBpbnQgdnhsYW5fZ3BlX2dyb19jb21wbGV0ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBuaG9mZilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03NzMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc3NDpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmRiX2FsbG9jKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBjb25zdCB1OCAqbWFjLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03NzUtXFx0XFx0XFx0XFx0XFx0IF9fdTE2IHN0YXRlLCBfX2JlMzIgc3JjX3ZuaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03OTYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc5NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9uaF91cGRhdGUoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzk4LVxcdFxcdFxcdCAgICAgICB1MzIgbmhpZCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTg1OC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6ODU5OmludCB2eGxhbl9mZGJfY3JlYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy04NjAtXFx0XFx0ICAgICBjb25zdCB1OCAqbWFjLCB1bmlvbiB2eGxhbl9hZGRyICppcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjkxMjpzdGF0aWMgdm9pZCBfX3Z4bGFuX2ZkYl9mcmVlKHN0cnVjdCB2eGxhbl9mZGIgKmYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTkxMy17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtOTMwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo5MzE6c3RhdGljIHZvaWQgdnhsYW5fZmRiX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzIte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTkzNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTM4OnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9kZXN0cm95KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBzdHJ1Y3QgdnhsYW5fZmRiICpmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzktXFx0XFx0XFx0ICAgICAgYm9vbCBkb19ub3RpZnksIGJvb2wgc3dkZXZfbm90aWZ5KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk2Mi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTYzOnN0YXRpYyB2b2lkIHZ4bGFuX2RzdF9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtOTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05NzAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjk3MTpzdGF0aWMgaW50IHZ4bGFuX2ZkYl91cGRhdGVfZXhpc3Rpbmcoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk3Mi1cXHRcXHRcXHRcXHQgICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwNjktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEwNzA6c3RhdGljIGludCB2eGxhbl9mZGJfdXBkYXRlX2NyZWF0ZShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTA3MS1cXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqbWFjLCB1bmlvbiB2eGxhbl9hZGRyICppcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMTA1LS8qIEFkZCBuZXcgZW50cnkgdG8gZm9yd2FyZGluZyB0YWJsZSAtLSBhc3N1bWVzIGxvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMTA2OmludCB2eGxhbl9mZGJfdXBkYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMTA3LVxcdFxcdCAgICAgY29uc3QgdTggKm1hYywgdW5pb24gdnhsYW5fYWRkciAqaXAsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTEzNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTEzODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfZHN0X2Rlc3Ryb3koc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExMzktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmQsIGJvb2wgc3dkZXZfbm90aWZ5KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExNDUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjExNDY6c3RhdGljIGludCB2eGxhbl9mZGJfcGFyc2Uoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExNDctXFx0XFx0XFx0ICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiAqcG9ydCwgX19iZTMyICpzcmNfdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyMzItLyogQWRkIHN0YXRpYyBlbnRyeSAodmlhIG5ldGxpbmspICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEyMzM6c3RhdGljIGludCB2eGxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMjM0LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyNzUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEyNzY6aW50IF9fdnhsYW5fZmRiX2RlbGV0ZShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTI3Ny1cXHRcXHQgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkciwgdW5pb24gdnhsYW5fYWRkciBpcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzA5LS8qIERlbGV0ZSBlbnRyeSAodmlhIG5ldGxpbmspICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzMTA6c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzExLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzMzgtLyogRHVtcCBmb3J3YXJkaW5nIHRhYmxlICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzMzk6c3RhdGljIGludCB2eGxhbl9mZGJfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzNDAtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzODgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzODk6c3RhdGljIGludCB2eGxhbl9mZGJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzOTAtXFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQyNC0gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQyNTpzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdnhsYW5fc25vb3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQyNi1cXHRcXHRcXHRcXHRcXHR1bmlvbiB2eGxhbl9hZGRyICpzcmNfaXAsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQ4OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQ5MDpzdGF0aWMgYm9vbCBfX3Z4bGFuX3NvY2tfcmVsZWFzZV9wcmVwKHN0cnVjdCB2eGxhbl9zb2NrICp2cylcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQ5MS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTUwNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTUwODpzdGF0aWMgdm9pZCB2eGxhbl9zb2NrX3JlbGVhc2Uoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1MzYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1Mzc6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3JlbWNzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHZ4ZmxhZ3MpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NTctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1NTg6c3RhdGljIHZvaWQgdnhsYW5fcGFyc2VfZ2JwX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdnhmbGFncyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTU1OS1cXHRcXHRcXHRcXHRzdHJ1Y3QgdnhsYW5fbWV0YWRhdGEgKm1kKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1ODgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1ODk6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3NldF9tYWMoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1OTAtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdnhsYW5fc29jayAqdnMsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTYyMS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTYyMjpzdGF0aWMgYm9vbCB2eGxhbl9lY25fZGVjYXBzdWxhdGUoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLCB2b2lkICpvaXBoLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNjIzLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNjQ1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxNjQ2OnN0YXRpYyBpbnQgdnhsYW5fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTY0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTgxNC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTgxNTpzdGF0aWMgaW50IHZ4bGFuX2Vycl9sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODQxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxODQyOnN0YXRpYyBpbnQgYXJwX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTM5LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxOTQwOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjAzNjpzdGF0aWMgaW50IG5laWdoX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTA3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMTA4OnN0YXRpYyBib29sIHJvdXRlX3Nob3J0Y2lyY3VpdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTkwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMTkxOnN0YXRpYyBpbnQgdnhsYW5fYnVpbGRfZ3BlX2hkcihzdHJ1Y3QgdnhsYW5oZHIgKnZ4aCwgX19iZTE2IHByb3RvY29sKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMjAxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMjAyOnN0YXRpYyBpbnQgdnhsYW5fYnVpbGRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjIwMy1cXHRcXHRcXHQgICBpbnQgaXBoZHJfbGVuLCBfX2JlMzIgdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIyNjgtLyogQnlwYXNzIGVuY2Fwc3VsYXRpb24gaWYgdGhlIGRlc3RpbmF0aW9uIGlzIGxvY2FsICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIyNjk6c3RhdGljIHZvaWQgdnhsYW5fZW5jYXBfYnlwYXNzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB2eGxhbl9kZXYgKnNyY192eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjI3MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHZ4bGFuX2RldiAqZHN0X3Z4bGFuLCBfX2JlMzIgdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzMTgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzMTk6c3RhdGljIGludCBlbmNhcF9ieXBhc3NfaWZfbG9jYWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjMyMC1cXHRcXHRcXHRcXHQgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjM1Ny1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjM1ODp2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzNTktXFx0XFx0ICAgIF9fYmUzMiBkZWZhdWx0X3ZuaSwgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QsIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjYzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjY0OnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cXHRcXHRcXHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjkzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk0OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5NS1cXHRcXHRcXHRcXHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzM4LSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzM5OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NTktLyogV2FsayB0aGUgZm9yd2FyZGluZyB0YWJsZSBhbmQgcHVyZ2Ugc3RhbGUgZW50cmllcyAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyODYwOnN0YXRpYyB2b2lkIHZ4bGFuX2NsZWFudXAoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OTctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4OTg6c3RhdGljIHZvaWQgdnhsYW5fdnNfZGVsX2RldihzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg5OS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjkwNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjkwODpzdGF0aWMgdm9pZCB2eGxhbl92c19hZGRfZGV2KHN0cnVjdCB2eGxhbl9zb2NrICp2cywgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MDktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdnhsYW5fZGV2X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjkxOS0vKiBTZXR1cCBzdGF0cyB3aGVuIGRldmljZSBpcyBjcmVhdGVkICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5MjA6c3RhdGljIGludCB2eGxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NTUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5NTY6c3RhdGljIHZvaWQgdnhsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NTcte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NzAtLyogU3RhcnQgYWdlaW5nIHRpbWVyIGFuZCBqb2luIGdyb3VwIHdoZW4gZGV2aWNlIGlzIGJyb3VnaHQgdXAgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjk3MTpzdGF0aWMgaW50IHZ4bGFuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjk3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9Mjk5Mj1zdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2Mge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMDQtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwMDU6c3RhdGljIGJvb2wgdnhsYW5fZmRiX2lzX2RlZmF1bHRfZW50cnkoY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAwNi1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAxMS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzAxMjpzdGF0aWMgYm9vbCB2eGxhbl9mZGJfbmhpZF9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmYsIHUzMiBuaGlkKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDE4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDE5OnN0YXRpYyBib29sIHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMjAtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNDE9c3RhdGljIGJvb2xcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA0Mjp2eGxhbl9mZGJfZmx1c2hfc2hvdWxkX21hdGNoX3JlbW90ZXMoY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjICpkZXNjKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDQ3PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNDg6dnhsYW5fZmRiX2ZsdXNoX3JlbW90ZV9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA0OS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNjQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA2NTp2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA2Ni1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA4NC0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDg1OnN0YXRpYyB2b2lkIHZ4bGFuX2ZsdXNoKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDg2LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9kZWxfYnVsa19wb2xpY3lbTkRBX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxMzItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxMzM6c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxMzQtXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTk3LS8qIENsZWFudXAgdGltZXIgYW5kIGZvcndhcmRpbmcgdGFibGUgb24gc2h1dGRvd24gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE5ODpzdGF0aWMgaW50IHZ4bGFuX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5OS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIxOC0vKiBTdHViLCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUuICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMTk6c3RhdGljIHZvaWQgdnhsYW5fc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMjItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMjM6c3RhdGljIGludCB2eGxhbl9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjQyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMjQzOnN0YXRpYyBpbnQgdnhsYW5fZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzMyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHZ4bGFuX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMzNC0gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMzNTpzdGF0aWMgdm9pZCB2eGxhbl9vZmZsb2FkX3J4X3BvcnRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgcHVzaClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMzNi17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzM2MS0vKiBJbml0aWFsaXplIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzYyOnN0YXRpYyB2b2lkIHZ4bGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0MDktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM0MTA6c3RhdGljIHZvaWQgdnhsYW5fZXRoZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxNi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzQxNzpzdGF0aWMgdm9pZCB2eGxhbl9yYXdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzQyNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fcG9saWN5W0lGTEFfVlhMQU5fTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQ2NC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzQ2NTpzdGF0aWMgaW50IHZ4bGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQ2Ni1cXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTMxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTMyOnN0YXRpYyB2b2lkIHZ4bGFuX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MzMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTM4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTM5OnN0YXRpYyBpbnQgdnhsYW5fZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NDAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHZ4bGFuX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NjMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM1NjQ6c3RhdGljIHN0cnVjdCBzb2NrICp2eGxhbl9jcmVhdGVfc29jayhzdHJ1Y3QgbmV0ICpuZXQsIGJvb2wgaXB2NixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU2NS1cXHRcXHRcXHRcXHQgICAgICBfX2JlMTYgcG9ydCwgdTMyIGZsYWdzLCBpbnQgaWZpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTk0LS8qIENyZWF0ZSBuZXcgbGlzdGVuIHNvY2tldCBpZiBuZWVkZWQgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzU5NTpzdGF0aWMgc3RydWN0IHZ4bGFuX3NvY2sgKnZ4bGFuX3NvY2tldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBib29sIGlwdjYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1OTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgX19iZTE2IHBvcnQsIHUzMiBmbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjQ4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjQ5OnN0YXRpYyBpbnQgX192eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgYm9vbCBpcHY2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjk3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjk4OnN0YXRpYyBpbnQgdnhsYW5fc29ja19hZGQoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3MjAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM3MjE6aW50IHZ4bGFuX3ZuaV9pbl91c2Uoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3MjItXFx0XFx0ICAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3NTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM3NTI6c3RhdGljIGludCB2eGxhbl9jb25maWdfdmFsaWRhdGUoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IHZ4bGFuX2NvbmZpZyAqY29uZixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzc1My1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKipsb3dlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTAzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozOTA0OnN0YXRpYyB2b2lkIHZ4bGFuX2NvbmZpZ19hcHBseShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTA1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NjAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM5NjE6c3RhdGljIGludCB2eGxhbl9kZXZfY29uZmlndXJlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NjItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzk3Ny1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mzk3ODpzdGF0aWMgaW50IHZ4bGFuX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTc5LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNDYtLyogU2V0L2NsZWFyIGZsYWdzIGJhc2VkIG9uIGF0dHJpYnV0ZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0MDQ3OnN0YXRpYyBpbnQgdnhsYW5fbmwyZmxhZyhzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MDQ4LVxcdFxcdFxcdCAgaW50IGF0dHJ0eXBlLCB1bnNpZ25lZCBsb25nIG1hc2ssIGJvb2wgY2hhbmdlbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MDczLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0MDc0OnN0YXRpYyBpbnQgdnhsYW5fbmwyY29uZihzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNzUtXFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQxMy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDQxNDpzdGF0aWMgaW50IHZ4bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQxNS1cXHRcXHRcXHQgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDMwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NDMxOnN0YXRpYyBpbnQgdnhsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDMyLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyOC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUyOTpzdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1NDEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1NDI6c3RhdGljIHNpemVfdCB2eGxhbl9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTc5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NTgwOnN0YXRpYyBpbnQgdnhsYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ2ODktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ2OTA6c3RhdGljIHN0cnVjdCBuZXQgKnZ4bGFuX2dldF9saW5rX25ldChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00Njk3PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGxhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3MTI6c3RhdGljIHZvaWQgdnhsYW5faGFuZGxlX2xvd2VyZGV2X3VucmVnaXN0ZXIoc3RydWN0IHZ4bGFuX25ldCAqdm4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MTMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MzMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3MzQ6c3RhdGljIGludCB2eGxhbl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MzUtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NzU0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3NTU6dnhsYW5fZmRiX29mZmxvYWRlZF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc1Ni1cXHRcXHRcXHRzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NzgxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc4Mjp2eGxhbl9mZGJfZXh0ZXJuYWxfbGVhcm5fYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3ODMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00ODA2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDgwNzp2eGxhbl9mZGJfZXh0ZXJuYWxfbGVhcm5fZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ4MDgtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00ODMyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0ODMzOnN0YXRpYyBpbnQgdnhsYW5fc3dpdGNoZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00ODM0LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDg2OT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZ4bGFuX3N3aXRjaGRldl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ4NzItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ4NzM6c3RhdGljIHZvaWQgdnhsYW5fZmRiX25oX2ZsdXNoKHN0cnVjdCBuZXh0aG9wICpuaClcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MzguNDAxMjY3NThaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ1NjgzMDAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVlhMQU4gYW5kIElQdjYgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgVlhMQU4uIExvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLCBpdCdzIGNsZWFyIHRoYXQgYFZYTEFOYCBkZXBlbmRzIG9uIGBJTkVUYCBhbmQgc2VsZWN0cyBib3RoIGBORVRfVURQX1RVTk5FTGAgYW5kIGBHUk9fQ0VMTFNgLiBHb29kLCBzdGFuZGFyZCBzdHVmZi5cblxuTm93LCBJIHNlZSB0aGF0IHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBmdW5jdGlvbiwgY3JpdGljYWwgaGVyZSwgaXMgZ3VhcmRlZCBieSBgI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpYCBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gIFRoZXJlZm9yZSwgZW5hYmxpbmcgdGhlIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBjcmVhdGlvbiBwYXRoIHJlcXVpcmVzIGJvdGggYElQVjZgIGFuZCBgVlhMQU5gIHRvIGJlIGVuYWJsZWQsIGluIGFkZGl0aW9uIHRvIGBJTkVUYC4gWXVwLCBgSVBWNmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIHdlJ3JlIGdvb2QgdGhlcmUuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGFmZmVjdGVkIHN5bWJvbHMuIEknbSBmb2N1c2luZyBvbiBgdnhsYW5feG1pdGAsIGJlY2F1c2UgdGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBwYWNrZXQgdHJhbnNtaXQgaGFuZGxlciwgYW5kIEkgY2FuIHNlZSBob3cgaXQgcm91dGVzIHRocm91Z2ggYG5laWdoX3JlZHVjZWAgYW5kIHRoZW4gb24gdG8gYHZ4bGFuX25hX2NyZWF0ZWAuIEFsc28gd2FudCB0byByZW1lbWJlciBgdnhsYW5feG1pdF9vbmVgLiBQZXJoYXBzIEkgYWxzbyBzaG91bGQgbm90ZSBgdnhsYW5fZmRiX2NyZWF0ZWAsIGFuZCBgdnhsYW5fcmN2YC5cblxuQWxyaWdodCwgbGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgSU5FVGAsIGBJUFY2YCwgYW5kIGBWWExBTmAuIE1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIENvbmZpcm1lZC4gYFZYTEFOYCBuZWVkcyBgSU5FVGAgYW5kIHNlbGVjdHMgYE5FVF9VRFBfVFVOTkVMYCBhbmQgYEdST19DRUxMU2AuIFNvIHRoYXQgc29saWRpZmllcyBgVlhMQU5gLCBgSU5FVGAsIGFuZCBgSVBWNmAuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNyYWZ0IHRoZSBgc2V0LXJlc3VsdHNgIHBhcmFtZXRlcnMuXG5cbiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSB0cnVlLlxuKiAgIGBSZWFzb25pbmdgOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGhlYWRyb29tIGNhbGN1bGF0aW9ucyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiB0aGUgVlhMQU4gZHJpdmVyIHRvIGVuc3VyZSByZXNlcnZlZCBzcGFjZSBtYXRjaGVzIGFsbG9jYXRlZCBoZWFkcm9vbSBmb3IgSVB2NiBuZWlnaGJvciBhZHZlcnRpc2VtZW50cy4gVGhpcyBpcyBpbiBjb3JlIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIlZYTEFOXCIsIFwiSU5FVFwiLCBcIklQVjZcIl1gIOKAkyB0aGF0IHNob3VsZCBiZSBjb21wcmVoZW5zaXZlLlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBJJ2xsIHVzZSBgW1widnhsYW5feG1pdFwiLCBcInZ4bGFuX3htaXRfb25lXCJdYC4gSSBjb3VsZCBhbHNvIGNvbnNpZGVyIGFkZGluZyBgdnhsYW5fcmN2YCwgYnV0IEknbGwgc3RpY2sgd2l0aCB0aGVzZSBmb3Igbm93LCBhbmQga2VlcCB0aGUgb3RoZXJzIGluIG1pbmQuXG5cbkEgcXVpY2sgZmluYWwgc2FuaXR5IGNoZWNrLi4uIFl1cCwgbG9va3Mgc291bmQuIFRpbWUgdG8gcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUzMzIsIk91dHB1dFRva2VucyI6MTA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQyLjg1ODA5OTc5OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzYyNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3htaXRcIixcbiAgICBcInZ4bGFuX3htaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3htaXRcIixcbiAgICBcInZ4bGFuX3htaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6NDIuOTI4ODY3MjQ4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM4NjQwNDg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQyLjkyOTI2ODIwOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE2Mzg1OTk5NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNzczNzk4OGQ3M2Q1NTcwZTEzZTg3NjAxZDQ0NTRmNjYwYTVmYmI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDY6Mzc6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbmluZGV4IDQ1OWYxOWY3MDcxZTUuLmU1YTkyZDMwMTEzYzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuQEAgLTE5NDcsMTMgKzE5NDcsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXG4gXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcbiBcdHU4ICpkYWRkcjtcbiBcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciArIEVUSF9BTEVOIGZvciB0YXJnZXQgKi9cbitcdGludCBoZWFkcm9vbTtcbiBcdGludCBuc19vbGVuO1xuIFx0aW50IGksIGxlbjtcbiBcbiBcdGlmIChkZXYgPT0gTlVMTCB8fCAhcHNrYl9tYXlfcHVsbChyZXF1ZXN0LCByZXF1ZXN0LVx1MDAzZWxlbikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0bGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xuK1x0aGVhZHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuK1x0bGVuID0gaGVhZHJvb20gKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICtcbiBcdFx0c2l6ZW9mKCpuYSkgKyBuYV9vbGVuICsgZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdHJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4gXHRpZiAocmVwbHkgPT0gTlVMTClcbkBAIC0xOTYxLDcgKzE5NjMsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbiBcbiBcdHJlcGx5LVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XG4gXHRyZXBseS1cdTAwM2VkZXYgPSBkZXY7XG4tXHRza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC1cdTAwM2VkZXYpKTtcbitcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XG4gXHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcbiBcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHJlcGx5KTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQyLjkyOTI2OTA1OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDM3MjQ0NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gTkEgQ3JlYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGRpZmYgYWdhaW5zdCBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYCBhbmQgdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyB3aXRoaW4gdGhlIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5pcHVsYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIE5ldHdvcmsgQWRkcmVzcyAoTkEpIGNyZWF0aW9uIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLlxuXG5UaGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgcmVxdWlyZWQgYnVmZmVyIGxlbmd0aCAoYGxlbmApIGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSByZXBseSBgc2tfYnVmZmAuIEJlZm9yZSwgdGhlIGNhbGN1bGF0aW9uIHdhcyBhIHNpbXBsZSBhZGRpdGlvbjogYExMX1JFU0VSVkVEX1NQQUNFKGRldikgKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICsgLi4uYC4gTm93LCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBhIGBoZWFkcm9vbWAgdmFyaWFibGU6XG5cbmBgYGNcblx0aGVhZHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuXHRsZW4gPSBoZWFkcm9vbSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgKyAuLi5cbmBgYFxuXG5hbmQgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9yZXNlcnZlYCBjYWxsIG5vdyB1c2VzIHRoaXMgYGhlYWRyb29tYCB2YXJpYWJsZTpcblxuYGBgY1xuXHRza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pO1xuYGBgXG5cbk15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgY2hhbmdlIGlzIGFib3V0IG9wdGltaXppbmcgb3IgbWFraW5nIHRoZSBoZWFkcm9vbSByZXNlcnZhdGlvbiBtb3JlIGV4cGxpY2l0IGZvciB0aGUgYHJlcGx5YCBza19idWZmLiAgVGhlIHByZXZpb3VzIGltcGxpY2l0IHVzZSBvZiBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgZm9yIGJvdGggYGxlbmAgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZWAgbWlnaHQgaGF2ZSBiZWVuIHN1YnRsZSBvciBsZXNzIGNsZWFyIHRoYW4gYXNzaWduaW5nIGl0IHRvIGEgc2VwYXJhdGUgYGhlYWRyb29tYCB2YXJpYWJsZS4gIEkgbmVlZCB0byBjb25maXJtIGlmIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBkb2VzIHdoYXQgSSB0aGluayBpdCBkb2VzIC0gcmV0dXJucyB0aGUgbGluayBsYXllciBoZWFkZXIgbGVuZ3RoIHBsdXMgYW55IG90aGVyIHJlc2VydmVkIHNwYWNlIGZvciBhIGdpdmVuIGRldmljZS4gVGhlIGNoYW5nZSBzZWVtcyB0byBtYWtlIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgYnkgZXhwbGljaXRseSBzaG93aW5nIHRoZSBgaGVhZHJvb21gIGFsbG9jYXRpb24sIHdoaWNoIGlzIGEgZ29vZCBwcmFjdGljZS4gTm8gc2lnbmlmaWNhbnQgY2hhbmdlIGluIHRoZSBvdmVyYWxsIHNpemUgY2FsY3VsYXRpb24gaXMgb2JzZXJ2ZWQgZnJvbSB0aGUgcGF0Y2ggaXRzZWxmLCBidXQgSSB3YW50IHRvIGVuc3VyZSB0aGlzIGlzbid0IGEgcHJlLWVtcHRpdmUgbWVhc3VyZSBmb3IgYSBsYXJnZXIgY2hhbmdlLlxuXG5UbyBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byBrZWVwIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIGluIG1pbmQsIGFuZCBhbHNvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYGhlYWRyb29tYCBhbmQgdGhlIGFzc29jaWF0ZWQgYExMX1JFU0VSVkVEX1NQQUNFYCBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCBvdGhlciBmdW5jdGlvbnMgdXNlZC4gVGhlIGNvbnRleHQgb2YgbmV0d29yayBhZGRyZXNzIGNyZWF0aW9uIGlzIGFsc28gaW1wb3J0YW50IC0gd2h5IGFyZSB3ZSB1c2luZyBJUHY2IGluIHRoaXMgY29udGV4dD8gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBwb3NzaWJseSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0byBjb25maXJtIHRoZSByZWFzb24gYW5kIGZ1bGx5IHZhbGlkYXRlIHRoYXQgdGhpcyBzZWVtaW5nbHkgc21hbGwgY2hhbmdlIGlzIGluZGVlZCBzYWZlIGFuZCBlZmZlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODo0OS4zNjY1MTU4NDVaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTQwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTQwOlxcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbjE5NDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcXG4xOTQyOlxcdFxcdFxcdFxcdFxcdCAgICAgICBib29sIGlzcm91dGVyKVxcbjE5NDM6XFx0e1xcbjE5NDQ6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHJlcXVlc3QtXFx1MDAzZWRldjtcXG4xOTQ1OlxcdFxcdHN0cnVjdCBza19idWZmICpyZXBseTtcXG4xOTQ2OlxcdFxcdHN0cnVjdCBuZF9tc2cgKm5zLCAqbmE7XFxuMTk0NzpcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcXG4xOTQ4OlxcdFxcdHU4ICpkYWRkcjtcXG4xOTQ5OlxcdFxcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciArIEVUSF9BTEVOIGZvciB0YXJnZXQgKi9cXG4xOTUwOlxcdFxcdGludCBoZWFkcm9vbTtcXG4xOTUxOlxcdFxcdGludCBuc19vbGVuO1xcbjE5NTI6XFx0XFx0aW50IGksIGxlbjtcXG4xOTUzOlxcdFxcbjE5NTQ6XFx0XFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXFx1MDAzZWxlbikpXFxuMTk1NTpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4xOTU2OlxcdFxcbjE5NTc6XFx0XFx0aGVhZHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbjE5NTg6XFx0XFx0bGVuID0gaGVhZHJvb20gKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICtcXG4xOTU5OlxcdFxcdFxcdHNpemVvZigqbmEpICsgbmFfb2xlbiArIGRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xcbjE5NjA6XFx0XFx0cmVwbHkgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4xOTYxOlxcdFxcdGlmIChyZXBseSA9PSBOVUxMKVxcbjE5NjI6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuMTk2MzpcXHRcXG4xOTY0OlxcdFxcdHJlcGx5LVxcdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpO1xcbjE5NjU6XFx0XFx0cmVwbHktXFx1MDAzZWRldiA9IGRldjtcXG4xOTY2OlxcdFxcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XFxuMTk2NzpcXHRcXHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcXG4xOTY4OlxcdFxcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHJlcGx5KTtcXG4xOTY5OlxcdFxcbjE5NzA6XFx0XFx0bnMgPSAoc3RydWN0IG5kX21zZyAqKShpcHY2X2hkcihyZXF1ZXN0KSArIDEpO1xcbjE5NzE6XFx0XFxuMTk3MjpcXHRcXHRkYWRkciA9IGV0aF9oZHIocmVxdWVzdCktXFx1MDAzZWhfc291cmNlO1xcbjE5NzM6XFx0XFx0bnNfb2xlbiA9IHJlcXVlc3QtXFx1MDAzZWxlbiAtIHNrYl9uZXR3b3JrX29mZnNldChyZXF1ZXN0KSAtXFxuMTk3NDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGlwdjZoZHIpIC0gc2l6ZW9mKCpucyk7XFxuMTk3NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnNfb2xlbi0xOyBpICs9IChucy1cXHUwMDNlb3B0W2krMV1cXHUwMDNjXFx1MDAzYzMpKSB7XFxuMTk3NjpcXHRcXHRcXHRpZiAoIW5zLVxcdTAwM2VvcHRbaSArIDFdIHx8IGkgKyAobnMtXFx1MDAzZW9wdFtpICsgMV0gXFx1MDAzY1xcdTAwM2MgMykgXFx1MDAzZSBuc19vbGVuKSB7XFxuMTk3NzpcXHRcXHRcXHRcXHRrZnJlZV9za2IocmVwbHkpO1xcbjE5Nzg6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuMTk3OTpcXHRcXHRcXHR9XFxuMTk4MDpcXHRcXHRcXHRpZiAobnMtXFx1MDAzZW9wdFtpXSA9PSBORF9PUFRfU09VUkNFX0xMX0FERFIpIHtcXG4xOTgxOlxcdFxcdFxcdFxcdGlmICgobnMtXFx1MDAzZW9wdFtpICsgMV0gXFx1MDAzY1xcdTAwM2MgMykgXFx1MDAzZT1cXG4xOTgyOlxcdFxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpICsgRVRIX0FMRU4pXFxuMTk4MzpcXHRcXHRcXHRcXHRcXHRkYWRkciA9IG5zLVxcdTAwM2VvcHQgKyBpICsgc2l6ZW9mKHN0cnVjdCBuZF9vcHRfaGRyKTtcXG4xOTg0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE5ODU6XFx0XFx0XFx0fVxcbjE5ODY6XFx0XFx0fVxcbjE5ODc6XFx0XFxuMTk4ODpcXHRcXHQvKiBFdGhlcm5ldCBoZWFkZXIgKi9cXG4xOTg5OlxcdFxcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cXHUwMDNlaF9kZXN0LCBkYWRkcik7XFxuMTk5MDpcXHRcXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihyZXBseSktXFx1MDAzZWhfc291cmNlLCBoYSk7XFxuMTk5MTpcXHRcXHRldGhfaGRyKHJlcGx5KS1cXHUwMDNlaF9wcm90byA9IGh0b25zKEVUSF9QX0lQVjYpO1xcbjE5OTI6XFx0XFx0cmVwbHktXFx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XFxuMTk5MzpcXHRcXG4xOTk0OlxcdFxcdHNrYl9wdWxsKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbjE5OTU6XFx0XFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHJlcGx5KTtcXG4xOTk2OlxcdFxcdHNrYl9wdXQocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbjE5OTc6XFx0XFxuMTk5ODpcXHRcXHQvKiBJUHY2IGhlYWRlciAqL1xcbjE5OTk6XFx0XFxuMjAwMDpcXHRcXHRwaXA2ID0gaXB2Nl9oZHIocmVwbHkpO1xcbjIwMDE6XFx0XFx0bWVtc2V0KHBpcDYsIDAsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbjIwMDI6XFx0XFx0cGlwNi1cXHUwMDNldmVyc2lvbiA9IDY7XFxuMjAwMzpcXHRcXHRwaXA2LVxcdTAwM2Vwcmlvcml0eSA9IGlwdjZfaGRyKHJlcXVlc3QpLVxcdTAwM2Vwcmlvcml0eTtcXG4yMDA0OlxcdFxcdHBpcDYtXFx1MDAzZW5leHRoZHIgPSBJUFBST1RPX0lDTVBWNjtcXG4yMDA1OlxcdFxcdHBpcDYtXFx1MDAzZWhvcF9saW1pdCA9IDI1NTtcXG4yMDA2OlxcdFxcdHBpcDYtXFx1MDAzZWRhZGRyID0gaXB2Nl9oZHIocmVxdWVzdCktXFx1MDAzZXNhZGRyO1xcbjIwMDc6XFx0XFx0cGlwNi1cXHUwMDNlc2FkZHIgPSAqKHN0cnVjdCBpbjZfYWRkciAqKW4tXFx1MDAzZXByaW1hcnlfa2V5O1xcbjIwMDg6XFx0XFxuMjAwOTpcXHRcXHRza2JfcHVsbChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQ5LjM2Njc3OTUwNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTY0ODE4NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFByb2JsZW1hdGljIENvZGUgU25pcHBldCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29kZSdzIGxvZ2ljLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBwYXJ0aWN1bGFyIGxpbmU6IGBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcmVxdWVzdC1cdTAwM2VkZXY7YCBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gSG93ZXZlciwgSSBuZWVkIHRvIGtub3cgdGhlIG9yaWdpbiBvZiB0aGUgdmFyaWFibGUgYGRldmAuIFdoZXJlIHdhcyBpdCBpbml0aWFsaXplZD8gSSdtIHNlZWluZyBpdCByaWdodCBoZXJlIG9uIGxpbmUgMTk0NC4gKkJ1dCogSSdtIGFsd2F5cyBjYXV0aW91cyBhYm91dCBhc3N1bXB0aW9ucy4gVGhpcyBkaXJlY3QgYXNzaWdubWVudCBtYWtlcyBtZSBhIGxpdHRsZSB1bmVhc3kg4oCTIGlzIHRoZXJlIGEgY2hhbmNlIGBkZXZgIGlzbid0IHdoYXQgSSBleHBlY3QgaXQgdG8gYmUsIHBhcnRpY3VsYXJseSBpZiBpdHMgdmFsdWUgaXMgYWx0ZXJlZCBvdXRzaWRlIHRoaXMgaW1tZWRpYXRlIGZ1bmN0aW9uP1xuXG5JIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGNhbGxlciBvZiBgdnhsYW5fbmFfY3JlYXRlYCB0byBlbnN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhIGNyaXRpY2FsIHBvaW50LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBob3cgYHJlcXVlc3QtXHUwMDNlZGV2YCBpcyBiZWluZyBwYXNzZWQgdG8gc2VlIGlmIGBkZXZgIGNvdWxkIGJlIGFsdGVyZWQgb3IgY2hhbmdlZCBpbiBhIHdheSB0aGF0IEkgc2hvdWxkIHVuZGVyc3RhbmQuIEEgZGVlcGVyIGRpdmUgaXMgaW4gb3JkZXIgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEknbGwgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSBpZiBhbnl0aGluZyBpcyBzdWJ0bHkgYWZmZWN0aW5nIHRoZSBgZGV2YCB2YWx1ZS4gVGhpcyBpcyBhIHBvdGVudGlhbCBidWcgb3IgcGVyZm9ybWFuY2UgaXNzdWUgaG90c3BvdCwgc28gSSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDM0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODo1My4zMzE2MDA2NTJaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX25hX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTE4NDI9c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTkzOS0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTk0MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTk0MS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5laWdoYm91ciAqbiwgdTggKmhhLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIwMzY9c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDc4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMDc5OlxcdFxcdHJlcGx5ID0gdnhsYW5fbmFfY3JlYXRlKHNrYiwgbiwgaGEsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwODAtXFx0XFx0XFx0XFx0XFx0ISEoZiA/IGYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTlRGX1JPVVRFUiA6IDApKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6NTMuMzc1MDc4NTIyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NDAxNzA0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgYSBOZXR3b3JrIFNLQiBIZWFkcm9vbSBDYWxjdWxhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgY29kZSBjaGFuZ2UuIFByZXZpb3VzbHksIHdlIGNhbGN1bGF0ZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2tiIGFsbG9jYXRpb24gdXNpbmcgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIHR3aWNlOiBvbmNlIGRpcmVjdGx5IGFuZCBhZ2FpbiB0aHJvdWdoIGByZXF1ZXN0LVx1MDAzZWRldmAuIE5vdywgdGhpcyByZWR1bmRhbmN5IGhhcyBiZWVuIGNsZWFuZWQgdXAgYnkgc3RvcmluZyB0aGUgdmFsdWUgaW4gYSB0ZW1wb3JhcnkgdmFyaWFibGUsIGBoZWFkcm9vbWAuIFRoaXMgc2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBmb3IgY2xhcml0eSBhbmQgcG9zc2libHkgcGVyZm9ybWFuY2UsIGF2b2lkaW5nIHJlZHVuZGFudCBmdW5jdGlvbiBjYWxscy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgaXNzdWVzLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIEknbSBsb29raW5nIGZvciBhbnkgY2FzZSB3aGVyZSB0aGUgcmVmYWN0b3JpbmcgbWlnaHQgYWx0ZXIgbWVtb3J5IGFjY2VzcyBwYXR0ZXJucyBvciBpbnRyb2R1Y2UgbmV3IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBMZXQncyBzZWUuLi4gd2UncmUgY2FsY3VsYXRpbmcgYGhlYWRyb29tYCBhbmQgdGhlbiB1c2luZyBpdCBjb25zaXN0ZW50bHkgdGhyb3VnaG91dCB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIFRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZS4gYHJlcGx5YCBpcyBjb3JyZWN0bHkgYWxsb2NhdGVkIHdpdGggYGFsbG9jX3NrYmAsIGFuZCB0aGUgZXRoZXJuZXQgaGVhZGVyLCBJUHY2IGhlYWRlciwgYW5kIE5EIG1lc3NhZ2UgYXJlIHdyaXR0ZW4gdG8gaXQuIFRoZSBrZXkgaXMgdGhhdCBgZGV2YCBhbmQgYHJlcXVlc3QtXHUwMDNlZGV2YCBhcmUgdGhlIHNhbWUgZGV2aWNlLCBzbyB0aGUgY2FsY3VsYXRlZCBoZWFkcm9vbSBpcyBjb25zaXN0ZW50LlxuXG5MZXQncyBkbyBhIG1vcmUgdGhvcm91Z2ggY2hlY2s6XG5cbiogICBObyBzdHJ1Y3RzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbjsgd2UncmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUga2VybmVsLlxuKiAgIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIGlzIHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFzIGlucHV0LlxuKiAgIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBsZWZ0IHVuaW5pdGlhbGl6ZWQuXG4qICAgTm8gaW5mb3JtYXRpb24gbGVha3MsIGFuZCB0aGUgYm91bmRzIGFyZW4ndCBjaGFuZ2VkIGluIGEgd2F5IHRoYXQgd291bGQgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIGJ5dGVzLlxuXG5UaGlzIHNlZW1zIGxpa2UgYSBwdXJlbHkgY29zbWV0aWMgY2hhbmdlLCBvciBtYXliZSBhIG1pbm9yIG9wdGltaXphdGlvbiB0aGF0IGlzIGFsc28gbW9yZSByZWFkYWJsZS4gTm8gS01TQU4gcmlza3MgYXJlIGludm9sdmVkLCBhcyBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGluaXRpYWxpemVkLiBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHNhZmUgcmVmYWN0b3JpbmcuXG5cbkdpdmVuIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBjb3JlIG9mIHRoaXMgYXNzZXNzbWVudCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBvciBleHBvc2VzIGFueSAqdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCBvbmx5IGJlIGRldGVjdGVkIGJ5IEtNU0FOKi4gS0FTQU4sIExvY2tEZXAsIGFuZCB0aGUgb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgZW5vdWdoIGZvciBoZXJlLiBUaGlzIGlzIG5vdCB0aGUgY2FzZS5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBgZmFsc2VgLiBJIGNhbiBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGF0LCBhbG9uZyB3aXRoIGEgY2xlYXIgZXhwbGFuYXRpb24gdGhhdCBjb250cmFzdHMgdGhlIHJvbGUgYW5kIGJlbmVmaXRzIG9mIEtNU0FOIGFuZCBLQVNBTiBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyOSwiT3V0cHV0VG9rZW5zIjoxNjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6NTkuMzE1MjUwODU3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 05:54:11 +0000 UTC FinishedAt: 2026-08-31 06:39:00 +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": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "INET", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "INET", "IPV6" ], "series_id": "e87c6cbe-d57c-4707-9d6d-70a150d7fa09" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_xmit", "vxlan_xmit_one" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX3htaXQmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cdTAwM2VkZXZgLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5vIGNoYW5nZSBpbiBydW50aW1lIHZhbHVlcywgbWVtb3J5IGxheW91dCwgYnVmZmVyIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcHlpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgaGVhZHJvb20gY2FsY3VsYXRpb24gYW5kIHJlc2VydmF0aW9uIGluIHZ4bGFuX25hX2NyZWF0ZSgpIHdoZW4gY29uc3RydWN0aW5nIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBwYWNrZXRzIGluIHRoZSBWWExBTiBkcml2ZXIuIFRoaXMgdmlydHVhbCBuZXR3b3JraW5nIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVlhMQU4gcHJveHkgbW9kZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTc3Mzc5ODhkNzNkNTU3MGUxM2U4NzYwMWQ0NDU0ZjY2MGE1ZmJiNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA2OjM3OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuaW5kZXggNDU5ZjE5ZjcwNzFlNS4uZTVhOTJkMzAxMTNjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5AQCAtMTk0NywxMyAmIzQzOzE5NDcsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXG4gXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcbiBcdHU4ICpkYWRkcjtcbiBcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciAmIzQzOyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovXG4mIzQzO1x0aW50IGhlYWRyb29tO1xuIFx0aW50IG5zX29sZW47XG4gXHRpbnQgaSwgbGVuO1xuIFxuIFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXHUwMDNlbGVuKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MztcbiYjNDM7XHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4mIzQzO1x0bGVuID0gaGVhZHJvb20gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzO1xuIFx0XHRzaXplb2YoKm5hKSAmIzQzOyBuYV9vbGVuICYjNDM7IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4gXHRyZXBseSA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIFx0aWYgKHJlcGx5ID09IE5VTEwpXG5AQCAtMTk2MSw3ICYjNDM7MTk2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuIFxuIFx0cmVwbHktXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcbiBcdHJlcGx5LVx1MDAzZWRldiA9IGRldjtcbi1cdHNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldikpO1xuJiM0MztcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XG4gXHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcbiBcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHJlcGx5KTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl94bWl0JiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBoZWFkcm9vbSBjYWxjdWxhdGlvbiBhbmQgcmVzZXJ2YXRpb24gaW4gdnhsYW5fbmFfY3JlYXRlKCkgd2hlbiBjb25zdHJ1Y3RpbmcgSVB2NiBOZWlnaGJvciBBZHZlcnRpc2VtZW50IHBhY2tldHMgaW4gdGhlIFZYTEFOIGRyaXZlci4gVGhpcyB2aXJ0dWFsIG5ldHdvcmtpbmcgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWWExBTiBwcm94eSBtb2RlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNzczNzk4OGQ3M2Q1NTcwZTEzZTg3NjAxZDQ0NTRmNjYwYTVmYmI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDY6Mzc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMKaW5kZXggNDU5ZjE5ZjcwNzFlNS4uZTVhOTJkMzAxMTNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwpAQCAtMTk0NywxMyAmIzQzOzE5NDcsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsCiAJc3RydWN0IGlwdjZoZHIgKnBpcDY7CiAJdTggKmRhZGRyOwogCWludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciAmIzQzOyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovCiYjNDM7CWludCBoZWFkcm9vbTsKIAlpbnQgbnNfb2xlbjsKIAlpbnQgaSwgbGVuOwogCiAJaWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtJmd0O2xlbikpCiAJCXJldHVybiBOVUxMOwogCi0JbGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICYjNDM7CiYjNDM7CWhlYWRyb29tID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTsKJiM0MzsJbGVuID0gaGVhZHJvb20gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzOwogCQlzaXplb2YoKm5hKSAmIzQzOyBuYV9vbGVuICYjNDM7IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwogCXJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7CiAJaWYgKHJlcGx5ID09IE5VTEwpCkBAIC0xOTYxLDcgJiM0MzsxOTYzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsCiAKIAlyZXBseS0mZ3Q7cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTsKIAlyZXBseS0mZ3Q7ZGV2ID0gZGV2OwotCXNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LSZndDtkZXYpKTsKJiM0MzsJc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTsKIAlza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTsKIAlza2JfcmVzZXRfbWFjX2hlYWRlcihyZXBseSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDUyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZYTEFOIE5laWdoYm9yIEFkdmVydGlzZW1lbnQgQ3JlYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJJiMzOTttIGxvb2tpbmcgYXQgYHZ4bGFuX25hX2NyZWF0ZWAgd2l0aGluIGB2eGxhbl9jb3JlLmNgIOKAkyBzZWVtcyBsaWtlIHdlJiMzOTtyZSBvcHRpbWl6aW5nIHRoZSBjcmVhdGlvbiBvZiBOZWlnaGJvciBBZHZlcnRpc2VtZW50IChOQSkgcGFja2V0cyB3aXRoaW4gdGhlIFZYTEFOIGRyaXZlci4gVGhlIGRpZmYgaXRzZWxmIGlzIHJlbGF0aXZlbHkgZm9jdXNlZCwgc28gSSB0aGluayBJIGNhbiB1bmRlcnN0YW5kIGl0IGZhaXJseSBxdWlja2x5LgoKVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIGBza19idWZmYCBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBOQSByZXBseS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBhZGp1c3RpbmcgdGhlIGNhbGN1bGF0aW9uIG9mIGBsZW5gIHBhc3NlZCBpbnRvIGBhbGxvY19za2IoKWAuIFRoZSBvcmlnaW5hbCBjb2RlIGFwcGVhcnMgdG8gaGF2ZSBoYWQgYSBzbGlnaHRseSBvZmYgY2FsY3VsYXRpb24gZm9yIHRoZSBidWZmZXIgc2l6ZSwgYW5kIHRoaXMgcGF0Y2ggYWltcyB0byBjb3JyZWN0IGl0IGJ5IGV4cGxpY2l0bHkgY2FsY3VsYXRpbmcgYGhlYWRyb29tYC4gVGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgY2FsY3VsYXRlcyBhbmQgc2V0cyB0aGUgYGhlYWRyb29tYCByZXF1aXJlZCB1c2luZyBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAsIHdoaWNoIGlzIHRoZW4gdXNlZCB3aGVuIGFsbG9jYXRpbmcgYW5kIHJlc2VydmluZyB0aGUgYHNrYmAuIFRoYXQgc2hvdWxkIGZpeCB0aGUgaXNzdWUhIFRoZSB1cGRhdGVkIGBsZW5gIGFsc28gaW5jb3Jwb3JhdGVzIHRoZSBJUHY2IGhlYWRlciwgTkEgc3RydWN0dXJlLCBvcHRpb24gaGVhZGVycywgRXRoZXJuZXQgYWRkcmVzcyBhbmQgdGFpbHJvb20sIGFsbCBjcml0aWNhbCB0byB0aGUgcGFja2V0JiMzOTtzIGZvcm1hdC4KCkl0JiMzOTtzIGEgZ29vZCBwcmFjdGljZSB0byBkb3VibGUtY2hlY2sgdGhlc2UgY2FsY3VsYXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGJ1ZmZlciBhbGxvY2F0aW9uIGluIG5ldHdvcmsgZHJpdmVycy4gSW5jb3JyZWN0IGJ1ZmZlciBzaXppbmcgY2FuIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGlzc3VlcywgZnJvbSBidWZmZXIgb3ZlcmZsb3dzIHRvIHBhY2tldCBjb3JydXB0aW9uIGFuZCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi4gU28sIEkgc2VlIHRoZSBjaGFuZ2UgYW5kIGFtIGluIGFncmVlbWVudCB3aXRoIGl0LiBMb29rcyBsaWtlIGEgc29saWQgZml4IHRvIGFkZHJlc3MgYSBzdWJ0bGUgcG90ZW50aWFsIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxOTMwOlx0XHRcdH07XG4xOTMxOlx0XG4xOTMyOlx0XHRcdHZ4bGFuX2lwX21pc3MoZGV2LCBcdTAwMjZpcGEpO1xuMTkzMzpcdFx0fVxuMTkzNDpcdG91dDpcbjE5MzU6XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4xOTM2Olx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuMTkzNzpcdH1cbjE5Mzg6XHRcbjE5Mzk6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbjE5NDA6XHRzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbjE5NDE6XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXG4xOTQyOlx0XHRcdFx0XHQgICAgICAgYm9vbCBpc3JvdXRlcilcbjE5NDM6XHR7XG4xOTQ0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcmVxdWVzdC1cdTAwM2VkZXY7XG4xOTQ1Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqcmVwbHk7XG4xOTQ2Olx0XHRzdHJ1Y3QgbmRfbXNnICpucywgKm5hO1xuMTk0NzpcdFx0c3RydWN0IGlwdjZoZHIgKnBpcDY7XG4xOTQ4Olx0XHR1OCAqZGFkZHI7XG4xOTQ5Olx0XHRpbnQgbmFfb2xlbiA9IDg7IC8qIG9wdCBoZHIgJiM0MzsgRVRIX0FMRU4gZm9yIHRhcmdldCAqL1xuMTk1MDpcdFx0aW50IGhlYWRyb29tO1xuMTk1MTpcdFx0aW50IG5zX29sZW47XG4xOTUyOlx0XHRpbnQgaSwgbGVuO1xuMTk1MzpcdFxuMTk1NDpcdFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXHUwMDNlbGVuKSlcbjE5NTU6XHRcdFx0cmV0dXJuIE5VTEw7XG4xOTU2Olx0XG4xOTU3Olx0XHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4xOTU4Olx0XHRsZW4gPSBoZWFkcm9vbSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICYjNDM7XG4xOTU5Olx0XHRcdHNpemVvZigqbmEpICYjNDM7IG5hX29sZW4gJiM0MzsgZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbjE5NjA6XHRcdHJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4xOTYxOlx0XHRpZiAocmVwbHkgPT0gTlVMTClcbjE5NjI6XHRcdFx0cmV0dXJuIE5VTEw7XG4xOTYzOlx0XG4xOTY0Olx0XHRyZXBseS1cdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpO1xuMTk2NTpcdFx0cmVwbHktXHUwMDNlZGV2ID0gZGV2O1xuMTk2NjpcdFx0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcbjE5Njc6XHRcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuMTk2ODpcdFx0c2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpO1xuMTk2OTpcdFxuMTk3MDpcdFx0bnMgPSAoc3RydWN0IG5kX21zZyAqKShpcHY2X2hkcihyZXF1ZXN0KSAmIzQzOyAxKTtcbjE5NzE6XHRcbjE5NzI6XHRcdGRhZGRyID0gZXRoX2hkcihyZXF1ZXN0KS1cdTAwM2VoX3NvdXJjZTtcbjE5NzM6XHRcdG5zX29sZW4gPSByZXF1ZXN0LVx1MDAzZWxlbiAtIHNrYl9uZXR3b3JrX29mZnNldChyZXF1ZXN0KSAtXG4xOTc0Olx0XHRcdHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgLSBzaXplb2YoKm5zKTtcbjE5NzU6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5zX29sZW4tMTsgaSAmIzQzOz0gKG5zLVx1MDAzZW9wdFtpJiM0MzsxXVx1MDAzY1x1MDAzYzMpKSB7XG4xOTc2Olx0XHRcdGlmICghbnMtXHUwMDNlb3B0W2kgJiM0MzsgMV0gfHwgaSAmIzQzOyAobnMtXHUwMDNlb3B0W2kgJiM0MzsgMV0gXHUwMDNjXHUwMDNjIDMpIFx1MDAzZSBuc19vbGVuKSB7XG4xOTc3Olx0XHRcdFx0a2ZyZWVfc2tiKHJlcGx5KTtcbjE5Nzg6XHRcdFx0XHRyZXR1cm4gTlVMTDtcbjE5Nzk6XHRcdFx0fVxuMTk4MDpcdFx0XHRpZiAobnMtXHUwMDNlb3B0W2ldID09IE5EX09QVF9TT1VSQ0VfTExfQUREUikge1xuMTk4MTpcdFx0XHRcdGlmICgobnMtXHUwMDNlb3B0W2kgJiM0MzsgMV0gXHUwMDNjXHUwMDNjIDMpIFx1MDAzZT1cbjE5ODI6XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBuZF9vcHRfaGRyKSAmIzQzOyBFVEhfQUxFTilcbjE5ODM6XHRcdFx0XHRcdGRhZGRyID0gbnMtXHUwMDNlb3B0ICYjNDM7IGkgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBuZF9vcHRfaGRyKTtcbjE5ODQ6XHRcdFx0XHRicmVhaztcbjE5ODU6XHRcdFx0fVxuMTk4NjpcdFx0fVxuMTk4NzpcdFxuMTk4ODpcdFx0LyogRXRoZXJuZXQgaGVhZGVyICovXG4xOTg5Olx0XHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihyZXBseSktXHUwMDNlaF9kZXN0LCBkYWRkcik7XG4xOTkwOlx0XHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihyZXBseSktXHUwMDNlaF9zb3VyY2UsIGhhKTtcbjE5OTE6XHRcdGV0aF9oZHIocmVwbHkpLVx1MDAzZWhfcHJvdG8gPSBodG9ucyhFVEhfUF9JUFY2KTtcbjE5OTI6XHRcdHJlcGx5LVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XG4xOTkzOlx0XG4xOTk0Olx0XHRza2JfcHVsbChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcbjE5OTU6XHRcdHNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihyZXBseSk7XG4xOTk2Olx0XHRza2JfcHV0KHJlcGx5LCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTtcbjE5OTc6XHRcbjE5OTg6XHRcdC8qIElQdjYgaGVhZGVyICovXG4xOTk5Olx0XG4yMDAwOlx0XHRwaXA2ID0gaXB2Nl9oZHIocmVwbHkpO1xuMjAwMTpcdFx0bWVtc2V0KHBpcDYsIDAsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xuMjAwMjpcdFx0cGlwNi1cdTAwM2V2ZXJzaW9uID0gNjtcbjIwMDM6XHRcdHBpcDYtXHUwMDNlcHJpb3JpdHkgPSBpcHY2X2hkcihyZXF1ZXN0KS1cdTAwM2Vwcmlvcml0eTtcbjIwMDQ6XHRcdHBpcDYtXHUwMDNlbmV4dGhkciA9IElQUFJPVE9fSUNNUFY2O1xuMjAwNTpcdFx0cGlwNi1cdTAwM2Vob3BfbGltaXQgPSAyNTU7XG4yMDA2Olx0XHRwaXA2LVx1MDAzZWRhZGRyID0gaXB2Nl9oZHIocmVxdWVzdCktXHUwMDNlc2FkZHI7XG4yMDA3Olx0XHRwaXA2LVx1MDAzZXNhZGRyID0gKihzdHJ1Y3QgaW42X2FkZHIgKiluLVx1MDAzZXByaW1hcnlfa2V5O1xuMjAwODpcdFxuMjAwOTpcdFx0c2tiX3B1bGwocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MzMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgdnhsYW5fbmFfY3JlYXRlYCBhbmQgUmVsYXRlZCBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGB2eGxhbl9jb3JlLmNgIGNvZGUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHZ4bGFuX25hX2NyZWF0ZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGhpZXJhcmNoeSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvcmUgdnhsYW4gZnVuY3Rpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYHZ4bGFuX25hX2NyZWF0ZWAgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZSBvZiBob3cgaXQgZml0cyB3aXRoaW4gdGhlIG92ZXJhbGwgdnhsYW4gZGF0YSBwbGFuZSBzZXR1cC4gQmV5b25kIHRoYXQsIEkgbmVlZCB0byBsb29rIGZvciBmdW5jdGlvbnMgY2xvc2VseSByZWxhdGVkIHRvIHRoZSBvcGVyYXRpb24sIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIHRoZSBjb2RlLiBUaGlzIHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLCBhbmQgdGhlIG92ZXJhbGwgZGF0YSBmbG93LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgZW50cnkgcG9pbnRzIGFuZCBleGl0IHBhdGhzLCBzbyBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgaXRzIGJlaGF2aW9yIGluIHRoZSBvdmVyYWxsIGNvbnRyb2wgcGF0aC4gSSYjMzk7bGwgZm9jdXMgb24gZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUsIGNvbmZpZ3VyZSwgb3IgZGVhbGxvY2F0ZSByZXNvdXJjZXMgdGhhdCBhcmUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIHRvIHNlZSBob3cgdGhlIG92ZXJhbGwgcHJvY2VzcyB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9uYV9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTE4NDI9c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE5MzktI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTk0MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjAzNj1zdGF0aWMgaW50IG5laWdoX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDc4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwNzk6XHRcdHJlcGx5ID0gdnhsYW5fbmFfY3JlYXRlKHNrYiwgbiwgaGEsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjA4MC1cdFx0XHRcdFx0ISEoZiA/IGYtXHUwMDNlZmxhZ3MgXHUwMDI2IE5URl9ST1VURVIgOiAwKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBuZWlnaF9yZWR1Y2VgIGFuZCBWWExBTiBGdW5jdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYG5laWdoX3JlZHVjZWAgYW5kIFZYTEFOLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGRpcmVjdCBjYWxsZXJzIGFuZCwgaWYgcG9zc2libGUsIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IFZYTEFOIGlzIGludm9sdmVkIGluIHRob3NlIGNhbGxzLiBBcmUgd2UgdGFsa2luZyBhYm91dCBwYWNrZXQgaGFuZGxpbmcsIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBzaW1wbGUgY2FsbCBncmFwaCB3b3VsZCBiZSBpZGVhbCBoZXJlLCBidXQgSeKAmWxsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgdG9vbHMgb3IgbWV0aG9kcyB0byBnZW5lcmF0ZSB0aGF0IGlmIGl0JiMzOTtzIG5vdCByZWFkaWx5IGF2YWlsYWJsZS4gRnJvbSB0aGF0LCBJIGNhbiBxdWlja2x5IGZvcm0gYSBoeXBvdGhlc2lzIHJlZ2FyZGluZyB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVpZ2hfcmVkdWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xOTQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDM1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwMzY6c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDM3LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjczOT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzgwLVx0XHRcdCAgICBtLVx1MDAzZWljbXBoLmljbXA2X3R5cGUgPT0gTkRJU0NfTkVJR0hCT1VSX1NPTElDSVRBVElPTilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzgxOlx0XHRcdFx0cmV0dXJuIG5laWdoX3JlZHVjZShkZXYsIHNrYiwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzgyLVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY0MgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgVlhMQU4gS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IGFyZSBzdHJ1Y3R1cmVkLiBNeSBnb2FsIGhlcmUgaXMgbGlrZWx5IHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBmZWF0dXJlcyBhcmUgYmVpbmcgZXhwb3NlZCwgdGhlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0sIGFuZCBwb3RlbnRpYWxseSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIHRoZSBtYWluIHN5bWJvbHMsIGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZToKCiogICBUaGUgYmFzZSBWWExBTiBkcml2ZXIgaXRzZWxmIChgQ09ORklHX1ZYTEFOYCkg4oCTIGlzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIHdoYXQmIzM5O3MgaXRzIHN0YXR1cz8KKiAgIEFueSBvcHRpb25zIGZvciBkaWZmZXJlbnQgZW5jYXBzdWxhdGlvbiB0eXBlcyBvciB0dW5uZWxpbmcgcHJvdG9jb2xzIGJlc2lkZXMgVURQIFZYTEFOLgoqICAgRmVhdHVyZSBmbGFnczogQXJlIHRoZXJlIGNvbnRyb2xzIGZvciBjaGVja3N1bSBvZmZsb2FkaW5nLCBUU08sIEdSTy9HU08sIG9yIG90aGVyIHBlcmZvcm1hbmNlLXJlbGF0ZWQgb3B0aW9ucz8gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIG9uZXMgYXJlIGV4cG9zZWQgc28gSSBjYW4gZXZhbHVhdGUgdGhlIGltcGxlbWVudGF0aW9uJiMzOTtzIGNhcGFiaWxpdGllcy4KKiAgIEhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIE5JQy1zcGVjaWZpYyBvZmZsb2FkcyBvciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvbiBjZXJ0YWluIGhhcmR3YXJlIGZlYXR1cmVzIG9yIHBsYXRmb3Jtcy4KKiAgIERlYnVnZ2luZyBvciB0cmFjaW5nIG9wdGlvbnMsIHNpbmNlIEkgbWlnaHQgYmUgbG9va2luZyBpbnRvIHRyYWNpbmcgYSBmYXVsdCBhbmQgZGVidWdnaW5nLgoKSSB3aWxsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBzcG90IGlmIGFueSBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIGFyZSByZXF1aXJlZCBmb3IgdGhlIFZYTEFOIGZ1bmN0aW9uYWxpdHkgdG8gYmUgZW5hYmxlZCBhbmQgd29ya2luZyBjb3JyZWN0bHkuIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmcsIGxvb2tpbmcgYXQgdGhlIGhpZXJhcmNoeSBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRob3NlIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoZSBidWlsZCBwcm9jZXNzLCB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlLCBhbmQsIHVsdGltYXRlbHksIHRoZSBwZXJmb3JtYW5jZSBhbmQgYmVoYXZpb3Igb2YgVlhMQU4gaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWWExBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDYyMiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMTY9Y29uZmlnIElQVlRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjI5LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzA6Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMTpcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzItXHRkZXBlbmRzIG9uIElORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzNi1cdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzNzpcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIFZYTEFOIGlzIG9mdGVuIHVzZWRcbmRyaXZlcnMvbmV0L0tjb25maWctMjM4LVx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cbi0tXG5kcml2ZXJzL25ldC9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVklSVElPX05FVCkgJiM0Mzs9IHZpcnRpb19uZXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1ZYTEFOKSAmIzQzOz0gdnhsYW4vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfR0VORVZFKSAmIzQzOz0gZ2VuZXZlLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oLTExNjctI2RlZmluZSBUWF9QQUNLRVRfQVRUUklCVVRFU19QVFBfV0lEVEhcdFx0MVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMTY4OiNkZWZpbmUgVFhfUEFDS0VUX0FUVFJJQlVURVNfVlhMQU5fSU5ERVhcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmg6MTE2OTojZGVmaW5lIFRYX1BBQ0tFVF9BVFRSSUJVVEVTX1ZYTEFOX1dJRFRIXHQxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oLTExNzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaC0xMjEzLSNkZWZpbmUgVFhfTk9STUFMX0RFU0MyX1ZMQU5fSU5TRVJUXHRcdDB4MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMjE0OiNkZWZpbmUgVFhfTk9STUFMX0RFU0MzX1ZYTEFOX1BBQ0tFVFx0XHQweDNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmgtMTIxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTM5MD1zdGF0aWMgdm9pZCB4Z2JlX3NldF92eGxhbl9pZChzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM5MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjM5MjpcdC8qIFByb2dyYW0gdGhlIFZYTEFOIHBvcnQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzkzLVx0WEdNQUNfSU9XUklURV9CSVRTKHBkYXRhLCBNQUNfVElSLCBUTklELCBwZGF0YS1cdTAwM2V2eGxhbl9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzozOTU6XHRuZXRpZl9kYmcocGRhdGEsIGRydiwgcGRhdGEtXHUwMDNlbmV0ZGV2LCBcJiMzNDtWWExBTiB0dW5uZWwgaWQgc2V0IHRvICVoeFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzk2LVx0XHQgIHBkYXRhLVx1MDAzZXZ4bGFuX3BvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9Mzk5PXN0YXRpYyB2b2lkIHhnYmVfZW5hYmxlX3Z4bGFuKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDA0Olx0LyogUHJvZ3JhbSB0aGUgVlhMQU4gcG9ydCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDUtXHR4Z2JlX3NldF92eGxhbl9pZChwZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDA3Olx0LyogQWxsb3cgZm9yIElQdjYvVURQIHplcm8tY2hlY2tzdW0gVlhMQU4gcGFja2V0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDgtXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19QRlIsIFZVQ0MsIDEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQxMDpcdC8qIEVuYWJsZSBWWExBTiB0dW5uZWxpbmcgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MTEtXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19UQ1IsIFZOTSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQxNDpcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O1ZYTEFOIGFjY2VsZXJhdGlvbiBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDE1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTQxNz1zdGF0aWMgdm9pZCB4Z2JlX2Rpc2FibGVfdnhsYW4oc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzo0MjU6XHQvKiBDbGVhciBJUHY2L1VEUCB6ZXJvLWNoZWNrc3VtIFZYTEFOIHBhY2tldHMgc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MjYtXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19QRlIsIFZVQ0MsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQyODpcdC8qIENsZWFyIHRoZSBWWExBTiBwb3J0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQyOS1cdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1RJUiwgVE5JRCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDMxOlx0bmV0aWZfZGJnKHBkYXRhLCBkcnYsIHBkYXRhLVx1MDAzZW5ldGRldiwgXCYjMzQ7VlhMQU4gYWNjZWxlcmF0aW9uIGRpc2FibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDMyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTE2MTU9c3RhdGljIHZvaWQgeGdiZV9kZXZfeG1pdChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMTY0MS1cdHZ4bGFuID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LVx1MDAzZWF0dHJpYnV0ZXMsIFRYX1BBQ0tFVF9BVFRSSUJVVEVTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzoxNjQyOlx0XHRcdCAgICAgICBWWExBTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE2NDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0xNzc1LVx0XHRYR01BQ19TRVRfQklUU19MRShyZGVzYy1cdTAwM2VkZXNjMywgVFhfTk9STUFMX0RFU0MzLCBWTlAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjE3NzY6XHRcdFx0XHQgIFRYX05PUk1BTF9ERVNDM19WWExBTl9QQUNLRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0xNzc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9MzU3MT12b2lkIHhnYmVfaW5pdF9mdW5jdGlvbl9wdHJzX2RldihzdHJ1Y3QgeGdiZV9od19pZiAqaHdfaWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0zNjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzozNjcwOlx0LyogRm9yIFZYTEFOICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM2NzEtXHRod19pZi1cdTAwM2VlbmFibGVfdnhsYW4gPSB4Z2JlX2VuYWJsZV92eGxhbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTY5MD12b2lkIHhnYmVfZ2V0X2FsbF9od19mZWF0dXJlcyhzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy04MzgtXHRcdFx0aHdfZmVhdC1cdTAwM2VzYV92bGFuX2lucyA/IFwmIzM0O3llc1wmIzM0OyA6IFwmIzM0O25vXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6ODM5Olx0XHRkZXZfZGJnKHBkYXRhLVx1MDAzZWRldiwgXCYjMzQ7ICBWWExBTi9OVkdSRSBzdXBwb3J0ICAgICAgIDogJXNcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTg0MC1cdFx0XHRod19mZWF0LVx1MDAzZXZ4biA/IFwmIzM0O3llc1wmIzM0OyA6IFwmIzM0O25vXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTkwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxMC1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxMTpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTEyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTE0NDA9c3RhdGljIGludCB4Z2JlX3ByZXBfdHNvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4Z2JlX3BhY2tldF9kYXRhICpwYWNrZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNDUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxNDUyOlx0aWYgKFhHTUFDX0dFVF9CSVRTKHBhY2tldC1cdTAwM2VhdHRyaWJ1dGVzLCBUWF9QQUNLRVRfQVRUUklCVVRFUywgVlhMQU4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE0NTMtXHRcdHBhY2tldC1cdTAwM2VoZWFkZXJfbGVuID0gc2tiX2lubmVyX3RjcF9hbGxfaGVhZGVycyhza2IpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MTUyMT1zdGF0aWMgdm9pZCB4Z2JlX3BhY2tldF9pbmZvKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE1NTctXHRcdFhHTUFDX1NFVF9CSVRTKHBhY2tldC1cdTAwM2VhdHRyaWJ1dGVzLCBUWF9QQUNLRVRfQVRUUklCVVRFUyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6MTU1ODpcdFx0XHQgICAgICAgVlhMQU4sIDEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MTkzNT1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgeGdiZV9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjE5NDY6XHQvKiBWWExBTiBDU1VNIHJlcXVpcmVzIFZYTEFOIGJhc2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMTk0Ny1cdGlmICgoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfR1NPX1VEUF9UVU5ORUxfQ1NVTSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oPTcwND1zdHJ1Y3QgeGdiZV9od19pZiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTgwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaDo4MDE6XHQvKiBGb3IgVlhMQU4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC04MDItXHR2b2lkICgqZW5hYmxlX3Z4bGFuKShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9OTMyPXN0cnVjdCB4Z2JlX2h3X2ZlYXR1cmVzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtOTUwLVx0dW5zaWduZWQgaW50IHNhX3ZsYW5faW5zO1x0LyogU291cmNlIEFkZHJlc3Mgb3IgVkxBTiBJbnNlcnRpb24gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaDo5NTE6XHR1bnNpZ25lZCBpbnQgdnhuO1x0XHQvKiBWWExBTi9OVkdSRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTk1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9OTkzPXN0cnVjdCB4Z2JlX3Bydl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaDoxMTQyOlx0LyogVlhMQU4gc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC0xMTQzLVx0dTE2IHZ4bGFuX3BvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oLTUwLSNkZWZpbmUgSFdfQVRMX0EwX1RYRF9DVExfQ01EX1dCICAgICAgQklUKDI3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oOjUxOiNkZWZpbmUgSFdfQVRMX0EwX1RYRF9DVExfQ01EX1ZYTEFOICAgQklUKDI4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaC01NS0jZGVmaW5lIEhXX0FUTF9CMF9UWERfQ1RMX0NNRF9XQiAgICAgIEJJVCgyNylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaDo1NjojZGVmaW5lIEhXX0FUTF9CMF9UWERfQ1RMX0NNRF9WWExBTiAgIEJJVCgyOClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYz0xNDM2PXN0YXRpYyB2b2lkIGJuZ2VfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jLTE0NDUtXHRpZiAoYm4tXHUwMDNldnhsYW5fcG9ydClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jOjE0NDY6XHRcdHR1bmxfdHBhX2JtYXAgfD0gVk5JQ19UUEFfQ0ZHX1JFUV9UTkxfVFBBX0VOX0JJVE1BUF9WWExBTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jLTE0NDctXHRpZiAoYm4tXHUwMDNldnhsYW5fZ3BlX3BvcnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYzoxNDQ4Olx0XHR0dW5sX3RwYV9ibWFwIHw9IFZOSUNfVFBBX0NGR19SRVFfVE5MX1RQQV9FTl9CSVRNQVBfVlhMQU5fR1BFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMtMTQ0OS1cdGlmIChibi1cdTAwM2VuZ2VfcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oPTEzMzk9ZW51bSBibngyeF91ZHBfcG9ydF90eXBlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4Lmg6MTM0MDpcdEJOWDJYX1VEUF9QT1JUX1ZYTEFOLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xMzQxLVx0Qk5YMlhfVURQX1BPUlRfR0VORVZFLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTIwODA9aW50IGJueDJ4X3JzcyhzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfcnNzX2NvbmZpZ19vYmogKnJzc19vYmosXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjEwOS1cdFx0aWYgKCFDSElQX0lTX0UxeChicCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjIxMTA6XHRcdFx0LyogdmFsaWQgb25seSBmb3IgVFVOTl9NT0RFX1ZYTEFOIHR1bm5lbCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyMTExOlx0XHRcdF9fc2V0X2JpdChCTlgyWF9SU1NfSVBWNF9WWExBTiwgXHUwMDI2cGFyYW1zLnJzc19mbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyMTEyOlx0XHRcdF9fc2V0X2JpdChCTlgyWF9SU1NfSVBWNl9WWExBTiwgXHUwMDI2cGFyYW1zLnJzc19mbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTMzNjI9c3RhdGljIHUzMiBibngyeF94bWl0X3R5cGUoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0zNDA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQwOTovKiBWWExBTjogNCA9IDEgKGZvciBsaW5lYXIgZGF0YSBCRCkgJiM0MzsgMyAoMiBmb3IgUEJEIGFuZCBsYXN0IEJEKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQxMDojZGVmaW5lIEJOWDJYX05VTV9WWExBTl9UU09fV0lOX1NVQl9CRFMgICAgICAgICA0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0zNDExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTM0MTk9c3RhdGljIGludCBibngyeF9wa3RfcmVxX2xpbihzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jLTM0MjUtXHRpZiAoeG1pdF90eXBlIFx1MDAyNiBYTUlUX0dTT19FTkMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzozNDI2Olx0XHRudW1fdHNvX3dpbl9zdWIgPSBCTlgyWF9OVU1fVlhMQU5fVFNPX1dJTl9TVUJfQkRTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMzQyNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaD05MjE9c3RhdGljIGlubGluZSBpbnQgYm54MnhfZnVuY19zdGFydChzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTk2Mi1cdFx0c3RhcnRfcGFyYW1zLVx1MDAzZW5ldHdvcmtfY29zX21vZGUgPSBGV19XUlI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaDo5NjM6XHRpZiAoYnAtXHUwMDNldWRwX3R1bm5lbF9wb3J0c1tCTlgyWF9VRFBfUE9SVF9WWExBTl0pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjk2NDpcdFx0cG9ydCA9IGJwLVx1MDAzZXVkcF90dW5uZWxfcG9ydHNbQk5YMlhfVURQX1BPUlRfVlhMQU5dO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmgtOTY1LVx0XHRzdGFydF9wYXJhbXMtXHUwMDNldnhsYW5fZHN0X3BvcnQgPSBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oPTM4ODU9c3RydWN0IGV0aF9jbGFzc2lmeV92bGFuX2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtMzg5My0vKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6Mzg5NDogKiBDb21tYW5kIGZvciBhZGRpbmcvcmVtb3ZpbmcgYSBWWExBTiBjbGFzc2lmaWNhdGlvbiBydWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC0zODk1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oPTQyMzg9c3RydWN0IGV0aF9yc3NfdXBkYXRlX3JhbXJvZF9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00MjQ3LSNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNF9VRFBfQ0FQQUJJTElUWV9TSElGVCAyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0MjQ4OiNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNF9WWExBTl9DQVBBQklMSVRZICgweDFcdTAwM2NcdTAwM2MzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6NDI0OTojZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWV9TSElGVCAzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00MjUwLSNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9DQVBBQklMSVRZICgweDFcdTAwM2NcdTAwM2M0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTUtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X1VEUF9DQVBBQklMSVRZX1NISUZUIDZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oOjQyNTY6I2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X1ZYTEFOX0NBUEFCSUxJVFkgKDB4MVx1MDAzY1x1MDAzYzcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0MjU3OiNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9WWExBTl9DQVBBQklMSVRZX1NISUZUIDdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTgtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9UVU5OX0lOTkVSX0hEUlNfQ0FQQUJJTElUWSAoMHgxXHUwMDNjXHUwMDNjOClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD00NDQ4PWVudW0gZXRoX3R1bm5fdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00NDQ5LVx0VFVOTl9UWVBFX05PTkUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0NDUwOlx0VFVOTl9UWVBFX1ZYTEFOLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtNDQ1MS1cdFRVTk5fVFlQRV9MMl9HUkUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMTY1PXN0YXRpYyBpbnQgYm54MnhfdWRwX3BvcnRfdXBkYXRlKHN0cnVjdCBibngyeCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMTkwOlx0aWYgKGJwLVx1MDAzZXVkcF90dW5uZWxfcG9ydHNbQk5YMlhfVURQX1BPUlRfVlhMQU5dKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAxOTE6XHRcdHZ4bGFuX3BvcnQgPSBicC1cdTAwM2V1ZHBfdHVubmVsX3BvcnRzW0JOWDJYX1VEUF9QT1JUX1ZYTEFOXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDE5Mi1cdFx0c3dpdGNoX3VwZGF0ZV9wYXJhbXMtXHUwMDNldnhsYW5fZHN0X3BvcnQgPSB2eGxhbl9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYm54MnhfdWRwX3R1bm5lbHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjI1LVx0LnRhYmxlc1x0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMDIyNjpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjctXHRcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfR0VORVZFLCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9NDQ4Mz1zdGF0aWMgaW50IGJueDJ4X3NldHVwX3JzcyhzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzMTpcdGlmICh0ZXN0X2JpdChCTlgyWF9SU1NfSVBWNF9WWExBTiwgXHUwMDI2cC1cdTAwM2Vyc3NfZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTMyOlx0XHRjYXBzIHw9IEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzNDpcdGlmICh0ZXN0X2JpdChCTlgyWF9SU1NfSVBWNl9WWExBTiwgXHUwMDI2cC1cdTAwM2Vyc3NfZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTM1Olx0XHRjYXBzIHw9IEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjZfVlhMQU5fQ0FQQUJJTElUWTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTYxOTk9c3RhdGljIGlubGluZSBpbnQgYm54MnhfZnVuY19zZW5kX3N3aXRjaF91cGRhdGUoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTYyNDktXHRcdFx0cmRhdGEtXHUwMDNlaW5uZXJfY2xzc19sMmdyZSA9IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjYyNTA6XHRcdGlmICh0ZXN0X2JpdChCTlgyWF9GX1VQREFURV9UVU5ORUxfSU5ORVJfQ0xTU19WWExBTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNjI1MS1cdFx0XHQgICAgIFx1MDAyNnN3aXRjaF91cGRhdGVfcGFyYW1zLVx1MDAzZWNoYW5nZXMpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9NzE1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNzI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo3Mjk6XHRCTlgyWF9SU1NfSVBWNF9WWExBTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NzMwOlx0Qk5YMlhfUlNTX0lQVjZfVlhMQU4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTczMS1cdEJOWDJYX1JTU19UVU5OX0lOTkVSX0hEUlMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaD0xMTE3PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtMTEyNS1cdEJOWDJYX0ZfVVBEQVRFX1RVTk5FTF9JTk5FUl9DTFNTX0wyR1JFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxMTI2Olx0Qk5YMlhfRl9VUERBVEVfVFVOTkVMX0lOTkVSX0NMU1NfVlhMQU4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTExMjctXHRCTlgyWF9GX1VQREFURV9UVU5ORUxfSU5ORVJfQ0xTU19MMkdFTkVWRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTExNzk9c3RydWN0IGJueDJ4X2Z1bmNfc3RhcnRfcGFyYW1zIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTExOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjExOTM6XHQvKiBVRFAgZGVzdCBwb3J0IGZvciBWWExBTiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xMTk0LVx0dTE2IHZ4bGFuX2RzdF9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTU5MDY9c3RhdGljIGludCBibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoc3RydWN0IGJueHQgKmJwLCB1OCB0dW5uZWxfdHlwZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NTkxMTpcdGlmICh0dW5uZWxfdHlwZSA9PSBUVU5ORUxfRFNUX1BPUlRfRlJFRV9SRVFfVFVOTkVMX1RZUEVfVlhMQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTEyLVx0ICAgIGJwLVx1MDAzZXZ4bGFuX2Z3X2RzdF9wb3J0X2lkID09IElOVkFMSURfSFdfUklOR19JRClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTI0LVx0c3dpdGNoICh0dW5uZWxfdHlwZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NTkyNTpcdGNhc2UgVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTkyNi1cdFx0cmVxLVx1MDAzZXR1bm5lbF9kc3RfcG9ydF9pZCA9IGNwdV90b19sZTE2KGJwLVx1MDAzZXZ4bGFuX2Z3X2RzdF9wb3J0X2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTM0LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjU5MzU6XHRjYXNlIFRVTk5FTF9EU1RfUE9SVF9GUkVFX1JFUV9UVU5ORUxfVFlQRV9WWExBTl9HUEU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTM2LVx0XHRyZXEtXHUwMDNldHVubmVsX2RzdF9wb3J0X2lkID0gY3B1X3RvX2xlMTYoYnAtXHUwMDNldnhsYW5fZ3BlX2Z3X2RzdF9wb3J0X2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz01OTUzPXN0YXRpYyBpbnQgYm54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9hbGxvYyhzdHJ1Y3QgYm54dCAqYnAsIF9fYmUxNiBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5NzUtXHRzd2l0Y2ggKHR1bm5lbF90eXBlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTc2Olx0Y2FzZSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk3Ny1cdFx0YnAtXHUwMDNldnhsYW5fcG9ydCA9IHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk4NC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTg1Olx0Y2FzZSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5ODYtXHRcdGJwLVx1MDAzZXZ4bGFuX2dwZV9wb3J0ID0gcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz02NTI5PXN0YXRpYyB2b2lkIGJueHRfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm54dCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNjUzNy1cdGlmIChicC1cdTAwM2V2eGxhbl9wb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NjUzODpcdFx0dHVubF90cGFfYm1hcCB8PSBWTklDX1RQQV9DRkdfUkVRX1ROTF9UUEFfRU5fQklUTUFQX1ZYTEFOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNjUzOS1cdGlmIChicC1cdTAwM2V2eGxhbl9ncGVfcG9ydClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjY1NDA6XHRcdHR1bmxfdHBhX2JtYXAgfD0gVk5JQ19UUEFfQ0ZHX1JFUV9UTkxfVFBBX0VOX0JJVE1BUF9WWExBTl9HUEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy02NTQxLVx0aWYgKGJwLVx1MDAzZW5nZV9wb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTEwNzQ0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9mcmVlX3R1bm5lbF9wb3J0cyhzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTA3NDYtXHRibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxMDc0NzpcdFx0VFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTEwNzQ4LVx0Ym54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9mcmVlKGJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDYwPXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3NldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDY2Olx0aWYgKHRpLVx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwNjc6XHRcdGNtZCA9IFRVTk5FTF9EU1RfUE9SVF9BTExPQ19SRVFfVFVOTkVMX1RZUEVfVlhMQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA2OC1cdGVsc2UgaWYgKHRpLVx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA3MC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDcxOlx0XHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDc2PXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwODI6XHRpZiAodGktXHUwMDNldHlwZSA9PSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4MzpcdFx0Y21kID0gVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODQtXHRlbHNlIGlmICh0aS1cdTAwM2V0eXBlID09IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4NzpcdFx0Y21kID0gVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDg4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibnh0X3VkcF90dW5uZWxzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDk2LVx0LnRhYmxlc1x0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDk3Olx0XHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCAgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDk4LVx0XHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSwgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNC1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjEwNTpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNi1cdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjEwNzpcdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTl9HUEUsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwOC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM9NzkzPXN0YXRpYyBpbnQgaHdybV9jZmFfZGVjYXBfZmlsdGVyX2FsbG9jKHN0cnVjdCBibnh0ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy04MTEtXHRcdCAgIENGQV9ERUNBUF9GSUxURVJfQUxMT0NfUkVRX0VOQUJMRVNfSVBfUFJPVE9DT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYzo4MTI6XHRyZXEtXHUwMDNldHVubmVsX3R5cGUgPSBDRkFfREVDQVBfRklMVEVSX0FMTE9DX1JFUV9UVU5ORUxfVFlQRV9WWExBTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTgxMy1cdHJlcS1cdTAwM2VpcF9wcm90b2NvbCA9IENGQV9ERUNBUF9GSUxURVJfQUxMT0NfUkVRX0lQX1BST1RPQ09MX1VEUDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYz04ODM9c3RhdGljIGludCBod3JtX2NmYV9lbmNhcF9yZWNvcmRfYWxsb2Moc3RydWN0IGJueHQgKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTg5OC1cdGVuY2FwID0gKHN0cnVjdCBod3JtX2NmYV9lbmNhcF9kYXRhX3Z4bGFuICopXHUwMDI2cmVxLVx1MDAzZWVuY2FwX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYzo4OTk6XHRyZXEtXHUwMDNlZW5jYXBfdHlwZSA9IENGQV9FTkNBUF9SRUNPUkRfQUxMT0NfUkVRX0VOQ0FQX1RZUEVfVlhMQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy05MDAtXHRldGhlcl9hZGRyX2NvcHkoZW5jYXAtXHUwMDNlZHN0X21hY19hZGRyLCBsMl9pbmZvLVx1MDAzZWRtYWMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTkwOC1cdGVuY2FwX2lwdjQgPSAoc3RydWN0IGh3cm1fdnhsYW5faXB2NF9oZHIgKillbmNhcC1cdTAwM2VsMztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jOjkwOTpcdGVuY2FwX2lwdjQtXHUwMDNldmVyX2hsZW4gPSA0IFx1MDAzY1x1MDAzYyBWWExBTl9JUFY0X0hEUl9WRVJfSExFTl9WRVJTSU9OX1NGVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jOjkxMDpcdGVuY2FwX2lwdjQtXHUwMDNldmVyX2hsZW4gfD0gNSBcdTAwM2NcdTAwM2MgVlhMQU5fSVBWNF9IRFJfVkVSX0hMRU5fSEVBREVSX0xFTkdUSF9TRlQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy05MTEtXHRlbmNhcF9pcHY0LVx1MDAzZXR0bCA9IGVuY2FwX2tleS1cdTAwM2V0dGw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg9NzE9c3RydWN0IGJueHRfdGNfYWN0aW9ucyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmgtNzMtI2RlZmluZSBCTlhUX1RDX0FDVElPTl9GTEFHX0ZXRFx0XHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg6NzQ6I2RlZmluZSBCTlhUX1RDX0FDVElPTl9GTEFHX0ZXRF9WWExBTlx0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5oLTc1LSNkZWZpbmUgQk5YVF9UQ19BQ1RJT05fRkxBR19QVVNIX1ZMQU5cdFx0QklUKDMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0zMy0vKiBDaGFuZ2UgdGhlIHZhbHVlIG9mIFNMSSBQYWNrZXQgSW5wdXQgSmFiYmVyIFJlZ2lzdGVyIHRvIGFsbG93XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjM0OiAqIFZYTEFOIFRTTyBwYWNrZXRzIHdoaWNoIGNhbiBiZSA2NDQyNCBieXRlcywgZXhjZWVkaW5nIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0zNS0gKiBNQVhfR1NPX1NJWkUgd2Ugc3VwcGxpZWQgdG8gdGhlIGtlcm5lbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9Mzk1PXN0YXRpYyBpbnQgY24yM3h4X3NldHVwX3BmX2RldmljZV9yZWdzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy00MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjQxMzpcdC8qIFNldCBTTElfUEtUX0lOX0pBQkJFUiB0byBoYW5kbGUgbGFyZ2UgVlhMQU4gcGFja2V0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy00MTQtXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX1BLVF9JTl9KQUJCRVIsIENOMjNYWF9JTlBVVF9KQUJCRVIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jPTI1Nj12b2lkIGxpcXVpZGlvX2xpbmtfY3RybF9jbWRfY29tcGxldGlvbih2b2lkICpuY3RybF9wdHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmM6MzczOlx0XHQvKiBDYXNlIHRvIGhhbmRsZSBcJiMzNDtPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzQtXHRcdCAqIENvbW1hbmQgcGFzc2VkIGJ5IE5JQyBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM3NS1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzozNzY6XHRjYXNlIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzozNzc6XHRcdGlmIChuY3RybC1cdTAwM2VuY21kLnMubW9yZSA9PSBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQUREKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzgtXHRcdFx0bmV0aWZfaW5mbyhsaW8sIHByb2JlLCBsaW8tXHUwMDNlbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM4MS1cdFx0fSBlbHNlIGlmIChuY3RybC1cdTAwM2VuY21kLnMubW9yZSA9PVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmM6MzgyOlx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM4My1cdFx0XHRuZXRpZl9pbmZvKGxpbywgcHJvYmUsIGxpby1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjYwOT1zdGF0aWMgaW50IGxpcXVpZGlvX3NldF9yeGNzdW1fY29tbWFuZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgY29tbWFuZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjM5LSAqIEBuZXRkZXY6ICAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2NDA6ICogQGNvbW1hbmQ6ICAgICAgICAgICAgICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY0MS0gKiBAdnhsYW5fcG9ydDogICAgICAgICAgICBWeExBTiBwb3J0IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2NDI6ICogQHZ4bGFuX2NtZF9iaXQ6ICAgICAgICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0FERCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2NDM6ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjQ0LSAqIFJldHVybjogICAgICAgICAgICAgICAgICAgICBTVUNDRVNTIG9yIEZBSUxVUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjc1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2NzktXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2ODA6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjgxLVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2ODI6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY4My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY4NT1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTAtXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTE6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjkyLVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTM6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5OS1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNzAwOlx0XHR7IC5uX2VudHJpZXMgPSAxMDI0LCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjcwMS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTY5OD1zdGF0aWMgaW50IGxpcXVpZGlvX3NldF9yeGNzdW1fY29tbWFuZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgY29tbWFuZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzI2LSAqIEBwYXJhbSBuZXRkZXYgICAgICAgICAgICAgICAgcG9pbnRlciB0byBuZXR3b3JrIGRldmljZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTcyNzogKiBAcGFyYW0gY29tbWFuZCAgICAgICAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3MjgtICogQHBhcmFtIHZ4bGFuX3BvcnQgICAgICAgICAgICBWeExBTiBwb3J0IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Mjk6ICogQHBhcmFtIHZ4bGFuX2NtZF9iaXQgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQURELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTczMDogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3MzEtICogQHJldHVybnMgICAgICAgICAgICAgICAgICAgICBTVUNDRVNTIG9yIEZBSUxVUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xNzYyPXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NjYtXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Njc6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzY4LVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Njk6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc3MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NzctXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Nzg6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzc5LVx0XHRcdFx0XHQgICBodG9ucyh0aS1cdTAwM2Vwb3J0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3ODA6XHRcdFx0XHRcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4MS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4Ni1cdC50YWJsZXNcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzg3Olx0XHR7IC5uX2VudHJpZXMgPSAxMDI0LCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oPTE3Mz1zdGF0aWMgaW5saW5lIHZvaWQgYWRkX3NnX3NpemUoc3RydWN0IG9jdGVvbl9zZ19lbnRyeSAqc2dfZW50cnksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTIzMi0jZGVmaW5lICAgT0NUTkVUX0NNRF9ERUxfVkxBTl9GSUxURVIgIDB4MThcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzM6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcgMHgxOVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTIzNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI0NjojZGVmaW5lICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0FERCAgICAweDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyNDc6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwgICAgMHgxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ4LSNkZWZpbmUgICBPQ1RORVRfQ01EX1JYQ1NVTV9FTkFCTEUgICAgIDB4MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmM9ODI3PXN0YXRpYyB2b2lkIG5pY19lbmFibGVfdHVubmVsX3BhcnNpbmcoc3RydWN0IG5pY3BmICpuaWMsIGludCB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jLTgzOS1cdFx0ICAgICAgKCg3VUxMIFx1MDAzY1x1MDAzYyA2MSkgfCBwcm90X2RlZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYzo4NDA6XHRuaWNfcmVnX3dyaXRlKG5pYywgTklDX1BGX1JYX1ZYTEFOX0RFRl8wXzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jOjg0MTpcdFx0ICAgICAgKCgxVUxMIFx1MDAzY1x1MDAzYyA2MykgfCBVRFBfVlhMQU5fUE9SVF9OVU0pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmM6ODQyOlx0bmljX3JlZ193cml0ZShuaWMsIE5JQ19QRl9SWF9WWExBTl9QUk9UX0RFRixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMtODQzLVx0XHQgICAgICAoKDB4ZlVMTCBcdTAwM2NcdTAwM2MgNjApIHwgdnhsYW5fcHJvdF9kZWYpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfcmVnLmgtNDItI2RlZmluZSAgIE5JQ19QRl9SWF9OVkdSRV9QUk9UX0RFRlx0XHQoMHgwNTk4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQzOiNkZWZpbmUgICBOSUNfUEZfUlhfVlhMQU5fREVGXzBfMVx0XHQoMHgwNUEwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQ0OiNkZWZpbmUgICAgVURQX1ZYTEFOX1BPUlRfTlVNXHRcdFx0XHQweDEyQjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19yZWcuaDo0NTojZGVmaW5lICAgTklDX1BGX1JYX1ZYTEFOX1BST1RfREVGXHRcdCgweDA1QjApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfcmVnLmgtNDYtI2RlZmluZSAgICBJUFY2X1BST1RfREVGXHRcdFx0XHQweDJVTExcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz0zNzI3PXN0YXRpYyBpbnQgY3hnYl91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzM2LVx0c3dpdGNoICh0aS1cdTAwM2V0eXBlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozNzM3Olx0Y2FzZSBVRFBfVFVOTkVMX1RZUEVfVlhMQU46XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzM4LVx0XHRhZGFwdGVyLVx1MDAzZXZ4bGFuX3BvcnQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzczOTpcdFx0dDRfd3JpdGVfcmVnKGFkYXB0ZXIsIE1QU19SWF9WWExBTl9UWVBFX0EsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzc0MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3NzktXHRzd2l0Y2ggKHRpLVx1MDAzZXR5cGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3ODA6XHRjYXNlIFVEUF9UVU5ORUxfVFlQRV9WWExBTjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3ODEtXHRcdGFkYXB0ZXItXHUwMDNldnhsYW5fcG9ydCA9IHRpLVx1MDAzZXBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozNzgyOlx0XHR0NF93cml0ZV9yZWcoYWRhcHRlciwgTVBTX1JYX1ZYTEFOX1RZUEVfQSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3ODM6XHRcdFx0ICAgICBWWExBTl9WKGJlMTZfdG9fY3B1KHRpLVx1MDAzZXBvcnQpKSB8IFZYTEFOX0VOX0YpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzc4NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9MzgxOD1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODIxLVx0LnRhYmxlc1x0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM4MjI6XHRcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4sICB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgyMy1cdFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYz0xMjY3PWVudW0gY3BsX3R4X3RubF9sc29fdHlwZSBjeGdiX2VuY2FwX29mZmxvYWRfc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYy0xMjkxLVx0XHRpZiAoYWRhcHRlci1cdTAwM2V2eGxhbl9wb3J0ID09IHVkcF9oZHIoc2tiKS1cdTAwM2VkZXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYzoxMjkyOlx0XHRcdHRubF90eXBlID0gVFhfVE5MX1RZUEVfVlhMQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEyOTMtXHRcdGVsc2UgaWYgKGFkYXB0ZXItXHUwMDNlZ2VuZXZlX3BvcnQgPT0gdWRwX2hkcihza2IpLVx1MDAzZWRlc3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYz0xMzAzPXN0YXRpYyBpbmxpbmUgdm9pZCB0Nl9maWxsX3RubF9sc28oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEzMzItXHRzd2l0Y2ggKHRubF90eXBlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jOjEzMzM6XHRjYXNlIFRYX1ROTF9UWVBFX1ZYTEFOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYy0xMzM0LVx0Y2FzZSBUWF9UTkxfVFlQRV9HRU5FVkU6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9tc2cuaD0xNTc4PWVudW0gY3BsX3R4X3RubF9sc29fdHlwZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9tc2cuaC0xNTgwLVx0VFhfVE5MX1RZUEVfTlZHUkUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X21zZy5oOjE1ODE6XHRUWF9UTkxfVFlQRV9WWExBTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfbXNnLmgtMTU4Mi1cdFRYX1ROTF9UWVBFX0dFTkVWRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaC0yNTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3MjojZGVmaW5lIE1QU19SWF9WWExBTl9UWVBFX0EgMHgxMTIzNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmgtMjU3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oOjI1NzQ6I2RlZmluZSBWWExBTl9FTl9TICAgIDE2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc1OiNkZWZpbmUgVlhMQU5fRU5fVih4KSAoKHgpIFx1MDAzY1x1MDAzYyBWWExBTl9FTl9TKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3NjojZGVmaW5lIFZYTEFOX0VOX0YgICAgVlhMQU5fRU5fVigxVSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oLTI1NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc4OiNkZWZpbmUgVlhMQU5fUyAgICAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc5OiNkZWZpbmUgVlhMQU5fTSAgICAweGZmZmZVXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTgwOiNkZWZpbmUgVlhMQU5fVih4KSAoKHgpIFx1MDAzY1x1MDAzYyBWWExBTl9TKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFZYTEFOIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyBhcmUgdGhlIGBkcml2ZXJzL25ldC92eGxhbi9NYWtlZmlsZWAgYW5kIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlcy4gVGhlc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdW5kZXJzdGFuZGluZyBob3cgVlhMQU4gc3VwcG9ydCBpcyBjb21waWxlZCwgd2hhdCBidWlsZCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGFuZCB3aGF0IEtjb25maWcgc3ltYm9scyBjb250cm9sIHRoZSBmZWF0dXJlJiMzOTtzIGluY2x1c2lvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBWWExBTiBtb2R1bGUgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MuIEkgd2FudCB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIGV2ZXJ5IGFzcGVjdCBvZiBpdHMgY29uc3RydWN0aW9uIGFuZCBwb3NzaWJsZSBkZXBlbmRlbmNpZXMuIE9uY2UgSSBoYXZlIHRoZSBsYXlvdXQgb2YgdGhlIEtjb25maWcgb3B0aW9ucywgSSBjYW4gZnVydGhlciBkZWJ1ZyBidWlsZCBpc3N1ZXMgaWYgYW55IGFyaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0I1xuICAgMjpcdCMgTWFrZWZpbGUgZm9yIHRoZSB2eGxhbiBkcml2ZXJcbiAgIDM6XHQjXG4gICA0Olx0XG4gICA1Olx0b2JqLSQoQ09ORklHX1ZYTEFOKSAmIzQzOz0gdnhsYW4ub1xuICAgNjpcdFxuICAgNzpcdHZ4bGFuLW9ianMgOj0gdnhsYW5fY29yZS5vIHZ4bGFuX211bHRpY2FzdC5vIHZ4bGFuX3ZuaWZpbHRlci5vIHZ4bGFuX21kYi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODAwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIEJhc2VkIG9uIHRoZSB0YXNrIGF0IGhhbmQgKHdoaWNoIEkmIzM5O20gbm90IHByaXZ5IHRvLCBidXQgSSYjMzk7bGwgYXNzdW1lIGludm9sdmVzIGEgbmV0d29yayBkcml2ZXIsIGdpdmVuIHRoZSBjb250ZXh0KSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG5hdmlnYXRlIHRvIHRoZSBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIHpvb20gaW4gYXJvdW5kIGxpbmUgMjMwLiBUaGF0IGxvY2F0aW9uIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuIEl0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbmZpZ3VyZWQsIHdoYXQgdGhlIGV4aXN0aW5nIG9wdGlvbnMgYXJlLCBhbmQgaWYgc29tZXRoaW5nIHJlbGV2YW50IHRvIG15IHRhc2sgaXMgZGVmaW5lZCB0aGVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIHVuZWFydGghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjI1Olx0XHQgIGlwdnRhcCYjMzk7LCBhbmQgdGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSB0YXAgdXNlciBzcGFjZSBpbnRlcmZhY2UuXG4gMjI2Olx0XG4gMjI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyMjg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaXB2dGFwLlxuIDIyOTpcdFxuIDIzMDpcdGNvbmZpZyBWWExBTlxuIDIzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXCYjMzQ7XG4gMjMyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAyMzM6XHRcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuIDIzNDpcdFx0c2VsZWN0IEdST19DRUxMU1xuIDIzNTpcdFx0aGVscFxuIDIzNjpcdFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZ4bGFuIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyMzc6XHRcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIFZYTEFOIGlzIG9mdGVuIHVzZWRcbiAyMzg6XHRcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG4gMjM5Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAyNDA6XHRcdCAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1tYWhhbGluZ2FtLWR1dHQtZGNvcHMtdnhsYW4tMDJcbiAyNDE6XHRcbiAyNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDI0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cbiAyNDQ6XHRcbiAyNDU6XHRjb25maWcgR0VORVZFXG4gMjQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuIDI0NzpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjQ4Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAyNDk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiAyNTA6XHRcdGhlbHBcbiAyNTE6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBnZW5ldmUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxuIDI1MjpcdFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gR0VORVZFIGlzIG9mdGVuIHVzZWRcbiAyNTM6XHRcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG4gMjU0Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY29kZSBjaGFuZ2UuIEZpcnN0LCBsZXQmIzM5O3MgaXNvbGF0ZSB0aGUgYnVnIHRoYXQgd2FzIGFkZHJlc3NlZC4gSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgY29kZToKCmBgYGMKLQlza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC0mZ3Q7ZGV2KSk7CiYjNDM7CXNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7CmBgYAoKdXNlZCBgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC0mZ3Q7ZGV2KWAgZm9yIHRoZSBgc2tiX3Jlc2VydmVgIGNhbGwsIHdoaWxlIGNhbGN1bGF0aW5nIGBsZW5gIHVzZWQgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgLiBUaGUgZml4IGhhcyByZXBsYWNlZCBpdCB3aXRoIGBoZWFkcm9vbWAgd2hpY2ggaXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgLiBJIHNlZSB0aGF0IGBkZXZgIGlzIGFzc2lnbmVkIHRvIGByZXF1ZXN0LSZndDtkZXZgIHNvIHRoZXJlIG1heSBub3QgaGF2ZSBiZWVuIGEgZnVuY3Rpb25hbCBidWcsIGJ1dCB0aGlzIG1ha2VzIHRoZSBjb2RlIGNvbnNpc3RlbnQuIFRoZSBvcmlnaW5hbCBjYWxjdWxhdGlvbiBvZiB0aGUgbGVuZ3RoIHdhcyBjb3JyZWN0IGJ1dCB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZm9yIGEgbWlzbWF0Y2gsIG9yIGF0IGxlYXN0IGEgcmVkdW5kYW50IGNhbGN1bGF0aW9uIGlmIGByZXF1ZXN0LSZndDtkZXZgIGhhZCBjaGFuZ2VkLiBVc2luZyBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgbWFrZXMgdGhlIGludGVudGlvbiBjbGVhciBhbmQgdGhlIGNvZGUgY2xlYW5lci4KCkFscmlnaHQsIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGlzIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIGlzIGd1YXJkZWQgYnkgYCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50OyBpdCYjMzk7cyBzcGVjaWZpYyB0byBJUHY2LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUgd2l0aGluIHRoZSBWWExBTiBtb2R1bGUsIHBhcnRpY3VsYXJseSBhcm91bmQgbmVpZ2hib3IgZGlzY292ZXJ5IG9yIHRyYW5zbWlzc2lvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYnJvYWRlciBjb2RlYmFzZSBvZiBgdnhsYW5fY29yZS5jYCBhbmQgYWxzbyBsb29rIGF0IGVudHJ5IHBvaW50cyB0byBmdW5jdGlvbnMgbGlrZSBgbmVpZ2hfcmVkdWNlYCBvciBgdnhsYW5feG1pdGAgdG8gZ2V0IGEgZnVsbCB1bmRlcnN0YW5kaW5nLgoKSSBzaG91bGQgYWxzbyBleGFtaW5lIHRoZSByZXN0IG9mIHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBmdW5jdGlvbiB0byBjaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgaXNzdWVzIGFuZCB0aGVuIGNvbnNpZGVyIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluc2lkZSBgbmVpZ2hfcmVkdWNlYCBmb3IgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIwMTA6XHRcdHNrYl9yZXNldF90cmFuc3BvcnRfaGVhZGVyKHJlcGx5KTtcbjIwMTE6XHRcbjIwMTI6XHRcdC8qIE5laWdoYm9yIEFkdmVydGlzZW1lbnQgKi9cbjIwMTM6XHRcdG5hID0gc2tiX3B1dF96ZXJvKHJlcGx5LCBzaXplb2YoKm5hKSAmIzQzOyBuYV9vbGVuKTtcbjIwMTQ6XHRcdG5hLVx1MDAzZWljbXBoLmljbXA2X3R5cGUgPSBORElTQ19ORUlHSEJPVVJfQURWRVJUSVNFTUVOVDtcbjIwMTU6XHRcdG5hLVx1MDAzZWljbXBoLmljbXA2X3JvdXRlciA9IGlzcm91dGVyO1xuMjAxNjpcdFx0bmEtXHUwMDNlaWNtcGguaWNtcDZfb3ZlcnJpZGUgPSAxO1xuMjAxNzpcdFx0bmEtXHUwMDNlaWNtcGguaWNtcDZfc29saWNpdGVkID0gMTtcbjIwMTg6XHRcdG5hLVx1MDAzZXRhcmdldCA9IG5zLVx1MDAzZXRhcmdldDtcbjIwMTk6XHRcdGV0aGVyX2FkZHJfY29weShcdTAwMjZuYS1cdTAwM2VvcHRbMl0sIGhhKTtcbjIwMjA6XHRcdG5hLVx1MDAzZW9wdFswXSA9IE5EX09QVF9UQVJHRVRfTExfQUREUjtcbjIwMjE6XHRcdG5hLVx1MDAzZW9wdFsxXSA9IG5hX29sZW4gXHUwMDNlXHUwMDNlIDM7XG4yMDIyOlx0XG4yMDIzOlx0XHRuYS1cdTAwM2VpY21waC5pY21wNl9ja3N1bSA9IGNzdW1faXB2Nl9tYWdpYyhcdTAwMjZwaXA2LVx1MDAzZXNhZGRyLFxuMjAyNDpcdFx0XHRcdTAwMjZwaXA2LVx1MDAzZWRhZGRyLCBzaXplb2YoKm5hKSYjNDM7bmFfb2xlbiwgSVBQUk9UT19JQ01QVjYsXG4yMDI1Olx0XHRcdGNzdW1fcGFydGlhbChuYSwgc2l6ZW9mKCpuYSkmIzQzO25hX29sZW4sIDApKTtcbjIwMjY6XHRcbjIwMjc6XHRcdHBpcDYtXHUwMDNlcGF5bG9hZF9sZW4gPSBodG9ucyhzaXplb2YoKm5hKSYjNDM7bmFfb2xlbik7XG4yMDI4Olx0XG4yMDI5Olx0XHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG4yMDMwOlx0XG4yMDMxOlx0XHRyZXBseS1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcbjIwMzI6XHRcbjIwMzM6XHRcdHJldHVybiByZXBseTtcbjIwMzQ6XHR9XG4yMDM1Olx0XG4yMDM2Olx0c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcbjIwMzc6XHR7XG4yMDM4Olx0XHRzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiA9IG5ldGRldl9wcml2KGRldik7XG4yMDM5Olx0XHRjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyO1xuMjA0MDpcdFx0Y29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwaGRyO1xuMjA0MTpcdFx0c3RydWN0IG5laWdoYm91ciAqbjtcbjIwNDI6XHRcdHN0cnVjdCBuZF9tc2cgKm1zZztcbjIwNDM6XHRcbjIwNDQ6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjIwNDU6XHRcdGlmICh1bmxpa2VseSghaXB2Nl9tb2RfZW5hYmxlZCgpKSlcbjIwNDY6XHRcdFx0Z290byBvdXQ7XG4yMDQ3Olx0XG4yMDQ4Olx0XHRpcGhkciA9IGlwdjZfaGRyKHNrYik7XG4yMDQ5Olx0XHRkYWRkciA9IFx1MDAyNmlwaGRyLVx1MDAzZWRhZGRyO1xuMjA1MDpcdFx0bXNnID0gKHN0cnVjdCBuZF9tc2cgKikoaXBoZHIgJiM0MzsgMSk7XG4yMDUxOlx0XG4yMDUyOlx0XHRpZiAoaXB2Nl9hZGRyX2xvb3BiYWNrKGRhZGRyKSB8fFxuMjA1MzpcdFx0ICAgIGlwdjZfYWRkcl9pc19tdWx0aWNhc3QoXHUwMDI2bXNnLVx1MDAzZXRhcmdldCkpXG4yMDU0Olx0XHRcdGdvdG8gb3V0O1xuMjA1NTpcdFxuMjA1NjpcdFx0biA9IG5laWdoX2xvb2t1cChcdTAwMjZuZF90YmwsIFx1MDAyNm1zZy1cdTAwM2V0YXJnZXQsIGRldik7XG4yMDU3Olx0XG4yMDU4Olx0XHRpZiAobikge1xuMjA1OTpcdFx0XHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XG4yMDYwOlx0XHRcdHU4IGhhW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XG4yMDYxOlx0XHRcdHN0cnVjdCB2eGxhbl9mZGIgKmY7XG4yMDYyOlx0XHRcdHN0cnVjdCBza19idWZmICpyZXBseTtcbjIwNjM6XHRcbjIwNjQ6XHRcdFx0aWYgKCEoUkVBRF9PTkNFKG4tXHUwMDNlbnVkX3N0YXRlKSBcdTAwMjYgTlVEX0NPTk5FQ1RFRCkpIHtcbjIwNjU6XHRcdFx0XHRuZWlnaF9yZWxlYXNlKG4pO1xuMjA2NjpcdFx0XHRcdGdvdG8gb3V0O1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XG4yMDY5Olx0XHRcdG5laWdoX2hhX3NuYXBzaG90KGhhLCBuLCBuLVx1MDAzZWRldik7XG4yMDcwOlx0XHRcdGYgPSB2eGxhbl9maW5kX21hY190eCh2eGxhbiwgaGEsIHZuaSk7XG4yMDcxOlx0XHRcdGlmIChmKVxuMjA3MjpcdFx0XHRcdHJkc3QgPSBmaXJzdF9yZW1vdGVfcmN1KGYpO1xuMjA3MzpcdFx0XHRpZiAocmRzdCBcdTAwMjZcdTAwMjYgdnhsYW5fYWRkcl9hbnkoXHUwMDI2cmRzdC1cdTAwM2VyZW1vdGVfaXApKSB7XG4yMDc0Olx0XHRcdFx0LyogYnJpZGdlLWxvY2FsIG5laWdoYm9yICovXG4yMDc1Olx0XHRcdFx0bmVpZ2hfcmVsZWFzZShuKTtcbjIwNzY6XHRcdFx0XHRnb3RvIG91dDtcbjIwNzc6XHRcdFx0fVxuMjA3ODpcdFxuMjA3OTpcdFx0XHRyZXBseSA9IHZ4bGFuX25hX2NyZWF0ZShza2IsIG4sIGhhLFxuMjA4MDpcdFx0XHRcdFx0XHQhIShmID8gZi1cdTAwM2VmbGFncyBcdTAwMjYgTlRGX1JPVVRFUiA6IDApKTtcbjIwODE6XHRcbjIwODI6XHRcdFx0bmVpZ2hfcmVsZWFzZShuKTtcbjIwODM6XHRcbjIwODQ6XHRcdFx0aWYgKHJlcGx5ID09IE5VTEwpXG4yMDg1Olx0XHRcdFx0Z290byBvdXQ7XG4yMDg2Olx0XG4yMDg3Olx0XHRcdGlmIChuZXRpZl9yeChyZXBseSkgPT0gTkVUX1JYX0RST1ApIHtcbjIwODg6XHRcdFx0XHRkZXZfZHN0YXRzX3J4X2Ryb3BwZWQoZGV2KTtcbjIwODk6XHRcdFx0XHR2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgTlVMTCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2MTkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIGB2eGxhbl94bWl0YCBhbmQgYG5laWdoX3JlZHVjZWA6CgoqKkRpdmluZyBpbnRvIHRoZSBWWExBTiBUcmFuc21pc3Npb24gUGF0aCBhbmQgTmVpZ2hib3IgRGlzY292ZXJ5KioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgaW4gb24gdGhlIFZYTEFOIHRyYW5zbWl0IGZ1bmN0aW9uIChgdnhsYW5feG1pdGApIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBwb2ludCB3aGVyZSBgbmVpZ2hfcmVkdWNlYCBnZXRzIGNhbGxlZC4gVGhpcyBtZWFucyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzZW5kaW5nIFZYTEFOIGVuY2Fwc3VsYXRlZCB0cmFmZmljLiBUaGUgZmFjdCB0aGF0IGBuZWlnaF9yZWR1Y2VgIGlzIGludm9sdmVkIHRlbGxzIG1lIHRoZSBzeXN0ZW0gaXMgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIG5laWdoYm9yIGRpc2NvdmVyeSBhbmQgcmVzb2x1dGlvbiBzY2VuYXJpby4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiBob3cgdGhlIHN5c3RlbSBmaWd1cmVzIG91dCB0aGUgTGF5ZXIgMiAoTUFDKSBhZGRyZXNzIG5lZWRlZCB0byByZWFjaCB0aGUgZGVzdGluYXRpb24gVlhMQU4gdHVubmVsIGVuZHBvaW50IChWVEVQKS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGBuZWlnaF9yZWR1Y2VgIGlzIGhhcHBlbmluZyBhdCB0aGlzIHBvaW50LiBJcyBpdCBiZWNhdXNlIHRoZSBBUlAvTkQgY2FjaGUgZW50cnkgZm9yIHRoZSBkZXN0aW5hdGlvbiBWVEVQIGlzIHN0YWxlIG9yIG1pc3Npbmc/IE9yIGlzIHRoZSBzeXN0ZW0gYWN0aXZlbHkgcHJvYmluZyB0byBjb25maXJtIGNvbm5lY3Rpdml0eT8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBgdnhsYW5feG1pdGAgdG8gYG5laWdoX3JlZHVjZWAgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHNpdHVhdGlvbi4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhIG11bHRpY2FzdCBzZXR1cCB3aGVyZSB0aGUgbmVpZ2hib3IgY2FjaGUgZW50cnkgbWF5IGJlIGR5bmFtaWM/IAoKSSBzdXNwZWN0IHRoaXMgaW52b2x2ZXMgc29tZSBmb3JtIG9mIEFSUC9ORCBzb2xpY2l0YXRpb24gb3IgZ3JhdHVpdG91cyBBUlAsIGJ1dCBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlIHN5c3RlbSBkZWNpZGVzICp3aGVuKiB0byBpbnZva2UgYG5laWdoX3JlZHVjZWAgaW4gdGhlIGB2eGxhbl94bWl0YCBjb2RlIHBhdGguIElzIHRoZXJlIGEgdGltZXIgaW52b2x2ZWQ/IFdoYXQgYXJlIHRoZSBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGUgbmVpZ2hib3IgY2FjaGUgdG8gYmUgY29uc2lkZXJlZCBzdGFsZT8gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBpcyBjcml0aWNhbC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IFZYTEFOIGFkZHMgYW4gb3V0ZXIgSVAvVURQIGhlYWRlciwgc28gcmVndWxhciBBUlAvTkQgbmVlZHMgdG8gYmUgYWRhcHRlZC4KCkkmIzM5O2xsIGNoZWNrIHRoZSBhc3NvY2lhdGVkIHZhcmlhYmxlcyB0byBjb25maXJtLiBJcyB0aGVyZSBhbnkgYnVmZmVyaW5nIGhhcHBlbmluZyBiZWZvcmUgbmVpZ2hib3IgcmVzb2x1dGlvbj8gRG9lcyB0aGlzIGhhdmUgaW1wbGljYXRpb25zIGZvciB0aGUgcGFja2V0IGRlbGl2ZXJ5IGxhdGVuY3k/IEFueSBwb3RlbnRpYWwgZm9yIHBhY2tldCBkcm9wcyBkdXJpbmcgdGhlIG5laWdoYm9yIHJlc29sdXRpb24gcHJvY2Vzcz8gSSBoYXZlIHRvIGxvb2sgZm9yIGFueSBvcHRpbWl6YXRpb25zIG9yIHdvcmthcm91bmRzIGZvciB0aGlzIGNyaXRpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNzUwOlx0XHRpbmZvID0gc2tiX3R1bm5lbF9pbmZvKHNrYik7XG4yNzUxOlx0XG4yNzUyOlx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuMjc1MzpcdFxuMjc1NDpcdFx0aWYgKHZ4bGFuLVx1MDAzZWNmZy5mbGFncyBcdTAwMjYgVlhMQU5fRl9DT0xMRUNUX01FVEFEQVRBKSB7XG4yNzU1Olx0XHRcdGlmIChpbmZvIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZW1vZGUgXHUwMDI2IElQX1RVTk5FTF9JTkZPX0JSSURHRSBcdTAwMjZcdTAwMjZcbjI3NTY6XHRcdFx0ICAgIGluZm8tXHUwMDNlbW9kZSBcdTAwMjYgSVBfVFVOTkVMX0lORk9fVFgpIHtcbjI3NTc6XHRcdFx0XHR2bmkgPSB0dW5uZWxfaWRfdG9fa2V5MzIoaW5mby1cdTAwM2VrZXkudHVuX2lkKTtcbjI3NTg6XHRcdFx0XHRuaGlkID0gaW5mby1cdTAwM2VrZXkubmhpZDtcbjI3NTk6XHRcdFx0fSBlbHNlIHtcbjI3NjA6XHRcdFx0XHRpZiAoaW5mbyBcdTAwMjZcdTAwMjYgaW5mby1cdTAwM2Vtb2RlIFx1MDAyNiBJUF9UVU5ORUxfSU5GT19UWClcbjI3NjE6XHRcdFx0XHRcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIE5VTEwsIGZhbHNlKTtcbjI3NjI6XHRcdFx0XHRlbHNlXG4yNzYzOlx0XHRcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX1RVTk5FTF9UWElORk8pO1xuMjc2NDpcdFx0XHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4yNzY1Olx0XHRcdH1cbjI3NjY6XHRcdH1cbjI3Njc6XHRcbjI3Njg6XHRcdGlmICh2eGxhbi1cdTAwM2VjZmcuZmxhZ3MgXHUwMDI2IFZYTEFOX0ZfUFJPWFkpIHtcbjI3Njk6XHRcdFx0ZXRoID0gZXRoX2hkcihza2IpO1xuMjc3MDpcdFx0XHRpZiAobnRvaHMoZXRoLVx1MDAzZWhfcHJvdG8pID09IEVUSF9QX0FSUClcbjI3NzE6XHRcdFx0XHRyZXR1cm4gYXJwX3JlZHVjZShkZXYsIHNrYiwgdm5pKTtcbjI3NzI6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbjI3NzM6XHRcdFx0ZWxzZSBpZiAobnRvaHMoZXRoLVx1MDAzZWhfcHJvdG8pID09IEVUSF9QX0lQVjYgXHUwMDI2XHUwMDI2XG4yNzc0Olx0XHRcdFx0IHBza2JfbmV0d29ya19tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MztcbjI3NzU6XHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBuZF9tc2cpKSBcdTAwMjZcdTAwMjZcbjI3NzY6XHRcdFx0XHQgaXB2Nl9oZHIoc2tiKS1cdTAwM2VuZXh0aGRyID09IElQUFJPVE9fSUNNUFY2KSB7XG4yNzc3Olx0XHRcdFx0c3RydWN0IG5kX21zZyAqbSA9IChzdHJ1Y3QgbmRfbXNnICopKGlwdjZfaGRyKHNrYikgJiM0MzsgMSk7XG4yNzc4Olx0XG4yNzc5Olx0XHRcdFx0aWYgKG0tXHUwMDNlaWNtcGguaWNtcDZfY29kZSA9PSAwIFx1MDAyNlx1MDAyNlxuMjc4MDpcdFx0XHRcdCAgICBtLVx1MDAzZWljbXBoLmljbXA2X3R5cGUgPT0gTkRJU0NfTkVJR0hCT1VSX1NPTElDSVRBVElPTilcbjI3ODE6XHRcdFx0XHRcdHJldHVybiBuZWlnaF9yZWR1Y2UoZGV2LCBza2IsIHZuaSk7XG4yNzgyOlx0XHRcdH1cbjI3ODM6XHQjZW5kaWZcbjI3ODQ6XHRcdH1cbjI3ODU6XHRcbjI3ODY6XHRcdGlmIChuaGlkKVxuMjc4NzpcdFx0XHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xuMjc4ODpcdFxuMjc4OTpcdFx0aWYgKHZ4bGFuLVx1MDAzZWNmZy5mbGFncyBcdTAwMjYgVlhMQU5fRl9NREIpIHtcbjI3OTA6XHRcdFx0c3RydWN0IHZ4bGFuX21kYl9lbnRyeSAqbWRiX2VudHJ5O1xuMjc5MTpcdFxuMjc5MjpcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4yNzkzOlx0XHRcdG1kYl9lbnRyeSA9IHZ4bGFuX21kYl9lbnRyeV9za2JfZ2V0KHZ4bGFuLCBza2IsIHZuaSk7XG4yNzk0Olx0XHRcdGlmIChtZGJfZW50cnkpIHtcbjI3OTU6XHRcdFx0XHRuZXRkZXZfdHhfdCByZXQ7XG4yNzk2Olx0XG4yNzk3Olx0XHRcdFx0cmV0ID0gdnhsYW5fbWRiX3htaXQodnhsYW4sIG1kYl9lbnRyeSwgc2tiKTtcbjI3OTg6XHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjI3OTk6XHRcdFx0XHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk5MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWWExBTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHRvdWNoaW5nIGB2eGxhbl9uYV9jcmVhdGVgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhcm91bmQgaG93IHdlIGFsbG9jYXRlIGFuZCBwcmVwYXJlIHRoZSBTS0IuIEkgc2VlIHRoZSBvcmlnaW5hbCBjb2RlIGFuZCB0aGUgdXBkYXRlZCBjb2RlIHNpZGUtYnktc2lkZS4KCkluaXRpYWxseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IE9yIGp1c3Qgc29tZSByZWZhY3RvcmluZz8mIzM0OyBUaGUgb3JpZ2luYWwgY29kZSBkaXJlY3RseSBjb21wdXRlZCB0aGUgbGVuZ3RoIGFuZCB0aGVuIGFsbG9jYXRlZCB0aGUgU0tCLCB3aGlsZSB0aGUgbmV3IGNvZGUgaW50cm9kdWNlcyBhIGBoZWFkcm9vbWAgdmFyaWFibGUuIEl0IGxvb2tzIGxpa2UgaXQgY29tcHV0ZXMgdGhlIGxlbmd0aCB0aGUgZXhhY3Qgc2FtZSB3YXkuCgpMZXQmIzM5O3MgdHJhY2UgaXQgdGhyb3VnaDogYGRldmAgaXMgYXNzaWduZWQgdG8gYHJlcXVlc3QtJmd0O2RldmAgb24gbGluZSAxOTQ0LiBBaCwgaXQmIzM5O3MgY2xlYXIgbm93LiBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgYW5kIGBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LSZndDtkZXYpYCBhcmUgZXF1aXZhbGVudCBiZWNhdXNlIGBkZXZgIGlzIGxpdGVyYWxseSBgcmVxdWVzdC0mZ3Q7ZGV2YC4gVGhpcyBsb29rcyBsaWtlIHNvbWUgbWlub3IgY2xlYW4tdXAsIG1heWJlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkgb3IgcHJlcGFyZSBmb3IgZnV0dXJlIGNoYW5nZXMuCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgTExfUkVTRVJWRURfU1BBQ0VgLiBJdCB3b3VsZCBiZSBnb29kIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGp1c3QgYSB2YXJpYWJsZSBhc3NpZ25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIExMX1JFU0VSVkVEX1NQQUNFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjgyPXN0cnVjdCBoaF9jYWNoZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDItICovXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjMwMzojZGVmaW5lIExMX1JFU0VSVkVEX1NQQUNFX0VYKGRldiwgaGxlbikgXFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMzA0LVx0KCgoKGhsZW4pICYjNDM7IFJFQURfT05DRSgoZGV2KS1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDUtXHQgIFx1MDAyNiB+KEhIX0RBVEFfTU9EIC0gMSkpICYjNDM7IEhIX0RBVEFfTU9EKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDY6I2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpIFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwNy1cdExMX1JFU0VSVkVEX1NQQUNFX0VYKGRldiwgKGRldiktXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDg6I2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRV9FWFRSQShkZXYsZXh0cmEpIFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwOS1cdCgoKChkZXYpLVx1MDAzZWhhcmRfaGVhZGVyX2xlbiAmIzQzOyBSRUFEX09OQ0UoKGRldiktXHUwMDNlbmVlZGVkX2hlYWRyb29tKSAmIzQzOyAoZXh0cmEpKSBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzEwNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIERhdGEgUmFjZXMgaW4gTmV0d29yayBCdWZmZXIgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgbWFjcm8sIHNwZWNpZmljYWxseSBob3cgaXQgdXNlcyBgUkVBRF9PTkNFKChkZXYpLSZndDtuZWVkZWRfaGVhZHJvb20pYC4gVGhlIHJlZCBmbGFnIGlzIGltbWVkaWF0ZTogaWYgYGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tYCBpcyByZWFkIGluIHR3byBwbGFjZXMsIGFuZCAqZXNwZWNpYWxseSogaWYgdGhhdCBoYXBwZW5zIGFyb3VuZCB0aGUgdGltZSB3ZSYjMzk7cmUgc2V0dGluZyB1cCBhIG5ldHdvcmsgYnVmZmVyIChgc2tiYCksIHRoZW4gd2UgY291bGQgaGF2ZSBhIGNsYXNzaWMgVGltZS1vZi1DaGVjay10by1UaW1lLW9mLVVzZSAoVE9DVE9VKSBkYXRhIHJhY2UuIEkgc2VlIGBuZWVkZWRfaGVhZHJvb21gIGJlaW5nIHJlYWQgZm9yIGNhbGN1bGF0aW5nIHRoZSBvdmVyYWxsIGxlbmd0aCAoYGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldikgJiM0MzsgLi4uYCkgYW5kIGFnYWluIHdoZW4gd2UgYWN0dWFsbHkgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnVmZmVyIChgc2tiX3Jlc2VydmUocmVwbHksIExMX1JFU0VSVkVEX1NQQUNFKHJlcXVlc3QtJmd0O2RldikpO2ApLiBNeSBjb25jZXJuIGlzLCBpZiBgbmVlZGVkX2hlYWRyb29tYCBpcyBtb2RpZmllZCBjb25jdXJyZW50bHksIHRoZSBjYWxjdWxhdGVkIGBsZW5gIGFuZCB0aGUgcmVzZXJ2ZWQgc3BhY2UgaW4gdGhlIFNLQiB3aWxsIGJlIGluY29uc2lzdGVudC4gVGhpcyBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBuYXN0eSBidWZmZXIgb3ZlcmZsb3dzIG9yIHVuZGVyZmxvd3MsIGFuZCBJJiMzOTttIHZlcnkga2VlbiB0byBhdm9pZCB0aGF0LgoKQnV0LCBob2xkIG9uLiBUaGlzICpjb3VsZCogYmUgYSBzdHJhaWdodGZvcndhcmQgcmVmYWN0b3JpbmcuIE1heWJlIEkmIzM5O20gYmVpbmcgdG9vIHBhcmFub2lkLiBJIGJldHRlciB2ZXJpZnkgdGhpcyB1c2luZyBvdGhlciBhcmVhcywgbGlrZSBgYXJwX3JlZHVjZWAgb3IgYGFycF9jcmVhdGVgLiBMZXQgbWUgY29tcGFyZSB0aG9zZSBpbXBsZW1lbnRhdGlvbnMgYW5kIHNlZSBob3cgc2ltaWxhciBzaXR1YXRpb25zIGFyZSBoYW5kbGVkIHRoZXJlLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcnBfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2FycC5jLTYzLSAqXHRcdEFybmFsZG8gQy4gTWVsbyA6XHRjb252ZXJ0IC9wcm9jL25ldC9hcnAgdG8gc2VxX2ZpbGVcbm5ldC9pcHY0L2FycC5jOjY0OiAqXHRcdFNobXVsaWsgSGVuOlx0XHRTcGxpdCBhcnBfc2VuZCB0byBhcnBfY3JlYXRlIGFuZFxubmV0L2lwdjQvYXJwLmMtNjUtICpcdFx0XHRcdFx0YXJwX3htaXQgc28gaW50ZXJtZWRpYXRlIGRyaXZlcnMgbGlrZVxuLS1cbm5ldC9pcHY0L2FycC5jPTMwMT1zdGF0aWMgdm9pZCBhcnBfc2VuZF9kc3QoaW50IHR5cGUsIGludCBwdHlwZSwgX19iZTMyIGRlc3RfaXAsXG4tLVxubmV0L2lwdjQvYXJwLmMtMzEzLVxubmV0L2lwdjQvYXJwLmM6MzE0Olx0c2tiID0gYXJwX2NyZWF0ZSh0eXBlLCBwdHlwZSwgZGVzdF9pcCwgZGV2LCBzcmNfaXAsXG5uZXQvaXB2NC9hcnAuYy0zMTUtXHRcdFx0IGRlc3RfaHcsIHNyY19odywgdGFyZ2V0X2h3KTtcbi0tXG5uZXQvaXB2NC9hcnAuYz01MTk9c3RhdGljIGlubGluZSBpbnQgYXJwX2Z3ZF9wdmxhbihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXG4tLVxubmV0L2lwdjQvYXJwLmMtNTQ0LSAqL1xubmV0L2lwdjQvYXJwLmM6NTQ1OnN0cnVjdCBza19idWZmICphcnBfY3JlYXRlKGludCB0eXBlLCBpbnQgcHR5cGUsIF9fYmUzMiBkZXN0X2lwLFxubmV0L2lwdjQvYXJwLmMtNTQ2LVx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUzMiBzcmNfaXAsXG4tLVxubmV0L2lwdjQvYXJwLmMtNjUwLX1cbm5ldC9pcHY0L2FycC5jOjY1MTpFWFBPUlRfU1lNQk9MKGFycF9jcmVhdGUpO1xubmV0L2lwdjQvYXJwLmMtNjUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzk4NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGNvZGU6CgoqKkRpdmluZyBpbnRvIGBhcnBfY3JlYXRlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gbG9va2luZyBhdCBgYXJwX2NyZWF0ZWAgaW4gYG5ldC9pcHY0L2FycC5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgb2YgQWRkcmVzcyBSZXNvbHV0aW9uIFByb3RvY29sIGdldHMgYmFrZWQgaW50byB0aGUga2VybmVsJiMzOTtzIElQdjQgc3RhY2suIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGNydWNpYWw7IGl0JiMzOTtzIHRoZSBnYXRla2VlcGVyLCBkZWNpZGluZyB3aGV0aGVyIGEgbmV3IEFSUCBlbnRyeSBnZXRzIGNyZWF0ZWQgb3IgaWYgd2UgbmVlZCB0byBkbyBzb21lIGRldGVjdGl2ZSB3b3JrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucywgdGhlIGNoZWNrcywgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCYjMzk7cyBtYW5pcHVsYXRpbmcuIEVzc2VudGlhbGx5LCBJJiMzOTttIHBlZWxpbmcgYmFjayB0aGUgbGF5ZXJzIG9uIGhvdyB0aGUga2VybmVsIGJ1aWxkcyBhbmQgbWFuYWdlcyBpdHMgQVJQIGNhY2hlIGZvciBJUHY0LiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgbG9ja2luZyBzdHJhdGVnaWVzLCBvciBldmVuIG9wdGltaXphdGlvbnMgdGhhdCBjb3VsZCBhZmZlY3QgcGVyZm9ybWFuY2UuIFRoaXMgbG9va3MgbGlrZSBhbiBpbnRlcmVzdGluZyBzdGFydGluZyBwb2ludC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQgaW5zaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2FycC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NDU6XHRzdHJ1Y3Qgc2tfYnVmZiAqYXJwX2NyZWF0ZShpbnQgdHlwZSwgaW50IHB0eXBlLCBfX2JlMzIgZGVzdF9pcCxcbiA1NDY6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMzIgc3JjX2lwLFxuIDU0NzpcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRlc3RfaHcsXG4gNTQ4Olx0XHRcdFx0ICAgY29uc3QgdW5zaWduZWQgY2hhciAqc3JjX2h3LFxuIDU0OTpcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhcmdldF9odylcbiA1NTA6XHR7XG4gNTUxOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDU1MjpcdFx0c3RydWN0IGFycGhkciAqYXJwO1xuIDU1MzpcdFx0dW5zaWduZWQgY2hhciAqYXJwX3B0cjtcbiA1NTQ6XHRcdGludCBobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbiA1NTU6XHRcdGludCB0bGVuID0gZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiA1NTY6XHRcbiA1NTc6XHRcdC8qXG4gNTU4Olx0XHQgKlx0QWxsb2NhdGUgYSBidWZmZXJcbiA1NTk6XHRcdCAqL1xuIDU2MDpcdFxuIDU2MTpcdFx0c2tiID0gYWxsb2Nfc2tiKGFycF9oZHJfbGVuKGRldikgJiM0MzsgaGxlbiAmIzQzOyB0bGVuLCBHRlBfQVRPTUlDKTtcbiA1NjI6XHRcdGlmICghc2tiKVxuIDU2MzpcdFx0XHRyZXR1cm4gTlVMTDtcbiA1NjQ6XHRcbiA1NjU6XHRcdHNrYl9yZXNlcnZlKHNrYiwgaGxlbik7XG4gNTY2Olx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbiA1Njc6XHRcdHNrYl9wdXQoc2tiLCBhcnBfaGRyX2xlbihkZXYpKTtcbiA1Njg6XHRcdHNrYi1cdTAwM2VkZXYgPSBkZXY7XG4gNTY5Olx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9BUlApO1xuIDU3MDpcdFx0aWYgKCFzcmNfaHcpXG4gNTcxOlx0XHRcdHNyY19odyA9IGRldi1cdTAwM2VkZXZfYWRkcjtcbiA1NzI6XHRcdGlmICghZGVzdF9odylcbiA1NzM6XHRcdFx0ZGVzdF9odyA9IGRldi1cdTAwM2Vicm9hZGNhc3Q7XG4gNTc0Olx0XG4gNTc1Olx0XHQvKiBGaWxsIHRoZSBkZXZpY2UgaGVhZGVyIGZvciB0aGUgQVJQIGZyYW1lLlxuIDU3NjpcdFx0ICogTm90ZTogc2tiLVx1MDAzZWhlYWQgY2FuIGJlIGNoYW5nZWQuXG4gNTc3Olx0XHQgKi9cbiA1Nzg6XHRcdGlmIChkZXZfaGFyZF9oZWFkZXIoc2tiLCBkZXYsIHB0eXBlLCBkZXN0X2h3LCBzcmNfaHcsIHNrYi1cdTAwM2VsZW4pIFx1MDAzYyAwKVxuIDU3OTpcdFx0XHRnb3RvIG91dDtcbiA1ODA6XHRcbiA1ODE6XHRcdGFycCA9IGFycF9oZHIoc2tiKTtcbiA1ODI6XHRcdC8qXG4gNTgzOlx0XHQgKiBGaWxsIG91dCB0aGUgYXJwIHByb3RvY29sIHBhcnQuXG4gNTg0Olx0XHQgKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODg1MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgYXMgdGhvdWdoIEkmIzM5O20gcHJvY2Vzc2luZyB0aGUgcHJvbXB0OgoKKipBbmFseXppbmcgYGFycF9yZWR1Y2VgIGluIHRoZSBDb250ZXh0IG9mIFZYTEFOKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gdGhpbmsgdGhyb3VnaCB0aGUgaW1wbGljYXRpb25zIG9mIGBhcnBfcmVkdWNlYCBpbiBhIFZYTEFOIGVudmlyb25tZW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IEFSUCAoQWRkcmVzcyBSZXNvbHV0aW9uIFByb3RvY29sKSB0cmFmZmljIGlzIGhhbmRsZWQgaW4gdGhpcyBvdmVybGF5IG5ldHdvcmssIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIG1lYW50IHRvIG9wdGltaXplIGl0LiBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IGhlYWQ6IFdoYXQgc3BlY2lmaWMgcHJvYmxlbSBpcyBgYXJwX3JlZHVjZWAgdHJ5aW5nIHRvIHNvbHZlPyBJcyBpdCByZWxhdGVkIHRvIGJyb2FkY2FzdCBkb21haW4gbGltaXRhdGlvbnMgaW5oZXJlbnQgaW4gVlhMQU4/IElzIGl0IGFib3V0IHJlZHVjaW5nIEFSUCBmbG9vZHMgd2l0aGluIHRoZSB1bmRlcmxheSBuZXR3b3JrPyBXaGF0IHN0cmF0ZWdpZXMgZG9lcyBpdCBlbXBsb3k/IERvZXMgaXQgaW52b2x2ZSBBUlAgcHJveHlpbmcsIHN1cHByZXNzaW9uLCBjYWNoaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG51YW5jZXMgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggVlRFUHMgKFZYTEFOIFR1bm5lbCBFbmRwb2ludHMpIGFuZCB0aGUgY29udHJvbCBwbGFuZSwgaWYgYW55LCBhcmUga2V5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgcG90ZW50aWFsIHRyYWRlLW9mZnMgaW4gdGVybXMgb2YgY29udmVyZ2VuY2UgdGltZSwgYW5kIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gbW9kaWZ5aW5nIHRoZSBzdGFuZGFyZCBBUlAgYmVoYXZpb3IuIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciB0byBmaW5kIHRoZSBleGFjdCBtZWNoYW5pc20gdXNlZCBieSB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBhbiBleGlzdGluZyBmdW5jdGlvbiBhbmQgbm90IHNvbWV0aGluZyBuZXcsIHNvIGxvb2tpbmcgZm9yIHJlZmVyZW5jZXMgdG8gZG9jdW1lbnRhdGlvbiB0aGF0IGRlc2NyaWJlcyBpdCB3aWxsIGJlIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4NDA6XHR9XG4xODQxOlx0XG4xODQyOlx0c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG4xODQzOlx0e1xuMTg0NDpcdFx0c3RydWN0IHZ4bGFuX2RldiAqdnhsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xuMTg0NTpcdFx0c3RydWN0IGFycGhkciAqcGFycDtcbjE4NDY6XHRcdHU4ICphcnBwdHIsICpzaGE7XG4xODQ3Olx0XHRfX2JlMzIgc2lwLCB0aXA7XG4xODQ4Olx0XHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xuMTg0OTpcdFxuMTg1MDpcdFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX05PQVJQKVxuMTg1MTpcdFx0XHRnb3RvIG91dDtcbjE4NTI6XHRcbjE4NTM6XHRcdGlmICghcHNrYl9uZXR3b3JrX21heV9wdWxsKHNrYiwgYXJwX2hkcl9sZW4oZGV2KSkpIHtcbjE4NTQ6XHRcdFx0ZGV2X2RzdGF0c190eF9kcm9wcGVkKGRldik7XG4xODU1Olx0XHRcdHZ4bGFuX3ZuaWZpbHRlcl9jb3VudCh2eGxhbiwgdm5pLCBOVUxMLFxuMTg1NjpcdFx0XHRcdFx0ICAgICAgVlhMQU5fVk5JX1NUQVRTX1RYX0RST1BTLCAwKTtcbjE4NTc6XHRcdFx0Z290byBvdXQ7XG4xODU4Olx0XHR9XG4xODU5Olx0XHRwYXJwID0gYXJwX2hkcihza2IpO1xuMTg2MDpcdFxuMTg2MTpcdFx0aWYgKChwYXJwLVx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfRVRIRVIpIFx1MDAyNlx1MDAyNlxuMTg2MjpcdFx0ICAgICBwYXJwLVx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfSUVFRTgwMikpIHx8XG4xODYzOlx0XHQgICAgcGFycC1cdTAwM2Vhcl9wcm8gIT0gaHRvbnMoRVRIX1BfSVApIHx8XG4xODY0Olx0XHQgICAgcGFycC1cdTAwM2Vhcl9vcCAhPSBodG9ucyhBUlBPUF9SRVFVRVNUKSB8fFxuMTg2NTpcdFx0ICAgIHBhcnAtXHUwMDNlYXJfaGxuICE9IGRldi1cdTAwM2VhZGRyX2xlbiB8fFxuMTg2NjpcdFx0ICAgIHBhcnAtXHUwMDNlYXJfcGxuICE9IDQpXG4xODY3Olx0XHRcdGdvdG8gb3V0O1xuMTg2ODpcdFx0YXJwcHRyID0gKHU4ICopcGFycCAmIzQzOyBzaXplb2Yoc3RydWN0IGFycGhkcik7XG4xODY5Olx0XHRzaGEgPSBhcnBwdHI7XG4xODcwOlx0XHRhcnBwdHIgJiM0Mzs9IGRldi1cdTAwM2VhZGRyX2xlbjtcdC8qIHNoYSAqL1xuMTg3MTpcdFx0bWVtY3B5KFx1MDAyNnNpcCwgYXJwcHRyLCBzaXplb2Yoc2lwKSk7XG4xODcyOlx0XHRhcnBwdHIgJiM0Mzs9IHNpemVvZihzaXApO1xuMTg3MzpcdFx0YXJwcHRyICYjNDM7PSBkZXYtXHUwMDNlYWRkcl9sZW47XHQvKiB0aGEgKi9cbjE4NzQ6XHRcdG1lbWNweShcdTAwMjZ0aXAsIGFycHB0ciwgc2l6ZW9mKHRpcCkpO1xuMTg3NTpcdFxuMTg3NjpcdFx0aWYgKGlwdjRfaXNfbG9vcGJhY2sodGlwKSB8fFxuMTg3NzpcdFx0ICAgIGlwdjRfaXNfbXVsdGljYXN0KHRpcCkpXG4xODc4Olx0XHRcdGdvdG8gb3V0O1xuMTg3OTpcdFxuMTg4MDpcdFx0biA9IG5laWdoX2xvb2t1cChcdTAwMjZhcnBfdGJsLCBcdTAwMjZ0aXAsIGRldik7XG4xODgxOlx0XG4xODgyOlx0XHRpZiAobikge1xuMTg4MzpcdFx0XHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XG4xODg0Olx0XHRcdHU4IGhhW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XG4xODg1Olx0XHRcdHN0cnVjdCB2eGxhbl9mZGIgKmY7XG4xODg2Olx0XHRcdHN0cnVjdCBza19idWZmXHQqcmVwbHk7XG4xODg3Olx0XG4xODg4Olx0XHRcdGlmICghKFJFQURfT05DRShuLVx1MDAzZW51ZF9zdGF0ZSkgXHUwMDI2IE5VRF9DT05ORUNURUQpKSB7XG4xODg5Olx0XHRcdFx0bmVpZ2hfcmVsZWFzZShuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMjMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBbmFseXNpczogYHZ4bGFuX25hX2NyZWF0ZWAgaW4gVlhMQU4gUHJveHkgTW9kZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdnhsYW5fbmFfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyB3aXRoaW4gVlhMQU4sIHNwZWNpZmljYWxseSBpbiBwcm94eSBtb2RlIOKAkyBlaXRoZXIgdGhyb3VnaCBgVlhMQU5fRl9QUk9YWWAgb3IgdGhlIElQdjYgbmVpZ2hib3IgcmVkdWN0aW9uIG1lY2hhbmlzbS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGlzIGNvZGUgcGF0aCBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VPwoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgVlhMQU4gaXMgYSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLCBjcmVhdGVkIHVzaW5nIGBpcCBsaW5rIGFkZCB0eXBlIHZ4bGFuYC4gUUVNVSBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIFZYTEFOIGludGVyZmFjZXMsIGluY2x1ZGluZyB0aG9zZSB3aXRoIHByb3h5IG1vZGUgZW5hYmxlZC4gRnVydGhlcm1vcmUsIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCB0byBzZW5kIElQdjYgbmVpZ2hib3Igc29saWNpdGF0aW9uIHBhY2tldHMsIHdoaWNoIHNob3VsZCB0cmlnZ2VyIGB2eGxhbl9uYV9jcmVhdGVgLiBUaGUgY2hhbmdlIGRpcmVjdGx5IHRvdWNoZXMgdGhlIGNvcmUgVlhMQU4gZHJpdmVyIGxvZ2ljIGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLCBzbyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBzaWduaWZpY2FudCBhcmVhLgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGBXb3J0aEZ1enppbmdgIGNyaXRlcmlhLgoKKiAgIERvZXMgaXQgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcz8gWWVzLCBpdCYjMzk7cyB0aGUgVlhMQU4gZHJpdmVyLCBhIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnQuCiogICBEb2VzIHRoZSBwYXRjaCBjb25zaXN0IHNvbGVseSBvZiBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29tbWVudHM/IE5vLgoqICAgSXMgaXQgcHVyZWx5IGNvc21ldGljIGNoYW5nZXMgbGlrZSBsb2dnaW5nIG9yIHRyYWNlcG9pbnRzPyBOby4KKiAgIElzIGl0IG1lcmVseSBjaGFuZ2VzIHRvIG51bWVyaWNhbCBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbj8gTm8uCiogICBJcyB0aGlzIGEgY29kZSBwYXRoIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBBYnNvbHV0ZWx5IG5vdCwgVlhMQU4gaXMgYSB2aXJ0dWFsIGRldmljZSBhbmQgaXMgd2lkZWx5IHVzZWQgYW5kIGZ1enplZCBpbiBRRU1VLgoqICAgSXMgaXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnM/IE5vLgoqICAgSXMgaXQgYSBkcml2ZXIgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2s/IE5vLgoKVGhlcmVmb3JlLCBieSBwcm9jZXNzIG9mIGVsaW1pbmF0aW9uIGFuZCBleHBlcnQganVkZ2VtZW50LCB0aGlzIGNsZWFybHkgcXVhbGlmaWVzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC4KCk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBzeW1ib2xzIGFyZSBtb2RpZmllZCBvciBhcmUgZGlyZWN0bHkgY2FsbGluZyB0aGUgbW9kaWZpZWQgbG9naWMuIEl0IGxvb2tzIGxpa2UgYHZ4bGFuX25hX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIGFzIGlzIGBuZWlnaF9yZWR1Y2VgLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiBgdnhsYW5fY29yZS5jYCBhbmQgVlhMQU4mIzM5O3MgTkRPIG9wZXJhdGlvbnMgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5feG1pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjMxOT1zdGF0aWMgaW50IGVuY2FwX2J5cGFzc19pZl9sb2NhbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzU3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzNTg6dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzNTktXHRcdCAgICBfX2JlMzIgZGVmYXVsdF92bmksIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0LCBib29sIGRpZF9yc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY2NDpzdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cdFx0XHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MC1cdGlmIChsaWtlbHkoZG9feG1pdCkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MTpcdFx0dnhsYW5feG1pdF9vbmUoc2tiLCBkZXYsIHZuaSwgXHUwMDI2bmhfcmRzdCwgZGlkX3JzYyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4Mi1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5My1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk0OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk1LVx0XHRcdFx0ICAgdTMyIG5oaWQsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3MTgtXHRpZiAobGlrZWx5KGRvX3htaXQpKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI3MTk6XHRcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIFx1MDAyNm5oX3Jkc3QsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzIwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzM4LSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI3Mzk6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzQwLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc2MC1cdFx0XHRpZiAoaW5mbyBcdTAwMjZcdTAwMjYgaW5mby1cdTAwM2Vtb2RlIFx1MDAyNiBJUF9UVU5ORUxfSU5GT19UWClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzYxOlx0XHRcdFx0dnhsYW5feG1pdF9vbmUoc2tiLCBkZXYsIHZuaSwgTlVMTCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NjItXHRcdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzg2LVx0aWYgKG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc4NzpcdFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzg4LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODMzLVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVx1MDAzZW5oKSkge1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MzQ6XHRcdHZ4bGFuX3htaXRfbmgoc2tiLCBkZXYsIGYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgzNS1cdFx0XHQgICAgICAodm5pID8gOiB2eGxhbi1cdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NDUtXHRcdFx0aWYgKHNrYjEpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg0NjpcdFx0XHRcdHZ4bGFuX3htaXRfb25lKHNrYjEsIGRldiwgdm5pLCByZHN0LCBkaWRfcnNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODQ3LVx0XHR9XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg0OC1cdFx0aWYgKGZkc3QpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg0OTpcdFx0XHR2eGxhbl94bWl0X29uZShza2IsIGRldiwgdm5pLCBmZHN0LCBkaWRfcnNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODUwLVx0XHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMyOTM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfZXRoZXJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk3LVx0Lm5kb19zdG9wXHRcdD0gdnhsYW5fc3RvcCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMjk4Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gdnhsYW5feG1pdCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk5LVx0Lm5kb19zZXRfcnhfbW9kZVx0PSB2eGxhbl9zZXRfbXVsdGljYXN0X2xpc3QsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfcmF3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMyMC1cdC5uZG9fc3RvcFx0XHQ9IHZ4bGFuX3N0b3AsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMyMTpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IHZ4bGFuX3htaXQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMyMi1cdC5uZG9fY2hhbmdlX210dVx0XHQ9IHZ4bGFuX2NoYW5nZV9tdHUsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTcwMj1uZXRkZXZfdHhfdCB2eGxhbl9tZGJfeG1pdChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNzIzLVx0XHRpZiAoc2tiMSlcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE3MjQ6XHRcdFx0dnhsYW5feG1pdF9vbmUoc2tiMSwgdnhsYW4tXHUwMDNlZGV2LCBzcmNfdm5pLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTcyNS1cdFx0XHRcdCAgICAgICByY3VfZGVyZWZlcmVuY2UocmVtb3RlLVx1MDAzZXJkKSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE3MjgtXHRpZiAoZnJlbW90ZSlcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE3Mjk6XHRcdHZ4bGFuX3htaXRfb25lKHNrYiwgdnhsYW4tXHUwMDNlZGV2LCBzcmNfdm5pLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTczMC1cdFx0XHQgICAgICAgcmN1X2RlcmVmZXJlbmNlKGZyZW1vdGUtXHUwMDNlcmQpLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTE5MT1pbnQgdnhsYW5fZmRiX3VwZGF0ZShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMTk2LVx0XHQgICAgIGJvb2wgc3dkZXZfbm90aWZ5LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oOjE5Nzp2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMTk4LVx0XHQgICAgX19iZTMyIGRlZmF1bHRfdm5pLCBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCwgYm9vbCBkaWRfcnNjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5NDcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFZYTEFOIE5laWdoYm9yIERpc2NvdmVyeSBhbmQgVHJhbnNtaXNzaW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgdnhsYW5fY29yZS5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2VzIG1hZGUgYXJvdW5kIGB2eGxhbl9uYV9jcmVhdGVgIOKAkyB0aGF0JiMzOTtzIHRoZSBmb2NhbCBwb2ludCwgaXNuJiMzOTt0IGl0PyBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgaW1wYWN0IG5laWdoYm9yIGRpc2NvdmVyeSBhbmQgdHJhbnNtaXNzaW9uLgoKUmlnaHQsIHNvIGBuZWlnaF9yZWR1Y2VgIGlzIGNhbGxpbmcgYHZ4bGFuX25hX2NyZWF0ZWAuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGludGVyYWN0aW9uLiBBbHNvLCBgdnhsYW5feG1pdGAgYXBwZWFycyB0byBiZSBoYW5kbGluZyBuZG9fc3RhcnRfeG1pdCwgYW5kIGl0IGFsc28gY2FsbHMgYG5laWdoX3JlZHVjZWAuIEludGVyZXN0aW5nLCBpbnRlcmVzdGluZy4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIG1vZGlmaWNhdGlvbiwgSSB3aWxsIGNoZWNrIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIGZ1bmN0aW9ucyB3aXRoIGB2eGxhbl9uYV9jcmVhdGVgLiAKClRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyB6b29tIG91dCBhbmQgY2hlY2sgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiBgdnhsYW5fY29yZS5jYCBhcmUgbm90IGlubGluZWQgb3Igc3RhdGljLCBhbmQgdGhlcmVmb3JlIHBvc3NpYmx5IG1vcmUgcHVibGljbHkgYWNjZXNzaWJsZSBvciBoYXZlIGEgbW9yZSBjb21wbGV4IHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIGB2eGxhbl94bWl0X29uZWAgbG9va3MgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQg4oCTIGl0JiMzOTtzIG5vbi1zdGF0aWMsIHNvIHRoZXJlJiMzOTtzIGFuIGV4dGVybmFsIGhvb2sgdGhlcmUuIEFuZCB0aGVuIEkgc2hvdWxkIGNvbnNpZGVyIG90aGVyIHBvdGVudGlhbGx5IHNpZ25pZmljYW50IGZ1bmN0aW9ucyBsaWtlIGB2eGxhbl9mZGJfdXBkYXRlYCwgYHZ4bGFuX2ZkYl9hZGRgLCBgdnhsYW5fZGV2X2lvY3RsYCwgYW5kIGB2eGxhbl9jaGFuZ2VsaW5rYCwganVzdCB0byBiZSBzYWZlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhpcyBjaGFuZ2UgcmlwcGxlcyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTQyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDk9c3RhdGljIHVuc2lnbmVkIHNob3J0IHZ4bGFuX3BvcnQgX19yZWFkX21vc3RseSA9IDg0NzI7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTA6bW9kdWxlX3BhcmFtX25hbWVkKHVkcF9wb3J0LCB2eGxhbl9wb3J0LCB1c2hvcnQsIDA0NDQpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjUxOk1PRFVMRV9QQVJNX0RFU0ModWRwX3BvcnQsIFwmIzM0O0Rlc3RpbmF0aW9uIFVEUCBwb3J0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz01Mz1zdGF0aWMgYm9vbCBsb2dfZWNuX2Vycm9yID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NDptb2R1bGVfcGFyYW0obG9nX2Vjbl9lcnJvciwgYm9vbCwgMDY0NCk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTU6TU9EVUxFX1BBUk1fREVTQyhsb2dfZWNuX2Vycm9yLCBcJiMzNDtMb2cgcGFja2V0cyByZWNlaXZlZCB3aXRoIGNvcnJ1cHRlZCBFQ05cJiMzNDspO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU2LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz02MD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhsYW5fbGlua19vcHM7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjI6c3RhdGljIGludCB2eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbik7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjQ6c3RhdGljIHZvaWQgdnhsYW5fdnNfZGVsX2RldihzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbik7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NjY9c3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyB2eGxhbl9mZGJfcmh0X3BhcmFtcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzM6c3RhdGljIGlubGluZSBib29sIHZ4bGFuX2NvbGxlY3RfbWV0YWRhdGEoc3RydWN0IHZ4bGFuX3NvY2sgKnZzKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtODItICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6ODM6c3RhdGljIHN0cnVjdCB2eGxhbl9zb2NrICp2eGxhbl9maW5kX3NvY2soc3RydWN0IG5ldCAqbmV0LCBzYV9mYW1pbHlfdCBmYW1pbHksXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtODQtXHRcdFx0XHRcdCAgX19iZTE2IHBvcnQsIHUzMiBmbGFncywgaW50IGlmaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEwMDpzdGF0aWMgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW5fdnNfZmluZF92bmkoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwMS1cdFx0XHRcdFx0ICAgaW50IGlmaW5kZXgsIF9fYmUzMiB2bmksXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0MC0vKiBMb29rIHVwIFZOSSBpbiBhIHBlciBuZXQgbmFtZXNwYWNlIHRhYmxlICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQxOnN0YXRpYyBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbl9maW5kX3ZuaShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0Mi1cdFx0XHRcdFx0X19iZTMyIHZuaSwgc2FfZmFtaWx5X3QgZmFtaWx5LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTQtLyogRmlsbCBpbiBuZWlnaGJvdXIgbWVzc2FnZSBpbiBza2J1ZmYuICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTU1OnN0YXRpYyBpbnQgdnhsYW5fZmRiX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTU2LVx0XHRcdCAgY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNTAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjUxOnN0YXRpYyBpbmxpbmUgc2l6ZV90IHZ4bGFuX25sbXNnX3NpemUodm9pZClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjYzOnN0YXRpYyB2b2lkIF9fdnhsYW5fZmRiX25vdGlmeShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NC1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBpbnQgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4ODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfc3dpdGNoZGV2X25vdGlmaWVyX2luZm8oY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiICpmZGIsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDY6c3RhdGljIGludCB2eGxhbl9mZGJfc3dpdGNoZGV2X2NhbGxfbm90aWZpZXJzKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNy1cdFx0XHRcdFx0ICAgICAgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjYtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI3OnN0YXRpYyBpbnQgdnhsYW5fZmRiX25vdGlmeShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyOC1cdFx0XHQgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBpbnQgdHlwZSwgYm9vbCBzd2Rldl9ub3RpZnksXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTI6c3RhdGljIHZvaWQgdnhsYW5faXBfbWlzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bmlvbiB2eGxhbl9hZGRyICppcGEpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzUzLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzY1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2NjpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfbWlzcyhzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgY29uc3QgdTggZXRoX2FkZHJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2Ny17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3OC0vKiBMb29rIHVwIEV0aGVybmV0IGFkZHJlc3MgaW4gZm9yd2FyZGluZyB0YWJsZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM3OTpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmluZF9tYWNfcmN1KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM4MC1cdFx0XHRcdFx0ICAgIGNvbnN0IHU4ICptYWMsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozOTU6c3RhdGljIHN0cnVjdCB2eGxhbl9mZGIgKnZ4bGFuX2ZpbmRfbWFjX3R4KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5Ni1cdFx0XHRcdFx0ICAgY29uc3QgdTggKm1hYywgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDEwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQxMTpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmluZF9tYWMoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDEyLVx0XHRcdFx0XHRjb25zdCB1OCAqbWFjLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjUtLyogY2FsbGVyIHNob3VsZCBob2xkIHZ4bGFuLVx1MDAzZWhhc2hfbG9jayAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQyNjpzdGF0aWMgc3RydWN0IHZ4bGFuX3Jkc3QgKnZ4bGFuX2ZkYl9maW5kX3Jkc3Qoc3RydWN0IHZ4bGFuX2ZkYiAqZixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjctXHRcdFx0XHRcdCAgICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLCBfX2JlMTYgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ0MzppbnQgdnhsYW5fZmRiX2ZpbmRfdWMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKm1hYywgX19iZTMyIHZuaSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDQtXHRcdCAgICAgIHN0cnVjdCBzd2l0Y2hkZXZfbm90aWZpZXJfdnhsYW5fZmRiX2luZm8gKmZkYl9pbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzMtfVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3NDpFWFBPUlRfU1lNQk9MX0dQTCh2eGxhbl9mZGJfZmluZF91Yyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3NjpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9ub3RpZnlfb25lKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc3LVx0XHRcdFx0Y29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ5MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0OTE6aW50IHZ4bGFuX2ZkYl9yZXBsYXkoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTMyIHZuaSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00OTItXHRcdCAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTIxLX1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1MjI6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX3JlcGxheSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTIzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjUyNDp2b2lkIHZ4bGFuX2ZkYl9jbGVhcl9vZmZsb2FkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUzMiB2bmkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTI1LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTQzLX1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NDQ6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX2NsZWFyX29mZmxvYWQpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU0NS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NDYtLyogUmVwbGFjZSBkZXN0aW5hdGlvbiBvZiB1bmljYXN0IG1hYyAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU0NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9yZXBsYWNlKHN0cnVjdCB2eGxhbl9mZGIgKmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTQ4LVx0XHRcdCAgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiBwb3J0LCBfX2JlMzIgdm5pLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NzEtLyogQWRkL3VwZGF0ZSBkZXN0aW5hdGlvbnMgZm9yIG11bHRpY2FzdCAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU3MjpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9hcHBlbmQoc3RydWN0IHZ4bGFuX2ZkYiAqZixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NzMtXHRcdFx0ICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLCBfX2JlMTYgcG9ydCwgX19iZTMyIHZuaSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjAyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYwMzpzdGF0aWMgYm9vbCB2eGxhbl9wYXJzZV9ncGVfcHJvdG8oY29uc3Qgc3RydWN0IHZ4bGFuaGRyICpoZHIsIF9fYmUxNiAqcHJvdG9jb2wpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjA0LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjI4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYyOTpzdGF0aWMgc3RydWN0IHZ4bGFuaGRyICp2eGxhbl9ncm9fcmVtY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTYzMC1cdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgb2ZmLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02NTQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjU1OnN0YXRpYyBzdHJ1Y3QgdnhsYW5oZHIgKnZ4bGFuX2dyb19wcmVwYXJlX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTY1Ni1cdFx0XHRcdFx0XHQgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTcwOC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3MDk6c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9ncm9fcmVjZWl2ZShzdHJ1Y3Qgc29jayAqc2ssXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzEwLVx0XHRcdFx0XHQgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzI0LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjcyNTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX2dwZV9ncm9fcmVjZWl2ZShzdHJ1Y3Qgc29jayAqc2ssXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzI2LVx0XHRcdFx0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc1MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3NTE6c3RhdGljIGludCB2eGxhbl9ncm9fY29tcGxldGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhvZmYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzUyLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzU4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc1OTpzdGF0aWMgaW50IHZ4bGFuX2dwZV9ncm9fY29tcGxldGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhvZmYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzYwLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzczLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc3NDpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmRiX2FsbG9jKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBjb25zdCB1OCAqbWFjLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc3NS1cdFx0XHRcdFx0IF9fdTE2IHN0YXRlLCBfX2JlMzIgc3JjX3ZuaSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzk2LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc5NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9uaF91cGRhdGUoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03OTgtXHRcdFx0ICAgICAgIHUzMiBuaGlkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTg1OC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo4NTk6aW50IHZ4bGFuX2ZkYl9jcmVhdGUoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtODYwLVx0XHQgICAgIGNvbnN0IHU4ICptYWMsIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MTEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTEyOnN0YXRpYyB2b2lkIF9fdnhsYW5fZmRiX2ZyZWUoc3RydWN0IHZ4bGFuX2ZkYiAqZilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MTMte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTMxOnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzIte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTM4OnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9kZXN0cm95KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBzdHJ1Y3QgdnhsYW5fZmRiICpmLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTkzOS1cdFx0XHQgICAgICBib29sIGRvX25vdGlmeSwgYm9vbCBzd2Rldl9ub3RpZnkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk2Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo5NjM6c3RhdGljIHZvaWQgdnhsYW5fZHN0X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk2NC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk3MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo5NzE6c3RhdGljIGludCB2eGxhbl9mZGJfdXBkYXRlX2V4aXN0aW5nKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk3Mi1cdFx0XHRcdCAgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwNjktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTA3MDpzdGF0aWMgaW50IHZ4bGFuX2ZkYl91cGRhdGVfY3JlYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwNzEtXHRcdFx0XHQgICBjb25zdCB1OCAqbWFjLCB1bmlvbiB2eGxhbl9hZGRyICppcCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTEwNS0vKiBBZGQgbmV3IGVudHJ5IHRvIGZvcndhcmRpbmcgdGFibGUgLS0gYXNzdW1lcyBsb2NrIGhlbGQgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMTA2OmludCB2eGxhbl9mZGJfdXBkYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExMDctXHRcdCAgICAgY29uc3QgdTggKm1hYywgdW5pb24gdnhsYW5fYWRkciAqaXAsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExMzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTEzODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfZHN0X2Rlc3Ryb3koc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTEzOS1cdFx0XHRcdCAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBib29sIHN3ZGV2X25vdGlmeSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTE0NS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMTQ2OnN0YXRpYyBpbnQgdnhsYW5fZmRiX3BhcnNlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExNDctXHRcdFx0ICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiAqcG9ydCwgX19iZTMyICpzcmNfdm5pLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMjMyLS8qIEFkZCBzdGF0aWMgZW50cnkgKHZpYSBuZXRsaW5rKSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEyMzM6c3RhdGljIGludCB2eGxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyMzQtXHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyNzUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTI3NjppbnQgX192eGxhbl9mZGJfZGVsZXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyNzctXHRcdCAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLCB1bmlvbiB2eGxhbl9hZGRyIGlwLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzA5LS8qIERlbGV0ZSBlbnRyeSAodmlhIG5ldGxpbmspICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTMxMDpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9kZWxldGUoc3RydWN0IG5kbXNnICpuZG0sIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTMxMS1cdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTMzOC0vKiBEdW1wIGZvcndhcmRpbmcgdGFibGUgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMzM5OnN0YXRpYyBpbnQgdnhsYW5fZmRiX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzNDAtXHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzg4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzODk6c3RhdGljIGludCB2eGxhbl9mZGJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTM5MC1cdFx0XHQgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQyNC0gKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxNDI1OnN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB2eGxhbl9zbm9vcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0MjYtXHRcdFx0XHRcdHVuaW9uIHZ4bGFuX2FkZHIgKnNyY19pcCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQ4OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxNDkwOnN0YXRpYyBib29sIF9fdnhsYW5fc29ja19yZWxlYXNlX3ByZXAoc3RydWN0IHZ4bGFuX3NvY2sgKnZzKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0OTEte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTA3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1MDg6c3RhdGljIHZvaWQgdnhsYW5fc29ja19yZWxlYXNlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1MDkte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTM2LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1Mzc6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3JlbWNzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHZ4ZmxhZ3MpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTUzOC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NTctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTU1ODpzdGF0aWMgdm9pZCB2eGxhbl9wYXJzZV9nYnBfaGRyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiB2eGZsYWdzLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NTktXHRcdFx0XHRzdHJ1Y3QgdnhsYW5fbWV0YWRhdGEgKm1kKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNTg4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1ODk6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3NldF9tYWMoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTU5MC1cdFx0XHRcdFx0ICBzdHJ1Y3QgdnhsYW5fc29jayAqdnMsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE2MjEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTYyMjpzdGF0aWMgYm9vbCB2eGxhbl9lY25fZGVjYXBzdWxhdGUoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLCB2b2lkICpvaXBoLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE2MjMtXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE2NDUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTY0NjpzdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTY0Ny17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE4MTQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTgxNTpzdGF0aWMgaW50IHZ4bGFuX2Vycl9sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE4MTYte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODQxLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE4NDI6c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTg0My17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE5MzktI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTk0MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMDM2OnN0YXRpYyBpbnQgbmVpZ2hfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNy17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIxMDctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjEwODpzdGF0aWMgYm9vbCByb3V0ZV9zaG9ydGNpcmN1aXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTA5LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjE5MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMTkxOnN0YXRpYyBpbnQgdnhsYW5fYnVpbGRfZ3BlX2hkcihzdHJ1Y3QgdnhsYW5oZHIgKnZ4aCwgX19iZTE2IHByb3RvY29sKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIxOTIte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMjAxLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIyMDI6c3RhdGljIGludCB2eGxhbl9idWlsZF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIyMDMtXHRcdFx0ICAgaW50IGlwaGRyX2xlbiwgX19iZTMyIHZuaSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjI2OC0vKiBCeXBhc3MgZW5jYXBzdWxhdGlvbiBpZiB0aGUgZGVzdGluYXRpb24gaXMgbG9jYWwgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMjY5OnN0YXRpYyB2b2lkIHZ4bGFuX2VuY2FwX2J5cGFzcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdnhsYW5fZGV2ICpzcmNfdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjI3MC1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX2RldiAqZHN0X3Z4bGFuLCBfX2JlMzIgdm5pLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzE4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzMTk6c3RhdGljIGludCBlbmNhcF9ieXBhc3NfaWZfbG9jYWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzIwLVx0XHRcdFx0IHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzU3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzNTg6dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzNTktXHRcdCAgICBfX2JlMzIgZGVmYXVsdF92bmksIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0LCBib29sIGRpZF9yc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY2NDpzdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cdFx0XHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5My1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk0OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk1LVx0XHRcdFx0ICAgdTMyIG5oaWQsIF9fYmUzMiB2bmkpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3MzgtICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjczOTpzdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NDAte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODU5LS8qIFdhbGsgdGhlIGZvcndhcmRpbmcgdGFibGUgYW5kIHB1cmdlIHN0YWxlIGVudHJpZXMgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyODYwOnN0YXRpYyB2b2lkIHZ4bGFuX2NsZWFudXAoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg2MS17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OTctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg5ODpzdGF0aWMgdm9pZCB2eGxhbl92c19kZWxfZGV2KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OTkte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yOTA3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5MDg6c3RhdGljIHZvaWQgdnhsYW5fdnNfYWRkX2RldihzdHJ1Y3QgdnhsYW5fc29jayAqdnMsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MDktXHRcdFx0ICAgICBzdHJ1Y3QgdnhsYW5fZGV2X25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MTktLyogU2V0dXAgc3RhdHMgd2hlbiBkZXZpY2UgaXMgY3JlYXRlZCAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5MjA6c3RhdGljIGludCB2eGxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjkyMS17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NTUtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjk1NjpzdGF0aWMgdm9pZCB2eGxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yOTU3LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjk3MC0vKiBTdGFydCBhZ2VpbmcgdGltZXIgYW5kIGpvaW4gZ3JvdXAgd2hlbiBkZXZpY2UgaXMgYnJvdWdodCB1cCAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5NzE6c3RhdGljIGludCB2eGxhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjk3Mi17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI5OTI9c3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjIHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAwNC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDA1OnN0YXRpYyBib29sIHZ4bGFuX2ZkYl9pc19kZWZhdWx0X2VudHJ5KGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAwNi1cdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbilcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAxMS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDEyOnN0YXRpYyBib29sIHZ4bGFuX2ZkYl9uaGlkX21hdGNoZXMoY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgdTMyIG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAxMy17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMTgtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzAxOTpzdGF0aWMgYm9vbCB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiICpmLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMjAtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNDE9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDQyOnZ4bGFuX2ZkYl9mbHVzaF9zaG91bGRfbWF0Y2hfcmVtb3Rlcyhjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA0My17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNDc9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDQ4OnZ4bGFuX2ZkYl9mbHVzaF9yZW1vdGVfbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA0OS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDY0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA2NTp2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDY2LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA4NC0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwODU6c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA4Ni1cdFx0XHRjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxMTc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX2RlbF9idWxrX3BvbGljeVtOREFfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTMyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxMzM6c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzEzNC1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxOTctLyogQ2xlYW51cCB0aW1lciBhbmQgZm9yd2FyZGluZyB0YWJsZSBvbiBzaHV0ZG93biAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxOTg6c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5OS17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMTgtLyogU3R1Yiwgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLiAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMTk6c3RhdGljIHZvaWQgdnhsYW5fc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIyMC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMjItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzIyMzpzdGF0aWMgaW50IHZ4bGFuX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIyNC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyNDItXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI0MzpzdGF0aWMgaW50IHZ4bGFuX2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI0NC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMzMjc9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSB2eGxhbl90eXBlID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMzM0LSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMzMzU6c3RhdGljIHZvaWQgdnhsYW5fb2ZmbG9hZF9yeF9wb3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHB1c2gpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMzNi17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzNjEtLyogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlIHN0cnVjdHVyZS4gKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzYyOnN0YXRpYyB2b2lkIHZ4bGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzM2My17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0MDktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzQxMDpzdGF0aWMgdm9pZCB2eGxhbl9ldGhlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0MTEte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNDE2LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM0MTc6c3RhdGljIHZvaWQgdnhsYW5fcmF3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxOC17XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTM0Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX3BvbGljeVtJRkxBX1ZYTEFOX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQ2NC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNDY1OnN0YXRpYyBpbnQgdnhsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0NjYtXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MzEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzUzMjpzdGF0aWMgdm9pZCB2eGxhbl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MzMtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzUzOC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTM5OnN0YXRpYyBpbnQgdnhsYW5fZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU0MC1cdFx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zNTU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdnhsYW5fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NjMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzU2NDpzdGF0aWMgc3RydWN0IHNvY2sgKnZ4bGFuX2NyZWF0ZV9zb2NrKHN0cnVjdCBuZXQgKm5ldCwgYm9vbCBpcHY2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NjUtXHRcdFx0XHQgICAgICBfX2JlMTYgcG9ydCwgdTMyIGZsYWdzLCBpbnQgaWZpbmRleClcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU5NC0vKiBDcmVhdGUgbmV3IGxpc3RlbiBzb2NrZXQgaWYgbmVlZGVkICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzU5NTpzdGF0aWMgc3RydWN0IHZ4bGFuX3NvY2sgKnZ4bGFuX3NvY2tldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBib29sIGlwdjYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU5Ni1cdFx0XHRcdFx0ICAgICAgX19iZTE2IHBvcnQsIHUzMiBmbGFncyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzY0OC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjQ5OnN0YXRpYyBpbnQgX192eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgYm9vbCBpcHY2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2NTAte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjk3LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2OTg6c3RhdGljIGludCB2eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjk5LXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzcyMC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNzIxOmludCB2eGxhbl92bmlfaW5fdXNlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3MjItXHRcdCAgICAgc3RydWN0IHZ4bGFuX2NvbmZpZyAqY29uZiwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzc1MS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNzUyOnN0YXRpYyBpbnQgdnhsYW5fY29uZmlnX3ZhbGlkYXRlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzc1My1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqKmxvd2VyLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTAzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM5MDQ6c3RhdGljIHZvaWQgdnhsYW5fY29uZmlnX2FwcGx5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzkwNS1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX2NvbmZpZyAqY29uZixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzk2MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozOTYxOnN0YXRpYyBpbnQgdnhsYW5fZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgbmV0ICpzcmNfbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NjItXHRcdFx0ICAgICAgIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mzk3ODpzdGF0aWMgaW50IHZ4bGFuX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NzktXHRcdFx0ICAgIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNDYtLyogU2V0L2NsZWFyIGZsYWdzIGJhc2VkIG9uIGF0dHJpYnV0ZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQwNDc6c3RhdGljIGludCB2eGxhbl9ubDJmbGFnKHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDA0OC1cdFx0XHQgIGludCBhdHRydHlwZSwgdW5zaWduZWQgbG9uZyBtYXNrLCBib29sIGNoYW5nZWxpbmssXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNzMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDA3NDpzdGF0aWMgaW50IHZ4bGFuX25sMmNvbmYoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNzUtXHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ0MTMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDQxNDpzdGF0aWMgaW50IHZ4bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDE1LVx0XHRcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDMwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ0MzE6c3RhdGljIGludCB2eGxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQzMi1cdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTI4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1Mjk6c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MzAte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTQxLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1NDI6c3RhdGljIHNpemVfdCB2eGxhbl9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1NDMte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1ODA6c3RhdGljIGludCB2eGxhbl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTgxLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDY4OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NjkwOnN0YXRpYyBzdHJ1Y3QgbmV0ICp2eGxhbl9nZXRfbGlua19uZXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NjkxLXtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDY5Nz1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhsYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDcxMS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzEyOnN0YXRpYyB2b2lkIHZ4bGFuX2hhbmRsZV9sb3dlcmRldl91bnJlZ2lzdGVyKHN0cnVjdCB2eGxhbl9uZXQgKnZuLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MTMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDczMy1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzM0OnN0YXRpYyBpbnQgdnhsYW5fbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MzUtXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NzU0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc1NTp2eGxhbl9mZGJfb2ZmbG9hZGVkX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3NTYtXHRcdFx0c3RydWN0IHN3aXRjaGRldl9ub3RpZmllcl92eGxhbl9mZGJfaW5mbyAqZmRiX2luZm8pXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ3ODE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3ODI6dnhsYW5fZmRiX2V4dGVybmFsX2xlYXJuX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3ODMtXHRcdFx0ICAgICBzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDgwNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDgwNzp2eGxhbl9mZGJfZXh0ZXJuYWxfbGVhcm5fZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDgwOC1cdFx0XHQgICAgIHN0cnVjdCBzd2l0Y2hkZXZfbm90aWZpZXJfdnhsYW5fZmRiX2luZm8gKmZkYl9pbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00ODMyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ4MzM6c3RhdGljIGludCB2eGxhbl9zd2l0Y2hkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDgzNC1cdFx0XHRcdCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ4Njk9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB2eGxhbl9zd2l0Y2hkZXZfbm90aWZpZXJfYmxvY2sgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDg3Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0ODczOnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9uaF9mbHVzaChzdHJ1Y3QgbmV4dGhvcCAqbmgpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzMzIKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogNDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBWWExBTiBhbmQgSVB2NiBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgZm9yIFZYTEFOLiBMb29raW5nIGF0IGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXQmIzM5O3MgY2xlYXIgdGhhdCBgVlhMQU5gIGRlcGVuZHMgb24gYElORVRgIGFuZCBzZWxlY3RzIGJvdGggYE5FVF9VRFBfVFVOTkVMYCBhbmQgYEdST19DRUxMU2AuIEdvb2QsIHN0YW5kYXJkIHN0dWZmLgoKTm93LCBJIHNlZSB0aGF0IHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBmdW5jdGlvbiwgY3JpdGljYWwgaGVyZSwgaXMgZ3VhcmRlZCBieSBgI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpYCBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gIFRoZXJlZm9yZSwgZW5hYmxpbmcgdGhlIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBjcmVhdGlvbiBwYXRoIHJlcXVpcmVzIGJvdGggYElQVjZgIGFuZCBgVlhMQU5gIHRvIGJlIGVuYWJsZWQsIGluIGFkZGl0aW9uIHRvIGBJTkVUYC4gWXVwLCBgSVBWNmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgYWZmZWN0ZWQgc3ltYm9scy4gSSYjMzk7bSBmb2N1c2luZyBvbiBgdnhsYW5feG1pdGAsIGJlY2F1c2UgdGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBwYWNrZXQgdHJhbnNtaXQgaGFuZGxlciwgYW5kIEkgY2FuIHNlZSBob3cgaXQgcm91dGVzIHRocm91Z2ggYG5laWdoX3JlZHVjZWAgYW5kIHRoZW4gb24gdG8gYHZ4bGFuX25hX2NyZWF0ZWAuIEFsc28gd2FudCB0byByZW1lbWJlciBgdnhsYW5feG1pdF9vbmVgLiBQZXJoYXBzIEkgYWxzbyBzaG91bGQgbm90ZSBgdnhsYW5fZmRiX2NyZWF0ZWAsIGFuZCBgdnhsYW5fcmN2YC4KCkFscmlnaHQsIGxldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnM6IGBJTkVUYCwgYElQVjZgLCBhbmQgYFZYTEFOYC4gTWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIENvbmZpcm1lZC4gYFZYTEFOYCBuZWVkcyBgSU5FVGAgYW5kIHNlbGVjdHMgYE5FVF9VRFBfVFVOTkVMYCBhbmQgYEdST19DRUxMU2AuIFNvIHRoYXQgc29saWRpZmllcyBgVlhMQU5gLCBgSU5FVGAsIGFuZCBgSVBWNmAuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gY3JhZnQgdGhlIGBzZXQtcmVzdWx0c2AgcGFyYW1ldGVycy4KCiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSB0cnVlLgoqICAgYFJlYXNvbmluZ2A6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgaGVhZHJvb20gY2FsY3VsYXRpb25zIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIHRoZSBWWExBTiBkcml2ZXIgdG8gZW5zdXJlIHJlc2VydmVkIHNwYWNlIG1hdGNoZXMgYWxsb2NhdGVkIGhlYWRyb29tIGZvciBJUHY2IG5laWdoYm9yIGFkdmVydGlzZW1lbnRzLiBUaGlzIGlzIGluIGNvcmUgdmlydHVhbCBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtWWExBTiYjMzQ7LCAmIzM0O0lORVQmIzM0OywgJiMzNDtJUFY2JiMzNDtdYCDigJMgdGhhdCBzaG91bGQgYmUgY29tcHJlaGVuc2l2ZS4KKiAgIGBGb2N1c1N5bWJvbHNgOiBJJiMzOTtsbCB1c2UgYFsmIzM0O3Z4bGFuX3htaXQmIzM0OywgJiMzNDt2eGxhbl94bWl0X29uZSYjMzQ7XWAuIEkgY291bGQgYWxzbyBjb25zaWRlciBhZGRpbmcgYHZ4bGFuX3JjdmAsIGJ1dCBJJiMzOTtsbCBzdGljayB3aXRoIHRoZXNlIGZvciBub3csIGFuZCBrZWVwIHRoZSBvdGhlcnMgaW4gbWluZC4KCkEgcXVpY2sgZmluYWwgc2FuaXR5IGNoZWNrLi4uIFl1cCwgbG9va3Mgc291bmQuIFRpbWUgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX3htaXQmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5feG1pdCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgaGVhZHJvb20gY2FsY3VsYXRpb24gYW5kIHJlc2VydmF0aW9uIGluIHZ4bGFuX25hX2NyZWF0ZSgpIHdoZW4gY29uc3RydWN0aW5nIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBwYWNrZXRzIGluIHRoZSBWWExBTiBkcml2ZXIuIFRoaXMgdmlydHVhbCBuZXR3b3JraW5nIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggVlhMQU4gcHJveHkgbW9kZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcGVyZm9ybXMgYSBtaW5vciByZWZhY3RvcmluZyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSXQgY2FjaGVzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBpbiBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgYW5kIHJldXNlcyBpdCBmb3IgYm90aCB0aGUgYWxsb2NhdGlvbiBzaXplIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKWAuIEJlY2F1c2UgYGRldmAgaXMgaW5pdGlhbGl6ZWQgYXMgYHJlcXVlc3QtXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTc3Mzc5ODhkNzNkNTU3MGUxM2U4NzYwMWQ0NDU0ZjY2MGE1ZmJiNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDA2OjM3OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCmluZGV4IDQ1OWYxOWY3MDcxZTUuLmU1YTkyZDMwMTEzYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMKQEAgLTE5NDcsMTMgJiM0MzsxOTQ3LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LAogCXN0cnVjdCBpcHY2aGRyICpwaXA2OwogCXU4ICpkYWRkcjsKIAlpbnQgbmFfb2xlbiA9IDg7IC8qIG9wdCBoZHIgJiM0MzsgRVRIX0FMRU4gZm9yIHRhcmdldCAqLwomIzQzOwlpbnQgaGVhZHJvb207CiAJaW50IG5zX29sZW47CiAJaW50IGksIGxlbjsKIAogCWlmIChkZXYgPT0gTlVMTCB8fCAhcHNrYl9tYXlfcHVsbChyZXF1ZXN0LCByZXF1ZXN0LSZndDtsZW4pKQogCQlyZXR1cm4gTlVMTDsKIAotCWxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldikgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAmIzQzOwomIzQzOwloZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CiYjNDM7CWxlbiA9IGhlYWRyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MzsKIAkJc2l6ZW9mKCpuYSkgJiM0MzsgbmFfb2xlbiAmIzQzOyBkZXYtJmd0O25lZWRlZF90YWlscm9vbTsKIAlyZXBseSA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpOwogCWlmIChyZXBseSA9PSBOVUxMKQpAQCAtMTk2MSw3ICYjNDM7MTk2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LAogCiAJcmVwbHktJmd0O3Byb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7CiAJcmVwbHktJmd0O2RldiA9IGRldjsKLQlza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC0mZ3Q7ZGV2KSk7CiYjNDM7CXNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7CiAJc2tiX3B1c2gocmVwbHksIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7CiAJc2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVlhMQU4gTkEgQ3JlYXRpb24gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgZGlmZiBhZ2FpbnN0IGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYHZ4bGFuX25hX2NyZWF0ZWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5pcHVsYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIE5ldHdvcmsgQWRkcmVzcyAoTkEpIGNyZWF0aW9uIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLgoKVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHJlcXVpcmVkIGJ1ZmZlciBsZW5ndGggKGBsZW5gKSBpcyBjYWxjdWxhdGVkIGZvciB0aGUgcmVwbHkgYHNrX2J1ZmZgLiBCZWZvcmUsIHRoZSBjYWxjdWxhdGlvbiB3YXMgYSBzaW1wbGUgYWRkaXRpb246IGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MzsgLi4uYC4gTm93LCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBhIGBoZWFkcm9vbWAgdmFyaWFibGU6CgpgYGBjCgloZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CglsZW4gPSBoZWFkcm9vbSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICYjNDM7IC4uLgpgYGAKCmFuZCB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3Jlc2VydmVgIGNhbGwgbm93IHVzZXMgdGhpcyBgaGVhZHJvb21gIHZhcmlhYmxlOgoKYGBgYwoJc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTsKYGBgCgpNeSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGNoYW5nZSBpcyBhYm91dCBvcHRpbWl6aW5nIG9yIG1ha2luZyB0aGUgaGVhZHJvb20gcmVzZXJ2YXRpb24gbW9yZSBleHBsaWNpdCBmb3IgdGhlIGByZXBseWAgc2tfYnVmZi4gIFRoZSBwcmV2aW91cyBpbXBsaWNpdCB1c2Ugb2YgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGZvciBib3RoIGBsZW5gIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmVgIG1pZ2h0IGhhdmUgYmVlbiBzdWJ0bGUgb3IgbGVzcyBjbGVhciB0aGFuIGFzc2lnbmluZyBpdCB0byBhIHNlcGFyYXRlIGBoZWFkcm9vbWAgdmFyaWFibGUuICBJIG5lZWQgdG8gY29uZmlybSBpZiBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgZG9lcyB3aGF0IEkgdGhpbmsgaXQgZG9lcyAtIHJldHVybnMgdGhlIGxpbmsgbGF5ZXIgaGVhZGVyIGxlbmd0aCBwbHVzIGFueSBvdGhlciByZXNlcnZlZCBzcGFjZSBmb3IgYSBnaXZlbiBkZXZpY2UuIFRoZSBjaGFuZ2Ugc2VlbXMgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJlYWRhYmxlIGJ5IGV4cGxpY2l0bHkgc2hvd2luZyB0aGUgYGhlYWRyb29tYCBhbGxvY2F0aW9uLCB3aGljaCBpcyBhIGdvb2QgcHJhY3RpY2UuIE5vIHNpZ25pZmljYW50IGNoYW5nZSBpbiB0aGUgb3ZlcmFsbCBzaXplIGNhbGN1bGF0aW9uIGlzIG9ic2VydmVkIGZyb20gdGhlIHBhdGNoIGl0c2VsZiwgYnV0IEkgd2FudCB0byBlbnN1cmUgdGhpcyBpc24mIzM5O3QgYSBwcmUtZW1wdGl2ZSBtZWFzdXJlIGZvciBhIGxhcmdlciBjaGFuZ2UuCgpUbyBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byBrZWVwIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIGluIG1pbmQsIGFuZCBhbHNvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYGhlYWRyb29tYCBhbmQgdGhlIGFzc29jaWF0ZWQgYExMX1JFU0VSVkVEX1NQQUNFYCBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCBvdGhlciBmdW5jdGlvbnMgdXNlZC4gVGhlIGNvbnRleHQgb2YgbmV0d29yayBhZGRyZXNzIGNyZWF0aW9uIGlzIGFsc28gaW1wb3J0YW50IC0gd2h5IGFyZSB3ZSB1c2luZyBJUHY2IGluIHRoaXMgY29udGV4dD8gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgcG9zc2libHkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdG8gY29uZmlybSB0aGUgcmVhc29uIGFuZCBmdWxseSB2YWxpZGF0ZSB0aGF0IHRoaXMgc2VlbWluZ2x5IHNtYWxsIGNoYW5nZSBpcyBpbmRlZWQgc2FmZSBhbmQgZWZmZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTk0MDpcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuMTk0MTpcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcbjE5NDI6XHRcdFx0XHRcdCAgICAgICBib29sIGlzcm91dGVyKVxuMTk0MzpcdHtcbjE5NDQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXF1ZXN0LVx1MDAzZWRldjtcbjE5NDU6XHRcdHN0cnVjdCBza19idWZmICpyZXBseTtcbjE5NDY6XHRcdHN0cnVjdCBuZF9tc2cgKm5zLCAqbmE7XG4xOTQ3Olx0XHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcbjE5NDg6XHRcdHU4ICpkYWRkcjtcbjE5NDk6XHRcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciAmIzQzOyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovXG4xOTUwOlx0XHRpbnQgaGVhZHJvb207XG4xOTUxOlx0XHRpbnQgbnNfb2xlbjtcbjE5NTI6XHRcdGludCBpLCBsZW47XG4xOTUzOlx0XG4xOTU0Olx0XHRpZiAoZGV2ID09IE5VTEwgfHwgIXBza2JfbWF5X3B1bGwocmVxdWVzdCwgcmVxdWVzdC1cdTAwM2VsZW4pKVxuMTk1NTpcdFx0XHRyZXR1cm4gTlVMTDtcbjE5NTY6XHRcbjE5NTc6XHRcdGhlYWRyb29tID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbjE5NTg6XHRcdGxlbiA9IGhlYWRyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJiM0MztcbjE5NTk6XHRcdFx0c2l6ZW9mKCpuYSkgJiM0MzsgbmFfb2xlbiAmIzQzOyBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuMTk2MDpcdFx0cmVwbHkgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbjE5NjE6XHRcdGlmIChyZXBseSA9PSBOVUxMKVxuMTk2MjpcdFx0XHRyZXR1cm4gTlVMTDtcbjE5NjM6XHRcbjE5NjQ6XHRcdHJlcGx5LVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XG4xOTY1Olx0XHRyZXBseS1cdTAwM2VkZXYgPSBkZXY7XG4xOTY2Olx0XHRza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pO1xuMTk2NzpcdFx0c2tiX3B1c2gocmVwbHksIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7XG4xOTY4Olx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihyZXBseSk7XG4xOTY5Olx0XG4xOTcwOlx0XHRucyA9IChzdHJ1Y3QgbmRfbXNnICopKGlwdjZfaGRyKHJlcXVlc3QpICYjNDM7IDEpO1xuMTk3MTpcdFxuMTk3MjpcdFx0ZGFkZHIgPSBldGhfaGRyKHJlcXVlc3QpLVx1MDAzZWhfc291cmNlO1xuMTk3MzpcdFx0bnNfb2xlbiA9IHJlcXVlc3QtXHUwMDNlbGVuIC0gc2tiX25ldHdvcmtfb2Zmc2V0KHJlcXVlc3QpIC1cbjE5NzQ6XHRcdFx0c2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSAtIHNpemVvZigqbnMpO1xuMTk3NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnNfb2xlbi0xOyBpICYjNDM7PSAobnMtXHUwMDNlb3B0W2kmIzQzOzFdXHUwMDNjXHUwMDNjMykpIHtcbjE5NzY6XHRcdFx0aWYgKCFucy1cdTAwM2VvcHRbaSAmIzQzOyAxXSB8fCBpICYjNDM7IChucy1cdTAwM2VvcHRbaSAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgMykgXHUwMDNlIG5zX29sZW4pIHtcbjE5Nzc6XHRcdFx0XHRrZnJlZV9za2IocmVwbHkpO1xuMTk3ODpcdFx0XHRcdHJldHVybiBOVUxMO1xuMTk3OTpcdFx0XHR9XG4xOTgwOlx0XHRcdGlmIChucy1cdTAwM2VvcHRbaV0gPT0gTkRfT1BUX1NPVVJDRV9MTF9BRERSKSB7XG4xOTgxOlx0XHRcdFx0aWYgKChucy1cdTAwM2VvcHRbaSAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgMykgXHUwMDNlPVxuMTk4MjpcdFx0XHRcdCAgICBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpICYjNDM7IEVUSF9BTEVOKVxuMTk4MzpcdFx0XHRcdFx0ZGFkZHIgPSBucy1cdTAwM2VvcHQgJiM0MzsgaSAmIzQzOyBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpO1xuMTk4NDpcdFx0XHRcdGJyZWFrO1xuMTk4NTpcdFx0XHR9XG4xOTg2Olx0XHR9XG4xOTg3Olx0XG4xOTg4Olx0XHQvKiBFdGhlcm5ldCBoZWFkZXIgKi9cbjE5ODk6XHRcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cdTAwM2VoX2Rlc3QsIGRhZGRyKTtcbjE5OTA6XHRcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cdTAwM2VoX3NvdXJjZSwgaGEpO1xuMTk5MTpcdFx0ZXRoX2hkcihyZXBseSktXHUwMDNlaF9wcm90byA9IGh0b25zKEVUSF9QX0lQVjYpO1xuMTk5MjpcdFx0cmVwbHktXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcbjE5OTM6XHRcbjE5OTQ6XHRcdHNrYl9wdWxsKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuMTk5NTpcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHJlcGx5KTtcbjE5OTY6XHRcdHNrYl9wdXQocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xuMTk5NzpcdFxuMTk5ODpcdFx0LyogSVB2NiBoZWFkZXIgKi9cbjE5OTk6XHRcbjIwMDA6XHRcdHBpcDYgPSBpcHY2X2hkcihyZXBseSk7XG4yMDAxOlx0XHRtZW1zZXQocGlwNiwgMCwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG4yMDAyOlx0XHRwaXA2LVx1MDAzZXZlcnNpb24gPSA2O1xuMjAwMzpcdFx0cGlwNi1cdTAwM2Vwcmlvcml0eSA9IGlwdjZfaGRyKHJlcXVlc3QpLVx1MDAzZXByaW9yaXR5O1xuMjAwNDpcdFx0cGlwNi1cdTAwM2VuZXh0aGRyID0gSVBQUk9UT19JQ01QVjY7XG4yMDA1Olx0XHRwaXA2LVx1MDAzZWhvcF9saW1pdCA9IDI1NTtcbjIwMDY6XHRcdHBpcDYtXHUwMDNlZGFkZHIgPSBpcHY2X2hkcihyZXF1ZXN0KS1cdTAwM2VzYWRkcjtcbjIwMDc6XHRcdHBpcDYtXHUwMDNlc2FkZHIgPSAqKHN0cnVjdCBpbjZfYWRkciAqKW4tXHUwMDNlcHJpbWFyeV9rZXk7XG4yMDA4Olx0XG4yMDA5Olx0XHRza2JfcHVsbChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFByb2JsZW1hdGljIENvZGUgU25pcHBldCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNvZGUmIzM5O3MgbG9naWMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBhIHBhcnRpY3VsYXIgbGluZTogYHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXF1ZXN0LSZndDtkZXY7YCBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gSG93ZXZlciwgSSBuZWVkIHRvIGtub3cgdGhlIG9yaWdpbiBvZiB0aGUgdmFyaWFibGUgYGRldmAuIFdoZXJlIHdhcyBpdCBpbml0aWFsaXplZD8gSSYjMzk7bSBzZWVpbmcgaXQgcmlnaHQgaGVyZSBvbiBsaW5lIDE5NDQuICpCdXQqIEkmIzM5O20gYWx3YXlzIGNhdXRpb3VzIGFib3V0IGFzc3VtcHRpb25zLiBUaGlzIGRpcmVjdCBhc3NpZ25tZW50IG1ha2VzIG1lIGEgbGl0dGxlIHVuZWFzeSDigJMgaXMgdGhlcmUgYSBjaGFuY2UgYGRldmAgaXNuJiMzOTt0IHdoYXQgSSBleHBlY3QgaXQgdG8gYmUsIHBhcnRpY3VsYXJseSBpZiBpdHMgdmFsdWUgaXMgYWx0ZXJlZCBvdXRzaWRlIHRoaXMgaW1tZWRpYXRlIGZ1bmN0aW9uPwoKSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsZXIgb2YgYHZ4bGFuX25hX2NyZWF0ZWAgdG8gZW5zdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGEgY3JpdGljYWwgcG9pbnQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgcmVxdWVzdC0mZ3Q7ZGV2YCBpcyBiZWluZyBwYXNzZWQgdG8gc2VlIGlmIGBkZXZgIGNvdWxkIGJlIGFsdGVyZWQgb3IgY2hhbmdlZCBpbiBhIHdheSB0aGF0IEkgc2hvdWxkIHVuZGVyc3RhbmQuIEEgZGVlcGVyIGRpdmUgaXMgaW4gb3JkZXIgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEkmIzM5O2xsIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY2FsbCBzdGFjayB0byBzZWUgaWYgYW55dGhpbmcgaXMgc3VidGx5IGFmZmVjdGluZyB0aGUgYGRldmAgdmFsdWUuIFRoaXMgaXMgYSBwb3RlbnRpYWwgYnVnIG9yIHBlcmZvcm1hbmNlIGlzc3VlIGhvdHNwb3QsIHNvIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fbmFfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xODQyPXN0YXRpYyBpbnQgYXJwX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTM5LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE5NDA6c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTk0MS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIwMzY9c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjA3OC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMDc5Olx0XHRyZXBseSA9IHZ4bGFuX25hX2NyZWF0ZShza2IsIG4sIGhhLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwODAtXHRcdFx0XHRcdCEhKGYgPyBmLVx1MDAzZWZsYWdzIFx1MDAyNiBOVEZfUk9VVEVSIDogMCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTI5CgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDY5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBhIE5ldHdvcmsgU0tCIEhlYWRyb29tIENhbGN1bGF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGNvZGUgY2hhbmdlLiBQcmV2aW91c2x5LCB3ZSBjYWxjdWxhdGVkIHRoZSBsZW5ndGggb2YgdGhlIHNrYiBhbGxvY2F0aW9uIHVzaW5nIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCB0d2ljZTogb25jZSBkaXJlY3RseSBhbmQgYWdhaW4gdGhyb3VnaCBgcmVxdWVzdC0mZ3Q7ZGV2YC4gTm93LCB0aGlzIHJlZHVuZGFuY3kgaGFzIGJlZW4gY2xlYW5lZCB1cCBieSBzdG9yaW5nIHRoZSB2YWx1ZSBpbiBhIHRlbXBvcmFyeSB2YXJpYWJsZSwgYGhlYWRyb29tYC4gVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIHJlZmFjdG9yaW5nIGZvciBjbGFyaXR5IGFuZCBwb3NzaWJseSBwZXJmb3JtYW5jZSwgYXZvaWRpbmcgcmVkdW5kYW50IGZ1bmN0aW9uIGNhbGxzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgaXNzdWVzLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBjYXNlIHdoZXJlIHRoZSByZWZhY3RvcmluZyBtaWdodCBhbHRlciBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zIG9yIGludHJvZHVjZSBuZXcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIExldCYjMzk7cyBzZWUuLi4gd2UmIzM5O3JlIGNhbGN1bGF0aW5nIGBoZWFkcm9vbWAgYW5kIHRoZW4gdXNpbmcgaXQgY29uc2lzdGVudGx5IHRocm91Z2hvdXQgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uLiBUaGUgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmUuIGByZXBseWAgaXMgY29ycmVjdGx5IGFsbG9jYXRlZCB3aXRoIGBhbGxvY19za2JgLCBhbmQgdGhlIGV0aGVybmV0IGhlYWRlciwgSVB2NiBoZWFkZXIsIGFuZCBORCBtZXNzYWdlIGFyZSB3cml0dGVuIHRvIGl0LiBUaGUga2V5IGlzIHRoYXQgYGRldmAgYW5kIGByZXF1ZXN0LSZndDtkZXZgIGFyZSB0aGUgc2FtZSBkZXZpY2UsIHNvIHRoZSBjYWxjdWxhdGVkIGhlYWRyb29tIGlzIGNvbnNpc3RlbnQuCgpMZXQmIzM5O3MgZG8gYSBtb3JlIHRob3JvdWdoIGNoZWNrOgoKKiAgIE5vIHN0cnVjdHMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlIHdpdGhvdXQgcHJvcGVyIGluaXRpYWxpemF0aW9uOyB3ZSYjMzk7cmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUga2VybmVsLgoqICAgTm8gY29uZGl0aW9uYWwgbG9naWMgaXMgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgYXMgaW5wdXQuCiogICBObyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgbGVmdCB1bmluaXRpYWxpemVkLgoqICAgTm8gaW5mb3JtYXRpb24gbGVha3MsIGFuZCB0aGUgYm91bmRzIGFyZW4mIzM5O3QgY2hhbmdlZCBpbiBhIHdheSB0aGF0IHdvdWxkIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBieXRlcy4KClRoaXMgc2VlbXMgbGlrZSBhIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UsIG9yIG1heWJlIGEgbWlub3Igb3B0aW1pemF0aW9uIHRoYXQgaXMgYWxzbyBtb3JlIHJlYWRhYmxlLiBObyBLTVNBTiByaXNrcyBhcmUgaW52b2x2ZWQsIGFzIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHNhZmUgcmVmYWN0b3JpbmcuCgpHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCB0aGUgY29yZSBvZiB0aGlzIGFzc2Vzc21lbnQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIGludHJvZHVjZXMgb3IgZXhwb3NlcyBhbnkgKnVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgb25seSBiZSBkZXRlY3RlZCBieSBLTVNBTiouIEtBU0FOLCBMb2NrRGVwLCBhbmQgdGhlIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIGVub3VnaCBmb3IgaGVyZS4gVGhpcyBpcyBub3QgdGhlIGNhc2UuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuIEkgY2FuIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoYXQsIGFsb25nIHdpdGggYSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IGNvbnRyYXN0cyB0aGUgcm9sZSBhbmQgYmVuZWZpdHMgb2YgS01TQU4gYW5kIEtBU0FOIGluIHRoaXMgcGFydGljdWxhciBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cdTAwM2VkZXZgLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5vIGNoYW5nZSBpbiBydW50aW1lIHZhbHVlcywgbWVtb3J5IGxheW91dCwgYnVmZmVyIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcHlpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcGVyZm9ybXMgYSBtaW5vciByZWZhY3RvcmluZyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSXQgY2FjaGVzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBpbiBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgYW5kIHJldXNlcyBpdCBmb3IgYm90aCB0aGUgYWxsb2NhdGlvbiBzaXplIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKWAuIEJlY2F1c2UgYGRldmAgaXMgaW5pdGlhbGl6ZWQgYXMgYHJlcXVlc3QtXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzIuOTM4MjM2MDM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYzNzcwNDU4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl94bWl0XCIsXG4gICAgXCJ2eGxhbl94bWl0X29uZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcGVyZm9ybXMgYSBtaW5vciByZWZhY3RvcmluZyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSXQgY2FjaGVzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBpbiBhIGxvY2FsIHZhcmlhYmxlIGBoZWFkcm9vbWAgYW5kIHJldXNlcyBpdCBmb3IgYm90aCB0aGUgYWxsb2NhdGlvbiBzaXplIGNhbGN1bGF0aW9uIGFuZCBgc2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKWAuIEJlY2F1c2UgYGRldmAgaXMgaW5pdGlhbGl6ZWQgYXMgYHJlcXVlc3QtXFx1MDAzZWRldmAsIHRoaXMgY2hhbmdlIGludHJvZHVjZXMgbm8gY2hhbmdlIGluIHJ1bnRpbWUgdmFsdWVzLCBtZW1vcnkgbGF5b3V0LCBidWZmZXIgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29weWluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzIuOTM4MjQ5NzY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyNDUyMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTc3Mzc5ODhkNzNkNTU3MGUxM2U4NzYwMWQ0NDU0ZjY2MGE1ZmJiNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNjozNzozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcXG5pbmRleCA0NTlmMTlmNzA3MWU1Li5lNWE5MmQzMDExM2M2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbkBAIC0xOTQ3LDEzICsxOTQ3LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbiBcXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcXG4gXFx0dTggKmRhZGRyO1xcbiBcXHRpbnQgbmFfb2xlbiA9IDg7IC8qIG9wdCBoZHIgKyBFVEhfQUxFTiBmb3IgdGFyZ2V0ICovXFxuK1xcdGludCBoZWFkcm9vbTtcXG4gXFx0aW50IG5zX29sZW47XFxuIFxcdGludCBpLCBsZW47XFxuIFxcbiBcXHRpZiAoZGV2ID09IE5VTEwgfHwgIXBza2JfbWF5X3B1bGwocmVxdWVzdCwgcmVxdWVzdC1cXHUwMDNlbGVuKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSArXFxuK1xcdGhlYWRyb29tID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcXG4rXFx0bGVuID0gaGVhZHJvb20gKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICtcXG4gXFx0XFx0c2l6ZW9mKCpuYSkgKyBuYV9vbGVuICsgZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuIFxcdHJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XFxuIFxcdGlmIChyZXBseSA9PSBOVUxMKVxcbkBAIC0xOTYxLDcgKzE5NjMsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcXG4gXFxuIFxcdHJlcGx5LVxcdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpO1xcbiBcXHRyZXBseS1cXHUwMDNlZGV2ID0gZGV2O1xcbi1cXHRza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC1cXHUwMDNlZGV2KSk7XFxuK1xcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XFxuIFxcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbiBcXHRza2JfcmVzZXRfbWFjX2hlYWRlcihyZXBseSk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzozNC40MzEyNzU4NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Njg0OTc1ODg2MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl94bWl0XCIsXG4gICAgXCJ2eGxhbl94bWl0X29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHRoZSBoZWFkcm9vbSBjYWxjdWxhdGlvbiBhbmQgcmVzZXJ2YXRpb24gaW4gdnhsYW5fbmFfY3JlYXRlKCkgd2hlbiBjb25zdHJ1Y3RpbmcgSVB2NiBOZWlnaGJvciBBZHZlcnRpc2VtZW50IHBhY2tldHMgaW4gdGhlIFZYTEFOIGRyaXZlci4gVGhpcyB2aXJ0dWFsIG5ldHdvcmtpbmcgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBWWExBTiBwcm94eSBtb2RlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE3NzM3OTg4ZDczZDU1NzBlMTNlODc2MDFkNDQ1NGY2NjBhNWZiYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNjozNzozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuaW5kZXggNDU5ZjE5ZjcwNzFlNS4uZTVhOTJkMzAxMTNjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5AQCAtMTk0NywxMyArMTk0NywxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbiBcdHN0cnVjdCBpcHY2aGRyICpwaXA2O1xuIFx0dTggKmRhZGRyO1xuIFx0aW50IG5hX29sZW4gPSA4OyAvKiBvcHQgaGRyICsgRVRIX0FMRU4gZm9yIHRhcmdldCAqL1xuK1x0aW50IGhlYWRyb29tO1xuIFx0aW50IG5zX29sZW47XG4gXHRpbnQgaSwgbGVuO1xuIFxuIFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXHUwMDNlbGVuKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSArXG4rXHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4rXHRsZW4gPSBoZWFkcm9vbSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xuIFx0XHRzaXplb2YoKm5hKSArIG5hX29sZW4gKyBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuIFx0cmVwbHkgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChyZXBseSA9PSBOVUxMKVxuQEAgLTE5NjEsNyArMTk2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxuIFxuIFx0cmVwbHktXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcbiBcdHJlcGx5LVx1MDAzZWRldiA9IGRldjtcbi1cdHNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldikpO1xuK1x0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcbiBcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuIFx0c2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzQuNDMxMjc3MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTE1ODAzMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBDcmVhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJJ20gbG9va2luZyBhdCBgdnhsYW5fbmFfY3JlYXRlYCB3aXRoaW4gYHZ4bGFuX2NvcmUuY2Ag4oCTIHNlZW1zIGxpa2Ugd2UncmUgb3B0aW1pemluZyB0aGUgY3JlYXRpb24gb2YgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCAoTkEpIHBhY2tldHMgd2l0aGluIHRoZSBWWExBTiBkcml2ZXIuIFRoZSBkaWZmIGl0c2VsZiBpcyByZWxhdGl2ZWx5IGZvY3VzZWQsIHNvIEkgdGhpbmsgSSBjYW4gdW5kZXJzdGFuZCBpdCBmYWlybHkgcXVpY2tseS5cblxuVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIGBza19idWZmYCBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBOQSByZXBseS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHdlJ3JlIGFkanVzdGluZyB0aGUgY2FsY3VsYXRpb24gb2YgYGxlbmAgcGFzc2VkIGludG8gYGFsbG9jX3NrYigpYC4gVGhlIG9yaWdpbmFsIGNvZGUgYXBwZWFycyB0byBoYXZlIGhhZCBhIHNsaWdodGx5IG9mZiBjYWxjdWxhdGlvbiBmb3IgdGhlIGJ1ZmZlciBzaXplLCBhbmQgdGhpcyBwYXRjaCBhaW1zIHRvIGNvcnJlY3QgaXQgYnkgZXhwbGljaXRseSBjYWxjdWxhdGluZyBgaGVhZHJvb21gLiBUaGUgY29kZSBub3cgZXhwbGljaXRseSBjYWxjdWxhdGVzIGFuZCBzZXRzIHRoZSBgaGVhZHJvb21gIHJlcXVpcmVkIHVzaW5nIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCwgd2hpY2ggaXMgdGhlbiB1c2VkIHdoZW4gYWxsb2NhdGluZyBhbmQgcmVzZXJ2aW5nIHRoZSBgc2tiYC4gVGhhdCBzaG91bGQgZml4IHRoZSBpc3N1ZSEgVGhlIHVwZGF0ZWQgYGxlbmAgYWxzbyBpbmNvcnBvcmF0ZXMgdGhlIElQdjYgaGVhZGVyLCBOQSBzdHJ1Y3R1cmUsIG9wdGlvbiBoZWFkZXJzLCBFdGhlcm5ldCBhZGRyZXNzIGFuZCB0YWlscm9vbSwgYWxsIGNyaXRpY2FsIHRvIHRoZSBwYWNrZXQncyBmb3JtYXQuXG5cbkl0J3MgYSBnb29kIHByYWN0aWNlIHRvIGRvdWJsZS1jaGVjayB0aGVzZSBjYWxjdWxhdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYnVmZmVyIGFsbG9jYXRpb24gaW4gbmV0d29yayBkcml2ZXJzLiBJbmNvcnJlY3QgYnVmZmVyIHNpemluZyBjYW4gbGVhZCB0byBhbGwgc29ydHMgb2YgbmFzdHkgaXNzdWVzLCBmcm9tIGJ1ZmZlciBvdmVyZmxvd3MgdG8gcGFja2V0IGNvcnJ1cHRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLiBTbywgSSBzZWUgdGhlIGNoYW5nZSBhbmQgYW0gaW4gYWdyZWVtZW50IHdpdGggaXQuIExvb2tzIGxpa2UgYSBzb2xpZCBmaXggdG8gYWRkcmVzcyBhIHN1YnRsZSBwb3RlbnRpYWwgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzozOS41NDcwOTY2MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzEwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE5MzA6XFx0XFx0XFx0fTtcXG4xOTMxOlxcdFxcbjE5MzI6XFx0XFx0XFx0dnhsYW5faXBfbWlzcyhkZXYsIFxcdTAwMjZpcGEpO1xcbjE5MzM6XFx0XFx0fVxcbjE5MzQ6XFx0b3V0OlxcbjE5MzU6XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4xOTM2OlxcdFxcdHJldHVybiBORVRERVZfVFhfT0s7XFxuMTkzNzpcXHR9XFxuMTkzODpcXHRcXG4xOTM5OlxcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbjE5NDA6XFx0c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXFxuMTk0MTpcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5laWdoYm91ciAqbiwgdTggKmhhLFxcbjE5NDI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgaXNyb3V0ZXIpXFxuMTk0MzpcXHR7XFxuMTk0NDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcmVxdWVzdC1cXHUwMDNlZGV2O1xcbjE5NDU6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnJlcGx5O1xcbjE5NDY6XFx0XFx0c3RydWN0IG5kX21zZyAqbnMsICpuYTtcXG4xOTQ3OlxcdFxcdHN0cnVjdCBpcHY2aGRyICpwaXA2O1xcbjE5NDg6XFx0XFx0dTggKmRhZGRyO1xcbjE5NDk6XFx0XFx0aW50IG5hX29sZW4gPSA4OyAvKiBvcHQgaGRyICsgRVRIX0FMRU4gZm9yIHRhcmdldCAqL1xcbjE5NTA6XFx0XFx0aW50IGhlYWRyb29tO1xcbjE5NTE6XFx0XFx0aW50IG5zX29sZW47XFxuMTk1MjpcXHRcXHRpbnQgaSwgbGVuO1xcbjE5NTM6XFx0XFxuMTk1NDpcXHRcXHRpZiAoZGV2ID09IE5VTEwgfHwgIXBza2JfbWF5X3B1bGwocmVxdWVzdCwgcmVxdWVzdC1cXHUwMDNlbGVuKSlcXG4xOTU1OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbjE5NTY6XFx0XFxuMTk1NzpcXHRcXHRoZWFkcm9vbSA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XFxuMTk1ODpcXHRcXHRsZW4gPSBoZWFkcm9vbSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xcbjE5NTk6XFx0XFx0XFx0c2l6ZW9mKCpuYSkgKyBuYV9vbGVuICsgZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuMTk2MDpcXHRcXHRyZXBseSA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xcbjE5NjE6XFx0XFx0aWYgKHJlcGx5ID09IE5VTEwpXFxuMTk2MjpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4xOTYzOlxcdFxcbjE5NjQ6XFx0XFx0cmVwbHktXFx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XFxuMTk2NTpcXHRcXHRyZXBseS1cXHUwMDNlZGV2ID0gZGV2O1xcbjE5NjY6XFx0XFx0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcXG4xOTY3OlxcdFxcdHNrYl9wdXNoKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbjE5Njg6XFx0XFx0c2tiX3Jlc2V0X21hY19oZWFkZXIocmVwbHkpO1xcbjE5Njk6XFx0XFxuMTk3MDpcXHRcXHRucyA9IChzdHJ1Y3QgbmRfbXNnICopKGlwdjZfaGRyKHJlcXVlc3QpICsgMSk7XFxuMTk3MTpcXHRcXG4xOTcyOlxcdFxcdGRhZGRyID0gZXRoX2hkcihyZXF1ZXN0KS1cXHUwMDNlaF9zb3VyY2U7XFxuMTk3MzpcXHRcXHRuc19vbGVuID0gcmVxdWVzdC1cXHUwMDNlbGVuIC0gc2tiX25ldHdvcmtfb2Zmc2V0KHJlcXVlc3QpIC1cXG4xOTc0OlxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgLSBzaXplb2YoKm5zKTtcXG4xOTc1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuc19vbGVuLTE7IGkgKz0gKG5zLVxcdTAwM2VvcHRbaSsxXVxcdTAwM2NcXHUwMDNjMykpIHtcXG4xOTc2OlxcdFxcdFxcdGlmICghbnMtXFx1MDAzZW9wdFtpICsgMV0gfHwgaSArIChucy1cXHUwMDNlb3B0W2kgKyAxXSBcXHUwMDNjXFx1MDAzYyAzKSBcXHUwMDNlIG5zX29sZW4pIHtcXG4xOTc3OlxcdFxcdFxcdFxcdGtmcmVlX3NrYihyZXBseSk7XFxuMTk3ODpcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4xOTc5OlxcdFxcdFxcdH1cXG4xOTgwOlxcdFxcdFxcdGlmIChucy1cXHUwMDNlb3B0W2ldID09IE5EX09QVF9TT1VSQ0VfTExfQUREUikge1xcbjE5ODE6XFx0XFx0XFx0XFx0aWYgKChucy1cXHUwMDNlb3B0W2kgKyAxXSBcXHUwMDNjXFx1MDAzYyAzKSBcXHUwMDNlPVxcbjE5ODI6XFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgbmRfb3B0X2hkcikgKyBFVEhfQUxFTilcXG4xOTgzOlxcdFxcdFxcdFxcdFxcdGRhZGRyID0gbnMtXFx1MDAzZW9wdCArIGkgKyBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpO1xcbjE5ODQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTk4NTpcXHRcXHRcXHR9XFxuMTk4NjpcXHRcXHR9XFxuMTk4NzpcXHRcXG4xOTg4OlxcdFxcdC8qIEV0aGVybmV0IGhlYWRlciAqL1xcbjE5ODk6XFx0XFx0ZXRoZXJfYWRkcl9jb3B5KGV0aF9oZHIocmVwbHkpLVxcdTAwM2VoX2Rlc3QsIGRhZGRyKTtcXG4xOTkwOlxcdFxcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cXHUwMDNlaF9zb3VyY2UsIGhhKTtcXG4xOTkxOlxcdFxcdGV0aF9oZHIocmVwbHkpLVxcdTAwM2VoX3Byb3RvID0gaHRvbnMoRVRIX1BfSVBWNik7XFxuMTk5MjpcXHRcXHRyZXBseS1cXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTtcXG4xOTkzOlxcdFxcbjE5OTQ6XFx0XFx0c2tiX3B1bGwocmVwbHksIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7XFxuMTk5NTpcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIocmVwbHkpO1xcbjE5OTY6XFx0XFx0c2tiX3B1dChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XFxuMTk5NzpcXHRcXG4xOTk4OlxcdFxcdC8qIElQdjYgaGVhZGVyICovXFxuMTk5OTpcXHRcXG4yMDAwOlxcdFxcdHBpcDYgPSBpcHY2X2hkcihyZXBseSk7XFxuMjAwMTpcXHRcXHRtZW1zZXQocGlwNiwgMCwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XFxuMjAwMjpcXHRcXHRwaXA2LVxcdTAwM2V2ZXJzaW9uID0gNjtcXG4yMDAzOlxcdFxcdHBpcDYtXFx1MDAzZXByaW9yaXR5ID0gaXB2Nl9oZHIocmVxdWVzdCktXFx1MDAzZXByaW9yaXR5O1xcbjIwMDQ6XFx0XFx0cGlwNi1cXHUwMDNlbmV4dGhkciA9IElQUFJPVE9fSUNNUFY2O1xcbjIwMDU6XFx0XFx0cGlwNi1cXHUwMDNlaG9wX2xpbWl0ID0gMjU1O1xcbjIwMDY6XFx0XFx0cGlwNi1cXHUwMDNlZGFkZHIgPSBpcHY2X2hkcihyZXF1ZXN0KS1cXHUwMDNlc2FkZHI7XFxuMjAwNzpcXHRcXHRwaXA2LVxcdTAwM2VzYWRkciA9ICooc3RydWN0IGluNl9hZGRyICopbi1cXHUwMDNlcHJpbWFyeV9rZXk7XFxuMjAwODpcXHRcXG4yMDA5OlxcdFxcdHNrYl9wdWxsKHJlcGx5LCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6MzkuNTQ3MzY5Mzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI4MjA3MzY2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHZ4bGFuX25hX2NyZWF0ZWAgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHZ4bGFuX2NvcmUuY2AgY29kZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBgdnhsYW5fbmFfY3JlYXRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgaGllcmFyY2h5IGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgY29yZSB2eGxhbiBmdW5jdGlvbnMuIEknbSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCBmb3IgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGB2eGxhbl9uYV9jcmVhdGVgIHRvIGdldCB0aGUgYmlnIHBpY3R1cmUgb2YgaG93IGl0IGZpdHMgd2l0aGluIHRoZSBvdmVyYWxsIHZ4bGFuIGRhdGEgcGxhbmUgc2V0dXAuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIGNsb3NlbHkgcmVsYXRlZCB0byB0aGUgb3BlcmF0aW9uLCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiB0aGUgY29kZS4gVGhpcyB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgYW5kIHRoZSBvdmVyYWxsIGRhdGEgZmxvdy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBrZXkgZW50cnkgcG9pbnRzIGFuZCBleGl0IHBhdGhzLCBzbyBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgaXRzIGJlaGF2aW9yIGluIHRoZSBvdmVyYWxsIGNvbnRyb2wgcGF0aC4gSSdsbCBmb2N1cyBvbiBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSwgY29uZmlndXJlLCBvciBkZWFsbG9jYXRlIHJlc291cmNlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gdG8gc2VlIGhvdyB0aGUgb3ZlcmFsbCBwcm9jZXNzIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTMzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0MS44Mjk0NDQ5NDJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3ODc2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbmFfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MTg0Mj1zdGF0aWMgaW50IGFycF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTM5LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxOTQwOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjAzNj1zdGF0aWMgaW50IG5laWdoX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwNzgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwNzk6XFx0XFx0cmVwbHkgPSB2eGxhbl9uYV9jcmVhdGUoc2tiLCBuLCBoYSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjA4MC1cXHRcXHRcXHRcXHRcXHQhIShmID8gZi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBOVEZfUk9VVEVSIDogMCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0MS44NzUyMzcyNDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTg5MTUzMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbmVpZ2hfcmVkdWNlYCBhbmQgVlhMQU4gRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYG5laWdoX3JlZHVjZWAgYW5kIFZYTEFOLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGRpcmVjdCBjYWxsZXJzIGFuZCwgaWYgcG9zc2libGUsIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IFZYTEFOIGlzIGludm9sdmVkIGluIHRob3NlIGNhbGxzLiBBcmUgd2UgdGFsa2luZyBhYm91dCBwYWNrZXQgaGFuZGxpbmcsIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBzaW1wbGUgY2FsbCBncmFwaCB3b3VsZCBiZSBpZGVhbCBoZXJlLCBidXQgSeKAmWxsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgdG9vbHMgb3IgbWV0aG9kcyB0byBnZW5lcmF0ZSB0aGF0IGlmIGl0J3Mgbm90IHJlYWRpbHkgYXZhaWxhYmxlLiBGcm9tIHRoYXQsIEkgY2FuIHF1aWNrbHkgZm9ybSBhIGh5cG90aGVzaXMgcmVnYXJkaW5nIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM3OjQ1LjQ2NDM5Mjg0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjY0MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZWlnaF9yZWR1Y2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xOTQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwMzUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIwMzY6c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNy17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjczOT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3ODAtXFx0XFx0XFx0ICAgIG0tXFx1MDAzZWljbXBoLmljbXA2X3R5cGUgPT0gTkRJU0NfTkVJR0hCT1VSX1NPTElDSVRBVElPTilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc4MTpcXHRcXHRcXHRcXHRyZXR1cm4gbmVpZ2hfcmVkdWNlKGRldiwgc2tiLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzgyLVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6NDUuNTExMDQwOTA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg4NTQ1MzkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWWExBTiBLY29uZmlnKipcblxuT2theSwgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3Z4bGFuL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSBhcmUgc3RydWN0dXJlZC4gTXkgZ29hbCBoZXJlIGlzIGxpa2VseSB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGJlaW5nIGV4cG9zZWQsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLCBhbmQgcG90ZW50aWFsbHkgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIHRoZSBtYWluIHN5bWJvbHMsIGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgIFRoZSBiYXNlIFZYTEFOIGRyaXZlciBpdHNlbGYgKGBDT05GSUdfVlhMQU5gKSDigJMgaXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hhdCdzIGl0cyBzdGF0dXM/XG4qICAgQW55IG9wdGlvbnMgZm9yIGRpZmZlcmVudCBlbmNhcHN1bGF0aW9uIHR5cGVzIG9yIHR1bm5lbGluZyBwcm90b2NvbHMgYmVzaWRlcyBVRFAgVlhMQU4uXG4qICAgRmVhdHVyZSBmbGFnczogQXJlIHRoZXJlIGNvbnRyb2xzIGZvciBjaGVja3N1bSBvZmZsb2FkaW5nLCBUU08sIEdSTy9HU08sIG9yIG90aGVyIHBlcmZvcm1hbmNlLXJlbGF0ZWQgb3B0aW9ucz8gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggb25lcyBhcmUgZXhwb3NlZCBzbyBJIGNhbiBldmFsdWF0ZSB0aGUgaW1wbGVtZW50YXRpb24ncyBjYXBhYmlsaXRpZXMuXG4qICAgSGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgTklDLXNwZWNpZmljIG9mZmxvYWRzIG9yIGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9uIGNlcnRhaW4gaGFyZHdhcmUgZmVhdHVyZXMgb3IgcGxhdGZvcm1zLlxuKiAgIERlYnVnZ2luZyBvciB0cmFjaW5nIG9wdGlvbnMsIHNpbmNlIEkgbWlnaHQgYmUgbG9va2luZyBpbnRvIHRyYWNpbmcgYSBmYXVsdCBhbmQgZGVidWdnaW5nLlxuXG5JIHdpbGwgYWxzbyBiZSBvbiB0aGUgbG9va291dCBmb3IgYW55IGRlcGVuZGVuY2llcy4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IHNwb3QgaWYgYW55IG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgVlhMQU4gZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCB3b3JraW5nIGNvcnJlY3RseS4gTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZywgbG9va2luZyBhdCB0aGUgaGllcmFyY2h5IGFuZCB0aGlua2luZyBhYm91dCBob3cgdGhvc2Ugb3B0aW9ucyBtaWdodCBhZmZlY3QgdGhlIGJ1aWxkIHByb2Nlc3MsIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UsIGFuZCwgdWx0aW1hdGVseSwgdGhlIHBlcmZvcm1hbmNlIGFuZCBiZWhhdmlvciBvZiBWWExBTiBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0OC4zOTY0OTcxNDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDIxODkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWWExBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0NjIyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMDpjb25maWcgVlhMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMTpcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMjMyLVxcdGRlcGVuZHMgb24gSU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzYtXFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZ4bGFuIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzNzpcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzgtXFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cXG4tLVxcbmRyaXZlcnMvbmV0L01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19WSVJUSU9fTkVUKSArPSB2aXJ0aW9fbmV0Lm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfVlhMQU4pICs9IHZ4bGFuL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19HRU5FVkUpICs9IGdlbmV2ZS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oLTExNjctI2RlZmluZSBUWF9QQUNLRVRfQVRUUklCVVRFU19QVFBfV0lEVEhcXHRcXHQxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMTY4OiNkZWZpbmUgVFhfUEFDS0VUX0FUVFJJQlVURVNfVlhMQU5fSU5ERVhcXHQ0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMTY5OiNkZWZpbmUgVFhfUEFDS0VUX0FUVFJJQlVURVNfVlhMQU5fV0lEVEhcXHQxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaC0xMTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaC0xMjEzLSNkZWZpbmUgVFhfTk9STUFMX0RFU0MyX1ZMQU5fSU5TRVJUXFx0XFx0MHgyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaDoxMjE0OiNkZWZpbmUgVFhfTk9STUFMX0RFU0MzX1ZYTEFOX1BBQ0tFVFxcdFxcdDB4M1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmgtMTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9MzkwPXN0YXRpYyB2b2lkIHhnYmVfc2V0X3Z4bGFuX2lkKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM5MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzozOTI6XFx0LyogUHJvZ3JhbSB0aGUgVlhMQU4gcG9ydCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzkzLVxcdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1RJUiwgVE5JRCwgcGRhdGEtXFx1MDAzZXZ4bGFuX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6Mzk1OlxcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwiVlhMQU4gdHVubmVsIGlkIHNldCB0byAlaHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0zOTYtXFx0XFx0ICBwZGF0YS1cXHUwMDNldnhsYW5fcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTM5OT1zdGF0aWMgdm9pZCB4Z2JlX2VuYWJsZV92eGxhbihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQwNDpcXHQvKiBQcm9ncmFtIHRoZSBWWExBTiBwb3J0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MDUtXFx0eGdiZV9zZXRfdnhsYW5faWQocGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDA3OlxcdC8qIEFsbG93IGZvciBJUHY2L1VEUCB6ZXJvLWNoZWNrc3VtIFZYTEFOIHBhY2tldHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQwOC1cXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19QRlIsIFZVQ0MsIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDEwOlxcdC8qIEVuYWJsZSBWWExBTiB0dW5uZWxpbmcgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDExLVxcdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1RDUiwgVk5NLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDE0OlxcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwiVlhMQU4gYWNjZWxlcmF0aW9uIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM9NDE3PXN0YXRpYyB2b2lkIHhnYmVfZGlzYWJsZV92eGxhbihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjQyNTpcXHQvKiBDbGVhciBJUHY2L1VEUCB6ZXJvLWNoZWNrc3VtIFZYTEFOIHBhY2tldHMgc2V0dGluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDI2LVxcdFhHTUFDX0lPV1JJVEVfQklUUyhwZGF0YSwgTUFDX1BGUiwgVlVDQywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy00MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYzo0Mjg6XFx0LyogQ2xlYXIgdGhlIFZYTEFOIHBvcnQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQyOS1cXHRYR01BQ19JT1dSSVRFX0JJVFMocGRhdGEsIE1BQ19USVIsIFROSUQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMtNDMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6NDMxOlxcdG5ldGlmX2RiZyhwZGF0YSwgZHJ2LCBwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwiVlhMQU4gYWNjZWxlcmF0aW9uIGRpc2FibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTQzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTE2MTU9c3RhdGljIHZvaWQgeGdiZV9kZXZfeG1pdChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0xNjQxLVxcdHZ4bGFuID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LVxcdTAwM2VhdHRyaWJ1dGVzLCBUWF9QQUNLRVRfQVRUUklCVVRFUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjE2NDI6XFx0XFx0XFx0ICAgICAgIFZYTEFOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE2NDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE3NzUtXFx0XFx0WEdNQUNfU0VUX0JJVFNfTEUocmRlc2MtXFx1MDAzZWRlc2MzLCBUWF9OT1JNQUxfREVTQzMsIFZOUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jOjE3NzY6XFx0XFx0XFx0XFx0ICBUWF9OT1JNQUxfREVTQzNfVlhMQU5fUEFDS0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTE3NzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jPTM1NzE9dm9pZCB4Z2JlX2luaXRfZnVuY3Rpb25fcHRyc19kZXYoc3RydWN0IHhnYmVfaHdfaWYgKmh3X2lmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYy0zNjY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmM6MzY3MDpcXHQvKiBGb3IgVlhMQU4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jLTM2NzEtXFx0aHdfaWYtXFx1MDAzZWVuYWJsZV92eGxhbiA9IHhnYmVfZW5hYmxlX3Z4bGFuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz02OTA9dm9pZCB4Z2JlX2dldF9hbGxfaHdfZmVhdHVyZXMoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy04MzgtXFx0XFx0XFx0aHdfZmVhdC1cXHUwMDNlc2Ffdmxhbl9pbnMgPyBcXFwieWVzXFxcIiA6IFxcXCJub1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6ODM5OlxcdFxcdGRldl9kYmcocGRhdGEtXFx1MDAzZWRldiwgXFxcIiAgVlhMQU4vTlZHUkUgc3VwcG9ydCAgICAgICA6ICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtODQwLVxcdFxcdFxcdGh3X2ZlYXQtXFx1MDAzZXZ4biA/IFxcXCJ5ZXNcXFwiIDogXFxcIm5vXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTkwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTEwLVxcdC50YWJsZXNcXHRcXHQ9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxMTpcXHRcXHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTEyLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTE0NDA9c3RhdGljIGludCB4Z2JlX3ByZXBfdHNvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4Z2JlX3BhY2tldF9kYXRhICpwYWNrZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE0NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxNDUyOlxcdGlmIChYR01BQ19HRVRfQklUUyhwYWNrZXQtXFx1MDAzZWF0dHJpYnV0ZXMsIFRYX1BBQ0tFVF9BVFRSSUJVVEVTLCBWWExBTikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE0NTMtXFx0XFx0cGFja2V0LVxcdTAwM2VoZWFkZXJfbGVuID0gc2tiX2lubmVyX3RjcF9hbGxfaGVhZGVycyhza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xNTIxPXN0YXRpYyB2b2lkIHhnYmVfcGFja2V0X2luZm8oc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNTU3LVxcdFxcdFhHTUFDX1NFVF9CSVRTKHBhY2tldC1cXHUwMDNlYXR0cmlidXRlcywgVFhfUEFDS0VUX0FUVFJJQlVURVMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxNTU4OlxcdFxcdFxcdCAgICAgICBWWExBTiwgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xNTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xOTM1PXN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCB4Z2JlX2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xOTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6MTk0NjpcXHQvKiBWWExBTiBDU1VNIHJlcXVpcmVzIFZYTEFOIGJhc2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5NDctXFx0aWYgKChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfR1NPX1VEUF9UVU5ORUxfQ1NVTSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD03MDQ9c3RydWN0IHhnYmVfaHdfaWYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTgwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6ODAxOlxcdC8qIEZvciBWWExBTiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC04MDItXFx0dm9pZCAoKmVuYWJsZV92eGxhbikoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9OTMyPXN0cnVjdCB4Z2JlX2h3X2ZlYXR1cmVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC05NTAtXFx0dW5zaWduZWQgaW50IHNhX3ZsYW5faW5zO1xcdC8qIFNvdXJjZSBBZGRyZXNzIG9yIFZMQU4gSW5zZXJ0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjk1MTpcXHR1bnNpZ25lZCBpbnQgdnhuO1xcdFxcdC8qIFZYTEFOL05WR1JFICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTk1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD05OTM9c3RydWN0IHhnYmVfcHJ2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTExNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjExNDI6XFx0LyogVlhMQU4gc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTE0My1cXHR1MTYgdnhsYW5fcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYTBfaW50ZXJuYWwuaC01MC0jZGVmaW5lIEhXX0FUTF9BMF9UWERfQ1RMX0NNRF9XQiAgICAgIEJJVCgyNylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9od19hdGwvaHdfYXRsX2EwX2ludGVybmFsLmg6NTE6I2RlZmluZSBIV19BVExfQTBfVFhEX0NUTF9DTURfVlhMQU4gICBCSVQoMjgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9hMF9pbnRlcm5hbC5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvaHdfYXRsL2h3X2F0bF9iMF9pbnRlcm5hbC5oLTU1LSNkZWZpbmUgSFdfQVRMX0IwX1RYRF9DVExfQ01EX1dCICAgICAgQklUKDI3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2h3X2F0bC9od19hdGxfYjBfaW50ZXJuYWwuaDo1NjojZGVmaW5lIEhXX0FUTF9CMF9UWERfQ1RMX0NNRF9WWExBTiAgIEJJVCgyOClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9od19hdGwvaHdfYXRsX2IwX2ludGVybmFsLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYz0xNDM2PXN0YXRpYyB2b2lkIGJuZ2VfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMtMTQ0NS1cXHRpZiAoYm4tXFx1MDAzZXZ4bGFuX3BvcnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmM6MTQ0NjpcXHRcXHR0dW5sX3RwYV9ibWFwIHw9IFZOSUNfVFBBX0NGR19SRVFfVE5MX1RQQV9FTl9CSVRNQVBfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMtMTQ0Ny1cXHRpZiAoYm4tXFx1MDAzZXZ4bGFuX2dwZV9wb3J0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jOjE0NDg6XFx0XFx0dHVubF90cGFfYm1hcCB8PSBWTklDX1RQQV9DRkdfUkVRX1ROTF9UUEFfRU5fQklUTUFQX1ZYTEFOX0dQRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYy0xNDQ5LVxcdGlmIChibi1cXHUwMDNlbmdlX3BvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oPTEzMzk9ZW51bSBibngyeF91ZHBfcG9ydF90eXBlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oOjEzNDA6XFx0Qk5YMlhfVURQX1BPUlRfVlhMQU4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xMzQxLVxcdEJOWDJYX1VEUF9QT1JUX0dFTkVWRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTIwODA9aW50IGJueDJ4X3JzcyhzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfcnNzX2NvbmZpZ19vYmogKnJzc19vYmosXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTA5LVxcdFxcdGlmICghQ0hJUF9JU19FMXgoYnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjExMDpcXHRcXHRcXHQvKiB2YWxpZCBvbmx5IGZvciBUVU5OX01PREVfVlhMQU4gdHVubmVsIG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyMTExOlxcdFxcdFxcdF9fc2V0X2JpdChCTlgyWF9SU1NfSVBWNF9WWExBTiwgXFx1MDAyNnBhcmFtcy5yc3NfZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjIxMTI6XFx0XFx0XFx0X19zZXRfYml0KEJOWDJYX1JTU19JUFY2X1ZYTEFOLCBcXHUwMDI2cGFyYW1zLnJzc19mbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTMzNjI9c3RhdGljIHUzMiBibngyeF94bWl0X3R5cGUoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jLTM0MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQwOTovKiBWWExBTjogNCA9IDEgKGZvciBsaW5lYXIgZGF0YSBCRCkgKyAzICgyIGZvciBQQkQgYW5kIGxhc3QgQkQpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MzQxMDojZGVmaW5lIEJOWDJYX05VTV9WWExBTl9UU09fV0lOX1NVQl9CRFMgICAgICAgICA0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMzQxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTM0MTk9c3RhdGljIGludCBibngyeF9wa3RfcmVxX2xpbihzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMzQyNS1cXHRpZiAoeG1pdF90eXBlIFxcdTAwMjYgWE1JVF9HU09fRU5DKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjM0MjY6XFx0XFx0bnVtX3Rzb193aW5fc3ViID0gQk5YMlhfTlVNX1ZYTEFOX1RTT19XSU5fU1VCX0JEUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0zNDI3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg9OTIxPXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X2Z1bmNfc3RhcnQoc3RydWN0IGJueDJ4ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTk2Mi1cXHRcXHRzdGFydF9wYXJhbXMtXFx1MDAzZW5ldHdvcmtfY29zX21vZGUgPSBGV19XUlI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg6OTYzOlxcdGlmIChicC1cXHUwMDNldWRwX3R1bm5lbF9wb3J0c1tCTlgyWF9VRFBfUE9SVF9WWExBTl0pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaDo5NjQ6XFx0XFx0cG9ydCA9IGJwLVxcdTAwM2V1ZHBfdHVubmVsX3BvcnRzW0JOWDJYX1VEUF9QT1JUX1ZYTEFOXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC05NjUtXFx0XFx0c3RhcnRfcGFyYW1zLVxcdTAwM2V2eGxhbl9kc3RfcG9ydCA9IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD0zODg1PXN0cnVjdCBldGhfY2xhc3NpZnlfdmxhbl9jbWQge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtMzg5My0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oOjM4OTQ6ICogQ29tbWFuZCBmb3IgYWRkaW5nL3JlbW92aW5nIGEgVlhMQU4gY2xhc3NpZmljYXRpb24gcnVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTM4OTUtICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD00MjM4PXN0cnVjdCBldGhfcnNzX3VwZGF0ZV9yYW1yb2RfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00MjQ3LSNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNF9VRFBfQ0FQQUJJTElUWV9TSElGVCAyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6NDI0ODojZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWSAoMHgxXFx1MDAzY1xcdTAwM2MzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oOjQyNDk6I2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY0X1ZYTEFOX0NBUEFCSUxJVFlfU0hJRlQgM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTAtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X0NBUEFCSUxJVFkgKDB4MVxcdTAwM2NcXHUwMDNjNClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oLTQyNTUtI2RlZmluZSBFVEhfUlNTX1VQREFURV9SQU1ST0RfREFUQV9JUFY2X1VEUF9DQVBBQklMSVRZX1NISUZUIDZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0MjU2OiNkZWZpbmUgRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9WWExBTl9DQVBBQklMSVRZICgweDFcXHUwMDNjXFx1MDAzYzcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmg6NDI1NzojZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjZfVlhMQU5fQ0FQQUJJTElUWV9TSElGVCA3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtNDI1OC0jZGVmaW5lIEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX1RVTk5fSU5ORVJfSERSU19DQVBBQklMSVRZICgweDFcXHUwMDNjXFx1MDAzYzgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaD00NDQ4PWVudW0gZXRoX3R1bm5fdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgtNDQ0OS1cXHRUVU5OX1RZUEVfTk9ORSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaDo0NDUwOlxcdFRVTk5fVFlQRV9WWExBTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaC00NDUxLVxcdFRVTk5fVFlQRV9MMl9HUkUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM9MTAxNjU9c3RhdGljIGludCBibngyeF91ZHBfcG9ydF91cGRhdGUoc3RydWN0IGJueDJ4ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDE4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAxOTA6XFx0aWYgKGJwLVxcdTAwM2V1ZHBfdHVubmVsX3BvcnRzW0JOWDJYX1VEUF9QT1JUX1ZYTEFOXSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMDE5MTpcXHRcXHR2eGxhbl9wb3J0ID0gYnAtXFx1MDAzZXVkcF90dW5uZWxfcG9ydHNbQk5YMlhfVURQX1BPUlRfVlhMQU5dO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDE5Mi1cXHRcXHRzd2l0Y2hfdXBkYXRlX3BhcmFtcy1cXHUwMDNldnhsYW5fZHN0X3BvcnQgPSB2eGxhbl9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyNS1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjI2OlxcdFxcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4sICB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyNy1cXHRcXHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9NDQ4Mz1zdGF0aWMgaW50IGJueDJ4X3NldHVwX3JzcyhzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00NTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzMTpcXHRpZiAodGVzdF9iaXQoQk5YMlhfUlNTX0lQVjRfVlhMQU4sIFxcdTAwMjZwLVxcdTAwM2Vyc3NfZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDUzMjpcXHRcXHRjYXBzIHw9IEVUSF9SU1NfVVBEQVRFX1JBTVJPRF9EQVRBX0lQVjRfVlhMQU5fQ0FQQUJJTElUWTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQ1MzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTM0OlxcdGlmICh0ZXN0X2JpdChCTlgyWF9SU1NfSVBWNl9WWExBTiwgXFx1MDAyNnAtXFx1MDAzZXJzc19mbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0NTM1OlxcdFxcdGNhcHMgfD0gRVRIX1JTU19VUERBVEVfUkFNUk9EX0RBVEFfSVBWNl9WWExBTl9DQVBBQklMSVRZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDUzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9NjE5OT1zdGF0aWMgaW5saW5lIGludCBibngyeF9mdW5jX3NlbmRfc3dpdGNoX3VwZGF0ZShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy02MjQ5LVxcdFxcdFxcdHJkYXRhLVxcdTAwM2Vpbm5lcl9jbHNzX2wyZ3JlID0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjYyNTA6XFx0XFx0aWYgKHRlc3RfYml0KEJOWDJYX0ZfVVBEQVRFX1RVTk5FTF9JTk5FUl9DTFNTX1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNjI1MS1cXHRcXHRcXHQgICAgIFxcdTAwMjZzd2l0Y2hfdXBkYXRlX3BhcmFtcy1cXHUwMDNlY2hhbmdlcykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTcxNT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNzI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NzI5OlxcdEJOWDJYX1JTU19JUFY0X1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NzMwOlxcdEJOWDJYX1JTU19JUFY2X1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNzMxLVxcdEJOWDJYX1JTU19UVU5OX0lOTkVSX0hEUlMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTExMTc9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTExMjUtXFx0Qk5YMlhfRl9VUERBVEVfVFVOTkVMX0lOTkVSX0NMU1NfTDJHUkUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxMTI2OlxcdEJOWDJYX0ZfVVBEQVRFX1RVTk5FTF9JTk5FUl9DTFNTX1ZYTEFOLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtMTEyNy1cXHRCTlgyWF9GX1VQREFURV9UVU5ORUxfSU5ORVJfQ0xTU19MMkdFTkVWRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9MTE3OT1zdHJ1Y3QgYm54MnhfZnVuY19zdGFydF9wYXJhbXMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6MTE5MzpcXHQvKiBVRFAgZGVzdCBwb3J0IGZvciBWWExBTiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtMTE5NC1cXHR1MTYgdnhsYW5fZHN0X3BvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz01OTA2PXN0YXRpYyBpbnQgYm54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9mcmVlKHN0cnVjdCBibnh0ICpicCwgdTggdHVubmVsX3R5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjU5MTE6XFx0aWYgKHR1bm5lbF90eXBlID09IFRVTk5FTF9EU1RfUE9SVF9GUkVFX1JFUV9UVU5ORUxfVFlQRV9WWExBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5MTItXFx0ICAgIGJwLVxcdTAwM2V2eGxhbl9md19kc3RfcG9ydF9pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTI0LVxcdHN3aXRjaCAodHVubmVsX3R5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTI1OlxcdGNhc2UgVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU5MjYtXFx0XFx0cmVxLVxcdTAwM2V0dW5uZWxfZHN0X3BvcnRfaWQgPSBjcHVfdG9fbGUxNihicC1cXHUwMDNldnhsYW5fZndfZHN0X3BvcnRfaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTkzNC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1OTM1OlxcdGNhc2UgVFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTM2LVxcdFxcdHJlcS1cXHUwMDNldHVubmVsX2RzdF9wb3J0X2lkID0gY3B1X3RvX2xlMTYoYnAtXFx1MDAzZXZ4bGFuX2dwZV9md19kc3RfcG9ydF9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz01OTUzPXN0YXRpYyBpbnQgYm54dF9od3JtX3R1bm5lbF9kc3RfcG9ydF9hbGxvYyhzdHJ1Y3QgYm54dCAqYnAsIF9fYmUxNiBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk3NS1cXHRzd2l0Y2ggKHR1bm5lbF90eXBlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NTk3NjpcXHRjYXNlIFRVTk5FTF9EU1RfUE9SVF9BTExPQ19SRVFfVFVOTkVMX1RZUEVfVlhMQU46XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNTk3Ny1cXHRcXHRicC1cXHUwMDNldnhsYW5fcG9ydCA9IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTg0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjU5ODU6XFx0Y2FzZSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01OTg2LVxcdFxcdGJwLVxcdTAwM2V2eGxhbl9ncGVfcG9ydCA9IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz02NTI5PXN0YXRpYyB2b2lkIGJueHRfaHdybV92bmljX3VwZGF0ZV90dW5sX3RwYShzdHJ1Y3QgYm54dCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy02NTM3LVxcdGlmIChicC1cXHUwMDNldnhsYW5fcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo2NTM4OlxcdFxcdHR1bmxfdHBhX2JtYXAgfD0gVk5JQ19UUEFfQ0ZHX1JFUV9UTkxfVFBBX0VOX0JJVE1BUF9WWExBTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy02NTM5LVxcdGlmIChicC1cXHUwMDNldnhsYW5fZ3BlX3BvcnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6NjU0MDpcXHRcXHR0dW5sX3RwYV9ibWFwIHw9IFZOSUNfVFBBX0NGR19SRVFfVE5MX1RQQV9FTl9CSVRNQVBfVlhMQU5fR1BFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTY1NDEtXFx0aWYgKGJwLVxcdTAwM2VuZ2VfcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTEwNzQ0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9mcmVlX3R1bm5lbF9wb3J0cyhzdHJ1Y3QgYm54dCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMDc0Ni1cXHRibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTA3NDc6XFx0XFx0VFVOTkVMX0RTVF9QT1JUX0ZSRUVfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMDc0OC1cXHRibnh0X2h3cm1fdHVubmVsX2RzdF9wb3J0X2ZyZWUoYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNjA2MD1zdGF0aWMgaW50IGJueHRfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA2NjpcXHRpZiAodGktXFx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MDY3OlxcdFxcdGNtZCA9IFRVTk5FTF9EU1RfUE9SVF9BTExPQ19SRVFfVFVOTkVMX1RZUEVfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwNjgtXFx0ZWxzZSBpZiAodGktXFx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDcwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA3MTpcXHRcXHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOX0dQRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2MDc2PXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwODI6XFx0aWYgKHRpLVxcdTAwM2V0eXBlID09IFVEUF9UVU5ORUxfVFlQRV9WWExBTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4MzpcXHRcXHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfRlJFRV9SRVFfVFVOTkVMX1RZUEVfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwODQtXFx0ZWxzZSBpZiAodGktXFx1MDAzZXR5cGUgPT0gVURQX1RVTk5FTF9UWVBFX0dFTkVWRSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDg2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjA4NzpcXHRcXHRjbWQgPSBUVU5ORUxfRFNUX1BPUlRfRlJFRV9SRVFfVFVOTkVMX1RZUEVfVlhMQU5fR1BFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MDg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTYwOTI9c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueHRfdWRwX3R1bm5lbHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjA5Ni1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYwOTc6XFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYwOTgtXFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNC1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYxMDU6XFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTiwgIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYxMDYtXFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9HRU5FVkUsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYxMDc6XFx0XFx0eyAubl9lbnRyaWVzID0gMSwgLnR1bm5lbF90eXBlcyA9IFVEUF9UVU5ORUxfVFlQRV9WWExBTl9HUEUsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYxMDgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jPTc5Mz1zdGF0aWMgaW50IGh3cm1fY2ZhX2RlY2FwX2ZpbHRlcl9hbGxvYyhzdHJ1Y3QgYm54dCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYy04MTEtXFx0XFx0ICAgQ0ZBX0RFQ0FQX0ZJTFRFUl9BTExPQ19SRVFfRU5BQkxFU19JUF9QUk9UT0NPTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuYzo4MTI6XFx0cmVxLVxcdTAwM2V0dW5uZWxfdHlwZSA9IENGQV9ERUNBUF9GSUxURVJfQUxMT0NfUkVRX1RVTk5FTF9UWVBFX1ZYTEFOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTgxMy1cXHRyZXEtXFx1MDAzZWlwX3Byb3RvY29sID0gQ0ZBX0RFQ0FQX0ZJTFRFUl9BTExPQ19SRVFfSVBfUFJPVE9DT0xfVURQO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM9ODgzPXN0YXRpYyBpbnQgaHdybV9jZmFfZW5jYXBfcmVjb3JkX2FsbG9jKHN0cnVjdCBibnh0ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTg5OC1cXHRlbmNhcCA9IChzdHJ1Y3QgaHdybV9jZmFfZW5jYXBfZGF0YV92eGxhbiAqKVxcdTAwMjZyZXEtXFx1MDAzZWVuY2FwX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM6ODk5OlxcdHJlcS1cXHUwMDNlZW5jYXBfdHlwZSA9IENGQV9FTkNBUF9SRUNPUkRfQUxMT0NfUkVRX0VOQ0FQX1RZUEVfVlhMQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmMtOTAwLVxcdGV0aGVyX2FkZHJfY29weShlbmNhcC1cXHUwMDNlZHN0X21hY19hZGRyLCBsMl9pbmZvLVxcdTAwM2VkbWFjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jLTkwOC1cXHRlbmNhcF9pcHY0ID0gKHN0cnVjdCBod3JtX3Z4bGFuX2lwdjRfaGRyICopZW5jYXAtXFx1MDAzZWwzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5jOjkwOTpcXHRlbmNhcF9pcHY0LVxcdTAwM2V2ZXJfaGxlbiA9IDQgXFx1MDAzY1xcdTAwM2MgVlhMQU5fSVBWNF9IRFJfVkVSX0hMRU5fVkVSU0lPTl9TRlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmM6OTEwOlxcdGVuY2FwX2lwdjQtXFx1MDAzZXZlcl9obGVuIHw9IDUgXFx1MDAzY1xcdTAwM2MgVlhMQU5fSVBWNF9IRFJfVkVSX0hMRU5fSEVBREVSX0xFTkdUSF9TRlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmMtOTExLVxcdGVuY2FwX2lwdjQtXFx1MDAzZXR0bCA9IGVuY2FwX2tleS1cXHUwMDNldHRsO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg9NzE9c3RydWN0IGJueHRfdGNfYWN0aW9ucyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfdGMuaC03My0jZGVmaW5lIEJOWFRfVENfQUNUSU9OX0ZMQUdfRldEXFx0XFx0XFx0QklUKDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X3RjLmg6NzQ6I2RlZmluZSBCTlhUX1RDX0FDVElPTl9GTEFHX0ZXRF9WWExBTlxcdFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF90Yy5oLTc1LSNkZWZpbmUgQk5YVF9UQ19BQ1RJT05fRkxBR19QVVNIX1ZMQU5cXHRcXHRCSVQoMylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMzMtLyogQ2hhbmdlIHRoZSB2YWx1ZSBvZiBTTEkgUGFja2V0IElucHV0IEphYmJlciBSZWdpc3RlciB0byBhbGxvd1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MzQ6ICogVlhMQU4gVFNPIHBhY2tldHMgd2hpY2ggY2FuIGJlIDY0NDI0IGJ5dGVzLCBleGNlZWRpbmcgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0zNS0gKiBNQVhfR1NPX1NJWkUgd2Ugc3VwcGxpZWQgdG8gdGhlIGtlcm5lbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0zOTU9c3RhdGljIGludCBjbjIzeHhfc2V0dXBfcGZfZGV2aWNlX3JlZ3Moc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtNDEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6NDEzOlxcdC8qIFNldCBTTElfUEtUX0lOX0pBQkJFUiB0byBoYW5kbGUgbGFyZ2UgVlhMQU4gcGFja2V0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtNDE0LVxcdG9jdGVvbl93cml0ZV9jc3I2NChvY3QsIENOMjNYWF9TTElfUEtUX0lOX0pBQkJFUiwgQ04yM1hYX0lOUFVUX0pBQkJFUik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYz0yNTY9dm9pZCBsaXF1aWRpb19saW5rX2N0cmxfY21kX2NvbXBsZXRpb24odm9pZCAqbmN0cmxfcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjM3MzpcXHRcXHQvKiBDYXNlIHRvIGhhbmRsZSBcXFwiT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJR1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzQtXFx0XFx0ICogQ29tbWFuZCBwYXNzZWQgYnkgTklDIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM3NS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzozNzY6XFx0Y2FzZSBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjM3NzpcXHRcXHRpZiAobmN0cmwtXFx1MDAzZW5jbWQucy5tb3JlID09IE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0zNzgtXFx0XFx0XFx0bmV0aWZfaW5mbyhsaW8sIHByb2JlLCBsaW8tXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTM4MS1cXHRcXHR9IGVsc2UgaWYgKG5jdHJsLVxcdTAwM2VuY21kLnMubW9yZSA9PVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjM4MjpcXHRcXHRcXHQgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMzgzLVxcdFxcdFxcdG5ldGlmX2luZm8obGlvLCBwcm9iZSwgbGlvLVxcdTAwM2VuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjA5PXN0YXRpYyBpbnQgbGlxdWlkaW9fc2V0X3J4Y3N1bV9jb21tYW5kKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBjb21tYW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjYzOS0gKiBAbmV0ZGV2OiAgICAgICAgICAgICAgICBwb2ludGVyIHRvIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY0MDogKiBAY29tbWFuZDogICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY0MS0gKiBAdnhsYW5fcG9ydDogICAgICAgICAgICBWeExBTiBwb3J0IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjQyOiAqIEB2eGxhbl9jbWRfYml0OiAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY0MzogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjQ0LSAqIFJldHVybjogICAgICAgICAgICAgICAgICAgICBTVUNDRVNTIG9yIEZBSUxVUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI2NzU9c3RhdGljIGludCBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjc5LVxcdHJldHVybiBsaXF1aWRpb192eGxhbl9wb3J0X2NvbW1hbmQobmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2ODA6XFx0XFx0XFx0XFx0XFx0ICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjgxLVxcdFxcdFxcdFxcdFxcdCAgIGh0b25zKHRpLVxcdTAwM2Vwb3J0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjgyOlxcdFxcdFxcdFxcdFxcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2ODMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY4NT1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5MC1cXHRyZXR1cm4gbGlxdWlkaW9fdnhsYW5fcG9ydF9jb21tYW5kKG5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjkxOlxcdFxcdFxcdFxcdFxcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Mi1cXHRcXHRcXHRcXHRcXHQgICBodG9ucyh0aS1cXHUwMDNlcG9ydCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjY5MzpcXHRcXHRcXHRcXHRcXHQgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjk0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI2OTY9c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5OS1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MjcwMDpcXHRcXHR7IC5uX2VudHJpZXMgPSAxMDI0LCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI3MDEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE2OTg9c3RhdGljIGludCBsaXF1aWRpb19zZXRfcnhjc3VtX2NvbW1hbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IGNvbW1hbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzI2LSAqIEBwYXJhbSBuZXRkZXYgICAgICAgICAgICAgICAgcG9pbnRlciB0byBuZXR3b3JrIGRldmljZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Mjc6ICogQHBhcmFtIGNvbW1hbmQgICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTcyOC0gKiBAcGFyYW0gdnhsYW5fcG9ydCAgICAgICAgICAgIFZ4TEFOIHBvcnQgdG8gYmUgYWRkZWQgb3IgZGVsZXRlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Mjk6ICogQHBhcmFtIHZ4bGFuX2NtZF9iaXQgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQURELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3MzA6ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfREVMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTczMS0gKiBAcmV0dXJucyAgICAgICAgICAgICAgICAgICAgIFNVQ0NFU1Mgb3IgRkFJTFVSRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc2Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NjYtXFx0cmV0dXJuIGxpcXVpZGlvX3Z4bGFuX3BvcnRfY29tbWFuZChuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTc2NzpcXHRcXHRcXHRcXHRcXHQgICBPQ1RORVRfQ01EX1ZYTEFOX1BPUlRfQ09ORklHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3NjgtXFx0XFx0XFx0XFx0XFx0ICAgaHRvbnModGktXFx1MDAzZXBvcnQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Njk6XFx0XFx0XFx0XFx0XFx0ICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0FERCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc3MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xNzcyPXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzc3LVxcdHJldHVybiBsaXF1aWRpb192eGxhbl9wb3J0X2NvbW1hbmQobmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE3Nzg6XFx0XFx0XFx0XFx0XFx0ICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0NPTkZJRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzc5LVxcdFxcdFxcdFxcdFxcdCAgIGh0b25zKHRpLVxcdTAwM2Vwb3J0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgwOlxcdFxcdFxcdFxcdFxcdCAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9ERUwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg2LVxcdC50YWJsZXNcXHRcXHQ9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzg3OlxcdFxcdHsgLm5fZW50cmllcyA9IDEwMjQsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfVlhMQU4sIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oPTE3Mz1zdGF0aWMgaW5saW5lIHZvaWQgYWRkX3NnX3NpemUoc3RydWN0IG9jdGVvbl9zZ19lbnRyeSAqc2dfZW50cnksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjMyLSNkZWZpbmUgICBPQ1RORVRfQ01EX0RFTF9WTEFOX0ZJTFRFUiAgMHgxOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzM6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9DT05GSUcgMHgxOVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyNDY6I2RlZmluZSAgIE9DVE5FVF9DTURfVlhMQU5fUE9SVF9BREQgICAgMHgwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI0NzojZGVmaW5lICAgT0NUTkVUX0NNRF9WWExBTl9QT1JUX0RFTCAgICAweDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjQ4LSNkZWZpbmUgICBPQ1RORVRfQ01EX1JYQ1NVTV9FTkFCTEUgICAgIDB4MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYz04Mjc9c3RhdGljIHZvaWQgbmljX2VuYWJsZV90dW5uZWxfcGFyc2luZyhzdHJ1Y3QgbmljcGYgKm5pYywgaW50IHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYy04MzktXFx0XFx0ICAgICAgKCg3VUxMIFxcdTAwM2NcXHUwMDNjIDYxKSB8IHByb3RfZGVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYzo4NDA6XFx0bmljX3JlZ193cml0ZShuaWMsIE5JQ19QRl9SWF9WWExBTl9ERUZfMF8xLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmM6ODQxOlxcdFxcdCAgICAgICgoMVVMTCBcXHUwMDNjXFx1MDAzYyA2MykgfCBVRFBfVlhMQU5fUE9SVF9OVU0pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jOjg0MjpcXHRuaWNfcmVnX3dyaXRlKG5pYywgTklDX1BGX1JYX1ZYTEFOX1BST1RfREVGLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMtODQzLVxcdFxcdCAgICAgICgoMHhmVUxMIFxcdTAwM2NcXHUwMDNjIDYwKSB8IHZ4bGFuX3Byb3RfZGVmKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfcmVnLmgtNDItI2RlZmluZSAgIE5JQ19QRl9SWF9OVkdSRV9QUk9UX0RFRlxcdFxcdCgweDA1OTgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQzOiNkZWZpbmUgICBOSUNfUEZfUlhfVlhMQU5fREVGXzBfMVxcdFxcdCgweDA1QTApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQ0OiNkZWZpbmUgICAgVURQX1ZYTEFOX1BPUlRfTlVNXFx0XFx0XFx0XFx0MHgxMkI1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX3JlZy5oOjQ1OiNkZWZpbmUgICBOSUNfUEZfUlhfVlhMQU5fUFJPVF9ERUZcXHRcXHQoMHgwNUIwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19yZWcuaC00Ni0jZGVmaW5lICAgIElQVjZfUFJPVF9ERUZcXHRcXHRcXHRcXHQweDJVTExcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3Mjc9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzczNi1cXHRzd2l0Y2ggKHRpLVxcdTAwM2V0eXBlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzczNzpcXHRjYXNlIFVEUF9UVU5ORUxfVFlQRV9WWExBTjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzM4LVxcdFxcdGFkYXB0ZXItXFx1MDAzZXZ4bGFuX3BvcnQgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3Mzk6XFx0XFx0dDRfd3JpdGVfcmVnKGFkYXB0ZXIsIE1QU19SWF9WWExBTl9UWVBFX0EsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3NDAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz0zNzcwPXN0YXRpYyBpbnQgY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zNzc5LVxcdHN3aXRjaCAodGktXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozNzgwOlxcdGNhc2UgVURQX1RVTk5FTF9UWVBFX1ZYTEFOOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3ODEtXFx0XFx0YWRhcHRlci1cXHUwMDNldnhsYW5fcG9ydCA9IHRpLVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM3ODI6XFx0XFx0dDRfd3JpdGVfcmVnKGFkYXB0ZXIsIE1QU19SWF9WWExBTl9UWVBFX0EsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6Mzc4MzpcXHRcXHRcXHQgICAgIFZYTEFOX1YoYmUxNl90b19jcHUodGktXFx1MDAzZXBvcnQpKSB8IFZYTEFOX0VOX0YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM3ODQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYz0zODE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgyMS1cXHQudGFibGVzXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgyMjpcXHRcXHR7IC5uX2VudHJpZXMgPSAxLCAudHVubmVsX3R5cGVzID0gVURQX1RVTk5FTF9UWVBFX1ZYTEFOLCAgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODIzLVxcdFxcdHsgLm5fZW50cmllcyA9IDEsIC50dW5uZWxfdHlwZXMgPSBVRFBfVFVOTkVMX1RZUEVfR0VORVZFLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYz0xMjY3PWVudW0gY3BsX3R4X3RubF9sc29fdHlwZSBjeGdiX2VuY2FwX29mZmxvYWRfc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEyOTEtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXZ4bGFuX3BvcnQgPT0gdWRwX2hkcihza2IpLVxcdTAwM2VkZXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvc2dlLmM6MTI5MjpcXHRcXHRcXHR0bmxfdHlwZSA9IFRYX1ROTF9UWVBFX1ZYTEFOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvc2dlLmMtMTI5My1cXHRcXHRlbHNlIGlmIChhZGFwdGVyLVxcdTAwM2VnZW5ldmVfcG9ydCA9PSB1ZHBfaGRyKHNrYiktXFx1MDAzZWRlc3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jPTEzMDM9c3RhdGljIGlubGluZSB2b2lkIHQ2X2ZpbGxfdG5sX2xzbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9zZ2UuYy0xMzMyLVxcdHN3aXRjaCAodG5sX3R5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jOjEzMzM6XFx0Y2FzZSBUWF9UTkxfVFlQRV9WWExBTjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3NnZS5jLTEzMzQtXFx0Y2FzZSBUWF9UTkxfVFlQRV9HRU5FVkU6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X21zZy5oPTE1Nzg9ZW51bSBjcGxfdHhfdG5sX2xzb190eXBlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfbXNnLmgtMTU4MC1cXHRUWF9UTkxfVFlQRV9OVkdSRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X21zZy5oOjE1ODE6XFx0VFhfVE5MX1RZUEVfVlhMQU4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9tc2cuaC0xNTgyLVxcdFRYX1ROTF9UWVBFX0dFTkVWRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oLTI1NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3MjojZGVmaW5lIE1QU19SWF9WWExBTl9UWVBFX0EgMHgxMTIzNFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oLTI1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3NDojZGVmaW5lIFZYTEFOX0VOX1MgICAgMTZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc1OiNkZWZpbmUgVlhMQU5fRU5fVih4KSAoKHgpIFxcdTAwM2NcXHUwMDNjIFZYTEFOX0VOX1MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU3NjojZGVmaW5lIFZYTEFOX0VOX0YgICAgVlhMQU5fRU5fVigxVSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaC0yNTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfcmVncy5oOjI1Nzg6I2RlZmluZSBWWExBTl9TICAgIDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X3JlZ3MuaDoyNTc5OiNkZWZpbmUgVlhMQU5fTSAgICAweGZmZmZVXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9yZWdzLmg6MjU4MDojZGVmaW5lIFZYTEFOX1YoeCkgKCh4KSBcXHUwMDNjXFx1MDAzYyBWWExBTl9TKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozNzo0OC41NjY3MjA4OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIwNDY4MDczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBWWExBTiBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMgYXJlIHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGFuZCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZXMuIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIHVuZGVyc3RhbmRpbmcgaG93IFZYTEFOIHN1cHBvcnQgaXMgY29tcGlsZWQsIHdoYXQgYnVpbGQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hhdCBLY29uZmlnIHN5bWJvbHMgY29udHJvbCB0aGUgZmVhdHVyZSdzIGluY2x1c2lvbi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFZYTEFOIG1vZHVsZSB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2Vzcy4gSSB3YW50IHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgZXZlcnkgYXNwZWN0IG9mIGl0cyBjb25zdHJ1Y3Rpb24gYW5kIHBvc3NpYmxlIGRlcGVuZGVuY2llcy4gT25jZSBJIGhhdmUgdGhlIGxheW91dCBvZiB0aGUgS2NvbmZpZyBvcHRpb25zLCBJIGNhbiBmdXJ0aGVyIGRlYnVnIGJ1aWxkIGlzc3VlcyBpZiBhbnkgYXJpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDg2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6NTAuNzcxNDA1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC92eGxhbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCNcXG4gICAyOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSB2eGxhbiBkcml2ZXJcXG4gICAzOlxcdCNcXG4gICA0OlxcdFxcbiAgIDU6XFx0b2JqLSQoQ09ORklHX1ZYTEFOKSArPSB2eGxhbi5vXFxuICAgNjpcXHRcXG4gICA3OlxcdHZ4bGFuLW9ianMgOj0gdnhsYW5fY29yZS5vIHZ4bGFuX211bHRpY2FzdC5vIHZ4bGFuX3ZuaWZpbHRlci5vIHZ4bGFuX21kYi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM3OjUwLjc3MTQ1NzY2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODk5NTUyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBCYXNlZCBvbiB0aGUgdGFzayBhdCBoYW5kICh3aGljaCBJJ20gbm90IHByaXZ5IHRvLCBidXQgSSdsbCBhc3N1bWUgaW52b2x2ZXMgYSBuZXR3b3JrIGRyaXZlciwgZ2l2ZW4gdGhlIGNvbnRleHQpLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbmF2aWdhdGUgdG8gdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byB6b29tIGluIGFyb3VuZCBsaW5lIDIzMC4gVGhhdCBsb2NhdGlvbiBvZnRlbiBob2xkcyB0aGUga2V5IHRvIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBJdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbmZpZ3VyZWQsIHdoYXQgdGhlIGV4aXN0aW5nIG9wdGlvbnMgYXJlLCBhbmQgaWYgc29tZXRoaW5nIHJlbGV2YW50IHRvIG15IHRhc2sgaXMgZGVmaW5lZCB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjE4MDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM3OjUyLjY3MTAxMjU3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyNTpcXHRcXHQgIGlwdnRhcCcsIGFuZCB0aGVuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIHRhcCB1c2VyIHNwYWNlIGludGVyZmFjZS5cXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDIyODpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGlwdnRhcC5cXG4gMjI5OlxcdFxcbiAyMzA6XFx0Y29uZmlnIFZYTEFOXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbiAyMzI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjM0OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjM1OlxcdFxcdGhlbHBcXG4gMjM2OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDIzNzpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuIDIzODpcXHRcXHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxcbiAyMzk6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XFxuIDI0MDpcXHRcXHQgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtbWFoYWxpbmdhbS1kdXR0LWRjb3BzLXZ4bGFuLTAyXFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cXG4gMjQ0OlxcdFxcbiAyNDU6XFx0Y29uZmlnIEdFTkVWRVxcbiAyNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXFxcIlxcbiAyNDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDI0ODpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjQ5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjUwOlxcdFxcdGhlbHBcXG4gMjUxOlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBnZW5ldmUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxcbiAyNTI6XFx0XFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gR0VORVZFIGlzIG9mdGVuIHVzZWRcXG4gMjUzOlxcdFxcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXFxuIDI1NDpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzc6NTIuNjcxMTEzODU5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNjQ4Mzg3Nzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHZ4bGFuX25hX2NyZWF0ZWAgRml4KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHZ4bGFuX25hX2NyZWF0ZWAgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjb2RlIGNoYW5nZS4gRmlyc3QsIGxldCdzIGlzb2xhdGUgdGhlIGJ1ZyB0aGF0IHdhcyBhZGRyZXNzZWQuIEkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIGNvZGU6XG5cbmBgYGNcbi1cdHNrYl9yZXNlcnZlKHJlcGx5LCBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldikpO1xuK1x0c2tiX3Jlc2VydmUocmVwbHksIGhlYWRyb29tKTtcbmBgYFxuXG51c2VkIGBMTF9SRVNFUlZFRF9TUEFDRShyZXF1ZXN0LVx1MDAzZWRldilgIGZvciB0aGUgYHNrYl9yZXNlcnZlYCBjYWxsLCB3aGlsZSBjYWxjdWxhdGluZyBgbGVuYCB1c2VkIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYC4gVGhlIGZpeCBoYXMgcmVwbGFjZWQgaXQgd2l0aCBgaGVhZHJvb21gIHdoaWNoIGlzIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYC4gSSBzZWUgdGhhdCBgZGV2YCBpcyBhc3NpZ25lZCB0byBgcmVxdWVzdC1cdTAwM2VkZXZgIHNvIHRoZXJlIG1heSBub3QgaGF2ZSBiZWVuIGEgZnVuY3Rpb25hbCBidWcsIGJ1dCB0aGlzIG1ha2VzIHRoZSBjb2RlIGNvbnNpc3RlbnQuIFRoZSBvcmlnaW5hbCBjYWxjdWxhdGlvbiBvZiB0aGUgbGVuZ3RoIHdhcyBjb3JyZWN0IGJ1dCB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZm9yIGEgbWlzbWF0Y2gsIG9yIGF0IGxlYXN0IGEgcmVkdW5kYW50IGNhbGN1bGF0aW9uIGlmIGByZXF1ZXN0LVx1MDAzZWRldmAgaGFkIGNoYW5nZWQuIFVzaW5nIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBtYWtlcyB0aGUgaW50ZW50aW9uIGNsZWFyIGFuZCB0aGUgY29kZSBjbGVhbmVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGlzIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIGlzIGd1YXJkZWQgYnkgYCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KWAuIFRoYXQncyBpbXBvcnRhbnQ7IGl0J3Mgc3BlY2lmaWMgdG8gSVB2Ni4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgZWxzZXdoZXJlIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLCBwYXJ0aWN1bGFybHkgYXJvdW5kIG5laWdoYm9yIGRpc2NvdmVyeSBvciB0cmFuc21pc3Npb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYnJvYWRlciBjb2RlYmFzZSBvZiBgdnhsYW5fY29yZS5jYCBhbmQgYWxzbyBsb29rIGF0IGVudHJ5IHBvaW50cyB0byBmdW5jdGlvbnMgbGlrZSBgbmVpZ2hfcmVkdWNlYCBvciBgdnhsYW5feG1pdGAgdG8gZ2V0IGEgZnVsbCB1bmRlcnN0YW5kaW5nLlxuXG5JIHNob3VsZCBhbHNvIGV4YW1pbmUgdGhlIHJlc3Qgb2YgdGhlIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBpc3N1ZXMgYW5kIHRoZW4gY29uc2lkZXIgd2hhdCdzIGhhcHBlbmluZyBpbnNpZGUgYG5laWdoX3JlZHVjZWAgZm9yIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDc1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDQuMzE5NTA0MTI0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAxMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjAxMDpcXHRcXHRza2JfcmVzZXRfdHJhbnNwb3J0X2hlYWRlcihyZXBseSk7XFxuMjAxMTpcXHRcXG4yMDEyOlxcdFxcdC8qIE5laWdoYm9yIEFkdmVydGlzZW1lbnQgKi9cXG4yMDEzOlxcdFxcdG5hID0gc2tiX3B1dF96ZXJvKHJlcGx5LCBzaXplb2YoKm5hKSArIG5hX29sZW4pO1xcbjIwMTQ6XFx0XFx0bmEtXFx1MDAzZWljbXBoLmljbXA2X3R5cGUgPSBORElTQ19ORUlHSEJPVVJfQURWRVJUSVNFTUVOVDtcXG4yMDE1OlxcdFxcdG5hLVxcdTAwM2VpY21waC5pY21wNl9yb3V0ZXIgPSBpc3JvdXRlcjtcXG4yMDE2OlxcdFxcdG5hLVxcdTAwM2VpY21waC5pY21wNl9vdmVycmlkZSA9IDE7XFxuMjAxNzpcXHRcXHRuYS1cXHUwMDNlaWNtcGguaWNtcDZfc29saWNpdGVkID0gMTtcXG4yMDE4OlxcdFxcdG5hLVxcdTAwM2V0YXJnZXQgPSBucy1cXHUwMDNldGFyZ2V0O1xcbjIwMTk6XFx0XFx0ZXRoZXJfYWRkcl9jb3B5KFxcdTAwMjZuYS1cXHUwMDNlb3B0WzJdLCBoYSk7XFxuMjAyMDpcXHRcXHRuYS1cXHUwMDNlb3B0WzBdID0gTkRfT1BUX1RBUkdFVF9MTF9BRERSO1xcbjIwMjE6XFx0XFx0bmEtXFx1MDAzZW9wdFsxXSA9IG5hX29sZW4gXFx1MDAzZVxcdTAwM2UgMztcXG4yMDIyOlxcdFxcbjIwMjM6XFx0XFx0bmEtXFx1MDAzZWljbXBoLmljbXA2X2Nrc3VtID0gY3N1bV9pcHY2X21hZ2ljKFxcdTAwMjZwaXA2LVxcdTAwM2VzYWRkcixcXG4yMDI0OlxcdFxcdFxcdFxcdTAwMjZwaXA2LVxcdTAwM2VkYWRkciwgc2l6ZW9mKCpuYSkrbmFfb2xlbiwgSVBQUk9UT19JQ01QVjYsXFxuMjAyNTpcXHRcXHRcXHRjc3VtX3BhcnRpYWwobmEsIHNpemVvZigqbmEpK25hX29sZW4sIDApKTtcXG4yMDI2OlxcdFxcbjIwMjc6XFx0XFx0cGlwNi1cXHUwMDNlcGF5bG9hZF9sZW4gPSBodG9ucyhzaXplb2YoKm5hKStuYV9vbGVuKTtcXG4yMDI4OlxcdFxcbjIwMjk6XFx0XFx0c2tiX3B1c2gocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbjIwMzA6XFx0XFxuMjAzMTpcXHRcXHRyZXBseS1cXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XFxuMjAzMjpcXHRcXG4yMDMzOlxcdFxcdHJldHVybiByZXBseTtcXG4yMDM0OlxcdH1cXG4yMDM1OlxcdFxcbjIwMzY6XFx0c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG4yMDM3OlxcdHtcXG4yMDM4OlxcdFxcdHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4yMDM5OlxcdFxcdGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHI7XFxuMjA0MDpcXHRcXHRjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXBoZHI7XFxuMjA0MTpcXHRcXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xcbjIwNDI6XFx0XFx0c3RydWN0IG5kX21zZyAqbXNnO1xcbjIwNDM6XFx0XFxuMjA0NDpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuMjA0NTpcXHRcXHRpZiAodW5saWtlbHkoIWlwdjZfbW9kX2VuYWJsZWQoKSkpXFxuMjA0NjpcXHRcXHRcXHRnb3RvIG91dDtcXG4yMDQ3OlxcdFxcbjIwNDg6XFx0XFx0aXBoZHIgPSBpcHY2X2hkcihza2IpO1xcbjIwNDk6XFx0XFx0ZGFkZHIgPSBcXHUwMDI2aXBoZHItXFx1MDAzZWRhZGRyO1xcbjIwNTA6XFx0XFx0bXNnID0gKHN0cnVjdCBuZF9tc2cgKikoaXBoZHIgKyAxKTtcXG4yMDUxOlxcdFxcbjIwNTI6XFx0XFx0aWYgKGlwdjZfYWRkcl9sb29wYmFjayhkYWRkcikgfHxcXG4yMDUzOlxcdFxcdCAgICBpcHY2X2FkZHJfaXNfbXVsdGljYXN0KFxcdTAwMjZtc2ctXFx1MDAzZXRhcmdldCkpXFxuMjA1NDpcXHRcXHRcXHRnb3RvIG91dDtcXG4yMDU1OlxcdFxcbjIwNTY6XFx0XFx0biA9IG5laWdoX2xvb2t1cChcXHUwMDI2bmRfdGJsLCBcXHUwMDI2bXNnLVxcdTAwM2V0YXJnZXQsIGRldik7XFxuMjA1NzpcXHRcXG4yMDU4OlxcdFxcdGlmIChuKSB7XFxuMjA1OTpcXHRcXHRcXHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XFxuMjA2MDpcXHRcXHRcXHR1OCBoYVtFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xcbjIwNjE6XFx0XFx0XFx0c3RydWN0IHZ4bGFuX2ZkYiAqZjtcXG4yMDYyOlxcdFxcdFxcdHN0cnVjdCBza19idWZmICpyZXBseTtcXG4yMDYzOlxcdFxcbjIwNjQ6XFx0XFx0XFx0aWYgKCEoUkVBRF9PTkNFKG4tXFx1MDAzZW51ZF9zdGF0ZSkgXFx1MDAyNiBOVURfQ09OTkVDVEVEKSkge1xcbjIwNjU6XFx0XFx0XFx0XFx0bmVpZ2hfcmVsZWFzZShuKTtcXG4yMDY2OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjIwNjc6XFx0XFx0XFx0fVxcbjIwNjg6XFx0XFxuMjA2OTpcXHRcXHRcXHRuZWlnaF9oYV9zbmFwc2hvdChoYSwgbiwgbi1cXHUwMDNlZGV2KTtcXG4yMDcwOlxcdFxcdFxcdGYgPSB2eGxhbl9maW5kX21hY190eCh2eGxhbiwgaGEsIHZuaSk7XFxuMjA3MTpcXHRcXHRcXHRpZiAoZilcXG4yMDcyOlxcdFxcdFxcdFxcdHJkc3QgPSBmaXJzdF9yZW1vdGVfcmN1KGYpO1xcbjIwNzM6XFx0XFx0XFx0aWYgKHJkc3QgXFx1MDAyNlxcdTAwMjYgdnhsYW5fYWRkcl9hbnkoXFx1MDAyNnJkc3QtXFx1MDAzZXJlbW90ZV9pcCkpIHtcXG4yMDc0OlxcdFxcdFxcdFxcdC8qIGJyaWRnZS1sb2NhbCBuZWlnaGJvciAqL1xcbjIwNzU6XFx0XFx0XFx0XFx0bmVpZ2hfcmVsZWFzZShuKTtcXG4yMDc2OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjIwNzc6XFx0XFx0XFx0fVxcbjIwNzg6XFx0XFxuMjA3OTpcXHRcXHRcXHRyZXBseSA9IHZ4bGFuX25hX2NyZWF0ZShza2IsIG4sIGhhLFxcbjIwODA6XFx0XFx0XFx0XFx0XFx0XFx0ISEoZiA/IGYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTlRGX1JPVVRFUiA6IDApKTtcXG4yMDgxOlxcdFxcbjIwODI6XFx0XFx0XFx0bmVpZ2hfcmVsZWFzZShuKTtcXG4yMDgzOlxcdFxcbjIwODQ6XFx0XFx0XFx0aWYgKHJlcGx5ID09IE5VTEwpXFxuMjA4NTpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yMDg2OlxcdFxcbjIwODc6XFx0XFx0XFx0aWYgKG5ldGlmX3J4KHJlcGx5KSA9PSBORVRfUlhfRFJPUCkge1xcbjIwODg6XFx0XFx0XFx0XFx0ZGV2X2RzdGF0c19yeF9kcm9wcGVkKGRldik7XFxuMjA4OTpcXHRcXHRcXHRcXHR2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgTlVMTCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDQuMzE5NzgwMDMzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU0NzMzOTYyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIGB2eGxhbl94bWl0YCBhbmQgYG5laWdoX3JlZHVjZWA6XG5cbioqRGl2aW5nIGludG8gdGhlIFZYTEFOIFRyYW5zbWlzc2lvbiBQYXRoIGFuZCBOZWlnaGJvciBEaXNjb3ZlcnkqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgaW4gb24gdGhlIFZYTEFOIHRyYW5zbWl0IGZ1bmN0aW9uIChgdnhsYW5feG1pdGApIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBwb2ludCB3aGVyZSBgbmVpZ2hfcmVkdWNlYCBnZXRzIGNhbGxlZC4gVGhpcyBtZWFucyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHNlbmRpbmcgVlhMQU4gZW5jYXBzdWxhdGVkIHRyYWZmaWMuIFRoZSBmYWN0IHRoYXQgYG5laWdoX3JlZHVjZWAgaXMgaW52b2x2ZWQgdGVsbHMgbWUgdGhlIHN5c3RlbSBpcyBsaWtlbHkgZGVhbGluZyB3aXRoIGEgbmVpZ2hib3IgZGlzY292ZXJ5IGFuZCByZXNvbHV0aW9uIHNjZW5hcmlvLiBJdCdzIGEga2V5IHBhcnQgb2YgaG93IHRoZSBzeXN0ZW0gZmlndXJlcyBvdXQgdGhlIExheWVyIDIgKE1BQykgYWRkcmVzcyBuZWVkZWQgdG8gcmVhY2ggdGhlIGRlc3RpbmF0aW9uIFZYTEFOIHR1bm5lbCBlbmRwb2ludCAoVlRFUCkuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGBuZWlnaF9yZWR1Y2VgIGlzIGhhcHBlbmluZyBhdCB0aGlzIHBvaW50LiBJcyBpdCBiZWNhdXNlIHRoZSBBUlAvTkQgY2FjaGUgZW50cnkgZm9yIHRoZSBkZXN0aW5hdGlvbiBWVEVQIGlzIHN0YWxlIG9yIG1pc3Npbmc/IE9yIGlzIHRoZSBzeXN0ZW0gYWN0aXZlbHkgcHJvYmluZyB0byBjb25maXJtIGNvbm5lY3Rpdml0eT8gSSdsbCBwcm9iYWJseSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBmcm9tIGB2eGxhbl94bWl0YCB0byBgbmVpZ2hfcmVkdWNlYCB0byBuYWlsIGRvd24gdGhlIHNwZWNpZmljcyBvZiB0aGUgc2l0dWF0aW9uLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgbXVsdGljYXN0IHNldHVwIHdoZXJlIHRoZSBuZWlnaGJvciBjYWNoZSBlbnRyeSBtYXkgYmUgZHluYW1pYz8gXG5cbkkgc3VzcGVjdCB0aGlzIGludm9sdmVzIHNvbWUgZm9ybSBvZiBBUlAvTkQgc29saWNpdGF0aW9uIG9yIGdyYXR1aXRvdXMgQVJQLCBidXQgSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoZSBzeXN0ZW0gZGVjaWRlcyAqd2hlbiogdG8gaW52b2tlIGBuZWlnaF9yZWR1Y2VgIGluIHRoZSBgdnhsYW5feG1pdGAgY29kZSBwYXRoLiBJcyB0aGVyZSBhIHRpbWVyIGludm9sdmVkPyBXaGF0IGFyZSB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIG5laWdoYm9yIGNhY2hlIHRvIGJlIGNvbnNpZGVyZWQgc3RhbGU/IFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgaXMgY3JpdGljYWwuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IFZYTEFOIGFkZHMgYW4gb3V0ZXIgSVAvVURQIGhlYWRlciwgc28gcmVndWxhciBBUlAvTkQgbmVlZHMgdG8gYmUgYWRhcHRlZC5cblxuSSdsbCBjaGVjayB0aGUgYXNzb2NpYXRlZCB2YXJpYWJsZXMgdG8gY29uZmlybS4gSXMgdGhlcmUgYW55IGJ1ZmZlcmluZyBoYXBwZW5pbmcgYmVmb3JlIG5laWdoYm9yIHJlc29sdXRpb24/IERvZXMgdGhpcyBoYXZlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHBhY2tldCBkZWxpdmVyeSBsYXRlbmN5PyBBbnkgcG90ZW50aWFsIGZvciBwYWNrZXQgZHJvcHMgZHVyaW5nIHRoZSBuZWlnaGJvciByZXNvbHV0aW9uIHByb2Nlc3M/IEkgaGF2ZSB0byBsb29rIGZvciBhbnkgb3B0aW1pemF0aW9ucyBvciB3b3JrYXJvdW5kcyBmb3IgdGhpcyBjcml0aWNhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDYxOSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDkuNzkzMTc5MDc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc1MDpcXHRcXHRpbmZvID0gc2tiX3R1bm5lbF9pbmZvKHNrYik7XFxuMjc1MTpcXHRcXG4yNzUyOlxcdFxcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XFxuMjc1MzpcXHRcXG4yNzU0OlxcdFxcdGlmICh2eGxhbi1cXHUwMDNlY2ZnLmZsYWdzIFxcdTAwMjYgVlhMQU5fRl9DT0xMRUNUX01FVEFEQVRBKSB7XFxuMjc1NTpcXHRcXHRcXHRpZiAoaW5mbyBcXHUwMDI2XFx1MDAyNiBpbmZvLVxcdTAwM2Vtb2RlIFxcdTAwMjYgSVBfVFVOTkVMX0lORk9fQlJJREdFIFxcdTAwMjZcXHUwMDI2XFxuMjc1NjpcXHRcXHRcXHQgICAgaW5mby1cXHUwMDNlbW9kZSBcXHUwMDI2IElQX1RVTk5FTF9JTkZPX1RYKSB7XFxuMjc1NzpcXHRcXHRcXHRcXHR2bmkgPSB0dW5uZWxfaWRfdG9fa2V5MzIoaW5mby1cXHUwMDNla2V5LnR1bl9pZCk7XFxuMjc1ODpcXHRcXHRcXHRcXHRuaGlkID0gaW5mby1cXHUwMDNla2V5Lm5oaWQ7XFxuMjc1OTpcXHRcXHRcXHR9IGVsc2Uge1xcbjI3NjA6XFx0XFx0XFx0XFx0aWYgKGluZm8gXFx1MDAyNlxcdTAwMjYgaW5mby1cXHUwMDNlbW9kZSBcXHUwMDI2IElQX1RVTk5FTF9JTkZPX1RYKVxcbjI3NjE6XFx0XFx0XFx0XFx0XFx0dnhsYW5feG1pdF9vbmUoc2tiLCBkZXYsIHZuaSwgTlVMTCwgZmFsc2UpO1xcbjI3NjI6XFx0XFx0XFx0XFx0ZWxzZVxcbjI3NjM6XFx0XFx0XFx0XFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9UVU5ORUxfVFhJTkZPKTtcXG4yNzY0OlxcdFxcdFxcdFxcdHJldHVybiBORVRERVZfVFhfT0s7XFxuMjc2NTpcXHRcXHRcXHR9XFxuMjc2NjpcXHRcXHR9XFxuMjc2NzpcXHRcXG4yNzY4OlxcdFxcdGlmICh2eGxhbi1cXHUwMDNlY2ZnLmZsYWdzIFxcdTAwMjYgVlhMQU5fRl9QUk9YWSkge1xcbjI3Njk6XFx0XFx0XFx0ZXRoID0gZXRoX2hkcihza2IpO1xcbjI3NzA6XFx0XFx0XFx0aWYgKG50b2hzKGV0aC1cXHUwMDNlaF9wcm90bykgPT0gRVRIX1BfQVJQKVxcbjI3NzE6XFx0XFx0XFx0XFx0cmV0dXJuIGFycF9yZWR1Y2UoZGV2LCBza2IsIHZuaSk7XFxuMjc3MjpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4yNzczOlxcdFxcdFxcdGVsc2UgaWYgKG50b2hzKGV0aC1cXHUwMDNlaF9wcm90bykgPT0gRVRIX1BfSVBWNiBcXHUwMDI2XFx1MDAyNlxcbjI3NzQ6XFx0XFx0XFx0XFx0IHBza2JfbmV0d29ya19tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xcbjI3NzU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgbmRfbXNnKSkgXFx1MDAyNlxcdTAwMjZcXG4yNzc2OlxcdFxcdFxcdFxcdCBpcHY2X2hkcihza2IpLVxcdTAwM2VuZXh0aGRyID09IElQUFJPVE9fSUNNUFY2KSB7XFxuMjc3NzpcXHRcXHRcXHRcXHRzdHJ1Y3QgbmRfbXNnICptID0gKHN0cnVjdCBuZF9tc2cgKikoaXB2Nl9oZHIoc2tiKSArIDEpO1xcbjI3Nzg6XFx0XFxuMjc3OTpcXHRcXHRcXHRcXHRpZiAobS1cXHUwMDNlaWNtcGguaWNtcDZfY29kZSA9PSAwIFxcdTAwMjZcXHUwMDI2XFxuMjc4MDpcXHRcXHRcXHRcXHQgICAgbS1cXHUwMDNlaWNtcGguaWNtcDZfdHlwZSA9PSBORElTQ19ORUlHSEJPVVJfU09MSUNJVEFUSU9OKVxcbjI3ODE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIG5laWdoX3JlZHVjZShkZXYsIHNrYiwgdm5pKTtcXG4yNzgyOlxcdFxcdFxcdH1cXG4yNzgzOlxcdCNlbmRpZlxcbjI3ODQ6XFx0XFx0fVxcbjI3ODU6XFx0XFxuMjc4NjpcXHRcXHRpZiAobmhpZClcXG4yNzg3OlxcdFxcdFxcdHJldHVybiB2eGxhbl94bWl0X25oaWQoc2tiLCBkZXYsIG5oaWQsIHZuaSk7XFxuMjc4ODpcXHRcXG4yNzg5OlxcdFxcdGlmICh2eGxhbi1cXHUwMDNlY2ZnLmZsYWdzIFxcdTAwMjYgVlhMQU5fRl9NREIpIHtcXG4yNzkwOlxcdFxcdFxcdHN0cnVjdCB2eGxhbl9tZGJfZW50cnkgKm1kYl9lbnRyeTtcXG4yNzkxOlxcdFxcbjI3OTI6XFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbjI3OTM6XFx0XFx0XFx0bWRiX2VudHJ5ID0gdnhsYW5fbWRiX2VudHJ5X3NrYl9nZXQodnhsYW4sIHNrYiwgdm5pKTtcXG4yNzk0OlxcdFxcdFxcdGlmIChtZGJfZW50cnkpIHtcXG4yNzk1OlxcdFxcdFxcdFxcdG5ldGRldl90eF90IHJldDtcXG4yNzk2OlxcdFxcbjI3OTc6XFx0XFx0XFx0XFx0cmV0ID0gdnhsYW5fbWRiX3htaXQodnhsYW4sIG1kYl9lbnRyeSwgc2tiKTtcXG4yNzk4OlxcdFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjI3OTk6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MDkuNzkzMzU1MDA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxODMyNzk2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVlhMQU4gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSdyZSB0b3VjaGluZyBgdnhsYW5fbmFfY3JlYXRlYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYXJvdW5kIGhvdyB3ZSBhbGxvY2F0ZSBhbmQgcHJlcGFyZSB0aGUgU0tCLiBJIHNlZSB0aGUgb3JpZ2luYWwgY29kZSBhbmQgdGhlIHVwZGF0ZWQgY29kZSBzaWRlLWJ5LXNpZGUuXG5cbkluaXRpYWxseSwgSSdtIHRoaW5raW5nLCBcIklzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZT8gT3IganVzdCBzb21lIHJlZmFjdG9yaW5nP1wiIFRoZSBvcmlnaW5hbCBjb2RlIGRpcmVjdGx5IGNvbXB1dGVkIHRoZSBsZW5ndGggYW5kIHRoZW4gYWxsb2NhdGVkIHRoZSBTS0IsIHdoaWxlIHRoZSBuZXcgY29kZSBpbnRyb2R1Y2VzIGEgYGhlYWRyb29tYCB2YXJpYWJsZS4gSXQgbG9va3MgbGlrZSBpdCBjb21wdXRlcyB0aGUgbGVuZ3RoIHRoZSBleGFjdCBzYW1lIHdheS5cblxuTGV0J3MgdHJhY2UgaXQgdGhyb3VnaDogYGRldmAgaXMgYXNzaWduZWQgdG8gYHJlcXVlc3QtXHUwMDNlZGV2YCBvbiBsaW5lIDE5NDQuIEFoLCBpdCdzIGNsZWFyIG5vdy4gYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGFuZCBgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC1cdTAwM2VkZXYpYCBhcmUgZXF1aXZhbGVudCBiZWNhdXNlIGBkZXZgIGlzIGxpdGVyYWxseSBgcmVxdWVzdC1cdTAwM2VkZXZgLiBUaGlzIGxvb2tzIGxpa2Ugc29tZSBtaW5vciBjbGVhbi11cCwgbWF5YmUgdG8gaW1wcm92ZSByZWFkYWJpbGl0eSBvciBwcmVwYXJlIGZvciBmdXR1cmUgY2hhbmdlcy5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYExMX1JFU0VSVkVEX1NQQUNFYC4gSXQgd291bGQgYmUgZ29vZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBqdXN0IGEgdmFyaWFibGUgYXNzaWdubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5OTAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODoxMi45NzY2MzY3MzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDAyODU2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTI4Mj1zdHJ1Y3QgaGhfY2FjaGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDItICovXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDM6I2RlZmluZSBMTF9SRVNFUlZFRF9TUEFDRV9FWChkZXYsIGhsZW4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwNC1cXHQoKCgoaGxlbikgKyBSRUFEX09OQ0UoKGRldiktXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFxcXFxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwNS1cXHQgIFxcdTAwMjYgfihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzA2OiNkZWZpbmUgTExfUkVTRVJWRURfU1BBQ0UoZGV2KSBcXFxcXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDctXFx0TExfUkVTRVJWRURfU1BBQ0VfRVgoZGV2LCAoZGV2KS1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzA4OiNkZWZpbmUgTExfUkVTRVJWRURfU1BBQ0VfRVhUUkEoZGV2LGV4dHJhKSBcXFxcXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDktXFx0KCgoKGRldiktXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIFJFQURfT05DRSgoZGV2KS1cXHUwMDNlbmVlZGVkX2hlYWRyb29tKSArIChleHRyYSkpIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MTQuNTc2OTI3MDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTU0NTE1MzE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIERhdGEgUmFjZXMgaW4gTmV0d29yayBCdWZmZXIgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIG1hY3JvLCBzcGVjaWZpY2FsbHkgaG93IGl0IHVzZXMgYFJFQURfT05DRSgoZGV2KS1cdTAwM2VuZWVkZWRfaGVhZHJvb20pYC4gVGhlIHJlZCBmbGFnIGlzIGltbWVkaWF0ZTogaWYgYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb21gIGlzIHJlYWQgaW4gdHdvIHBsYWNlcywgYW5kICplc3BlY2lhbGx5KiBpZiB0aGF0IGhhcHBlbnMgYXJvdW5kIHRoZSB0aW1lIHdlJ3JlIHNldHRpbmcgdXAgYSBuZXR3b3JrIGJ1ZmZlciAoYHNrYmApLCB0aGVuIHdlIGNvdWxkIGhhdmUgYSBjbGFzc2ljIFRpbWUtb2YtQ2hlY2stdG8tVGltZS1vZi1Vc2UgKFRPQ1RPVSkgZGF0YSByYWNlLiBJIHNlZSBgbmVlZGVkX2hlYWRyb29tYCBiZWluZyByZWFkIGZvciBjYWxjdWxhdGluZyB0aGUgb3ZlcmFsbCBsZW5ndGggKGBsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpICsgLi4uYCkgYW5kIGFnYWluIHdoZW4gd2UgYWN0dWFsbHkgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnVmZmVyIChgc2tiX3Jlc2VydmUocmVwbHksIExMX1JFU0VSVkVEX1NQQUNFKHJlcXVlc3QtXHUwMDNlZGV2KSk7YCkuIE15IGNvbmNlcm4gaXMsIGlmIGBuZWVkZWRfaGVhZHJvb21gIGlzIG1vZGlmaWVkIGNvbmN1cnJlbnRseSwgdGhlIGNhbGN1bGF0ZWQgYGxlbmAgYW5kIHRoZSByZXNlcnZlZCBzcGFjZSBpbiB0aGUgU0tCIHdpbGwgYmUgaW5jb25zaXN0ZW50LiBUaGlzIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGJ1ZmZlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cywgYW5kIEknbSB2ZXJ5IGtlZW4gdG8gYXZvaWQgdGhhdC5cblxuQnV0LCBob2xkIG9uLiBUaGlzICpjb3VsZCogYmUgYSBzdHJhaWdodGZvcndhcmQgcmVmYWN0b3JpbmcuIE1heWJlIEknbSBiZWluZyB0b28gcGFyYW5vaWQuIEkgYmV0dGVyIHZlcmlmeSB0aGlzIHVzaW5nIG90aGVyIGFyZWFzLCBsaWtlIGBhcnBfcmVkdWNlYCBvciBgYXJwX2NyZWF0ZWAuIExldCBtZSBjb21wYXJlIHRob3NlIGltcGxlbWVudGF0aW9ucyBhbmQgc2VlIGhvdyBzaW1pbGFyIHNpdHVhdGlvbnMgYXJlIGhhbmRsZWQgdGhlcmUuIFRoYXQnbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxMDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MjAuMTIyMDk0NDAyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUwNTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcnBfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9hcnAuYy02My0gKlxcdFxcdEFybmFsZG8gQy4gTWVsbyA6XFx0Y29udmVydCAvcHJvYy9uZXQvYXJwIHRvIHNlcV9maWxlXFxubmV0L2lwdjQvYXJwLmM6NjQ6ICpcXHRcXHRTaG11bGlrIEhlbjpcXHRcXHRTcGxpdCBhcnBfc2VuZCB0byBhcnBfY3JlYXRlIGFuZFxcbm5ldC9pcHY0L2FycC5jLTY1LSAqXFx0XFx0XFx0XFx0XFx0YXJwX3htaXQgc28gaW50ZXJtZWRpYXRlIGRyaXZlcnMgbGlrZVxcbi0tXFxubmV0L2lwdjQvYXJwLmM9MzAxPXN0YXRpYyB2b2lkIGFycF9zZW5kX2RzdChpbnQgdHlwZSwgaW50IHB0eXBlLCBfX2JlMzIgZGVzdF9pcCxcXG4tLVxcbm5ldC9pcHY0L2FycC5jLTMxMy1cXG5uZXQvaXB2NC9hcnAuYzozMTQ6XFx0c2tiID0gYXJwX2NyZWF0ZSh0eXBlLCBwdHlwZSwgZGVzdF9pcCwgZGV2LCBzcmNfaXAsXFxubmV0L2lwdjQvYXJwLmMtMzE1LVxcdFxcdFxcdCBkZXN0X2h3LCBzcmNfaHcsIHRhcmdldF9odyk7XFxuLS1cXG5uZXQvaXB2NC9hcnAuYz01MTk9c3RhdGljIGlubGluZSBpbnQgYXJwX2Z3ZF9wdmxhbihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsXFxuLS1cXG5uZXQvaXB2NC9hcnAuYy01NDQtICovXFxubmV0L2lwdjQvYXJwLmM6NTQ1OnN0cnVjdCBza19idWZmICphcnBfY3JlYXRlKGludCB0eXBlLCBpbnQgcHR5cGUsIF9fYmUzMiBkZXN0X2lwLFxcbm5ldC9pcHY0L2FycC5jLTU0Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMzIgc3JjX2lwLFxcbi0tXFxubmV0L2lwdjQvYXJwLmMtNjUwLX1cXG5uZXQvaXB2NC9hcnAuYzo2NTE6RVhQT1JUX1NZTUJPTChhcnBfY3JlYXRlKTtcXG5uZXQvaXB2NC9hcnAuYy02NTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjIwLjE2OTYwNTU4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDIzMTM3MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSBwcm9jZXNzaW5nIHRoZSBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIGBhcnBfY3JlYXRlYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gbG9va2luZyBhdCBgYXJwX2NyZWF0ZWAgaW4gYG5ldC9pcHY0L2FycC5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgb2YgQWRkcmVzcyBSZXNvbHV0aW9uIFByb3RvY29sIGdldHMgYmFrZWQgaW50byB0aGUga2VybmVsJ3MgSVB2NCBzdGFjay4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgY3J1Y2lhbDsgaXQncyB0aGUgZ2F0ZWtlZXBlciwgZGVjaWRpbmcgd2hldGhlciBhIG5ldyBBUlAgZW50cnkgZ2V0cyBjcmVhdGVkIG9yIGlmIHdlIG5lZWQgdG8gZG8gc29tZSBkZXRlY3RpdmUgd29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMsIHRoZSBjaGVja3MsIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQncyBtYW5pcHVsYXRpbmcuIEVzc2VudGlhbGx5LCBJJ20gcGVlbGluZyBiYWNrIHRoZSBsYXllcnMgb24gaG93IHRoZSBrZXJuZWwgYnVpbGRzIGFuZCBtYW5hZ2VzIGl0cyBBUlAgY2FjaGUgZm9yIElQdjQuIEknbSBrZWVuIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGxvY2tpbmcgc3RyYXRlZ2llcywgb3IgZXZlbiBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgYWZmZWN0IHBlcmZvcm1hbmNlLiBUaGlzIGxvb2tzIGxpa2UgYW4gaW50ZXJlc3Rpbmcgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQgaW5zaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk4NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjIzLjE5Mjc0NDk2M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9hcnAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDU6XFx0c3RydWN0IHNrX2J1ZmYgKmFycF9jcmVhdGUoaW50IHR5cGUsIGludCBwdHlwZSwgX19iZTMyIGRlc3RfaXAsXFxuIDU0NjpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMzIgc3JjX2lwLFxcbiA1NDc6XFx0XFx0XFx0XFx0ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGVzdF9odyxcXG4gNTQ4OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNyY19odyxcXG4gNTQ5OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhcmdldF9odylcXG4gNTUwOlxcdHtcXG4gNTUxOlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIDU1MjpcXHRcXHRzdHJ1Y3QgYXJwaGRyICphcnA7XFxuIDU1MzpcXHRcXHR1bnNpZ25lZCBjaGFyICphcnBfcHRyO1xcbiA1NTQ6XFx0XFx0aW50IGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbiA1NTU6XFx0XFx0aW50IHRsZW4gPSBkZXYtXFx1MDAzZW5lZWRlZF90YWlscm9vbTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0LypcXG4gNTU4OlxcdFxcdCAqXFx0QWxsb2NhdGUgYSBidWZmZXJcXG4gNTU5OlxcdFxcdCAqL1xcbiA1NjA6XFx0XFxuIDU2MTpcXHRcXHRza2IgPSBhbGxvY19za2IoYXJwX2hkcl9sZW4oZGV2KSArIGhsZW4gKyB0bGVuLCBHRlBfQVRPTUlDKTtcXG4gNTYyOlxcdFxcdGlmICghc2tiKVxcbiA1NjM6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgaGxlbik7XFxuIDU2NjpcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcXG4gNTY3OlxcdFxcdHNrYl9wdXQoc2tiLCBhcnBfaGRyX2xlbihkZXYpKTtcXG4gNTY4OlxcdFxcdHNrYi1cXHUwMDNlZGV2ID0gZGV2O1xcbiA1Njk6XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0FSUCk7XFxuIDU3MDpcXHRcXHRpZiAoIXNyY19odylcXG4gNTcxOlxcdFxcdFxcdHNyY19odyA9IGRldi1cXHUwMDNlZGV2X2FkZHI7XFxuIDU3MjpcXHRcXHRpZiAoIWRlc3RfaHcpXFxuIDU3MzpcXHRcXHRcXHRkZXN0X2h3ID0gZGV2LVxcdTAwM2Vicm9hZGNhc3Q7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdC8qIEZpbGwgdGhlIGRldmljZSBoZWFkZXIgZm9yIHRoZSBBUlAgZnJhbWUuXFxuIDU3NjpcXHRcXHQgKiBOb3RlOiBza2ItXFx1MDAzZWhlYWQgY2FuIGJlIGNoYW5nZWQuXFxuIDU3NzpcXHRcXHQgKi9cXG4gNTc4OlxcdFxcdGlmIChkZXZfaGFyZF9oZWFkZXIoc2tiLCBkZXYsIHB0eXBlLCBkZXN0X2h3LCBzcmNfaHcsIHNrYi1cXHUwMDNlbGVuKSBcXHUwMDNjIDApXFxuIDU3OTpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNTgwOlxcdFxcbiA1ODE6XFx0XFx0YXJwID0gYXJwX2hkcihza2IpO1xcbiA1ODI6XFx0XFx0LypcXG4gNTgzOlxcdFxcdCAqIEZpbGwgb3V0IHRoZSBhcnAgcHJvdG9jb2wgcGFydC5cXG4gNTg0OlxcdFxcdCAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjIzLjE5Mjg0MjI1M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTIzNjcyMzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhlIHByb21wdDpcblxuKipBbmFseXppbmcgYGFycF9yZWR1Y2VgIGluIHRoZSBDb250ZXh0IG9mIFZYTEFOKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwcm9tcHQgaXMgYXNraW5nIG1lIHRvIHRoaW5rIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucyBvZiBgYXJwX3JlZHVjZWAgaW4gYSBWWExBTiBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBBUlAgKEFkZHJlc3MgUmVzb2x1dGlvbiBQcm90b2NvbCkgdHJhZmZpYyBpcyBoYW5kbGVkIGluIHRoaXMgb3ZlcmxheSBuZXR3b3JrLCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBtZWFudCB0byBvcHRpbWl6ZSBpdC4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IGhlYWQ6IFdoYXQgc3BlY2lmaWMgcHJvYmxlbSBpcyBgYXJwX3JlZHVjZWAgdHJ5aW5nIHRvIHNvbHZlPyBJcyBpdCByZWxhdGVkIHRvIGJyb2FkY2FzdCBkb21haW4gbGltaXRhdGlvbnMgaW5oZXJlbnQgaW4gVlhMQU4/IElzIGl0IGFib3V0IHJlZHVjaW5nIEFSUCBmbG9vZHMgd2l0aGluIHRoZSB1bmRlcmxheSBuZXR3b3JrPyBXaGF0IHN0cmF0ZWdpZXMgZG9lcyBpdCBlbXBsb3k/IERvZXMgaXQgaW52b2x2ZSBBUlAgcHJveHlpbmcsIHN1cHByZXNzaW9uLCBjYWNoaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG51YW5jZXMgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggVlRFUHMgKFZYTEFOIFR1bm5lbCBFbmRwb2ludHMpIGFuZCB0aGUgY29udHJvbCBwbGFuZSwgaWYgYW55LCBhcmUga2V5LiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBwb3RlbnRpYWwgdHJhZGUtb2ZmcyBpbiB0ZXJtcyBvZiBjb252ZXJnZW5jZSB0aW1lLCBhbmQgYW55IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSBtb2RpZnlpbmcgdGhlIHN0YW5kYXJkIEFSUCBiZWhhdmlvci4gSSB3aWxsIG5lZWQgdG8gZGVsdmUgZGVlcGVyIHRvIGZpbmQgdGhlIGV4YWN0IG1lY2hhbmlzbSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24uIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgYW4gZXhpc3RpbmcgZnVuY3Rpb24gYW5kIG5vdCBzb21ldGhpbmcgbmV3LCBzbyBsb29raW5nIGZvciByZWZlcmVuY2VzIHRvIGRvY3VtZW50YXRpb24gdGhhdCBkZXNjcmliZXMgaXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODUzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODoyNi43MTY1MTY1MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODQwOlxcdH1cXG4xODQxOlxcdFxcbjE4NDI6XFx0c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXFxuMTg0MzpcXHR7XFxuMTg0NDpcXHRcXHRzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuMTg0NTpcXHRcXHRzdHJ1Y3QgYXJwaGRyICpwYXJwO1xcbjE4NDY6XFx0XFx0dTggKmFycHB0ciwgKnNoYTtcXG4xODQ3OlxcdFxcdF9fYmUzMiBzaXAsIHRpcDtcXG4xODQ4OlxcdFxcdHN0cnVjdCBuZWlnaGJvdXIgKm47XFxuMTg0OTpcXHRcXG4xODUwOlxcdFxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX05PQVJQKVxcbjE4NTE6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg1MjpcXHRcXG4xODUzOlxcdFxcdGlmICghcHNrYl9uZXR3b3JrX21heV9wdWxsKHNrYiwgYXJwX2hkcl9sZW4oZGV2KSkpIHtcXG4xODU0OlxcdFxcdFxcdGRldl9kc3RhdHNfdHhfZHJvcHBlZChkZXYpO1xcbjE4NTU6XFx0XFx0XFx0dnhsYW5fdm5pZmlsdGVyX2NvdW50KHZ4bGFuLCB2bmksIE5VTEwsXFxuMTg1NjpcXHRcXHRcXHRcXHRcXHQgICAgICBWWExBTl9WTklfU1RBVFNfVFhfRFJPUFMsIDApO1xcbjE4NTc6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg1ODpcXHRcXHR9XFxuMTg1OTpcXHRcXHRwYXJwID0gYXJwX2hkcihza2IpO1xcbjE4NjA6XFx0XFxuMTg2MTpcXHRcXHRpZiAoKHBhcnAtXFx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfRVRIRVIpIFxcdTAwMjZcXHUwMDI2XFxuMTg2MjpcXHRcXHQgICAgIHBhcnAtXFx1MDAzZWFyX2hyZCAhPSBodG9ucyhBUlBIUkRfSUVFRTgwMikpIHx8XFxuMTg2MzpcXHRcXHQgICAgcGFycC1cXHUwMDNlYXJfcHJvICE9IGh0b25zKEVUSF9QX0lQKSB8fFxcbjE4NjQ6XFx0XFx0ICAgIHBhcnAtXFx1MDAzZWFyX29wICE9IGh0b25zKEFSUE9QX1JFUVVFU1QpIHx8XFxuMTg2NTpcXHRcXHQgICAgcGFycC1cXHUwMDNlYXJfaGxuICE9IGRldi1cXHUwMDNlYWRkcl9sZW4gfHxcXG4xODY2OlxcdFxcdCAgICBwYXJwLVxcdTAwM2Vhcl9wbG4gIT0gNClcXG4xODY3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4Njg6XFx0XFx0YXJwcHRyID0gKHU4ICopcGFycCArIHNpemVvZihzdHJ1Y3QgYXJwaGRyKTtcXG4xODY5OlxcdFxcdHNoYSA9IGFycHB0cjtcXG4xODcwOlxcdFxcdGFycHB0ciArPSBkZXYtXFx1MDAzZWFkZHJfbGVuO1xcdC8qIHNoYSAqL1xcbjE4NzE6XFx0XFx0bWVtY3B5KFxcdTAwMjZzaXAsIGFycHB0ciwgc2l6ZW9mKHNpcCkpO1xcbjE4NzI6XFx0XFx0YXJwcHRyICs9IHNpemVvZihzaXApO1xcbjE4NzM6XFx0XFx0YXJwcHRyICs9IGRldi1cXHUwMDNlYWRkcl9sZW47XFx0LyogdGhhICovXFxuMTg3NDpcXHRcXHRtZW1jcHkoXFx1MDAyNnRpcCwgYXJwcHRyLCBzaXplb2YodGlwKSk7XFxuMTg3NTpcXHRcXG4xODc2OlxcdFxcdGlmIChpcHY0X2lzX2xvb3BiYWNrKHRpcCkgfHxcXG4xODc3OlxcdFxcdCAgICBpcHY0X2lzX211bHRpY2FzdCh0aXApKVxcbjE4Nzg6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg3OTpcXHRcXG4xODgwOlxcdFxcdG4gPSBuZWlnaF9sb29rdXAoXFx1MDAyNmFycF90YmwsIFxcdTAwMjZ0aXAsIGRldik7XFxuMTg4MTpcXHRcXG4xODgyOlxcdFxcdGlmIChuKSB7XFxuMTg4MzpcXHRcXHRcXHRzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCA9IE5VTEw7XFxuMTg4NDpcXHRcXHRcXHR1OCBoYVtFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xcbjE4ODU6XFx0XFx0XFx0c3RydWN0IHZ4bGFuX2ZkYiAqZjtcXG4xODg2OlxcdFxcdFxcdHN0cnVjdCBza19idWZmXFx0KnJlcGx5O1xcbjE4ODc6XFx0XFxuMTg4ODpcXHRcXHRcXHRpZiAoIShSRUFEX09OQ0Uobi1cXHUwMDNlbnVkX3N0YXRlKSBcXHUwMDI2IE5VRF9DT05ORUNURUQpKSB7XFxuMTg4OTpcXHRcXHRcXHRcXHRuZWlnaF9yZWxlYXNlKG4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODoyNi43MTY3MTg0MDdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQyNjEzNjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIEFuYWx5c2lzOiBgdnhsYW5fbmFfY3JlYXRlYCBpbiBWWExBTiBQcm94eSBNb2RlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdnhsYW5fbmFfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyB3aXRoaW4gVlhMQU4sIHNwZWNpZmljYWxseSBpbiBwcm94eSBtb2RlIOKAkyBlaXRoZXIgdGhyb3VnaCBgVlhMQU5fRl9QUk9YWWAgb3IgdGhlIElQdjYgbmVpZ2hib3IgcmVkdWN0aW9uIG1lY2hhbmlzbS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGlzIGNvZGUgcGF0aCBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VP1xuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nLCBWWExBTiBpcyBhIHZpcnR1YWwgbmV0d29yayBkcml2ZXIsIGNyZWF0ZWQgdXNpbmcgYGlwIGxpbmsgYWRkIHR5cGUgdnhsYW5gLiBRRU1VIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIHNldHRpbmcgdXAgYW5kIHJ1bm5pbmcgVlhMQU4gaW50ZXJmYWNlcywgaW5jbHVkaW5nIHRob3NlIHdpdGggcHJveHkgbW9kZSBlbmFibGVkLiBGdXJ0aGVybW9yZSwgaXQncyBzdHJhaWdodGZvcndhcmQgdG8gc2VuZCBJUHY2IG5laWdoYm9yIHNvbGljaXRhdGlvbiBwYWNrZXRzLCB3aGljaCBzaG91bGQgdHJpZ2dlciBgdnhsYW5fbmFfY3JlYXRlYC4gVGhlIGNoYW5nZSBkaXJlY3RseSB0b3VjaGVzIHRoZSBjb3JlIFZYTEFOIGRyaXZlciBsb2dpYyBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYCwgc28gdGhhdCdzIGRlZmluaXRlbHkgYSBzaWduaWZpY2FudCBhcmVhLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS5cblxuKiAgIERvZXMgaXQgbW9kaWZ5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcz8gWWVzLCBpdCdzIHRoZSBWWExBTiBkcml2ZXIsIGEgY29yZSBuZXR3b3JraW5nIGNvbXBvbmVudC5cbiogICBEb2VzIHRoZSBwYXRjaCBjb25zaXN0IHNvbGVseSBvZiBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29tbWVudHM/IE5vLlxuKiAgIElzIGl0IHB1cmVseSBjb3NtZXRpYyBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50cz8gTm8uXG4qICAgSXMgaXQgbWVyZWx5IGNoYW5nZXMgdG8gbnVtZXJpY2FsIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24/IE5vLlxuKiAgIElzIHRoaXMgYSBjb2RlIHBhdGggdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/IEFic29sdXRlbHkgbm90LCBWWExBTiBpcyBhIHZpcnR1YWwgZGV2aWNlIGFuZCBpcyB3aWRlbHkgdXNlZCBhbmQgZnV6emVkIGluIFFFTVUuXG4qICAgSXMgaXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnM/IE5vLlxuKiAgIElzIGl0IGEgZHJpdmVyIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRlYXJkb3duIGNhbGxiYWNrPyBOby5cblxuVGhlcmVmb3JlLCBieSBwcm9jZXNzIG9mIGVsaW1pbmF0aW9uIGFuZCBleHBlcnQganVkZ2VtZW50LCB0aGlzIGNsZWFybHkgcXVhbGlmaWVzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuTmV4dCwgSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIHN5bWJvbHMgYXJlIG1vZGlmaWVkIG9yIGFyZSBkaXJlY3RseSBjYWxsaW5nIHRoZSBtb2RpZmllZCBsb2dpYy4gSXQgbG9va3MgbGlrZSBgdnhsYW5fbmFfY3JlYXRlYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgYXMgaXMgYG5laWdoX3JlZHVjZWAuIFNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gYHZ4bGFuX2NvcmUuY2AgYW5kIFZYTEFOJ3MgTkRPIG9wZXJhdGlvbnMgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMjMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODozMi4xNDI4NTc3NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4MDcyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5feG1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIzMTk9c3RhdGljIGludCBlbmNhcF9ieXBhc3NfaWZfbG9jYWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMzU3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMzU4OnZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjM1OS1cXHRcXHQgICAgX19iZTMyIGRlZmF1bHRfdm5pLCBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdCwgYm9vbCBkaWRfcnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NjQ6c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjY1LVxcdFxcdFxcdCAgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgX19iZTMyIHZuaSwgYm9vbCBkaWRfcnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODAtXFx0aWYgKGxpa2VseShkb194bWl0KSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MTpcXHRcXHR2eGxhbl94bWl0X29uZShza2IsIGRldiwgdm5pLCBcXHUwMDI2bmhfcmRzdCwgZGlkX3JzYyk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODItXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2OTMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2OTQ6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk1LVxcdFxcdFxcdFxcdCAgIHUzMiBuaGlkLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3MTgtXFx0aWYgKGxpa2VseShkb194bWl0KSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjcxOTpcXHRcXHR2eGxhbl94bWl0X29uZShza2IsIGRldiwgdm5pLCBcXHUwMDI2bmhfcmRzdCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzIwLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzM4LSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzM5OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NjAtXFx0XFx0XFx0aWYgKGluZm8gXFx1MDAyNlxcdTAwMjYgaW5mby1cXHUwMDNlbW9kZSBcXHUwMDI2IElQX1RVTk5FTF9JTkZPX1RYKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzYxOlxcdFxcdFxcdFxcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIE5VTEwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc2Mi1cXHRcXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc4Ni1cXHRpZiAobmhpZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc4NzpcXHRcXHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzg4LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MzMtXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVxcdTAwM2VuaCkpIHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgzNDpcXHRcXHR2eGxhbl94bWl0X25oKHNrYiwgZGV2LCBmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODM1LVxcdFxcdFxcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVxcdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg0NS1cXHRcXHRcXHRpZiAoc2tiMSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjg0NjpcXHRcXHRcXHRcXHR2eGxhbl94bWl0X29uZShza2IxLCBkZXYsIHZuaSwgcmRzdCwgZGlkX3JzYyk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NDctXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODQ4LVxcdFxcdGlmIChmZHN0KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyODQ5OlxcdFxcdFxcdHZ4bGFuX3htaXRfb25lKHNrYiwgZGV2LCB2bmksIGZkc3QsIGRpZF9yc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODUwLVxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk3LVxcdC5uZG9fc3RvcFxcdFxcdD0gdnhsYW5fc3RvcCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI5ODpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IHZ4bGFuX3htaXQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyOTktXFx0Lm5kb19zZXRfcnhfbW9kZVxcdD0gdnhsYW5fc2V0X211bHRpY2FzdF9saXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfcmF3X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMzIwLVxcdC5uZG9fc3RvcFxcdFxcdD0gdnhsYW5fc3RvcCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMyMTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IHZ4bGFuX3htaXQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzMjItXFx0Lm5kb19jaGFuZ2VfbXR1XFx0XFx0PSB2eGxhbl9jaGFuZ2VfbXR1LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTcwMj1uZXRkZXZfdHhfdCB2eGxhbl9tZGJfeG1pdChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE3MjMtXFx0XFx0aWYgKHNrYjEpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTcyNDpcXHRcXHRcXHR2eGxhbl94bWl0X29uZShza2IxLCB2eGxhbi1cXHUwMDNlZGV2LCBzcmNfdm5pLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE3MjUtXFx0XFx0XFx0XFx0ICAgICAgIHJjdV9kZXJlZmVyZW5jZShyZW1vdGUtXFx1MDAzZXJkKSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTcyOC1cXHRpZiAoZnJlbW90ZSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNzI5OlxcdFxcdHZ4bGFuX3htaXRfb25lKHNrYiwgdnhsYW4tXFx1MDAzZWRldiwgc3JjX3ZuaSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNzMwLVxcdFxcdFxcdCAgICAgICByY3VfZGVyZWZlcmVuY2UoZnJlbW90ZS1cXHUwMDNlcmQpLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg9MTkxPWludCB2eGxhbl9mZGJfdXBkYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTE5Ni1cXHRcXHQgICAgIGJvb2wgc3dkZXZfbm90aWZ5LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaDoxOTc6dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaC0xOTgtXFx0XFx0ICAgIF9fYmUzMiBkZWZhdWx0X3ZuaSwgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QsIGJvb2wgZGlkX3JzYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjMyLjE4ODY2NzU0OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTY1NjAyNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWWExBTiBOZWlnaGJvciBEaXNjb3ZlcnkgYW5kIFRyYW5zbWlzc2lvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGB2eGxhbl9jb3JlLmNgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZXMgbWFkZSBhcm91bmQgYHZ4bGFuX25hX2NyZWF0ZWAg4oCTIHRoYXQncyB0aGUgZm9jYWwgcG9pbnQsIGlzbid0IGl0PyBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgaW1wYWN0IG5laWdoYm9yIGRpc2NvdmVyeSBhbmQgdHJhbnNtaXNzaW9uLlxuXG5SaWdodCwgc28gYG5laWdoX3JlZHVjZWAgaXMgY2FsbGluZyBgdnhsYW5fbmFfY3JlYXRlYC4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBpbnRlcmFjdGlvbi4gQWxzbywgYHZ4bGFuX3htaXRgIGFwcGVhcnMgdG8gYmUgaGFuZGxpbmcgbmRvX3N0YXJ0X3htaXQsIGFuZCBpdCBhbHNvIGNhbGxzIGBuZWlnaF9yZWR1Y2VgLiBJbnRlcmVzdGluZywgaW50ZXJlc3RpbmcuIEdpdmVuIHRoZSBjb250ZXh0IG9mIHRoZSBtb2RpZmljYXRpb24sIEkgd2lsbCBjaGVjayB0aGUgcmVsYXRpb25zaGlwIG9mIHRoZSBmdW5jdGlvbnMgd2l0aCBgdnhsYW5fbmFfY3JlYXRlYC4gXG5cblRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyB6b29tIG91dCBhbmQgY2hlY2sgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiBgdnhsYW5fY29yZS5jYCBhcmUgbm90IGlubGluZWQgb3Igc3RhdGljLCBhbmQgdGhlcmVmb3JlIHBvc3NpYmx5IG1vcmUgcHVibGljbHkgYWNjZXNzaWJsZSBvciBoYXZlIGEgbW9yZSBjb21wbGV4IHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIGB2eGxhbl94bWl0X29uZWAgbG9va3MgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQg4oCTIGl0J3Mgbm9uLXN0YXRpYywgc28gdGhlcmUncyBhbiBleHRlcm5hbCBob29rIHRoZXJlLiBBbmQgdGhlbiBJIHNob3VsZCBjb25zaWRlciBvdGhlciBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBmdW5jdGlvbnMgbGlrZSBgdnhsYW5fZmRiX3VwZGF0ZWAsIGB2eGxhbl9mZGJfYWRkYCwgYHZ4bGFuX2Rldl9pb2N0bGAsIGFuZCBgdnhsYW5fY2hhbmdlbGlua2AsIGp1c3QgdG8gYmUgc2FmZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRoaXMgY2hhbmdlIHJpcHBsZXMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjk0NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODozOC4zNTQyNzI1MDFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTkyMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU0MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ5PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCB2eGxhbl9wb3J0IF9fcmVhZF9tb3N0bHkgPSA4NDcyO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1MDptb2R1bGVfcGFyYW1fbmFtZWQodWRwX3BvcnQsIHZ4bGFuX3BvcnQsIHVzaG9ydCwgMDQ0NCk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjUxOk1PRFVMRV9QQVJNX0RFU0ModWRwX3BvcnQsIFxcXCJEZXN0aW5hdGlvbiBVRFAgcG9ydFxcXCIpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01Mi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NTM9c3RhdGljIGJvb2wgbG9nX2Vjbl9lcnJvciA9IHRydWU7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU0Om1vZHVsZV9wYXJhbShsb2dfZWNuX2Vycm9yLCBib29sLCAwNjQ0KTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTU6TU9EVUxFX1BBUk1fREVTQyhsb2dfZWNuX2Vycm9yLCBcXFwiTG9nIHBhY2tldHMgcmVjZWl2ZWQgd2l0aCBjb3JydXB0ZWQgRUNOXFxcIik7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTYwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGxhbl9saW5rX29wcztcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYyOnN0YXRpYyBpbnQgdnhsYW5fc29ja19hZGQoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02My1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjQ6c3RhdGljIHZvaWQgdnhsYW5fdnNfZGVsX2RldihzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbik7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTY1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zIHZ4bGFuX2ZkYl9yaHRfcGFyYW1zID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTcyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3MzpzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fY29sbGVjdF9tZXRhZGF0YShzdHJ1Y3QgdnhsYW5fc29jayAqdnMpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy04Mi0gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6ODM6c3RhdGljIHN0cnVjdCB2eGxhbl9zb2NrICp2eGxhbl9maW5kX3NvY2soc3RydWN0IG5ldCAqbmV0LCBzYV9mYW1pbHlfdCBmYW1pbHksXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTg0LVxcdFxcdFxcdFxcdFxcdCAgX19iZTE2IHBvcnQsIHUzMiBmbGFncywgaW50IGlmaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtOTktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEwMDpzdGF0aWMgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW5fdnNfZmluZF92bmkoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMDEtXFx0XFx0XFx0XFx0XFx0ICAgaW50IGlmaW5kZXgsIF9fYmUzMiB2bmksXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQwLS8qIExvb2sgdXAgVk5JIGluIGEgcGVyIG5ldCBuYW1lc3BhY2UgdGFibGUgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQxOnN0YXRpYyBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbl9maW5kX3ZuaShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDItXFx0XFx0XFx0XFx0XFx0X19iZTMyIHZuaSwgc2FfZmFtaWx5X3QgZmFtaWx5LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NC0vKiBGaWxsIGluIG5laWdoYm91ciBtZXNzYWdlIGluIHNrYnVmZi4gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTU1OnN0YXRpYyBpbnQgdnhsYW5fZmRiX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1Ni1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNTAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI1MTpzdGF0aWMgaW5saW5lIHNpemVfdCB2eGxhbl9ubG1zZ19zaXplKHZvaWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjM6c3RhdGljIHZvaWQgX192eGxhbl9mZGJfbm90aWZ5KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBzdHJ1Y3QgdnhsYW5fZmRiICpmZGIsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkLCBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4ODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfc3dpdGNoZGV2X25vdGlmaWVyX2luZm8oY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZmRiLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA2OnN0YXRpYyBpbnQgdnhsYW5fZmRiX3N3aXRjaGRldl9jYWxsX25vdGlmaWVycyhzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyNzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9ub3RpZnkoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI4LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmQsIGludCB0eXBlLCBib29sIHN3ZGV2X25vdGlmeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM1MjpzdGF0aWMgdm9pZCB2eGxhbl9pcF9taXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuaW9uIHZ4bGFuX2FkZHIgKmlwYSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM2NjpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfbWlzcyhzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgY29uc3QgdTggZXRoX2FkZHJbRVRIX0FMRU5dKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3OC0vKiBMb29rIHVwIEV0aGVybmV0IGFkZHJlc3MgaW4gZm9yd2FyZGluZyB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNzk6c3RhdGljIHN0cnVjdCB2eGxhbl9mZGIgKnZ4bGFuX2ZpbmRfbWFjX3JjdShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzgwLVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCB1OCAqbWFjLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mzk1OnN0YXRpYyBzdHJ1Y3QgdnhsYW5fZmRiICp2eGxhbl9maW5kX21hY190eChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzk2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICptYWMsIF9fYmUzMiB2bmkpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDEwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0MTE6c3RhdGljIHN0cnVjdCB2eGxhbl9mZGIgKnZ4bGFuX2ZpbmRfbWFjKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MTItXFx0XFx0XFx0XFx0XFx0Y29uc3QgdTggKm1hYywgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjUtLyogY2FsbGVyIHNob3VsZCBob2xkIHZ4bGFuLVxcdTAwM2VoYXNoX2xvY2sgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDI2OnN0YXRpYyBzdHJ1Y3QgdnhsYW5fcmRzdCAqdnhsYW5fZmRiX2ZpbmRfcmRzdChzdHJ1Y3QgdnhsYW5fZmRiICpmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ0Mi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDQzOmludCB2eGxhbl9mZGJfZmluZF91YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqbWFjLCBfX2JlMzIgdm5pLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDQtXFx0XFx0ICAgICAgc3RydWN0IHN3aXRjaGRldl9ub3RpZmllcl92eGxhbl9mZGJfaW5mbyAqZmRiX2luZm8pXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDczLX1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc0OkVYUE9SVF9TWU1CT0xfR1BMKHZ4bGFuX2ZkYl9maW5kX3VjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzY6c3RhdGljIGludCB2eGxhbl9mZGJfbm90aWZ5X29uZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzctXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDkwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0OTE6aW50IHZ4bGFuX2ZkYl9yZXBsYXkoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTMyIHZuaSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDkyLVxcdFxcdCAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01MjEtfVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1MjI6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX3JlcGxheSk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTUyMy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NTI0OnZvaWQgdnhsYW5fZmRiX2NsZWFyX29mZmxvYWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTMyIHZuaSlcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NDMtfVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NDQ6RVhQT1JUX1NZTUJPTF9HUEwodnhsYW5fZmRiX2NsZWFyX29mZmxvYWQpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NDUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU0Ni0vKiBSZXBsYWNlIGRlc3RpbmF0aW9uIG9mIHVuaWNhc3QgbWFjICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjU0NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9yZXBsYWNlKHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU0OC1cXHRcXHRcXHQgICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLCBfX2JlMTYgcG9ydCwgX19iZTMyIHZuaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy01NzEtLyogQWRkL3VwZGF0ZSBkZXN0aW5hdGlvbnMgZm9yIG11bHRpY2FzdCAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo1NzI6c3RhdGljIGludCB2eGxhbl9mZGJfYXBwZW5kKHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTU3My1cXHRcXHRcXHQgICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiBwb3J0LCBfX2JlMzIgdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTYwMi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjAzOnN0YXRpYyBib29sIHZ4bGFuX3BhcnNlX2dwZV9wcm90byhjb25zdCBzdHJ1Y3QgdnhsYW5oZHIgKmhkciwgX19iZTE2ICpwcm90b2NvbClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02MjgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjYyOTpzdGF0aWMgc3RydWN0IHZ4bGFuaGRyICp2eGxhbl9ncm9fcmVtY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02MzAtXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgb2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTY1NC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NjU1OnN0YXRpYyBzdHJ1Y3QgdnhsYW5oZHIgKnZ4bGFuX2dyb19wcmVwYXJlX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy02NTYtXFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTcwOC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzA5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fZ3JvX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03MTAtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzI0LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo3MjU6c3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9ncGVfZ3JvX3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03MjYtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc1MC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzUxOnN0YXRpYyBpbnQgdnhsYW5fZ3JvX2NvbXBsZXRlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5ob2ZmKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTc1OC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NzU5OnN0YXRpYyBpbnQgdnhsYW5fZ3BlX2dyb19jb21wbGV0ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBuaG9mZilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03NzMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc3NDpzdGF0aWMgc3RydWN0IHZ4bGFuX2ZkYiAqdnhsYW5fZmRiX2FsbG9jKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBjb25zdCB1OCAqbWFjLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03NzUtXFx0XFx0XFx0XFx0XFx0IF9fdTE2IHN0YXRlLCBfX2JlMzIgc3JjX3ZuaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy03OTYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjc5NzpzdGF0aWMgaW50IHZ4bGFuX2ZkYl9uaF91cGRhdGUoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmZkYixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNzk4LVxcdFxcdFxcdCAgICAgICB1MzIgbmhpZCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTg1OC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6ODU5OmludCB2eGxhbl9mZGJfY3JlYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy04NjAtXFx0XFx0ICAgICBjb25zdCB1OCAqbWFjLCB1bmlvbiB2eGxhbl9hZGRyICppcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjkxMjpzdGF0aWMgdm9pZCBfX3Z4bGFuX2ZkYl9mcmVlKHN0cnVjdCB2eGxhbl9mZGIgKmYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTkxMy17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtOTMwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo5MzE6c3RhdGljIHZvaWQgdnhsYW5fZmRiX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzIte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTkzNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTM4OnN0YXRpYyB2b2lkIHZ4bGFuX2ZkYl9kZXN0cm95KHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLCBzdHJ1Y3QgdnhsYW5fZmRiICpmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05MzktXFx0XFx0XFx0ICAgICAgYm9vbCBkb19ub3RpZnksIGJvb2wgc3dkZXZfbm90aWZ5KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk2Mi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6OTYzOnN0YXRpYyB2b2lkIHZ4bGFuX2RzdF9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtOTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy05NzAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjk3MTpzdGF0aWMgaW50IHZ4bGFuX2ZkYl91cGRhdGVfZXhpc3Rpbmcoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTk3Mi1cXHRcXHRcXHRcXHQgICAgIHVuaW9uIHZ4bGFuX2FkZHIgKmlwLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEwNjktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEwNzA6c3RhdGljIGludCB2eGxhbl9mZGJfdXBkYXRlX2NyZWF0ZShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTA3MS1cXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqbWFjLCB1bmlvbiB2eGxhbl9hZGRyICppcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMTA1LS8qIEFkZCBuZXcgZW50cnkgdG8gZm9yd2FyZGluZyB0YWJsZSAtLSBhc3N1bWVzIGxvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxMTA2OmludCB2eGxhbl9mZGJfdXBkYXRlKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMTA3LVxcdFxcdCAgICAgY29uc3QgdTggKm1hYywgdW5pb24gdnhsYW5fYWRkciAqaXAsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTEzNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTEzODpzdGF0aWMgdm9pZCB2eGxhbl9mZGJfZHN0X2Rlc3Ryb3koc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sIHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExMzktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmQsIGJvb2wgc3dkZXZfbm90aWZ5KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExNDUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjExNDY6c3RhdGljIGludCB2eGxhbl9mZGJfcGFyc2Uoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTExNDctXFx0XFx0XFx0ICAgdW5pb24gdnhsYW5fYWRkciAqaXAsIF9fYmUxNiAqcG9ydCwgX19iZTMyICpzcmNfdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyMzItLyogQWRkIHN0YXRpYyBlbnRyeSAodmlhIG5ldGxpbmspICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEyMzM6c3RhdGljIGludCB2eGxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMjM0LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEyNzUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEyNzY6aW50IF9fdnhsYW5fZmRiX2RlbGV0ZShzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTI3Ny1cXHRcXHQgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkciwgdW5pb24gdnhsYW5fYWRkciBpcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzA5LS8qIERlbGV0ZSBlbnRyeSAodmlhIG5ldGxpbmspICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzMTA6c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xMzExLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzMzgtLyogRHVtcCBmb3J3YXJkaW5nIHRhYmxlICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzMzk6c3RhdGljIGludCB2eGxhbl9mZGJfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzNDAtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzODgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjEzODk6c3RhdGljIGludCB2eGxhbl9mZGJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTEzOTAtXFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQyNC0gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQyNTpzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdnhsYW5fc25vb3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQyNi1cXHRcXHRcXHRcXHRcXHR1bmlvbiB2eGxhbl9hZGRyICpzcmNfaXAsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQ4OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTQ5MDpzdGF0aWMgYm9vbCBfX3Z4bGFuX3NvY2tfcmVsZWFzZV9wcmVwKHN0cnVjdCB2eGxhbl9zb2NrICp2cylcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTQ5MS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTUwNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTUwODpzdGF0aWMgdm9pZCB2eGxhbl9zb2NrX3JlbGVhc2Uoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1MzYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1Mzc6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3JlbWNzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHZ4ZmxhZ3MpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1NTctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1NTg6c3RhdGljIHZvaWQgdnhsYW5fcGFyc2VfZ2JwX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdnhmbGFncyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTU1OS1cXHRcXHRcXHRcXHRzdHJ1Y3QgdnhsYW5fbWV0YWRhdGEgKm1kKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1ODgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE1ODk6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHZ4bGFuX3NldF9tYWMoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE1OTAtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdnhsYW5fc29jayAqdnMsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTYyMS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTYyMjpzdGF0aWMgYm9vbCB2eGxhbl9lY25fZGVjYXBzdWxhdGUoc3RydWN0IHZ4bGFuX3NvY2sgKnZzLCB2b2lkICpvaXBoLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNjIzLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNjQ1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxNjQ2OnN0YXRpYyBpbnQgdnhsYW5fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTY0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTgxNC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTgxNTpzdGF0aWMgaW50IHZ4bGFuX2Vycl9sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODQxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxODQyOnN0YXRpYyBpbnQgYXJwX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xODQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTM5LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoxOTQwOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xOTQxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpuLCB1OCAqaGEsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjAzNS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjAzNjpzdGF0aWMgaW50IG5laWdoX3JlZHVjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgdm5pKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTA3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMTA4OnN0YXRpYyBib29sIHJvdXRlX3Nob3J0Y2lyY3VpdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTkwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMTkxOnN0YXRpYyBpbnQgdnhsYW5fYnVpbGRfZ3BlX2hkcihzdHJ1Y3QgdnhsYW5oZHIgKnZ4aCwgX19iZTE2IHByb3RvY29sKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMTkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMjAxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMjAyOnN0YXRpYyBpbnQgdnhsYW5fYnVpbGRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjIwMy1cXHRcXHRcXHQgICBpbnQgaXBoZHJfbGVuLCBfX2JlMzIgdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIyNjgtLyogQnlwYXNzIGVuY2Fwc3VsYXRpb24gaWYgdGhlIGRlc3RpbmF0aW9uIGlzIGxvY2FsICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIyNjk6c3RhdGljIHZvaWQgdnhsYW5fZW5jYXBfYnlwYXNzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB2eGxhbl9kZXYgKnNyY192eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjI3MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHZ4bGFuX2RldiAqZHN0X3Z4bGFuLCBfX2JlMzIgdm5pLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzMTgtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjIzMTk6c3RhdGljIGludCBlbmNhcF9ieXBhc3NfaWZfbG9jYWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjMyMC1cXHRcXHRcXHRcXHQgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjM1Ny1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjM1ODp2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIzNTktXFx0XFx0ICAgIF9fYmUzMiBkZWZhdWx0X3ZuaSwgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QsIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjYzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjY0OnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cXHRcXHRcXHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjkzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk0OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5NS1cXHRcXHRcXHRcXHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzM4LSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzM5OnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NTktLyogV2FsayB0aGUgZm9yd2FyZGluZyB0YWJsZSBhbmQgcHVyZ2Ugc3RhbGUgZW50cmllcyAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyODYwOnN0YXRpYyB2b2lkIHZ4bGFuX2NsZWFudXAoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4OTctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4OTg6c3RhdGljIHZvaWQgdnhsYW5fdnNfZGVsX2RldihzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjg5OS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjkwNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjkwODpzdGF0aWMgdm9pZCB2eGxhbl92c19hZGRfZGV2KHN0cnVjdCB2eGxhbl9zb2NrICp2cywgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MDktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdnhsYW5fZGV2X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjkxOS0vKiBTZXR1cCBzdGF0cyB3aGVuIGRldmljZSBpcyBjcmVhdGVkICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5MjA6c3RhdGljIGludCB2eGxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NTUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI5NTY6c3RhdGljIHZvaWQgdnhsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NTcte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI5NzAtLyogU3RhcnQgYWdlaW5nIHRpbWVyIGFuZCBqb2luIGdyb3VwIHdoZW4gZGV2aWNlIGlzIGJyb3VnaHQgdXAgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjk3MTpzdGF0aWMgaW50IHZ4bGFuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjk3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9Mjk5Mj1zdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2Mge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMDQtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwMDU6c3RhdGljIGJvb2wgdnhsYW5fZmRiX2lzX2RlZmF1bHRfZW50cnkoY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYiAqZixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAwNi1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzAxMS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzAxMjpzdGF0aWMgYm9vbCB2eGxhbl9mZGJfbmhpZF9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmYsIHUzMiBuaGlkKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDE4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDE5OnN0YXRpYyBib29sIHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2eGxhbl9mZGIgKmYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwMjAtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNDE9c3RhdGljIGJvb2xcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA0Mjp2eGxhbl9mZGJfZmx1c2hfc2hvdWxkX21hdGNoX3JlbW90ZXMoY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjICpkZXNjKVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDQ3PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNDg6dnhsYW5fZmRiX2ZsdXNoX3JlbW90ZV9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA0OS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNjQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA2NTp2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA2Ni1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA4NC0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDg1OnN0YXRpYyB2b2lkIHZ4bGFuX2ZsdXNoKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDg2LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9kZWxfYnVsa19wb2xpY3lbTkRBX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxMzItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxMzM6c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxMzQtXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTk3LS8qIENsZWFudXAgdGltZXIgYW5kIGZvcndhcmRpbmcgdGFibGUgb24gc2h1dGRvd24gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE5ODpzdGF0aWMgaW50IHZ4bGFuX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5OS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIxOC0vKiBTdHViLCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUuICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMTk6c3RhdGljIHZvaWQgdnhsYW5fc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMjItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMjM6c3RhdGljIGludCB2eGxhbl9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjQyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMjQzOnN0YXRpYyBpbnQgdnhsYW5fZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzMyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHZ4bGFuX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMzNC0gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMzNTpzdGF0aWMgdm9pZCB2eGxhbl9vZmZsb2FkX3J4X3BvcnRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgcHVzaClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMzNi17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzM2MS0vKiBJbml0aWFsaXplIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzYyOnN0YXRpYyB2b2lkIHZ4bGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM0MDktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM0MTA6c3RhdGljIHZvaWQgdnhsYW5fZXRoZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxNi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzQxNzpzdGF0aWMgdm9pZCB2eGxhbl9yYXdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzQyNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fcG9saWN5W0lGTEFfVlhMQU5fTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQ2NC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzQ2NTpzdGF0aWMgaW50IHZ4bGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzQ2Ni1cXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTMxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTMyOnN0YXRpYyB2b2lkIHZ4bGFuX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1MzMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTM4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNTM5OnN0YXRpYyBpbnQgdnhsYW5fZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NDAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHZ4bGFuX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1NjMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM1NjQ6c3RhdGljIHN0cnVjdCBzb2NrICp2eGxhbl9jcmVhdGVfc29jayhzdHJ1Y3QgbmV0ICpuZXQsIGJvb2wgaXB2NixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzU2NS1cXHRcXHRcXHRcXHQgICAgICBfX2JlMTYgcG9ydCwgdTMyIGZsYWdzLCBpbnQgaWZpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNTk0LS8qIENyZWF0ZSBuZXcgbGlzdGVuIHNvY2tldCBpZiBuZWVkZWQgKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzU5NTpzdGF0aWMgc3RydWN0IHZ4bGFuX3NvY2sgKnZ4bGFuX3NvY2tldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBib29sIGlwdjYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM1OTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgX19iZTE2IHBvcnQsIHUzMiBmbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjQ4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjQ5OnN0YXRpYyBpbnQgX192eGxhbl9zb2NrX2FkZChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwgYm9vbCBpcHY2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zNjk3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozNjk4OnN0YXRpYyBpbnQgdnhsYW5fc29ja19hZGQoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4pXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM2OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3MjAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM3MjE6aW50IHZ4bGFuX3ZuaV9pbl91c2Uoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3MjItXFx0XFx0ICAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLCBfX2JlMzIgdm5pKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM3NTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM3NTI6c3RhdGljIGludCB2eGxhbl9jb25maWdfdmFsaWRhdGUoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IHZ4bGFuX2NvbmZpZyAqY29uZixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzc1My1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKipsb3dlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTAzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozOTA0OnN0YXRpYyB2b2lkIHZ4bGFuX2NvbmZpZ19hcHBseShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTA1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NjAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjM5NjE6c3RhdGljIGludCB2eGxhbl9kZXZfY29uZmlndXJlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTM5NjItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzk3Ny1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mzk3ODpzdGF0aWMgaW50IHZ4bGFuX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zOTc5LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNDYtLyogU2V0L2NsZWFyIGZsYWdzIGJhc2VkIG9uIGF0dHJpYnV0ZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0MDQ3OnN0YXRpYyBpbnQgdnhsYW5fbmwyZmxhZyhzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MDQ4LVxcdFxcdFxcdCAgaW50IGF0dHJ0eXBlLCB1bnNpZ25lZCBsb25nIG1hc2ssIGJvb2wgY2hhbmdlbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00MDczLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0MDc0OnN0YXRpYyBpbnQgdnhsYW5fbmwyY29uZihzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQwNzUtXFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB2eGxhbl9jb25maWcgKmNvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQxMy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDQxNDpzdGF0aWMgaW50IHZ4bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDQxNS1cXHRcXHRcXHQgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDMwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NDMxOnN0YXRpYyBpbnQgdnhsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NDMyLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyOC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUyOTpzdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1NDEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1NDI6c3RhdGljIHNpemVfdCB2eGxhbl9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTc5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NTgwOnN0YXRpYyBpbnQgdnhsYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ2ODktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ2OTA6c3RhdGljIHN0cnVjdCBuZXQgKnZ4bGFuX2dldF9saW5rX25ldChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00Njk3PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGxhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MTEtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3MTI6c3RhdGljIHZvaWQgdnhsYW5faGFuZGxlX2xvd2VyZGV2X3VucmVnaXN0ZXIoc3RydWN0IHZ4bGFuX25ldCAqdm4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MTMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MzMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3MzQ6c3RhdGljIGludCB2eGxhbl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MzUtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NzU0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3NTU6dnhsYW5fZmRiX29mZmxvYWRlZF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDc1Ni1cXHRcXHRcXHRzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NzgxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc4Mjp2eGxhbl9mZGJfZXh0ZXJuYWxfbGVhcm5fYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3ODMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00ODA2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDgwNzp2eGxhbl9mZGJfZXh0ZXJuYWxfbGVhcm5fZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ4MDgtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc3dpdGNoZGV2X25vdGlmaWVyX3Z4bGFuX2ZkYl9pbmZvICpmZGJfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00ODMyLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0ODMzOnN0YXRpYyBpbnQgdnhsYW5fc3dpdGNoZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00ODM0LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDg2OT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZ4bGFuX3N3aXRjaGRldl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ4NzItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ4NzM6c3RhdGljIHZvaWQgdnhsYW5fZmRiX25oX2ZsdXNoKHN0cnVjdCBuZXh0aG9wICpuaClcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6MzguNDAxMjY3NThaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ1NjgzMDAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVlhMQU4gYW5kIElQdjYgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgVlhMQU4uIExvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLCBpdCdzIGNsZWFyIHRoYXQgYFZYTEFOYCBkZXBlbmRzIG9uIGBJTkVUYCBhbmQgc2VsZWN0cyBib3RoIGBORVRfVURQX1RVTk5FTGAgYW5kIGBHUk9fQ0VMTFNgLiBHb29kLCBzdGFuZGFyZCBzdHVmZi5cblxuTm93LCBJIHNlZSB0aGF0IHRoZSBgdnhsYW5fbmFfY3JlYXRlYCBmdW5jdGlvbiwgY3JpdGljYWwgaGVyZSwgaXMgZ3VhcmRlZCBieSBgI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpYCBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gIFRoZXJlZm9yZSwgZW5hYmxpbmcgdGhlIElQdjYgTmVpZ2hib3IgQWR2ZXJ0aXNlbWVudCBjcmVhdGlvbiBwYXRoIHJlcXVpcmVzIGJvdGggYElQVjZgIGFuZCBgVlhMQU5gIHRvIGJlIGVuYWJsZWQsIGluIGFkZGl0aW9uIHRvIGBJTkVUYC4gWXVwLCBgSVBWNmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIHdlJ3JlIGdvb2QgdGhlcmUuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGFmZmVjdGVkIHN5bWJvbHMuIEknbSBmb2N1c2luZyBvbiBgdnhsYW5feG1pdGAsIGJlY2F1c2UgdGhhdCBhcHBlYXJzIHRvIGJlIHRoZSBwYWNrZXQgdHJhbnNtaXQgaGFuZGxlciwgYW5kIEkgY2FuIHNlZSBob3cgaXQgcm91dGVzIHRocm91Z2ggYG5laWdoX3JlZHVjZWAgYW5kIHRoZW4gb24gdG8gYHZ4bGFuX25hX2NyZWF0ZWAuIEFsc28gd2FudCB0byByZW1lbWJlciBgdnhsYW5feG1pdF9vbmVgLiBQZXJoYXBzIEkgYWxzbyBzaG91bGQgbm90ZSBgdnhsYW5fZmRiX2NyZWF0ZWAsIGFuZCBgdnhsYW5fcmN2YC5cblxuQWxyaWdodCwgbGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgSU5FVGAsIGBJUFY2YCwgYW5kIGBWWExBTmAuIE1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIENvbmZpcm1lZC4gYFZYTEFOYCBuZWVkcyBgSU5FVGAgYW5kIHNlbGVjdHMgYE5FVF9VRFBfVFVOTkVMYCBhbmQgYEdST19DRUxMU2AuIFNvIHRoYXQgc29saWRpZmllcyBgVlhMQU5gLCBgSU5FVGAsIGFuZCBgSVBWNmAuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNyYWZ0IHRoZSBgc2V0LXJlc3VsdHNgIHBhcmFtZXRlcnMuXG5cbiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSB0cnVlLlxuKiAgIGBSZWFzb25pbmdgOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGhlYWRyb29tIGNhbGN1bGF0aW9ucyBpbiBgdnhsYW5fbmFfY3JlYXRlKClgIHdpdGhpbiB0aGUgVlhMQU4gZHJpdmVyIHRvIGVuc3VyZSByZXNlcnZlZCBzcGFjZSBtYXRjaGVzIGFsbG9jYXRlZCBoZWFkcm9vbSBmb3IgSVB2NiBuZWlnaGJvciBhZHZlcnRpc2VtZW50cy4gVGhpcyBpcyBpbiBjb3JlIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIlZYTEFOXCIsIFwiSU5FVFwiLCBcIklQVjZcIl1gIOKAkyB0aGF0IHNob3VsZCBiZSBjb21wcmVoZW5zaXZlLlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBJJ2xsIHVzZSBgW1widnhsYW5feG1pdFwiLCBcInZ4bGFuX3htaXRfb25lXCJdYC4gSSBjb3VsZCBhbHNvIGNvbnNpZGVyIGFkZGluZyBgdnhsYW5fcmN2YCwgYnV0IEknbGwgc3RpY2sgd2l0aCB0aGVzZSBmb3Igbm93LCBhbmQga2VlcCB0aGUgb3RoZXJzIGluIG1pbmQuXG5cbkEgcXVpY2sgZmluYWwgc2FuaXR5IGNoZWNrLi4uIFl1cCwgbG9va3Mgc291bmQuIFRpbWUgdG8gcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUzMzIsIk91dHB1dFRva2VucyI6MTA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQyLjg1ODA5OTc5OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzYyNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3htaXRcIixcbiAgICBcInZ4bGFuX3htaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3htaXRcIixcbiAgICBcInZ4bGFuX3htaXRfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGhlYWRyb29tIGNhbGN1bGF0aW9uIGFuZCByZXNlcnZhdGlvbiBpbiB2eGxhbl9uYV9jcmVhdGUoKSB3aGVuIGNvbnN0cnVjdGluZyBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnQgcGFja2V0cyBpbiB0aGUgVlhMQU4gZHJpdmVyLiBUaGlzIHZpcnR1YWwgbmV0d29ya2luZyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIFZYTEFOIHByb3h5IG1vZGUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6NDIuOTI4ODY3MjQ4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM4NjQwNDg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQyLjkyOTI2ODIwOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE2Mzg1OTk5NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNzczNzk4OGQ3M2Q1NTcwZTEzZTg3NjAxZDQ0NTRmNjYwYTVmYmI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDY6Mzc6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbmluZGV4IDQ1OWYxOWY3MDcxZTUuLmU1YTkyZDMwMTEzYzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuQEAgLTE5NDcsMTMgKzE5NDcsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2eGxhbl9uYV9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnJlcXVlc3QsXG4gXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcbiBcdHU4ICpkYWRkcjtcbiBcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciArIEVUSF9BTEVOIGZvciB0YXJnZXQgKi9cbitcdGludCBoZWFkcm9vbTtcbiBcdGludCBuc19vbGVuO1xuIFx0aW50IGksIGxlbjtcbiBcbiBcdGlmIChkZXYgPT0gTlVMTCB8fCAhcHNrYl9tYXlfcHVsbChyZXF1ZXN0LCByZXF1ZXN0LVx1MDAzZWxlbikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0bGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgK1xuK1x0aGVhZHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuK1x0bGVuID0gaGVhZHJvb20gKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICtcbiBcdFx0c2l6ZW9mKCpuYSkgKyBuYV9vbGVuICsgZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdHJlcGx5ID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4gXHRpZiAocmVwbHkgPT0gTlVMTClcbkBAIC0xOTYxLDcgKzE5NjMsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcbiBcbiBcdHJlcGx5LVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XG4gXHRyZXBseS1cdTAwM2VkZXYgPSBkZXY7XG4tXHRza2JfcmVzZXJ2ZShyZXBseSwgTExfUkVTRVJWRURfU1BBQ0UocmVxdWVzdC1cdTAwM2VkZXYpKTtcbitcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XG4gXHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcbiBcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHJlcGx5KTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQyLjkyOTI2OTA1OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDM3MjQ0NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gTkEgQ3JlYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGRpZmYgYWdhaW5zdCBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYCBhbmQgdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyB3aXRoaW4gdGhlIGB2eGxhbl9uYV9jcmVhdGVgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5pcHVsYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIE5ldHdvcmsgQWRkcmVzcyAoTkEpIGNyZWF0aW9uIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLlxuXG5UaGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgcmVxdWlyZWQgYnVmZmVyIGxlbmd0aCAoYGxlbmApIGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSByZXBseSBgc2tfYnVmZmAuIEJlZm9yZSwgdGhlIGNhbGN1bGF0aW9uIHdhcyBhIHNpbXBsZSBhZGRpdGlvbjogYExMX1JFU0VSVkVEX1NQQUNFKGRldikgKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICsgLi4uYC4gTm93LCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBhIGBoZWFkcm9vbWAgdmFyaWFibGU6XG5cbmBgYGNcblx0aGVhZHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuXHRsZW4gPSBoZWFkcm9vbSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgKyAuLi5cbmBgYFxuXG5hbmQgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9yZXNlcnZlYCBjYWxsIG5vdyB1c2VzIHRoaXMgYGhlYWRyb29tYCB2YXJpYWJsZTpcblxuYGBgY1xuXHRza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pO1xuYGBgXG5cbk15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgY2hhbmdlIGlzIGFib3V0IG9wdGltaXppbmcgb3IgbWFraW5nIHRoZSBoZWFkcm9vbSByZXNlcnZhdGlvbiBtb3JlIGV4cGxpY2l0IGZvciB0aGUgYHJlcGx5YCBza19idWZmLiAgVGhlIHByZXZpb3VzIGltcGxpY2l0IHVzZSBvZiBgTExfUkVTRVJWRURfU1BBQ0UoZGV2KWAgZm9yIGJvdGggYGxlbmAgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZWAgbWlnaHQgaGF2ZSBiZWVuIHN1YnRsZSBvciBsZXNzIGNsZWFyIHRoYW4gYXNzaWduaW5nIGl0IHRvIGEgc2VwYXJhdGUgYGhlYWRyb29tYCB2YXJpYWJsZS4gIEkgbmVlZCB0byBjb25maXJtIGlmIGBMTF9SRVNFUlZFRF9TUEFDRShkZXYpYCBkb2VzIHdoYXQgSSB0aGluayBpdCBkb2VzIC0gcmV0dXJucyB0aGUgbGluayBsYXllciBoZWFkZXIgbGVuZ3RoIHBsdXMgYW55IG90aGVyIHJlc2VydmVkIHNwYWNlIGZvciBhIGdpdmVuIGRldmljZS4gVGhlIGNoYW5nZSBzZWVtcyB0byBtYWtlIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgYnkgZXhwbGljaXRseSBzaG93aW5nIHRoZSBgaGVhZHJvb21gIGFsbG9jYXRpb24sIHdoaWNoIGlzIGEgZ29vZCBwcmFjdGljZS4gTm8gc2lnbmlmaWNhbnQgY2hhbmdlIGluIHRoZSBvdmVyYWxsIHNpemUgY2FsY3VsYXRpb24gaXMgb2JzZXJ2ZWQgZnJvbSB0aGUgcGF0Y2ggaXRzZWxmLCBidXQgSSB3YW50IHRvIGVuc3VyZSB0aGlzIGlzbid0IGEgcHJlLWVtcHRpdmUgbWVhc3VyZSBmb3IgYSBsYXJnZXIgY2hhbmdlLlxuXG5UbyBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byBrZWVwIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIGluIG1pbmQsIGFuZCBhbHNvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYGhlYWRyb29tYCBhbmQgdGhlIGFzc29jaWF0ZWQgYExMX1JFU0VSVkVEX1NQQUNFYCBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCBvdGhlciBmdW5jdGlvbnMgdXNlZC4gVGhlIGNvbnRleHQgb2YgbmV0d29yayBhZGRyZXNzIGNyZWF0aW9uIGlzIGFsc28gaW1wb3J0YW50IC0gd2h5IGFyZSB3ZSB1c2luZyBJUHY2IGluIHRoaXMgY29udGV4dD8gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBwb3NzaWJseSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0byBjb25maXJtIHRoZSByZWFzb24gYW5kIGZ1bGx5IHZhbGlkYXRlIHRoYXQgdGhpcyBzZWVtaW5nbHkgc21hbGwgY2hhbmdlIGlzIGluZGVlZCBzYWZlIGFuZCBlZmZlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODo0OS4zNjY1MTU4NDVaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTQwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTQwOlxcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdnhsYW5fbmFfY3JlYXRlKHN0cnVjdCBza19idWZmICpyZXF1ZXN0LFxcbjE5NDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4sIHU4ICpoYSxcXG4xOTQyOlxcdFxcdFxcdFxcdFxcdCAgICAgICBib29sIGlzcm91dGVyKVxcbjE5NDM6XFx0e1xcbjE5NDQ6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHJlcXVlc3QtXFx1MDAzZWRldjtcXG4xOTQ1OlxcdFxcdHN0cnVjdCBza19idWZmICpyZXBseTtcXG4xOTQ2OlxcdFxcdHN0cnVjdCBuZF9tc2cgKm5zLCAqbmE7XFxuMTk0NzpcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqcGlwNjtcXG4xOTQ4OlxcdFxcdHU4ICpkYWRkcjtcXG4xOTQ5OlxcdFxcdGludCBuYV9vbGVuID0gODsgLyogb3B0IGhkciArIEVUSF9BTEVOIGZvciB0YXJnZXQgKi9cXG4xOTUwOlxcdFxcdGludCBoZWFkcm9vbTtcXG4xOTUxOlxcdFxcdGludCBuc19vbGVuO1xcbjE5NTI6XFx0XFx0aW50IGksIGxlbjtcXG4xOTUzOlxcdFxcbjE5NTQ6XFx0XFx0aWYgKGRldiA9PSBOVUxMIHx8ICFwc2tiX21heV9wdWxsKHJlcXVlc3QsIHJlcXVlc3QtXFx1MDAzZWxlbikpXFxuMTk1NTpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4xOTU2OlxcdFxcbjE5NTc6XFx0XFx0aGVhZHJvb20gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbjE5NTg6XFx0XFx0bGVuID0gaGVhZHJvb20gKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpICtcXG4xOTU5OlxcdFxcdFxcdHNpemVvZigqbmEpICsgbmFfb2xlbiArIGRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xcbjE5NjA6XFx0XFx0cmVwbHkgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4xOTYxOlxcdFxcdGlmIChyZXBseSA9PSBOVUxMKVxcbjE5NjI6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuMTk2MzpcXHRcXG4xOTY0OlxcdFxcdHJlcGx5LVxcdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpO1xcbjE5NjU6XFx0XFx0cmVwbHktXFx1MDAzZWRldiA9IGRldjtcXG4xOTY2OlxcdFxcdHNrYl9yZXNlcnZlKHJlcGx5LCBoZWFkcm9vbSk7XFxuMTk2NzpcXHRcXHRza2JfcHVzaChyZXBseSwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcXG4xOTY4OlxcdFxcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHJlcGx5KTtcXG4xOTY5OlxcdFxcbjE5NzA6XFx0XFx0bnMgPSAoc3RydWN0IG5kX21zZyAqKShpcHY2X2hkcihyZXF1ZXN0KSArIDEpO1xcbjE5NzE6XFx0XFxuMTk3MjpcXHRcXHRkYWRkciA9IGV0aF9oZHIocmVxdWVzdCktXFx1MDAzZWhfc291cmNlO1xcbjE5NzM6XFx0XFx0bnNfb2xlbiA9IHJlcXVlc3QtXFx1MDAzZWxlbiAtIHNrYl9uZXR3b3JrX29mZnNldChyZXF1ZXN0KSAtXFxuMTk3NDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGlwdjZoZHIpIC0gc2l6ZW9mKCpucyk7XFxuMTk3NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnNfb2xlbi0xOyBpICs9IChucy1cXHUwMDNlb3B0W2krMV1cXHUwMDNjXFx1MDAzYzMpKSB7XFxuMTk3NjpcXHRcXHRcXHRpZiAoIW5zLVxcdTAwM2VvcHRbaSArIDFdIHx8IGkgKyAobnMtXFx1MDAzZW9wdFtpICsgMV0gXFx1MDAzY1xcdTAwM2MgMykgXFx1MDAzZSBuc19vbGVuKSB7XFxuMTk3NzpcXHRcXHRcXHRcXHRrZnJlZV9za2IocmVwbHkpO1xcbjE5Nzg6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuMTk3OTpcXHRcXHRcXHR9XFxuMTk4MDpcXHRcXHRcXHRpZiAobnMtXFx1MDAzZW9wdFtpXSA9PSBORF9PUFRfU09VUkNFX0xMX0FERFIpIHtcXG4xOTgxOlxcdFxcdFxcdFxcdGlmICgobnMtXFx1MDAzZW9wdFtpICsgMV0gXFx1MDAzY1xcdTAwM2MgMykgXFx1MDAzZT1cXG4xOTgyOlxcdFxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IG5kX29wdF9oZHIpICsgRVRIX0FMRU4pXFxuMTk4MzpcXHRcXHRcXHRcXHRcXHRkYWRkciA9IG5zLVxcdTAwM2VvcHQgKyBpICsgc2l6ZW9mKHN0cnVjdCBuZF9vcHRfaGRyKTtcXG4xOTg0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE5ODU6XFx0XFx0XFx0fVxcbjE5ODY6XFx0XFx0fVxcbjE5ODc6XFx0XFxuMTk4ODpcXHRcXHQvKiBFdGhlcm5ldCBoZWFkZXIgKi9cXG4xOTg5OlxcdFxcdGV0aGVyX2FkZHJfY29weShldGhfaGRyKHJlcGx5KS1cXHUwMDNlaF9kZXN0LCBkYWRkcik7XFxuMTk5MDpcXHRcXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihyZXBseSktXFx1MDAzZWhfc291cmNlLCBoYSk7XFxuMTk5MTpcXHRcXHRldGhfaGRyKHJlcGx5KS1cXHUwMDNlaF9wcm90byA9IGh0b25zKEVUSF9QX0lQVjYpO1xcbjE5OTI6XFx0XFx0cmVwbHktXFx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfSVBWNik7XFxuMTk5MzpcXHRcXG4xOTk0OlxcdFxcdHNrYl9wdWxsKHJlcGx5LCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbjE5OTU6XFx0XFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHJlcGx5KTtcXG4xOTk2OlxcdFxcdHNrYl9wdXQocmVwbHksIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbjE5OTc6XFx0XFxuMTk5ODpcXHRcXHQvKiBJUHY2IGhlYWRlciAqL1xcbjE5OTk6XFx0XFxuMjAwMDpcXHRcXHRwaXA2ID0gaXB2Nl9oZHIocmVwbHkpO1xcbjIwMDE6XFx0XFx0bWVtc2V0KHBpcDYsIDAsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbjIwMDI6XFx0XFx0cGlwNi1cXHUwMDNldmVyc2lvbiA9IDY7XFxuMjAwMzpcXHRcXHRwaXA2LVxcdTAwM2Vwcmlvcml0eSA9IGlwdjZfaGRyKHJlcXVlc3QpLVxcdTAwM2Vwcmlvcml0eTtcXG4yMDA0OlxcdFxcdHBpcDYtXFx1MDAzZW5leHRoZHIgPSBJUFBST1RPX0lDTVBWNjtcXG4yMDA1OlxcdFxcdHBpcDYtXFx1MDAzZWhvcF9saW1pdCA9IDI1NTtcXG4yMDA2OlxcdFxcdHBpcDYtXFx1MDAzZWRhZGRyID0gaXB2Nl9oZHIocmVxdWVzdCktXFx1MDAzZXNhZGRyO1xcbjIwMDc6XFx0XFx0cGlwNi1cXHUwMDNlc2FkZHIgPSAqKHN0cnVjdCBpbjZfYWRkciAqKW4tXFx1MDAzZXByaW1hcnlfa2V5O1xcbjIwMDg6XFx0XFxuMjAwOTpcXHRcXHRza2JfcHVsbChyZXBseSwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA2OjM4OjQ5LjM2Njc3OTUwNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTY0ODE4NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFByb2JsZW1hdGljIENvZGUgU25pcHBldCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29kZSdzIGxvZ2ljLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBwYXJ0aWN1bGFyIGxpbmU6IGBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcmVxdWVzdC1cdTAwM2VkZXY7YCBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gSG93ZXZlciwgSSBuZWVkIHRvIGtub3cgdGhlIG9yaWdpbiBvZiB0aGUgdmFyaWFibGUgYGRldmAuIFdoZXJlIHdhcyBpdCBpbml0aWFsaXplZD8gSSdtIHNlZWluZyBpdCByaWdodCBoZXJlIG9uIGxpbmUgMTk0NC4gKkJ1dCogSSdtIGFsd2F5cyBjYXV0aW91cyBhYm91dCBhc3N1bXB0aW9ucy4gVGhpcyBkaXJlY3QgYXNzaWdubWVudCBtYWtlcyBtZSBhIGxpdHRsZSB1bmVhc3kg4oCTIGlzIHRoZXJlIGEgY2hhbmNlIGBkZXZgIGlzbid0IHdoYXQgSSBleHBlY3QgaXQgdG8gYmUsIHBhcnRpY3VsYXJseSBpZiBpdHMgdmFsdWUgaXMgYWx0ZXJlZCBvdXRzaWRlIHRoaXMgaW1tZWRpYXRlIGZ1bmN0aW9uP1xuXG5JIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGNhbGxlciBvZiBgdnhsYW5fbmFfY3JlYXRlYCB0byBlbnN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhIGNyaXRpY2FsIHBvaW50LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBob3cgYHJlcXVlc3QtXHUwMDNlZGV2YCBpcyBiZWluZyBwYXNzZWQgdG8gc2VlIGlmIGBkZXZgIGNvdWxkIGJlIGFsdGVyZWQgb3IgY2hhbmdlZCBpbiBhIHdheSB0aGF0IEkgc2hvdWxkIHVuZGVyc3RhbmQuIEEgZGVlcGVyIGRpdmUgaXMgaW4gb3JkZXIgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEknbGwgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSBpZiBhbnl0aGluZyBpcyBzdWJ0bHkgYWZmZWN0aW5nIHRoZSBgZGV2YCB2YWx1ZS4gVGhpcyBpcyBhIHBvdGVudGlhbCBidWcgb3IgcGVyZm9ybWFuY2UgaXNzdWUgaG90c3BvdCwgc28gSSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDM0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNjozODo1My4zMzE2MDA2NTJaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX25hX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTE4NDI9c3RhdGljIGludCBhcnBfcmVkdWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiB2bmkpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTkzOS0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTk0MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZ4bGFuX25hX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqcmVxdWVzdCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTk0MS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5laWdoYm91ciAqbiwgdTggKmhhLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIwMzY9c3RhdGljIGludCBuZWlnaF9yZWR1Y2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yMDc4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyMDc5OlxcdFxcdHJlcGx5ID0gdnhsYW5fbmFfY3JlYXRlKHNrYiwgbiwgaGEsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTIwODAtXFx0XFx0XFx0XFx0XFx0ISEoZiA/IGYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTlRGX1JPVVRFUiA6IDApKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6NTMuMzc1MDc4NTIyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NDAxNzA0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgYSBOZXR3b3JrIFNLQiBIZWFkcm9vbSBDYWxjdWxhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgY29kZSBjaGFuZ2UuIFByZXZpb3VzbHksIHdlIGNhbGN1bGF0ZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2tiIGFsbG9jYXRpb24gdXNpbmcgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIHR3aWNlOiBvbmNlIGRpcmVjdGx5IGFuZCBhZ2FpbiB0aHJvdWdoIGByZXF1ZXN0LVx1MDAzZWRldmAuIE5vdywgdGhpcyByZWR1bmRhbmN5IGhhcyBiZWVuIGNsZWFuZWQgdXAgYnkgc3RvcmluZyB0aGUgdmFsdWUgaW4gYSB0ZW1wb3JhcnkgdmFyaWFibGUsIGBoZWFkcm9vbWAuIFRoaXMgc2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBmb3IgY2xhcml0eSBhbmQgcG9zc2libHkgcGVyZm9ybWFuY2UsIGF2b2lkaW5nIHJlZHVuZGFudCBmdW5jdGlvbiBjYWxscy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgaXNzdWVzLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIEknbSBsb29raW5nIGZvciBhbnkgY2FzZSB3aGVyZSB0aGUgcmVmYWN0b3JpbmcgbWlnaHQgYWx0ZXIgbWVtb3J5IGFjY2VzcyBwYXR0ZXJucyBvciBpbnRyb2R1Y2UgbmV3IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBMZXQncyBzZWUuLi4gd2UncmUgY2FsY3VsYXRpbmcgYGhlYWRyb29tYCBhbmQgdGhlbiB1c2luZyBpdCBjb25zaXN0ZW50bHkgdGhyb3VnaG91dCB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIFRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZS4gYHJlcGx5YCBpcyBjb3JyZWN0bHkgYWxsb2NhdGVkIHdpdGggYGFsbG9jX3NrYmAsIGFuZCB0aGUgZXRoZXJuZXQgaGVhZGVyLCBJUHY2IGhlYWRlciwgYW5kIE5EIG1lc3NhZ2UgYXJlIHdyaXR0ZW4gdG8gaXQuIFRoZSBrZXkgaXMgdGhhdCBgZGV2YCBhbmQgYHJlcXVlc3QtXHUwMDNlZGV2YCBhcmUgdGhlIHNhbWUgZGV2aWNlLCBzbyB0aGUgY2FsY3VsYXRlZCBoZWFkcm9vbSBpcyBjb25zaXN0ZW50LlxuXG5MZXQncyBkbyBhIG1vcmUgdGhvcm91Z2ggY2hlY2s6XG5cbiogICBObyBzdHJ1Y3RzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbjsgd2UncmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUga2VybmVsLlxuKiAgIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIGlzIHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFzIGlucHV0LlxuKiAgIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBsZWZ0IHVuaW5pdGlhbGl6ZWQuXG4qICAgTm8gaW5mb3JtYXRpb24gbGVha3MsIGFuZCB0aGUgYm91bmRzIGFyZW4ndCBjaGFuZ2VkIGluIGEgd2F5IHRoYXQgd291bGQgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIGJ5dGVzLlxuXG5UaGlzIHNlZW1zIGxpa2UgYSBwdXJlbHkgY29zbWV0aWMgY2hhbmdlLCBvciBtYXliZSBhIG1pbm9yIG9wdGltaXphdGlvbiB0aGF0IGlzIGFsc28gbW9yZSByZWFkYWJsZS4gTm8gS01TQU4gcmlza3MgYXJlIGludm9sdmVkLCBhcyBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGluaXRpYWxpemVkLiBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHNhZmUgcmVmYWN0b3JpbmcuXG5cbkdpdmVuIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBjb3JlIG9mIHRoaXMgYXNzZXNzbWVudCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBvciBleHBvc2VzIGFueSAqdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCBvbmx5IGJlIGRldGVjdGVkIGJ5IEtNU0FOKi4gS0FTQU4sIExvY2tEZXAsIGFuZCB0aGUgb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgZW5vdWdoIGZvciBoZXJlLiBUaGlzIGlzIG5vdCB0aGUgY2FzZS5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBgZmFsc2VgLiBJIGNhbiBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGF0LCBhbG9uZyB3aXRoIGEgY2xlYXIgZXhwbGFuYXRpb24gdGhhdCBjb250cmFzdHMgdGhlIHJvbGUgYW5kIGJlbmVmaXRzIG9mIEtNU0FOIGFuZCBLQVNBTiBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyOSwiT3V0cHV0VG9rZW5zIjoxNjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDY6Mzg6NTkuMzE1MjUwODU3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwZXJmb3JtcyBhIG1pbm9yIHJlZmFjdG9yaW5nIGluIGB2eGxhbl9uYV9jcmVhdGUoKWAgd2l0aGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiBJdCBjYWNoZXMgYExMX1JFU0VSVkVEX1NQQUNFKGRldilgIGluIGEgbG9jYWwgdmFyaWFibGUgYGhlYWRyb29tYCBhbmQgcmV1c2VzIGl0IGZvciBib3RoIHRoZSBhbGxvY2F0aW9uIHNpemUgY2FsY3VsYXRpb24gYW5kIGBza2JfcmVzZXJ2ZShyZXBseSwgaGVhZHJvb20pYC4gQmVjYXVzZSBgZGV2YCBpcyBpbml0aWFsaXplZCBhcyBgcmVxdWVzdC1cXHUwMDNlZGV2YCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBubyBjaGFuZ2UgaW4gcnVudGltZSB2YWx1ZXMsIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3B5aW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[1] Phase: Succeeded StartedAt: 2026-08-31 06:39:10 +0000 UTC FinishedAt: 2026-08-31 06:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-31 06:39:10 +0000 UTC FinishedAt: 2026-08-31 06:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2] Phase: Succeeded StartedAt: 2026-08-31 06:39:10 +0000 UTC FinishedAt: 2026-08-31 10:25:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-31 06:39:10 +0000 UTC FinishedAt: 2026-08-31 10:25:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","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-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-31 06:39:10 +0000 UTC FinishedAt: 2026-08-31 06:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-31 06:39:10 +0000 UTC FinishedAt: 2026-08-31 06:39:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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-workflowgc8ck/series-workflowgc8ck-convert-artifact-3332590480/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-31 06:39:20 +0000 UTC FinishedAt: 2026-08-31 06:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-31 06:39:20 +0000 UTC FinishedAt: 2026-08-31 06:59:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1021e9bb-e53f-4570-8b57-2a01cfb200e5,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-workflowgc8ck/series-workflowgc8ck-convert-artifact-3332590480/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": "e17d9791-413c-46f4-9efe-223754968283", "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-workflowgc8ck/series-workflowgc8ck-build-action-3175901206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-31 06:39:20 +0000 UTC FinishedAt: 2026-08-31 06:59:05 +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:*1021e9bb-e53f-4570-8b57-2a01cfb200e5,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-workflowgc8ck/series-workflowgc8ck-convert-artifact-3332590480/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": "e17d9791-413c-46f4-9efe-223754968283", "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-workflowgc8ck/series-workflowgc8ck-build-action-3175901206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-31 06:59:29 +0000 UTC FinishedAt: 2026-08-31 06:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-31 06:59:29 +0000 UTC FinishedAt: 2026-08-31 06:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-31 06:59:29 +0000 UTC FinishedAt: 2026-08-31 06:59:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-31 06:59:29 +0000 UTC FinishedAt: 2026-08-31 06:59:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","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-workflowgc8ck/series-workflowgc8ck-convert-artifact-2537310967/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-31 06:59:52 +0000 UTC FinishedAt: 2026-08-31 07:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-31 06:59:52 +0000 UTC FinishedAt: 2026-08-31 07:01:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e17d9791-413c-46f4-9efe-223754968283,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-workflowgc8ck/series-workflowgc8ck-build-action-3175901206/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-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-31 07:01:45 +0000 UTC FinishedAt: 2026-08-31 07:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-31 07:01:45 +0000 UTC FinishedAt: 2026-08-31 07:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-31 07:01:45 +0000 UTC FinishedAt: 2026-08-31 07:21:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-31 07:01:45 +0000 UTC FinishedAt: 2026-08-31 07:21:55 +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:*1021e9bb-e53f-4570-8b57-2a01cfb200e5,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-workflowgc8ck/series-workflowgc8ck-convert-artifact-2537310967/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": "8dbf096b-5edb-4e24-a5bb-9faae25fa9bc", "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-workflowgc8ck/series-workflowgc8ck-build-action-1724194235/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-31 07:01:45 +0000 UTC FinishedAt: 2026-08-31 07:21:33 +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:*1021e9bb-e53f-4570-8b57-2a01cfb200e5,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-workflowgc8ck/series-workflowgc8ck-convert-artifact-2537310967/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": "8dbf096b-5edb-4e24-a5bb-9faae25fa9bc", "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-workflowgc8ck/series-workflowgc8ck-build-action-1724194235/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-31 07:21:55 +0000 UTC FinishedAt: 2026-08-31 07:21:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-31 07:21:55 +0000 UTC FinishedAt: 2026-08-31 07:21:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-31 07:21:55 +0000 UTC FinishedAt: 2026-08-31 07:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-31 07:21:55 +0000 UTC FinishedAt: 2026-08-31 07:23:40 +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:*8dbf096b-5edb-4e24-a5bb-9faae25fa9bc,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-workflowgc8ck/series-workflowgc8ck-build-action-1724194235/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-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 10:25:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 10:25:32 +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":["vxlan_xmit","vxlan_xmit_one"],"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:*e17d9791-413c-46f4-9efe-223754968283,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8dbf096b-5edb-4e24-a5bb-9faae25fa9bc,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-workflowgc8ck/series-workflowgc8ck-build-action-3175901206/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-workflowgc8ck/series-workflowgc8ck-build-action-1724194235/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 07:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 07:23:55 +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":["vxlan_xmit","vxlan_xmit_one"],"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-workflowgc8ck/series-workflowgc8ck-convert-artifact-1976466224/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 07:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 07:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-31 07:23:50 +0000 UTC FinishedAt: 2026-08-31 07:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-31 07:24:00 +0000 UTC FinishedAt: 2026-08-31 10:25:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc8ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"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":["vxlan_xmit","vxlan_xmit_one"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","INET","IPV6"],"series_id":"e87c6cbe-d57c-4707-9d6d-70a150d7fa09","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-31 07:24:00 +0000 UTC FinishedAt: 2026-08-31 10:25:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e17d9791-413c-46f4-9efe-223754968283,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8dbf096b-5edb-4e24-a5bb-9faae25fa9bc,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-workflowgc8ck/series-workflowgc8ck-build-action-3175901206/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-workflowgc8ck/series-workflowgc8ck-build-action-1724194235/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-workflowgc8ck/series-workflowgc8ck-convert-artifact-1976466224/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,}