Name: series-workflow78xjq Phase: Succeeded StartedAt: 2026-08-13 10:40:53 +0000 UTC FinishedAt: 2026-08-13 12:24:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[0] Phase: Succeeded StartedAt: 2026-08-13 10:40:53 +0000 UTC FinishedAt: 2026-08-13 11:43:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 10:40:53 +0000 UTC FinishedAt: 2026-08-13 11:43:18 +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": "2bb155e92167cd5ad6aae312e83291da2454f8b0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2bb155e92167cd5ad6aae312e83291da2454f8b0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "866b46d4-aa4a-406c-b02b-a5aaf5efe98b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_dvr_probe", "stmmac_reinit_queues", "stmmac_reinit_ringparam", "stmmac_enable_rx_queue" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0mIzM0OywKICAgICYjMzQ7c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByZWNlaXZlIGJ1ZmZlciBvZmZzZXQgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYnkgYWRkaW5nIE5FVF9JUF9BTElHTiB0byBORVRfU0tCX1BBRC4gVGhpcyBpcyBhIHN0YW5kYXJkIG5ldHdvcmtpbmcgYWRqdXN0bWVudCB0byBlbnN1cmUgdGhhdCB0aGUgSVAgaGVhZGVyIGlzIGFsaWduZWQgdG8gYSA0LWJ5dGUgYm91bmRhcnkgKHNpbmNlIHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgMTQgYnl0ZXMsIGFkZGluZyAyIGJ5dGVzIG9mIHBhZGRpbmcgYWxpZ25zIHRoZSBzdWJzZXF1ZW50IElQIGhlYWRlcikuIFRoaXMgY2hhbmdlIGFmZmVjdHMgbWVtb3J5IGxheW91dCBhbmQgRE1BIGJ1ZmZlciBvZmZzZXRzLCBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vciBkb2VzIGl0IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgbGlrZWx5IGJlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCB0byBpbmNsdWRlIGBORVRfSVBfQUxJR05gIGluIHRoZSBSWCBidWZmZXIgb2Zmc2V0IGNhbGN1bGF0aW9uLiBUaGlzIGFsdGVycyB0aGUgbWVtb3J5IGxheW91dCBhbmQgYWxsb2NhdGlvbiBzaXplIGZvciByZWNlaXZlZCBwYWNrZXRzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBETUEgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHBhY2tldCBwYXJzaW5nLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFBDSSBvciBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZyBhbmQgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MzQ6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjJhNTc0MTViZTI1Y2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMTUyOSw3ICYjNDM7MTUyOSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3RtbWFjX3J4X29mZnNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKVxuIFx0XHRyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTtcbiBcbi1cdHJldHVybiBORVRfU0tCX1BBRDtcbiYjNDM7XHRyZXR1cm4gTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOO1xuIH1cbiBcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBtdHUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0mIzM0OywKICAgICYjMzQ7c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3J4X29mZnNldGAgdG8gaW5jbHVkZSBgTkVUX0lQX0FMSUdOYCBpbiB0aGUgUlggYnVmZmVyIG9mZnNldCBjYWxjdWxhdGlvbi4gVGhpcyBhbHRlcnMgdGhlIG1lbW9yeSBsYXlvdXQgYW5kIGFsbG9jYXRpb24gc2l6ZSBmb3IgcmVjZWl2ZWQgcGFja2V0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcGFyc2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgYW5kIG5ldHdvcmsgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzRhNTQ5MjUwMGRhMmQ0OGVkYTk4NDljMTQ2YjBlNTZhNDlmMTMzNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDExOjM0OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0xNTI5LDcgJiM0MzsxNTI5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAlpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQogCQlyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTsKIAotCXJldHVybiBORVRfU0tCX1BBRDsKJiM0MzsJcmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTjsKIH0KIAogc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDMwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFNUTU1BQyBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3J4X29mZnNldGAgaW4gYHN0bW1hY19tYWluLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZXkmIzM5O3ZlIGFkZGVkIGBORVRfSVBfQUxJR05gIHRvIHRoZSByZXR1cm4gdmFsdWUsIHdoaWNoIHN1Z2dlc3RzIGFuIGFsaWdubWVudCBhZGp1c3RtZW50IHJlbGF0ZWQgdG8gSVAgaGVhZGVycy4gSXQgc2VlbXMgbGlrZSBhIHN0YW5kYXJkIGZpeCwgYnV0IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHdpdGhpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgKmNhbiogSSByZXByb2R1Y2Ugb3IgdGVzdCB0aGlzIGNoYW5nZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIG5lZWQgdG8ga25vdyBpZiB0aGUgc3RtbWFjIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgY29udHJvbGxlciwgaXMgZXZlbiAqcHJlc2VudCogaW4gc29tZXRoaW5nIGxpa2UgUUVNVS4gSXQmIzM5O3MgY29tbW9uIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBlbXVsYXRpb24gc3VwcG9ydCBpcyB3aGF0IG1hdHRlcnMgaGVyZS4KCkxldCYjMzk7cyBzZWUuLi4gUUVNVSwgaW4gZ2VuZXJhbCwgaGFzIGVtdWxhdGlvbiBzdXBwb3J0IGZvciBhIHJhbmdlIG9mIG5ldHdvcmsgY29udHJvbGxlcnMuIEkgc3RhcnQgbWVudGFsbHkgbGlzdGluZyB0aGVtOiBgaW14X2ZlY2AsIGBjYWRlbmNlX2dlbWAsIGBmdGdtYWMxMDBgLCBldGMuIFRoZW4sIEkgcmVtZW1iZXIgdGhhdCBgc3RtbWFjYCBzcGVjaWZpY2FsbHkgcmVmZXJzIHRvIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpIGNvbnRyb2xsZXIsIGFuZCB0aGF0JiMzOTtzIHRoZSBvbmUgSSBuZWVkIHRvIGxvb2sgZm9yLiBJcyAqdGhhdCogZW11bGF0ZWQ/CgpUbyBjb25maXJtLCBJIG5lZWQgdG8gY2hlY2sgaG93IHN0bW1hYyBpcyBpbnN0YW50aWF0ZWQuIElzIGl0IHByb2JlZCB2aWEgUENJLCBvciBpcyBpdCBwdXJlbHkgYSBwbGF0Zm9ybSBkZXZpY2U/IEkmIzM5O2xsIHNlYXJjaCBmb3Igc29tZXRoaW5nIGxpa2UgYHN0bW1hY19wY2lgIGluIHRoZSBjb2RlYmFzZSB0byBmaWd1cmUgdGhhdCBvdXQuIEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gdGVzdCB0aGlzIGNoYW5nZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MTA3PXN5bnRheCAoZS5nLiBmb3IgUENJIG1vZHVsZSk6OlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0xMDgtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjEwOTogICAgbW9kcHJvYmUgc3RtbWFjX3BjaSBbXHUwMDNjb3B0aW9uXHUwMDNlPVx1MDAzY1ZBTDFcdTAwM2UsXHUwMDNjVkFMMlx1MDAzZSwuLi5dXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTExMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTI1PXN0cnVjdCBpbnRlbF9wcml2X2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQwOnN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQxLVx0dW5zaWduZWQgaW50IGZ1bmM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDU6c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDctXHRzaXplX3QgbmZ1bmNzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MS1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkxPXN0YXRpYyBjb25zdCBpbnQgYWRsbl90c25fbGFuZV9yZWdzW10gPSB7Nn07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MzpzdGF0aWMgaW50IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTQtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9saXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk3Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgKmRtaV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OC1cdGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfaWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODY9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODA2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNy1cdC5zZXR1cCA9IGVobF9zZ21paV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3JnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgyMTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjItXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0MT1zdGF0aWMgaW50IGVobF9wc2UwX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODQ4OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ5LVx0LnNldHVwID0gZWhsX3BzZTBfcmdtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODUyPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NzA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NzEtXHQuc2V0dXAgPSBlaGxfcHNlMF9zZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTA9c3RhdGljIGludCBlaGxfcHNlMV9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg5NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5OC1cdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkwMT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTE5OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIwLVx0LnNldHVwID0gZWhsX3BzZTFfc2dtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTQ0PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTUzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTU0LVx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk1Nz1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2NjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkxX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Ny1cdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NzA9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTgwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4MS1cdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTg0PXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk5NDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTUtXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTFfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjM9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsbl9zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0My1cdC5zZXR1cCA9IGFkbG5fc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ3LVx0e1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgZ2FsaWxlb19zdG1tYWNfZG1pX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTQtXHQuZnVuYyA9IGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1OS1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNjk6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGlvdDIwNDBfc3RtbWFjX2RtaV9kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDcwLVx0LmZ1bmMgPSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTA5PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTExOS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTIwOlx0cmV0ID0gc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHBkZXYsIHF1YXJrX3BjaV9kbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTIxLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBxdWFya19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ2LVx0LnNldHVwID0gcXVhcmtfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI2NjpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY3LVx0c3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTc2PXN0cnVjdCBsb29uZ3Nvbl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo4MjpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODMtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xMzI9c3RhdGljIGludCBsb29uZ3Nvbl9nbWFjX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDMtXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbWFjX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xNjU9c3RhdGljIGludCBsb29uZ3Nvbl9nbmV0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE3NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbmV0X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzgtXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbmV0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAxLVx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUwMjpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMy1cdHN0cnVjdCBsb29uZ3Nvbl9kYXRhICpsZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUzNy1cdHBsYXQtXHUwMDNlZml4X3NvY19yZXNldCA9IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM4Olx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzOTpcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQwLVx0bGQtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU0MzpcdGluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDQtXHRyZXQgPSBpbmZvLVx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTE4OD1zdGF0aWMgaW50IG1vdG9yY29tbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxOTM6XHRyZXQgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKGRldiwgYnNwX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTk0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDg9bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0OC1cdHBsYXQtXHUwMDNlY29yZV90eXBlXHRcdD0gRFdNQUNfQ09SRV9HTUFDNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI0OTpcdHBsYXQtXHUwMDNlc3VzcGVuZFx0XHQ9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUwLVx0cGxhdC1cdTAwM2VyZXN1bWVcdFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoxMjppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyNjpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6Mjg6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzo0NDpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDo5OmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDoxMDppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC0xMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTA3OiAqIHN0bW1hY19wY2lfcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMjE6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjItXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODA6XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODE6XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTg3OiAqIHN0bW1hY19wY2lfcmVtb3ZlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTI6c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNTpcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE2Olx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNy1cdC5kcml2ZXIgICAgICAgICA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTYxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogOTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIGFuZCBGdXp6aW5nIGBzdG1tYWNgIGluIFFFTVU6IEEgVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIGBzdG1tYWNfcGNpYCBleGlzdHMgYXMgYSBQQ0kgZGV2aWNlLCBidXQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCBpdCBpbiBRRU1VPyBUaGUgcHJvbXB0IHBvaW50cyBvdXQgcG90ZW50aWFsIHJvYWRibG9ja3MgZm9yIGVtdWxhdGVkIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgaGlnaGxpZ2h0aW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBkcml2ZXJzIGFuZCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGFuZCBzbyBvbi4gQnV0IGBzdG1tYWNgIHNlZW1zIGxpa2UgYSBkaWZmZXJlbnQgYmVhc3QuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgUUVNVSBldmVuICpoYXMqIGFuIGVtdWxhdGVkIGBzdG1tYWNgLiBJIGtub3cgaXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIHNvIEkgbmVlZCB0byBjaGVjayBmb3IgdGhhdC4gQWgsIFFFTVUgaGFzIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIHdoaWNoIGlzIGEgZHdtYWMsIGJ1dCB0aGF0IGlzIGEgcGxhdGZvcm0gZGV2aWNlLiBJIHJhcGlkbHkgY3ljbGUgdGhyb3VnaCBvdGhlcnMsIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgYHhnbWFjYCwgYWxsIHBsYXRmb3JtIGRldmljZXMuIEFoISBCdXQgYHN0bW1hY2AgaXMgdXNlZCBhcyBhIHBsYXRmb3JtIGRldmljZSBmb3IgbWFueSBTb0NzLCAqYW5kKiBpdCBoYXMgYSBQQ0kgd3JhcHBlciwgYHN0bW1hY19wY2kuY2AuIFRoaXMgaXMgcHJvbWlzaW5nLgoKTm93LCBob3cgY2FuIEkgcHJvYmUgYHN0bW1hY19wY2lgIGluIFFFTVU/IEkgdGhpbmsgb2YgYHBjaS1zdHViYCBvciBpZiBzeXprYWxsZXIgY2FuIGluamVjdCBQQ0kgZGV2aWNlcy4gU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX3NldHVwYCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCBidXQgaXMgaXQganVzdCBmdXp6aW5nIHRoZSBQQ0kgY29uZmlnIHNwYWNlPyBSaWdodCwgaXQgbW9zdGx5IHByb2JlcywgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIFFFTVUgZGV2aWNlLiBJZiBETUEgYW5kIGludGVycnVwdHMgYXJlIHVzZWQsIGl0IG5lZWRzIGEgcmVhbCBkZXZpY2Ugb3IgZnVsbCBRRU1VIGVtdWxhdGlvbi4KClNvIGRvZXMgUUVNVSBlbXVsYXRlIGBzdG1tYWNgPyBMZXQgbWUgbG9vayBmb3IgYGR3bWFjYCBvciBgc3RtbWFjYCBpbiBRRU1VJiMzOTtzIGNvZGUuLi4gSXQgc2VlbXMgUUVNVSBoYXMgYGh3L25ldC9kZXNpZ253YXJlLmNgLCB3aGljaCBpcyB0aGUgRGVzaWduV2FyZSBNQUMhIFRoaXMgaXMgZ29vZCBuZXdzLCByaWdodD8gV2hpbGUgSSBkb24mIzM5O3QgaGF2ZSB0aGUgc291cmNlIGhhbmR5LCBJIG5lZWQgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGNvbW1vbmx5IGZ1enplZCBieSBzeXprYWxsZXIuCgpBaGEhICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDshIFRoYXQgc3VnZ2VzdHMgc3l6a2FsbGVyIGZvdW5kIGEgYnVnIGluIGBzdG1tYWNgIG9yIGlzIHRlc3RpbmcgYSBwYXRjaCBmb3IgaXQuIFRoYXQgbWVhbnMgaXQgaXMgcmVhY2hhYmxlISBXYWl0LCBzeXprYWxsZXIgY2FuIGZ1enogcGxhdGZvcm0gZGV2aWNlcyBpZiBpbnN0YW50aWF0ZWQuIEFsc28sIGlzbiYjMzk7dCBgc3RtbWFjYCB1c2VkIG9uIEFSTSBib2FyZHMsIGFuZCBtaWdodCBzeXprYWxsZXIgYmUgcnVubmluZyBvbiBBUk02NCBRRU1VPyBUaGUgYHZpcnRgIG1hY2hpbmU/IFJpZ2h0LCBpdCB1c2VzIGB2aXJ0aW8tbmV0LXBjaWAuIEhtbSwgc28gbWF5YmUgc3l6a2FsbGVyIHVzZXMgYSBzcGVjaWZpYyBRRU1VIG1hY2hpbmUsIG9yIGEgVVNCIGdhZGdldC4uLiBidXQgYHN0bW1hY2AgaXMgbm90IGEgVVNCIGdhZGdldC4KCk9rYXksIGxldCYjMzk7cyBzZWUgaWYgYHN0bW1hY2AgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGluIHRoZSBkcml2ZXIuIElmIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdG91Y2hlZCBieSBzeXprYWxsZXIgdGhlbiB0aGUgZHJpdmVyIGlzIHJlYWNoYWJsZS4gSXMgaXQgd29ydGggZnV6emluZz8gWWVzISBPZiBjb3Vyc2UhIExldCYjMzk7cyBjaGVjayBgc3RtbWFjX3J4X29mZnNldGAmIzM5O3MgdXNhZ2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3J4X29mZnNldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTE1MTc9c3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BsYXlfcmluZ3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTUyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTUyNzpzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTE2Mzk9c3RhdGljIGludCBzdG1tYWNfaW5pdF9yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTQtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE2NTU6XHRcdGJ1Zi1cdTAwM2VwYWdlX29mZnNldCA9IHN0bW1hY19yeF9vZmZzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMjI3PXN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI0MTpcdGRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSAmIzQzOyBkbWFfY29uZi1cdTAwM2VkbWFfYnVmX3N6ICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDItXHRcdFx0IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjU0LVx0cHBfcGFyYW1zLmRtYV9kaXIgPSB4ZHBfcHJvZyA/IERNQV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjU1Olx0cHBfcGFyYW1zLm9mZnNldCA9IHN0bW1hY19yeF9vZmZzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTYtXHRwcF9wYXJhbXMubWF4X2xlbiA9IGRtYV9jb25mLVx1MDAzZWRtYV9idWZfc3o7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjU5LVx0XHRwcF9wYXJhbXMub2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI2MDpcdFx0cHBfcGFyYW1zLm1heF9sZW4gJiM0Mzs9IHN0bW1hY19yeF9vZmZzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNjEtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NTgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb250ZXh0IG9mIGEgUG90ZW50aWFsIFN5emthbGxlciBJbnRlcmFjdGlvbiB3aXRoIHRoZSBTVE1NQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uIGBzdG1tYWNfcnhfb2Zmc2V0YCwgYW5kIGl0JiMzOTtzIGJlaW5nIHVzZWQgZHVyaW5nIFJYIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWdlIHBvb2wgc2V0dXAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgd2h5IGlzIHRoaXMgYmVpbmcgZmxhZ2dlZD8gSXMgdGhlIGRyaXZlciBldmVuIHJlYWNoYWJsZSBpbiB0aGUgY3VycmVudCB0ZXN0aW5nIHNldHVwPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBpcyBpbnZvbHZlZCBzdWdnZXN0cyBlaXRoZXIgYSBjcmFzaCBoYXMgYmVlbiB0cmlnZ2VyZWQsIG9yIHNvbWVvbmUmIzM5O3MgaW50ZW50aW9uYWxseSB1c2luZyBpdCB0byB0ZXN0IHRoaXMgcGF0Y2guCgpNeSBmaXJzdCB0aG91Z2h0IHdhcywgJiMzNDtXYWl0LCBpc24mIzM5O3Qgc3l6a2FsbGVyJiMzOTtzIG5ldHdvcmsgaW5qZWN0aW9uIG1vcmUgdmlydHVhbCwgdGhyb3VnaCBgdHVuL3RhcGAgb3IgYHZldGhgPyYjMzQ7IEJ1dCB0aGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIuIFRoZW4gSSByZW1lbWJlciBzeXprYWxsZXIgKmNhbiogZnV6eiBoYXJkd2FyZSBkcml2ZXJzLCBJIGtub3cgaXQgY2FuIGRvIFVTQiB2aWEgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YCwgYW5kIFBDSSBkcml2ZXJzIHdpdGggc29tZSBsaW1pdGF0aW9ucywgYW5kIHBsYXRmb3JtIGRyaXZlcnMgaWYgdGhleSBhcmUgbG9hZGVkLgoKVGhlbiBhIGxpZ2h0YnVsYiBnb2VzIG9mZiEgRG9lc24mIzM5O3QgUUVNVSBoYXZlIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggZW11bGF0ZXMgdGhlIERlc2lnbldhcmUgTUFDPyBDb3VsZCB0aGlzIGJlIHRoZSBjb25uZWN0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaWYgYENPTkZJR19TVE1NQUNfRVRIYCBpcyBlbmFibGVkIGluIHR5cGljYWwgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLCBvciBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UgZHJpdmVyLiBCaW5nbywgYHN0bW1hY19wY2lgIGlzIGEgUENJIGRldmljZSBkcml2ZXIuCgpRRU1VIG1pZ2h0IG5vdCBkaXJlY3RseSBlbXVsYXRlIGBzdG1tYWNfcGNpYCwgYnV0IHdhaXQsIHRoZXJlJiMzOTtzIHRoYXQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgZXZlbiBpZiB0aGUgcHJvYmUgc3VjY2VlZHMsIHRvIGFjdHVhbGx5ICpyZWNlaXZlKiBwYWNrZXRzIGFuZCBleGVjdXRlIHRoZSBSWCBwYXRoICh3aGVyZSBgc3RtbWFjX3J4X29mZnNldGAgaXMgY2FsbGVkIGR1cmluZyByaW5nIGluaXRpYWxpemF0aW9uLCB3aGljaCBoYXBwZW5zIG9uIGBuZG9fb3BlbmApLCB0aGUgZHJpdmVyIGhhcyB0byBwcm9iZSBhbmQgb3Blbi4gVGhpcyBpcyBrZXkuCgpTbywgaWYgYHN0bW1hY19wY2lgIGNhbiBiZSBwcm9iZWQgdXNpbmcgYHN5el9wY2lfc2V0dXBgIGFuZCBgaXAgbGluayBzZXQgZXRoWCB1cGAgaXMgY2FsbGVkLCB0aGF0ICpzaG91bGQqIHRyaWdnZXIgYHN0bW1hY19pbml0X3J4X2J1ZmZlcnNgLiBIb3dldmVyLCB0aGUgcHJvYmUgbWlnaHQgcmVxdWlyZSBNTUlPIHJlZ2lvbnMgdG8gYmUgbWFwcGVkIGFuZCBmdW5jdGlvbmFsIOKAkyB0aGluZ3MgbGlrZSByZWFkaW5nIHRoZSBNQUMgYWRkcmVzcywgcmVzZXR0aW5nIHRoZSBNQUMuIElmIHRoZSBoYXJkd2FyZSBpc24mIzM5O3QgcHJvcGVybHkgZW11bGF0ZWQsIHRoZSBwcm9iZSB3aWxsIGZhaWwgcmVhZGluZy93cml0aW5nIHRvIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgaXQmIzM5O2xsIGdldCAweGZmZmZmZmZmIG9yIHRpbWVvdXRzLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIGBzdG1tYWNfcGNpX3Byb2JlYCBpdHNlbGYuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3BjaV9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNTpcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE2LVx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDAwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHN0bW1hY19wY2lfcHJvYmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGlzIHN0bW1hYyBkcml2ZXIgaW4gYSBQQ0kgY29udGV4dC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHdoYXQgaGFwcGVucyB3aXRoaW4gYHN0bW1hY19wY2lfcHJvYmVgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0cmFjZSB0aGUgZXNzZW50aWFsIG9wZXJhdGlvbnMgcGVyZm9ybWVkIGR1cmluZyBkZXZpY2UgYXR0YWNobWVudC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcmVnaXN0ZXIgbWFwcGluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiAoaW50ZXJydXB0cywgbWVtb3J5IHJlZ2lvbnMpLCB0aGUgY2hlY2tzLCBhbnkgcG9zc2libGUgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIHRoYXQgZ2V0IGludm9rZWQsIGFuZCB3aGF0IGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBwb3B1bGF0ZWQgdG8gcmVwcmVzZW50IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGNvZGUgZm9yIGFueSBwb3RlbnRpYWwgZ290Y2hhcyBsaWtlIGluY29ycmVjdCByZXNvdXJjZSByZXF1ZXN0cywgb3Zlcmxvb2tlZCBlcnJvciBoYW5kbGluZywgb3IsIG9mIGNvdXJzZSwgYW55IHF1aXJreSBzaWxpY29uLXNwZWNpZmljIHdvcmthcm91bmRzLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIFBDSSBkZXZpY2UgcHJvYmUgc2VxdWVuY2UgYnV0IEkgd2lsbCBxdWlja2x5IGJlIGxvb2tpbmcgZm9yIHRoZSBzdG1tYWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBJJiMzOTtsbCBiZSBrZWVwaW5nIGEgbG9va291dCBmb3IgYW55IHVudXN1YWwgcmVnaXN0ZXIgc2V0dGluZ3Mgb3IgY2xvY2sgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgZG9uZSBhdCB0aGlzIHN0YWdlIGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSB0aGUgUENJIGRldmljZSBhbmQgaWYgaXQgaW50ZXJhY3RzIGNsZWFubHkgd2l0aCB0aGUgYnJvYWRlciBzdG1tYWMgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExODpcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMTk6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEyMDpcdHtcbiAxMjE6XHRcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuIDEyMjpcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuIDEyMzpcdFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XG4gMTI0Olx0XHRpbnQgcmV0O1xuIDEyNTpcdFx0aW50IGk7XG4gMTI2Olx0XG4gMTI3Olx0XHRwbGF0ID0gc3RtbWFjX3BsYXRfZGF0X2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAxMjg6XHRcdGlmICghcGxhdClcbiAxMjk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTMwOlx0XG4gMTMxOlx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMTMyOlx0XHRcdFx0XHRcdCAgIHNpemVvZigqcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhKSxcbiAxMzM6XHRcdFx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4gMTM0Olx0XHRpZiAoIXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YSlcbiAxMzU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTM2Olx0XG4gMTM3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAxMzg6XHRcdFx0XHRcdFx0ICAgICBzaXplb2YoKnBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcbiAxMzk6XHRcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbiAxNDA6XHRcdGlmICghcGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmcpXG4gMTQxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDE0MjpcdFxuIDE0MzpcdFx0LyogRW5hYmxlIHBjaSBkZXZpY2UgKi9cbiAxNDQ6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAxNDU6XHRcdGlmIChyZXQpIHtcbiAxNDY6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcblwmIzM0OyxcbiAxNDc6XHRcdFx0XHRfX2Z1bmNfXyk7XG4gMTQ4Olx0XHRcdHJldHVybiByZXQ7XG4gMTQ5Olx0XHR9XG4gMTUwOlx0XG4gMTUxOlx0XHQvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkZXZpY2UgKi9cbiAxNTI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkmIzQzOyYjNDM7KSB7XG4gMTUzOlx0XHRcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIGkpID09IDApXG4gMTU0Olx0XHRcdFx0Y29udGludWU7XG4gMTU1Olx0XHRcdHJlcy5hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgaSwgU1RNTUFDX1JFU09VUkNFX05BTUUpO1xuIDE1NjpcdFx0XHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcbiAxNTc6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihyZXMuYWRkcik7XG4gMTU4Olx0XHRcdGJyZWFrO1xuIDE1OTpcdFx0fVxuIDE2MDpcdFxuIDE2MTpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMTYyOlx0XG4gMTYzOlx0XHRyZXQgPSBpbmZvLVx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xuIDE2NDpcdFx0aWYgKHJldClcbiAxNjU6XHRcdFx0cmV0dXJuIHJldDtcbiAxNjY6XHRcbiAxNjc6XHRcdHJlcy53b2xfaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY4Olx0XHRyZXMuaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY5Olx0XG4gMTcwOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2V0c29lZSA9IDE7XG4gMTcxOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhwZWUgPSAxO1xuIDE3MjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbWVzdGVlID0gMTtcbiAxNzM6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1yeGVlID0gMTtcbiAxNzQ6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW10eGVlID0gMTtcbiAxNzU6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVwc2kgPSAxO1xuIDE3NjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlZWRwcCA9IDE7XG4gMTc3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VwcnR5ZW4gPSAxO1xuIDE3ODpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldG1vdXRlbiA9IDE7XG4gMTc5Olx0XG4gMTgwOlx0XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbiAxODE6XHRcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbiAxODI6XHRcbiAxODM6XHRcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuIDE4NDpcdH1cbiAxODU6XHRcbiAxODY6XHQvKipcbiAxODc6XHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxuIDE4ODpcdCAqXG4gMTg5Olx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4gMTkwOlx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cbiAxOTE6XHQgKi9cbiAxOTI6XHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAxOTM6XHR7XG4gMTk0Olx0XHRzdG1tYWNfZHZyX3JlbW92ZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXG4gMTk4Olx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1x0XHQweDA3MDBcbiAxOTk6XHRcbiAyMDA6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbiAyMDE6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1lOT1BTWVNfR01BQzVfSURcdFx0MHg3MTAyXG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuIDIwNDpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuIDIwNzpcdFx0e31cbiAyMDg6XHR9O1xuIDIwOTpcdFxuIDIxMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbiAyMTM6XHRcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4gMjE0Olx0XHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG4gMjE1Olx0XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuIDIxNjpcdFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuIDIxNzpcdFx0LmRyaXZlciAgICAgICAgID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk4MAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBQcm9iZSoqCgpPa2F5LCBzbyBgc3RtbWFjX3BjaV9wcm9iZWAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgUENJIHZlcnNpb24gb2YgdGhlIFNUTU1BQyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjYWxsaW5nIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSDigJMgdGhlIFBDSS1zcGVjaWZpYyBwcm9iZSBsaWtlbHkgc2V0cyB1cCB0aGUgUENJIHJlc291cmNlcyBhbmQgdGhlbiBoYW5kcyBvZmYgdGhlIG1lYXQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHRvIGEgbW9yZSBnZW5lcmljIGRldmljZSBkcml2ZXIgcHJvYmUuIExldCYjMzk7cyBzZWUgd2hhdCBgc3RtbWFjX2R2cl9wcm9iZWAgaXMgZG9pbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyB0aGVyZSB0byBnZXQgdGhlIGJpZyBwaWN0dXJlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgc2V0dGluZyB1cCB0aGUgc2hhcmVkIGFuZCBkZXZpY2Utc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzLCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCBhbmQgbGlrZWx5IHJlZ2lzdGVyaW5nIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCYjMzk7cyBoYW5kbGluZyB0aGUgRE1BIGRlc2NyaXB0b3JzIGFuZCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTM9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDE0OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNS1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5MT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NzkzOnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5NC1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5NjogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTctICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMDU6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTA2LVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTE2Olx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTctXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjI6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0OD1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM0MQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQ2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjX2R2cl9wcm9iZWAgZnVuY3Rpb24uIFRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyIGlzIGV2ZW4gdG91Y2hpbmcgaXQgbWVhbnMgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIGl0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gU3l6a2FsbGVyJiMzOTtzIHByZXR0eSBjbGV2ZXIsIGl0IGNhbiB0ZXN0IFBDSSBkcml2ZXJzIGlmIHRoZXkgZG9uJiMzOTt0IGRlcGVuZCBvbiBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzLCBvciBpZiBRRU1VIGVtdWxhdGVzIHRoZSBoYXJkd2FyZS4gQW5kIHRoaW5raW5nIGFib3V0IGl0LCB5ZWFoLCBRRU1VIGhhcyBgaHcvbmV0L2Rlc2lnbndhcmUuY2AsIHdoaWNoIGlzIHRoZSBEZXNpZ25XYXJlIE1BQy4KCkkgY2FuJiMzOTt0IGluc3RhbnRseSB2ZXJpZnkgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkga25vdyBgZGVzaWdud2FyZWAgaXMgYSBjb21tb24gSVAgYmxvY2sgYW5kIFFFTVUgZW11bGF0ZXMgaXQgZm9yIHNvbWUgQVJNIGJvYXJkcywgbGlrZSB0aGUgYWxsd2lubmVyIGFuZCBpTVggb25lczsgZXZlbiBYaWxpbnggdXNlcyBpdCEgUUVNVSAqZGVmaW5pdGVseSogaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCBmb3IgYHN0bW1hY2AuIEFuZCwgd2FpdCwgd2UmIzM5O3ZlIGdvdCBgc3l6X3BjaV9zZXR1cGAsIHNvIHdlIGNhbiBpbmplY3QgUENJIGRldmljZXMuCgpCdXQgdGhlIGFjdHVhbCBwYXRjaCBpcyBhYm91dCBgc3RtbWFjX3J4X29mZnNldGAuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBjb2RlOgoKYGBgYwpzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQp7CglpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQoJCXJldHVybiBYRFBfUEFDS0VUX0hFQURST09NOwoKCXJldHVybiBORVRfU0tCX1BBRCAmIzQzOyBORVRfSVBfQUxJR047Cn0KYGBgCgpPa2F5LCBzbyBpdCBhZGRzIGBORVRfSVBfQUxJR05gIHRvIHRoZSBSWCBvZmZzZXQuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgaXQgYWZmZWN0cyBob3cgU0tCcyBhcmUgYWxsb2NhdGVkIGFuZCBhbGlnbmVkIGluIG1lbW9yeS4gSXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBDaGFuZ2VzIHRvIFJYIHBhY2tldCBtZW1vcnkgbGF5b3V0IGNhbiBoYXZlIGEgcmlwcGxlIGVmZmVjdCBvbiBYRFAsIFNLQiBwYXJzaW5nIGFuZCBETUEuIEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbWlzaW50ZXJwcmV0YXRpb24gYnVncy4KCldoYXQgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCB0byByZXByb2R1Y2UgdGhpcz8gSSB0aGluayB3ZSYjMzk7bGwgbmVlZCBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCB0aGVuIGVpdGhlciBgQ09ORklHX1NUTU1BQ19QQ0lgIG9yIGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQxOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBLY29uZmlnIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBTVE1NQUNfRVRIIEtjb25maWcqKgoKT2theSwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZvciBgU1RNTUFDX0VUSGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gRmlyc3QsIEkmIzM5O2xsIHNjYW4gdGhlIGZpbGUgZm9yIHRoZSBtYWluIGBjb25maWdgIHN5bWJvbC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBkZWZpbml0aW9uIG9mIGBTVE1NQUNfRVRIYCBpdHNlbGYg4oCTIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gVGhlbiwgSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCB0byBzZWUgaG93IGl0JiMzOTtzIGJyb2tlbiBkb3duOyBhcmUgdGhlcmUgc3ViLW9wdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBNQUMgdmFyaWFudCwgUEhZIGludGVyZmFjZSwgb3IgRE1BIGVuZ2luZT8KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llczogV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgYFNUTU1BQ19FVEhgIGNhbiBldmVuIGJlIGNvbnNpZGVyZWQ/IGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGFyZSBrZXkgaGVyZS4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyBzZXQ/IFRoYXQgdGVsbHMgbWUgd2hhdCB0aGUgY29tbW9uIG9yIGJhc2UgY29uZmlndXJhdGlvbiBpcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgc2VsZWN0YCBzdGF0ZW1lbnRzIHRvbzogV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgaW1wbGljaXRseSBlbmFibGVkIHdoZW4gYFNUTU1BQ19FVEhgIGlzIHNlbGVjdGVkPyBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgZXNzZW50aWFsLgoKTmV4dCwgSSYjMzk7bGwgY2hlY2sgZm9yIGFueSB0cmlzdGF0ZSBvciBib29sZWFuIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IGNoYW5nZSB0aGUgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBkcml2ZXIuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbiBhdmFpbGFibGUgaW4gdGhlIEtjb25maWcsIGVzcGVjaWFsbHkgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCgpGaW5hbGx5LCBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhpcyBLY29uZmlnIHdpdGggdGhlIGRyaXZlciBzb3VyY2UgY29kZSBpdHNlbGYuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgI2lmZGVmYCBvciBzaW1pbGFyIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBvcHRpb25zIEkmIzM5O20gc2VlaW5nIGluIHRoZSBLY29uZmlnLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBhY3R1YWwgZHJpdmVyJiMzOTtzIGJlaGF2aW9yLiBUaGlzIGlzIGFsbCBwYXJ0IG9mIGhvdyBJIGFwcHJvYWNoIEtjb25maWcsIGl0IGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgYSBkcml2ZXIgaXMgZGVwbG95ZWQuIFRoaXMgaXMgaG93IEkmIzM5O2xsIGV4dHJhY3QgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYFNUTU1BQ19FVEhgIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBTVE1NQUNfUENJYCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbSwgcHJlc3VtYWJseSBjb25jZXJuaW5nIFBDSS1iYXNlZCBjb25uZWN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byByZWNhbGwgdGhlIHJlbGV2YW50IFBDSSBidXMgYXJjaGl0ZWN0dXJlIGRldGFpbHMgYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgbG9naWMuIFdoYXQmIzM5O3MgdGhlIHNwZWNpZmljIHRhcmdldCBoZXJlPyBBcmUgd2UgbG9va2luZyBhdCBkcml2ZXIgaW1wbGVtZW50YXRpb24sIGhhcmR3YXJlIHJlZ2lzdGVycywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpbGwgaW5mb3JtIHRoZSBzcGVjaWZpY3MgSSBsb29rIGF0LiBJdOKAmXMgbGlrZWx5IGEgZHJpdmVyIG1vZHVsZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSB0byBlbnN1cmUgSSBkb27igJl0IHdhc3RlIHRpbWUuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggdGhlIGtlcm5lbCBzb3VyY2UgZm9yIHRoZSBgU1RNTUFDX1BDSWAgZHJpdmVyIGlmIHRoZXJlIGlzIG9uZSwgYW5kIHBlcmhhcHMgbG9vayBhdCB0aGUgcmVsZXZhbnQgZGF0YSBzaGVldHMgdG8gc2VlIHRoZSBleHBlY3RlZCBkZXZpY2UgYmVoYXZpb3VyIGF0IHRoZSBoYXJkd2FyZSBsZXZlbC4gSSB3aWxsIHBheSBhdHRlbnRpb24gdG8gaW50ZXJydXB0cyBhbmQgRE1BIGNvbmZpZ3VyYXRpb25zLCBhcyB0aGVzZSBhcmUgb2Z0ZW4gYm90dGxlbmVja3Mgb3IgcG9pbnRzIG9mIGludGVyZXN0IGZvciB0dW5pbmcuIFRoZSBnb2FsIGlzIHRvIHJlZnJlc2ggdGhlIGFyY2hpdGVjdHVyZSBhbmQgdW5kZXJzdGFuZCB0aGUgY3JpdGljYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjk0OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgU1RNTUFDX1BDSWAgRGVwZW5kZW5jeSBDaGFpbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGxpbmVhZ2UgYW5kIHNlZSBob3cgdGhpcyBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlciBpbnRlcmZhY2VzIHdpdGggdGhlIFBDSSBidXMuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgY29tcG9uZW50cywgcG90ZW50aWFsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgYW5kIGFueSBuZWNlc3Nhcnkgc2hhcmVkIGxpYnJhcmllcyBvciBrZXJuZWwgbW9kdWxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBzdWJzeXN0ZW1zIHJlbHkgb24gdGhpcyBzcGVjaWZpYyBkcml2ZXIgdG8gZ2V0IGEgaG9saXN0aWMgdmlldy4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIGFuZCBvdGhlciBrZXkgYXNwZWN0cy4gSSBhbSBnb2luZyB0byBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIGJ1cyBpdHNlbGYuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyBpbnRlcnJ1cHRzIGFyZSBoYW5kbGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3csIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBzaGFyZWQgbWVtb3J5IHJlZ2lvbnMgd2lsbCBiZSBrZXkuIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDQyMDpcdGVuZGlmICMgU1RNTUFDX0VUSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQyNgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIFJlY2VpdmUgT2Zmc2V0KioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIFNUTU1BQyBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSBzZWUgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb25zLCBidXQgbm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIGBzdG1tYWNfcnhfb2Zmc2V0YC4gSXQgbG9va3MgbGlrZSB0aGF0IGZ1bmN0aW9uIGlzIHR1Y2tlZCBhd2F5IGluIGBzdG1tYWNfbWFpbi5jYC4gTXkgZ29hbCBpcyB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgb3IgdXNlZC4KClNpbmNlIEkgYW0gbW9zdCBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIsIEkgbmVlZCBhIGdvb2QgZm9jdXMgc3ltYm9sLiBgc3RtbWFjX3J4X29mZnNldGAgaXRzZWxmIGlzbiYjMzk7dCBhIGdyZWF0IGNob2ljZSwgdGhvdWdoLCBiZWNhdXNlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpbWl0ZWQgaW4gc2NvcGUgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHBpZWNlcyBvZiB0aGUgY29kZSBkZXBlbmQgb24gaXQuIExldCYjMzk7cyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICpjYWxsaW5nKiBgc3RtbWFjX3J4X29mZnNldGAuIE9rYXksIGl0JiMzOTtzIGNhbGxlZCBieSBgc3RtbWFjX2luaXRfcnhfYnVmZmVyc2AgYW5kIGBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AuIE5vdyBJJiMzOTttIGNoZWNraW5nIHRvIHNlZSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGFsc28gc3RhdGljLCB3aGljaCB3b3VsZCBmdXJ0aGVyIGNvbnN0cmFpbiBteSBhYmlsaXR5IHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19pbml0X3J4X2J1ZmZlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjEyPXN0YXRpYyB2b2lkIHN0bW1hY19jbGVhcl9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjI4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjI5OiAqIHN0bW1hY19pbml0X3J4X2J1ZmZlcnMgLSBpbml0IHRoZSBSWCBkZXNjcmlwdG9yIGJ1ZmZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTYzMC0gKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjM4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjM5OnN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcnhfYnVmZmVycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NDAtXHRcdFx0XHQgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTc2ND1zdGF0aWMgaW50IHN0bW1hY19hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3Nzc6XHRcdHJldCA9IHN0bW1hY19pbml0X3J4X2J1ZmZlcnMocHJpdiwgZG1hX2NvbmYsIHAsIGksIGZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzc4LVx0XHRcdFx0XHQgICAgIHF1ZXVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyNzkKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDb25zaWRlcmluZyBSZXNvdXJjZSBBbGxvY2F0aW9uIGluIHRoZSBTVE1NQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHN0bW1hY19hbGxvY19yeF9idWZmZXJzYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBtYWtlcyBtZSB0aGluayBhYm91dCBpdHMgc2NvcGUgd2l0aGluIHRoZSBkcml2ZXIuIEl0JiMzOTtzIHByb2JhYmx5IG9ubHkgY2FsbGVkIGludGVybmFsbHksIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBhbiBhbGxvY2F0aW9uIGZ1bmN0aW9uLiBCdXQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciByZXNvdXJjZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4KClNwZWNpZmljYWxseSwgd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlc2A/IElzIGl0IGFsc28gc3RhdGljPyBJcyBpdCBzaW1pbGFybHkgc2NvcGVkPyBBcmUgdGhleSBjYWxsZWQgaW4gYSBjb29yZGluYXRlZCBtYW5uZXI/IEFyZSB0aGVyZSBhbnkgcmVzb3VyY2Utc2hhcmluZyBpbXBsaWNhdGlvbnMgb3IgcG90ZW50aWFsIGNvbnRlbnRpb24gaXNzdWVzIGlmIHRoZXNlIGFsbG9jYXRpb24gZnVuY3Rpb25zIGhhdmUgb3ZlcmxhcHBpbmcgcHVycG9zZXMsIG9yIGFyZSBpbnZvbHZlZCBpbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIG92ZXJhbGwgUlggZGVzY3JpcHRvciBzZXR1cD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJlc291cmNlIGFsbG9jYXRpb24gZnVuY3Rpb25zIHJlbGF0ZSB0byBlYWNoIG90aGVyLCBzbyBJIGNhbiBlbnN1cmUgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZWZmaWNpZW50IGFuZCBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMDY9c3RhdGljIHZvaWQgZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxNy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIxODogKiBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyAtIGFsbG9jIFJYIHJlc291cmNlcyAocGVyIHF1ZXVlKS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxOS0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMjYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMjc6c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMjgtXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIzMDE9c3RhdGljIGludCBhbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMwOS1cdGZvciAocXVldWUgPSAwOyBxdWV1ZSBcdTAwM2MgcnhfY291bnQ7IHF1ZXVlJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzEwOlx0XHRyZXQgPSBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzExLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzAwNT12b2lkIHN0bW1hY19lbmFibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDEyOlx0cmV0ID0gX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDEzLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE5OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFJYIFF1ZXVlIEVuYWJsZW1lbnQgaW4gc3RtbWFjKioKCkhtbSwgc28gYHN0bW1hY19lbmFibGVfcnhfcXVldWVgIGlzbiYjMzk7dCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgYSBiaXQgdW5leHBlY3RlZC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IG1pZ2h0IGJlIGEgbW9kdWxlLWludGVybmFsIGhlbHBlci4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCAqaXMqIGJlaW5nIGNhbGxlZC4gU2luY2UgaXQmIzM5O3Mgbm90IHN0YXRpYywgdGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgcGFydCBvZiB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLCBvciBhdCBsZWFzdCBjYWxsZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRyaXZlci4gTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdXRpbGl6ZWQuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpcyBwcm9iYWJseSB3aXRoaW4gdGhlIGBzdG1tYWNfb3BlbmAgZnVuY3Rpb24sIG9yIHBvdGVudGlhbGx5IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGJyaW5ndXAgbGlrZSB0aGUgcHJvYmUuIEl0IHdvdWxkIGJlIGF0IHRoaXMgcG9pbnQgdGhhdCB0aGUgaGFyZHdhcmUgd291bGQgYmUgZW5hYmxlZCwgb3Igbm90LCBpbiByZWxhdGlvbiB0byB0aGUgcnggcXVldWUgZnVuY3Rpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfb3BlbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNTA9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMTY6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDExNy0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTI1OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI2LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxODM6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMTE6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDE9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzc6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMwODpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzA5LVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTk0PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTMtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjE0Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYxOT1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMC1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MzE6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTgyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIERhdGEgUGF0aCBvZiBgc3RtbWFjX3J4X29mZnNldGAqKgoKQWxyaWdodCwgSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBgc3RtbWFjYCBkcml2ZXIgY29kZS4gUmlnaHQsIGBzdG1tYWNfb3BlbmAuLi4gdGhhdCYjMzk7cyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjaywgd2hpY2ggbWFrZXMgc2Vuc2UuIEhtbSwgYnV0IGl0JiMzOTtzICpzdGF0aWMqLiBUaGF04oCZcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSSBuZWVkIHRvIGZpbmQgdGhlIGRhdGEgcGF0aCB0aGF0IHJlYWNoZXMgYHN0bW1hY19yeF9vZmZzZXRgLiAgSWYgYHN0bW1hY19vcGVuYCBpcyBzdGF0aWMsIHRoZW4gd2hvIGlzIHVzaW5nIHRoaXMgdGhpbmc/IEkgbmVlZCB0byBmaW5kIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IGNhbGxzIG9yIGlzIHJlbGF0ZWQgdG8gYHN0bW1hY19yeF9vZmZzZXRgLiAKCkFoISBIZXJlIHdlIGdvLCBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgaXMgKm5vdCogc3RhdGljLiBHb29kISBUaGF0JiMzOTtzIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50LiBOb3csIGxldCYjMzk7cyBjaGVjayBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgYW5kIHNlZSBpZiB0aGlzIHByb3ZpZGVzIHRoZSBsaW5rIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00Mjk9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MzA6dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQzMS12b2lkIHN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5OTI9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMDU6dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDA2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM9OT1zdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00NS1cdGlmIChuZWVkX3VwZGF0ZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjQ2Olx0XHRzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00Ny1cdFx0c3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTU4PXN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTg1LVx0aWYgKG5lZWRfdXBkYXRlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6ODY6XHRcdHN0bW1hY19lbmFibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTg3LVx0XHRzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1ODAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhvc2UgZnVuY3Rpb24gbmFtZXMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkZ1bmN0aW9uIFByb2JlIEFuYWx5c2lzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGBzdG1tYWNfeGRwX3NldHVwX3Bvb2xgIOKAkyB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZDsgaXQmIzM5O3MgZ290ICYjMzQ7WERQJiMzNDsgcmlnaHQgdGhlcmUgaW4gdGhlIG5hbWUuIEl0JiMzOTtzIGNsZWFybHkgZGVhbGluZyB3aXRoIFhEUCBzZXR1cCwgcHJvYmFibHkgbWVtb3J5IHBvb2xzIG9yIHJpbmcgYnVmZmVycy4gTm93LCBgc3RtbWFjX2R2cl9wcm9iZWAuLi4gdGhhdCYjMzk7cyB0aGUgZHJpdmVyIHByb2JlLCBhbmQgc2luY2UgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBpdCYjMzk7cyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlci4gSXQmIzM5O3MgdGhlIGJpZyBvbmUuIFRoZW4gd2UgaGF2ZSBgc3RtbWFjX3BjaV9wcm9iZWAsIHdoaWNoICppcyogc3RhdGljOyBzbywgdGhhdCYjMzk7cyBsaWtlbHkgYSBwcm9iZSBzcGVjaWZpY2FsbHkgZm9yIFBDSSBkZXZpY2VzLCBhbmQgcHJvYmFibHkgY2FsbGVkIGZyb20gYHN0bW1hY19kdnJfcHJvYmVgLiBGaW5hbGx5LCBgc3RtbWFjX3BsdGZyX3Byb2JlYCBpcyBhbHNvIG5vbi1zdGF0aWM7ICYjMzQ7cGx0ZnImIzM0OyBwcm9iYWJseSBtZWFucyBwbGF0Zm9ybS4gU2luY2UgYHN0bW1hY19kdnJfcHJvYmVgIGlzIG5vbi1zdGF0aWMsIGxldCYjMzk7cyBkaWcgaW50byBgc3RtbWFjX3BsdGZyX3Byb2JlYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3BsdGZyX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjExNjpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTI5PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjY0Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz0xOT1zdGF0aWMgaW50IGR3bWFjX2dlbmVyaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NDk6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0yOTM9c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNTQ6XHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzU1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MTU0PXN0YXRpYyBpbnQgaW5nZW5pY19tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjIxNTpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjA0Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIwNS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTgyPXN0YXRpYyBpbnQgbnZ0X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjExNTpcdHJldHVybiBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTExNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02ODQ9c3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3OTc6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03OTgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxOTc6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNTY4PXN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYxMzpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIxMzpcdHJldHVybiBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxNC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY1NTpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjU2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYz0yNDk9c3RhdGljIGludCBzdGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzoyODk6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xMDU9c3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjEzODpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTk1Olx0cmV0ID0gc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz05OT1zdGF0aWMgaW50IHN1bjdpX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTQ3Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTQ4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jPTIxNj1zdGF0aWMgaW50IHRoZWFkX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjI2NDpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04MzM9c3RhdGljIGludCBzdG1tYWNfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NDE6ICogc3RtbWFjX3BsdGZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDItICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODQ3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODQ4OmludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0OS1cdFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU5OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbHRmcl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04NjE9c3RhdGljIHZvaWQgZGV2bV9zdG1tYWNfcGx0ZnJfcmVtb3ZlKHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODY5OiAqIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzAtICogQHBkZXY6IHBvaW50ZXIgdG8gdGhlIHBsYXRmb3JtIGRldmljZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg3Mi0gKiBAcmVzOiBzdG1tYWMgcmVzb3VyY2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzM6ICogRGVzY3JpcHRpb246IERldnJlcyB2YXJpYW50IG9mIHN0bW1hY19wbHRmcl9wcm9iZSgpLiBBbGxvd3MgdXNlcnMgdG8gc2tpcFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc0LSAqIGNhbGxpbmcgc3RtbWFjX3BsdGZyX3JlbW92ZSgpIG9uIGRyaXZlciBkZXRhY2guXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzY6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzctXHRcdFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04ODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4ODI6XHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg4My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODg4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChkZXZtX3N0bW1hY19wbHRmcl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04OTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODkzLSAqIEBwZGV2OiBwb2ludGVyIHRvIHRoZSBwbGF0Zm9ybSBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg5NDogKiBEZXNjcmlwdGlvbjogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2Ygc3RtbWFjX3BsdGZyX3Byb2JlKCkgYnkgcmVtb3ZpbmcgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04OTUtICogZHJpdmVyIGFuZCBjYWxsaW5nIHRoZSBwbGF0Zm9ybSYjMzk7cyBleGl0KCkgY2FsbGJhY2suXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MjA9aW50IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMzppbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yNC1cdFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI1LVx0XHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyNjppbnQgZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI3LVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDc1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYHN0bW1hY2AgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGFuZCBJIHNlZSB0aGF0IGJvdGggYHN0bW1hY19wbHRmcl9wcm9iZWAgYW5kIGBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZWAgYXJlIGV4cG9ydGVkLCBhbG9uZyB3aXRoIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhvc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhvc2Ugc3ltYm9scyBhcyB0aGV5IGxvb2sgbGlrZSBrZXkgZW50cnkgcG9pbnRzLgoKQnV0IGhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHN0bW1hY19yeF9vZmZzZXRgIGdldHMgY2FsbGVkIHdpdGhpbiBgc3RtbWFjX29wZW5gLiBBbmQgYHN0bW1hY19vcGVuYCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYG5kb19vcGVuYCBjYWxsYmFjay4gTm93LCBteSBtaW5kIGlzIHJhY2luZzsgYXJlIHRoZXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGludm9rZWQgKmR1cmluZyogdGhlIGV4ZWN1dGlvbiBvZiBgbmRvX29wZW5gPyBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBpbmZvcm1hdGlvbi4KClRoaW5raW5nIGEgYml0IG1vcmUsIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgYm90aCBhbHNvIGNhbGwgYHN0bW1hY19vcGVuYC4gQWxyaWdodCwgSSB0aGluayBJJiMzOTtsbCBkaXZlIGEgbGl0dGxlIGRlZXBlciBpbnRvIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgdG8gc2VlIHdoZXJlIGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcmVpbml0X3F1ZXVlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTQ9aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNi1cdFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQxNzppbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDE4LWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9OTg5PXN0YXRpYyBpbnQgc3RtbWFjX3NldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtOTk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzo5OTk6XHRyZXR1cm4gc3RtbWFjX3JlaW5pdF9xdWV1ZXMoZGV2LCBjaGFuLVx1MDAzZXJ4X2NvdW50LCBjaGFuLVx1MDAzZXR4X2NvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMTAwMC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTczPXN0YXRpYyB2b2lkIHN0bW1hY19uYXBpX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzU5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzU5NDppbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1OTUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzA2NQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBtb3N0IHByb21pc2luZyBlbnRyeSBwb2ludHMgYW5kIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIgZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgYHN0bW1hY19yZWluaXRfcXVldWVzYCBpcyB0cmlnZ2VyZWQgYnkgYGV0aHRvb2wgc2V0X2NoYW5uZWxzYCwgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgaXMgdGllZCB0byBgZXRodG9vbCBzZXRfcmluZ3BhcmFtYC4gVGhlc2UgYXJlIGJvdGggZXhjZWxsZW50IHRhcmdldHMgYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB3YXlzIHRvIGR5bmFtaWNhbGx5IHJlY29uZmlndXJlIHRoZSBkcml2ZXIgYWZ0ZXIgaW5pdGlhbCBzZXR1cCwgd2hpY2ggb2Z0ZW4gZXhwb3NlcyBtb3JlIGludGVyZXN0aW5nIGNvZGUgcGF0aHMuIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCBpcyBhbHNvIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gWERQIHNldHVwLCBtZWFuaW5nIHRoaXMgc2hvdWxkIGJlIGEgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBpcyBvZnRlbiB0ZXN0ZWQuCgpJJiMzOTt2ZSBhbHJlYWR5IGlkZW50aWZpZWQgdGhlc2UgYXMgc2lnbmlmaWNhbnQgY2FsbCB0YXJnZXRzOgoqICAgYHN0bW1hY19kdnJfcHJvYmVgCiogICBgc3RtbWFjX3BsdGZyX3Byb2JlYAoqICAgYGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlYAoqICAgYHN0bW1hY19yZWluaXRfcXVldWVzYAoqICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYAoqICAgYHN0bW1hY19lbmFibGVfcnhfcXVldWVgCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgYnJvYWRlciBjb250ZXh0LiBgc3RtbWFjX3J4X29mZnNldGAgZ2V0cyBjYWxsZWQgZnJvbSBgc3RtbWFjX2luaXRfcnhfYnVmZmVyc2AsIHdoaWNoIGNhc2NhZGVzIGRvd24gdGhyb3VnaCBgc3RtbWFjX2FsbG9jX3J4X2J1ZmZlcnNgLCBgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYW5kIGZpbmFsbHkgYF9fc3RtbWFjX29wZW5gLiBBbmQgYF9fc3RtbWFjX29wZW5gIGlzLCBpbiBmYWN0LCBzdGF0aWMsIGFuZCBgc3RtbWFjX29wZW5gIGlzIHRvbywgYWx0aG91Z2ggaXQgaXMgYXNzaWduZWQgdG8gYG5kb19vcGVuYC4gU28sIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBtYWluIHByb2JlIGVudHJ5IHBvaW50LgoKVGhlcmVmb3JlLCBmb3IgZWZmZWN0aXZlIGZ1enppbmcsIEkgc2hvdWxkIGZvY3VzIG9uIGBzdG1tYWNfZHZyX3Byb2JlYCBhcyBhIHByaW1hcnkgZW50cnkgcG9pbnQsIGFsb25nIHdpdGggdGhlIGV0aHRvb2wgYW5kIFhEUCBwYXRocyB0aGF0IHJlLWluaXRpYWxpemUgdGhlIHJpbmdzLiBNeSByZWZpbmVkIGZvY3VzIHN5bWJvbHMgd2lsbCBiZToKKiAgIGBzdG1tYWNfZHZyX3Byb2JlYAoqICAgYHN0bW1hY19yZWluaXRfcXVldWVzYAoqICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYAoqICAgYHN0bW1hY19lbmFibGVfcnhfcXVldWVgCgpUbyBidWlsZCB0aGUgZW52aXJvbm1lbnQgSSYjMzk7bGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOgoqICAgYFNUTU1BQ19FVEhgCiogICBgU1RNTUFDX1BDSWAKKiAgIGBTVE1NQUNfUExBVEZPUk1gCgpJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBgU1RNTUFDX1BDSWAgaXMgc3VmZmljaWVudCB0byBjb21waWxlIGBzdG1tYWNfcGNpLmNgLCBidXQgaXQgc2hvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcdCYjNDM7PSBkd21hYy1tb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTgxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgbGluZToKCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIGxpbmU6IGBzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9gLiBSaWdodCBhd2F5LCBteSBicmFpbiBmbGFncyB0aGlzIGFzIGEgYnVpbGQgc3lzdGVtIGRpcmVjdGl2ZSwgcHJvYmFibHkgZnJvbSBhIGBNYWtlZmlsZWAgb3Igc2ltaWxhci4gVGhlIGZvcm1hdCBpcyB0eXBpY2FsOiBzZXR0aW5nIGEgdmFyaWFibGUsIGBzdG1tYWMtcGNpLW9ianNgLCB0byBhIHNwZWNpZmljIG9iamVjdCBmaWxlLCBgc3RtbWFjX3BjaS5vYC4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgYnVpbGRpbmcgYSBtb2R1bGUgb3IgYSBjb21wb25lbnQgcmVsYXRlZCB0byBhbiBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFBDSSB2YXJpYW50LCBpZiBJJiMzOTttIGludGVycHJldGluZyAmIzM0O1BDSSYjMzQ7IGNvcnJlY3RseS4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IFdoYXQgaXMgdGhlIGNvbnRleHQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0bW1hYy1wY2ktb2Jqc2AgbWVhbnMgaW4gdGhlIGxhcmdlciBzY2hlbWUgb2YgdGhpbmdzLiBJdCYjMzk7cyBsaWtlbHkgZGVmaW5pbmcgYSBsaXN0IG9mIG9iamVjdCBmaWxlcyB0aGF0LCB3aGVuIGxpbmtlZCB0b2dldGhlciwgd2lsbCBwcm9kdWNlIHNvbWUgb3V0cHV0IGZpbGUg4oCTIG1heWJlIGEgYC5rb2Aga2VybmVsIG1vZHVsZSwgYSBzdGF0aWNhbGx5IGxpbmtlZCBsaWJyYXJ5LCBvciBwYXJ0IG9mIGEgbGFyZ2VyIGJpbmFyeS4KClNvLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAuIEkgd2FudCB0byBrbm93IGhvdyBgU1RNTUFDX1BDSWAgZmFjdG9ycyBpbnRvIGFsbCBvZiB0aGlzLiBJcyBpdCBhIGNvbmRpdGlvbmFsIHZhcmlhYmxlPyBEb2VzIGl0IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiBgc3RtbWFjX3BjaS5vYCBpbiB0aGUgYnVpbGQgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBzb21lIG90aGVyIGRlcGVuZGVuY3kgb3IgZmVhdHVyZT8gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgdXNhZ2Ugb2YgYFNUTU1BQ19QQ0lgIGluIHRoZSBgTWFrZWZpbGVgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGlzIGNvdWxkIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCB0aGUgdXNlciBzZXRzLCBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIFBDSSBzdXBwb3J0IGluIHRoZSBkcml2ZXIgYnVpbGQuIExldCYjMzk7cyBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19TVE1NQUNfUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9OTg9VGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgYENPTkZJR19TVE1NQUNfRVRIYGA6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTk5LSAtIGBgQ09ORklHX1NUTU1BQ19QTEFURk9STWBgOiBpcyB0byBlbmFibGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTAwOiAtIGBgQ09ORklHX1NUTU1BQ19QQ0lgYDogaXMgdG8gZW5hYmxlIHRoZSBwY2kgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0xMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXHQmIzQzOz0gc3RtbWFjX2xpYnBjaS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0ODc5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBTVE1NQUMgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgY2xlYXIgdGhhdCBgQ09ORklHX1NUTU1BQ19QQ0lgIGlzIHJlc3BvbnNpYmxlIGZvciBidWlsZGluZyBgc3RtbWFjLXBjaS5vYCwgd2hpY2ggaW4gdHVybiBpbmNsdWRlcyBgc3RtbWFjX3BjaS5vYC4gSSYjMzk7bSB0cmFja2luZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWVpbmcgaG93IHRoZSBtb2R1bGVzIGFyZSBzdHJ1Y3R1cmVkLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwcyB0aGluZ3MgbW9kdWxhciBhbmQgb3JnYW5pemVkLiBJIHNlZSBub3cgdGhhdCBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBTVE1NQUNfUExBVEZPUk1gIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHdlIGFyZSB1c2luZy4KCkp1c3Qgd2FudCB0byBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0aG91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgaW4gdGhpcyBzcGFjZT8gVGltZSB0byBzY2FuIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIGBEV01BQ19HRU5FUklDYC4uLiBsZXQmIzM5O3Mgc2VlIHdoZXJlIHRoYXQgZml0cyBpbi4gTmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBhbGwgcG9zc2libGUgY29uZmlncyBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19HRU5FUklDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTI6Y29uZmlnIERXTUFDX0dFTkVSSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMDEKCQkJCQkJCW91dHB1dDogMTg0CgkJCQkJCQl0aG91Z2h0czogNDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgZ29vZCBoYW5kbGUgb24gaXRzIGltcGxpY2F0aW9ucy4gSW5jbHVkaW5nIGBEV01BQ19HRU5FUklDYCBsb29rcyBsaWtlIGEgc21hcnQgbW92ZSDigJMgaXQgc2hvdWxkIGJyb2FkZW4gdGhlIHBvdGVudGlhbCBmb3IgZ2VuZXJpYyBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZywgd2hpY2ggaXMgYWx3YXlzIHVzZWZ1bC4KCk5vdywgZm9jdXNpbmcgb24gdGhlIGNvcmUgb2YgdGhlIHBhdGNoLCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY2hhbmdlIGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYHN0bW1hY19yeF9vZmZzZXRgLiAgQWRkaW5nIGBORVRfSVBfQUxJR05gIHRvIHRoZSBSWCBvZmZzZXQgaXMgc2lnbmlmaWNhbnQuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIG1lbW9yeSBsYXlvdXQgb2YgcmVjZWl2ZWQgcGFja2V0cy4gU3BlY2lmaWNhbGx5LCB0aGlzIGFkanVzdG1lbnQgaW5mbHVlbmNlcyB0aGUgYGRtYV9idWZfc3pfcGFkYCBjYWxjdWxhdGlvbjoKCmBgYGMKCWRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSAmIzQzOyBkbWFfY29uZi0mZ3Q7ZG1hX2J1Zl9zeiAmIzQzOwoJCQkgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTsKYGBgCgpUaGlzICp3aWxsKiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgRE1BIGJ1ZmZlci4gVGhlIGluaXRpYWwgcmVhY3Rpb24gSSBoYWQsIGFuZCBzdGlsbCBoYXZlLCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIHNlcmlvdXMgYXR0ZW50aW9uIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBjb3VsZCBpbnRyb2R1Y2UgdW5hbGlnbmVkIElQIGhlYWRlciBhY2Nlc3NlcywgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGJ1ZmZlciBvdmVyZmxvd3MgaWYgdGhlIGJ1ZmZlciBzaXplIHdhc24mIzM5O3QgcHJvcGVybHkgcmUtc2l6ZWQgaW4gYWxsIHBhcnRzIG9mIHRoZSBjb2RlLgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYFRydWVgLiAgV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIGNvdmVyaW5nIHRoZSBjcnVjaWFsIGVudHJ5IHBvaW50cyBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMuIEkmIzM5O2xsIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gdGhlc2Ugc3ltYm9sczoKCiogICBgc3RtbWFjX2R2cl9wcm9iZWAKKiAgIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AKKiAgIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAKKiAgIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYAoKV2UmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zIHRvIGVuc3VyZSB0aGUgZnV6emluZyBpcyBjb21wcmVoZW5zaXZlLiBJJiMzOTttIHRoaW5raW5nOgoKKiAgIGBTVE1NQUNfRVRIYAoqICAgYFNUTU1BQ19QQ0lgCiogICBgU1RNTUFDX1BMQVRGT1JNYAoqICAgYERXTUFDX0dFTkVSSUNgCgpUaGUgcmVhc29uaW5nIGhlcmUgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggZGlyZWN0bHkgdG91Y2hlcyBob3cgdGhlIGRyaXZlciBjYWxjdWxhdGVzIGJ1ZmZlciBzaXplcyBmb3IgcmVjZWl2aW5nIHBhY2tldHMuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFBDSSBhbmQgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgcGF0aHMgKHRoYXQmIzM5O3Mgd2hlcmUgb3VyIGBEV01BQ19HRU5FUklDYCBpbmNsdXNpb24gaGVscHMpLiBJdCBhbHNvIGFmZmVjdHMgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uIFdlIG5lZWQgdG8gZXhwbG9yZSB0aGVzZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIHdpdGggdGhlIGVuaGFuY2VkIGJ1ZmZlciBjYWxjdWxhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgICAmIzM0O3N0bW1hY19yZWluaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O3N0bW1hY19yZWluaXRfcmluZ3BhcmFtJiMzNDssCiAgICAmIzM0O3N0bW1hY19lbmFibGVfcnhfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0bW1hY19yeF9vZmZzZXRgIHRvIGluY2x1ZGUgYE5FVF9JUF9BTElHTmAgaW4gdGhlIFJYIGJ1ZmZlciBvZmZzZXQgY2FsY3VsYXRpb24uIFRoaXMgYWx0ZXJzIHRoZSBtZW1vcnkgbGF5b3V0IGFuZCBhbGxvY2F0aW9uIHNpemUgZm9yIHJlY2VpdmVkIHBhY2tldHMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIERNQSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgcGFja2V0IHBhcnNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgUENJIG9yIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIGFuZCBuZXR3b3JrIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtEV01BQ19HRU5FUklDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVpbml0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVpbml0X3JpbmdwYXJhbSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCB0byBpbmNsdWRlIGBORVRfSVBfQUxJR05gIGluIHRoZSBSWCBidWZmZXIgb2Zmc2V0IGNhbGN1bGF0aW9uLiBUaGlzIGFsdGVycyB0aGUgbWVtb3J5IGxheW91dCBhbmQgYWxsb2NhdGlvbiBzaXplIGZvciByZWNlaXZlZCBwYWNrZXRzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBETUEgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHBhY2tldCBwYXJzaW5nLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFBDSSBvciBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZyBhbmQgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzRhNTQ5MjUwMGRhMmQ0OGVkYTk4NDljMTQ2YjBlNTZhNDlmMTMzNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDExOjM0OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0xNTI5LDcgJiM0MzsxNTI5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAlpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQogCQlyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTsKIAotCXJldHVybiBORVRfU0tCX1BBRDsKJiM0MzsJcmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTjsKIH0KIAogc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyNwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgc3RtbWFjIFJlY2VpdmUgQnVmZmVyIE9mZnNldCBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHN0bW1hY19yeF9vZmZzZXRgIHdpdGhpbiBgc3RtbWFjX21haW4uY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdHdlYWtpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHJldHVybiB2YWx1ZS4gSXQmIzM5O3MgbW92aW5nIGZyb20ganVzdCByZXR1cm5pbmcgYE5FVF9TS0JfUEFEYCB0byBgTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOYC4gU28sIHRoZSBpbXBhY3QgaXMgb24gdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSBhbnkgY2hhbmdlIHRvIHRoZSBidWZmZXIgb2Zmc2V0IGNhbiBoYXZlIHJhbWlmaWNhdGlvbnMgZm9yIGFsaWdubWVudCBhbmQgcGVyZm9ybWFuY2UsIGFuZCBpbiB0aGUgd29yc3QgY2FzZSwgcGFja2V0IHBhcnNpbmcsIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIG9mZi1ieS1vbmUgZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHNoaWZ0IGlzIGhhcHBlbmluZy4gV2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlPyBJIGtub3cgYE5FVF9JUF9BTElHTmAgaXMgdGhlIG5hdHVyYWwgYWxpZ25tZW50IGJvdW5kYXJ5IGZvciBJUCBoZWFkZXJzLCBzbyBpcyB0aGlzIGFib3V0IGltcHJvdmluZyBJUCBoZWFkZXIgcHJvY2Vzc2luZz8gT3IgYXJlIHRoZXkgdHJ5aW5nIHRvIGZpeCBzb21lIGFsaWdubWVudCBwcm9ibGVtIHdpdGggdGhlIE1BQyBpdHNlbGYgb3IgcGVyaGFwcyB0aGUgRE1BIGVuZ2luZT8gVG8gdHJ1bHkgZ3Jhc3AgdGhlIHNpZ25pZmljYW5jZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIFRpbWUgdG8gem9vbSBvdXQgYW5kIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmdW5jdGlvbiBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIHJlc3Qgb2YgdGhlIHJlY2VpdmUgcGF0aC4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgZGVwZW5kZW50IHN1YnN5c3RlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yeF9vZmZzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTUxNz1zdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGxheV9yaW5ncyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNTI3OnN0YXRpYyB1bnNpZ25lZCBpbnQgc3RtbWFjX3J4X29mZnNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE1Mjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTYzOT1zdGF0aWMgaW50IHN0bW1hY19pbml0X3J4X2J1ZmZlcnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1NC1cdFx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTY1NTpcdFx0YnVmLVx1MDAzZXBhZ2Vfb2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMjc9c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjQxOlx0ZG1hX2J1Zl9zel9wYWQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpICYjNDM7IGRtYV9jb25mLVx1MDAzZWRtYV9idWZfc3ogJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI0Mi1cdFx0XHQgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTQtXHRwcF9wYXJhbXMuZG1hX2RpciA9IHhkcF9wcm9nID8gRE1BX0JJRElSRUNUSU9OQUwgOiBETUFfRlJPTV9ERVZJQ0U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyNTU6XHRwcF9wYXJhbXMub2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI1Ni1cdHBwX3BhcmFtcy5tYXhfbGVuID0gZG1hX2NvbmYtXHUwMDNlZG1hX2J1Zl9zejtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTktXHRcdHBwX3BhcmFtcy5vZmZzZXQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjYwOlx0XHRwcF9wYXJhbXMubWF4X2xlbiAmIzQzOz0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI2MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMAoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiAzNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFJYIEJ1ZmZlciBPZmZzZXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0d2Vha2luZyB0aGUgcmVjZWl2ZSBidWZmZXIgb2Zmc2V0LCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHRzIGdvIHRvIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBzaXppbmcsIGFuZCBhbGlnbm1lbnQuIFRoZSBjb3JlIGlzc3VlIGhlcmUgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gYWxpZ25pbmcgdGhlIElQIGhlYWRlciB3aXRoaW4gdGhlIHJlY2VpdmVkIHBhY2tldCBkYXRhLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgcHJvdG9jb2xzLCBzbyBwcm9wZXIgYWxpZ25tZW50IGlzIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZSBhbmQgcHJldmVudGluZyBhbGwgc29ydHMgb2YgYWxpZ25tZW50IGZhdWx0cy4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgTkVUX0lQX0FMSUdOYCBpcyBiZWluZyBhZGRlZCB0byB0aGUgb2Zmc2V0LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgYE5FVF9JUF9BTElHTmAgaXMgdXN1YWxseSAyIGJ5dGVzLiBBZGRpbmcgdGhpcyB0byB0aGUgZXhpc3RpbmcgYE5FVF9TS0JfUEFEYCBtZWFucyB0aGUgcGFja2V0IGRhdGEgd2lsbCBlZmZlY3RpdmVseSBzdGFydCAyIGJ5dGVzIGxhdGVyIHdpdGhpbiB0aGUgYnVmZmVyLiBUaGlzIGlzIGEgY29tbW9uIHByYWN0aWNlIGluIG5ldHdvcmtpbmcgdG8gZW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgNC1ieXRlIGFsaWduZWQuIEdpdmVuIHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgMTQgYnl0ZXMsIHRoaXMgYnJpbmdzIHRoZSB0b3RhbCB0byAxNiwgYSBjbGVhbiBtdWx0aXBsZS4KCk15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzIHdoZW4gdG91Y2hpbmcgbWVtb3J5IG9mZnNldHMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIG9yIGV4cG9zZXMgYW55IHJpc2tzIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOLCBvZiBjb3Vyc2UsIGlzIG15IGdvLXRvIHRvb2wgZm9yIGRldGVjdGluZyB0aG9zZSBzb3J0cyBvZiBpc3N1ZXMuIEhvd2V2ZXIsIGFmdGVyIHRoaW5raW5nIGl0IHRocm91Z2gsIEkgZG9uJiMzOTt0IHNlZSBob3cgdGhpcyBwYXRjaCBpdHNlbGYgKmludHJvZHVjZXMqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBBbGwgaXQmIzM5O3MgZG9pbmcgaXMgc2hpZnRpbmcgd2hlcmUgdGhlIERNQSB3cml0ZXMgdGhlIHBhY2tldCBkYXRhLiBJZiBhbnl0aGluZywgaXQgc2VlbXMgbW9yZSBsaWtlbHkgdG8gKmZpeCogcG90ZW50aWFsIHVuYWxpZ25lZCBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBwcm9ibGVtcyB0aGF0IG1pZ2h0IGhhdmUgZXhpc3RlZCBwcmV2aW91c2x5LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBhdCB0aGUgY29kZToKYGBgYwpzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQp7CglpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQoJCXJldHVybiBYRFBfUEFDS0VUX0hFQURST09NOwoKCXJldHVybiBORVRfU0tCX1BBRCAmIzQzOyBORVRfSVBfQUxJR047Cn0KYGBgCgpZZXAsIGl0JiMzOTtzIGp1c3QgYWRkaW5nIGBORVRfSVBfQUxJR05gIHRvIHRoZSBvZmZzZXQuIEV4dHJlbWVseSBzdHJhaWdodGZvcndhcmQuIFRoaXMgZG9lc24mIzM5O3QgbW9kaWZ5IGRhdGEsIGl0IGp1c3QgZGVmaW5lcyB3aGVyZSB0aGUgZGF0YSBiZWdpbnMsIHNvLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtcyBoZXJlLiBJdCYjMzk7cyBzb2xlbHkgcmVsYXRlZCB0byBhbGlnbm1lbnQsIHNvLCBmb3IgbXkgcmVjb3JkcywgSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcmVjZWl2ZSBidWZmZXIgb2Zmc2V0IGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IGFkZGluZyBORVRfSVBfQUxJR04gdG8gTkVUX1NLQl9QQUQuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIGFkanVzdG1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIElQIGhlYWRlciBpcyBhbGlnbmVkIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IChzaW5jZSB0aGUgRXRoZXJuZXQgaGVhZGVyIGlzIDE0IGJ5dGVzLCBhZGRpbmcgMiBieXRlcyBvZiBwYWRkaW5nIGFsaWducyB0aGUgc3Vic2VxdWVudCBJUCBoZWFkZXIpLiBUaGlzIGNoYW5nZSBhZmZlY3RzIG1lbW9yeSBsYXlvdXQgYW5kIERNQSBidWZmZXIgb2Zmc2V0cywgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBub3IgZG9lcyBpdCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzQ6NTUuNTIwMjU5NDk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxMDc2OTg3OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIixcbiAgICBcInN0bW1hY19yZWluaXRfcXVldWVzXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3JpbmdwYXJhbVwiLFxuICAgIFwic3RtbWFjX2VuYWJsZV9yeF9xdWV1ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3J4X29mZnNldGAgdG8gaW5jbHVkZSBgTkVUX0lQX0FMSUdOYCBpbiB0aGUgUlggYnVmZmVyIG9mZnNldCBjYWxjdWxhdGlvbi4gVGhpcyBhbHRlcnMgdGhlIG1lbW9yeSBsYXlvdXQgYW5kIGFsbG9jYXRpb24gc2l6ZSBmb3IgcmVjZWl2ZWQgcGFja2V0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcGFyc2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgYW5kIG5ldHdvcmsgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNDo1NS41MjAyNjc0MjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTA1MTQ3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjM0OjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0xNTI5LDcgKzE1MjksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHRpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKVxcbiBcXHRcXHRyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTtcXG4gXFxuLVxcdHJldHVybiBORVRfU0tCX1BBRDtcXG4rXFx0cmV0dXJuIE5FVF9TS0JfUEFEICsgTkVUX0lQX0FMSUdOO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBtdHUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM0OjU2LjkzMTM5Mjc4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1MDk2NTUxMzU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIkRXTUFDX0dFTkVSSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3F1ZXVlc1wiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1cIixcbiAgICBcInN0bW1hY19lbmFibGVfcnhfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3J4X29mZnNldGAgdG8gaW5jbHVkZSBgTkVUX0lQX0FMSUdOYCBpbiB0aGUgUlggYnVmZmVyIG9mZnNldCBjYWxjdWxhdGlvbi4gVGhpcyBhbHRlcnMgdGhlIG1lbW9yeSBsYXlvdXQgYW5kIGFsbG9jYXRpb24gc2l6ZSBmb3IgcmVjZWl2ZWQgcGFja2V0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcGFyc2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgYW5kIG5ldHdvcmsgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MzQ6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xNTI5LDcgKzE1MjksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0aWYgKHN0bW1hY194ZHBfaXNfZW5hYmxlZChwcml2KSlcbiBcdFx0cmV0dXJuIFhEUF9QQUNLRVRfSEVBRFJPT007XG4gXG4tXHRyZXR1cm4gTkVUX1NLQl9QQUQ7XG4rXHRyZXR1cm4gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9iZnNpemUoaW50IG10dSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM0OjU2LjkzMTM5Mzk4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NTc1MTg5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU1RNTUFDIERyaXZlciBQYXRjaCBpbiBhIFZpcnR1YWxpemVkIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3J4X29mZnNldGAgaW4gYHN0bW1hY19tYWluLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZXkndmUgYWRkZWQgYE5FVF9JUF9BTElHTmAgdG8gdGhlIHJldHVybiB2YWx1ZSwgd2hpY2ggc3VnZ2VzdHMgYW4gYWxpZ25tZW50IGFkanVzdG1lbnQgcmVsYXRlZCB0byBJUCBoZWFkZXJzLiBJdCBzZWVtcyBsaWtlIGEgc3RhbmRhcmQgZml4LCBidXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgd2l0aGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsICpjYW4qIEkgcmVwcm9kdWNlIG9yIHRlc3QgdGhpcyBjaGFuZ2UgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGtub3cgaWYgdGhlIHN0bW1hYyBkcml2ZXIsIHdoaWNoIEkga25vdyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXIsIGlzIGV2ZW4gKnByZXNlbnQqIGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIEl0J3MgY29tbW9uIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBlbXVsYXRpb24gc3VwcG9ydCBpcyB3aGF0IG1hdHRlcnMgaGVyZS5cblxuTGV0J3Mgc2VlLi4uIFFFTVUsIGluIGdlbmVyYWwsIGhhcyBlbXVsYXRpb24gc3VwcG9ydCBmb3IgYSByYW5nZSBvZiBuZXR3b3JrIGNvbnRyb2xsZXJzLiBJIHN0YXJ0IG1lbnRhbGx5IGxpc3RpbmcgdGhlbTogYGlteF9mZWNgLCBgY2FkZW5jZV9nZW1gLCBgZnRnbWFjMTAwYCwgZXRjLiBUaGVuLCBJIHJlbWVtYmVyIHRoYXQgYHN0bW1hY2Agc3BlY2lmaWNhbGx5IHJlZmVycyB0byB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKSBjb250cm9sbGVyLCBhbmQgdGhhdCdzIHRoZSBvbmUgSSBuZWVkIHRvIGxvb2sgZm9yLiBJcyAqdGhhdCogZW11bGF0ZWQ/XG5cblRvIGNvbmZpcm0sIEkgbmVlZCB0byBjaGVjayBob3cgc3RtbWFjIGlzIGluc3RhbnRpYXRlZC4gSXMgaXQgcHJvYmVkIHZpYSBQQ0ksIG9yIGlzIGl0IHB1cmVseSBhIHBsYXRmb3JtIGRldmljZT8gSSdsbCBzZWFyY2ggZm9yIHNvbWV0aGluZyBsaWtlIGBzdG1tYWNfcGNpYCBpbiB0aGUgY29kZWJhc2UgdG8gZmlndXJlIHRoYXQgb3V0LiBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIG1lIGRldGVybWluZSB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHRlc3QgdGhpcyBjaGFuZ2Ugd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTowMy41ODg5MTU4NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1OTM3NjAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MTA3PXN5bnRheCAoZS5nLiBmb3IgUENJIG1vZHVsZSk6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTA4LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcXHUwMDNjb3B0aW9uXFx1MDAzZT1cXHUwMDNjVkFMMVxcdTAwM2UsXFx1MDAzY1ZBTDJcXHUwMDNlLC4uLl1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTExMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXFx0Kz0gZHdtYWMtbW90b3Jjb21tLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQxLVxcdHVuc2lnbmVkIGludCBmdW5jO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ1OnN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ3LVxcdHNpemVfdCBuZnVuY3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MS1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkxPXN0YXRpYyBjb25zdCBpbnQgYWRsbl90c25fbGFuZV9yZWdzW10gPSB7Nn07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkzOnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTQtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfbGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuY19kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTc6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgKmRtaV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgtXFx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9Nzg2PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgwNjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA3LVxcdC5zZXR1cCA9IGVobF9zZ21paV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MTA9c3RhdGljIGludCBlaGxfcmdtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODIxOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9yZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjItXFx0LnNldHVwID0gZWhsX3JnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0MT1zdGF0aWMgaW50IGVobF9wc2UwX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODQ4OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0OS1cXHQuc2V0dXAgPSBlaGxfcHNlMF9yZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1Mj1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODcwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3NnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg3MS1cXHQuc2V0dXAgPSBlaGxfcHNlMF9zZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg5MD1zdGF0aWMgaW50IGVobF9wc2UxX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODk3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5OC1cXHQuc2V0dXAgPSBlaGxfcHNlMV9yZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkwMT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTE5OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3NnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMC1cXHQuc2V0dXAgPSBlaGxfcHNlMV9zZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk0ND1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk1MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTQtXFx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTU3PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTFfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Ny1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NzA9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTgwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05ODEtXFx0LnNldHVwID0gYWRsc19zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk4ND1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTFfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5NS1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTFfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMz1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxuX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0My1cXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDY6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgZ2FsaWxlb19zdG1tYWNfZG1pX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU0LVxcdC5mdW5jID0gZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1ODpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1OS1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDY5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBpb3QyMDQwX3N0bW1hY19kbWlfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNzAtXFx0LmZ1bmMgPSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExMDk9c3RhdGljIGludCBxdWFya19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTktXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTIwOlxcdHJldCA9IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihwZGV2LCBxdWFya19wY2lfZG1pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMjEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNDU6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gcXVhcmtfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDYtXFx0LnNldHVwID0gcXVhcmtfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY2OlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjctXFx0c3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NzY9c3RydWN0IGxvb25nc29uX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjgyOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODMtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xMzI9c3RhdGljIGludCBsb29uZ3Nvbl9nbWFjX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQzLVxcdC5zZXR1cCA9IGxvb25nc29uX2dtYWNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTY1PXN0YXRpYyBpbnQgbG9vbmdzb25fZ25ldF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNzc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ25ldF9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3OC1cXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbmV0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMS1cXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUwMjpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAzLVxcdHN0cnVjdCBsb29uZ3Nvbl9kYXRhICpsZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM3LVxcdHBsYXQtXFx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzg6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM5OlxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDAtXFx0bGQtXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU0MzpcXHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDQtXFx0cmV0ID0gaW5mby1cXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0xODg9c3RhdGljIGludCBtb3RvcmNvbW1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkzOlxcdHJldCA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoZGV2LCBic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTk0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDg9bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjQ4LVxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZVxcdFxcdD0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDk6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZFxcdFxcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUwLVxcdHBsYXQtXFx1MDAzZXJlc3VtZVxcdFxcdD0gbW90b3Jjb21tX3Jlc3VtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MTI6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI2OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI4OmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00My19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjQ0OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDo5OmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6MTA6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTA3OiAqIHN0bW1hY19wY2lfcHJvYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MDpcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MTpcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODc6ICogc3RtbWFjX3BjaV9yZW1vdmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTI6c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVxcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNC1cXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNTpcXHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTY6XFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTctXFx0LmRyaXZlciAgICAgICAgID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTowNS44NDgyOTYyNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjY0ODIwNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIGFuZCBGdXp6aW5nIGBzdG1tYWNgIGluIFFFTVU6IEEgVGhvdWdodCBQcm9jZXNzKipcblxuT2theSwgc28gYHN0bW1hY19wY2lgIGV4aXN0cyBhcyBhIFBDSSBkZXZpY2UsIGJ1dCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIGl0IGluIFFFTVU/IFRoZSBwcm9tcHQgcG9pbnRzIG91dCBwb3RlbnRpYWwgcm9hZGJsb2NrcyBmb3IgZW11bGF0ZWQgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBoaWdobGlnaHRpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMgYW5kIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgYW5kIHNvIG9uLiBCdXQgYHN0bW1hY2Agc2VlbXMgbGlrZSBhIGRpZmZlcmVudCBiZWFzdC5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIFFFTVUgZXZlbiAqaGFzKiBhbiBlbXVsYXRlZCBgc3RtbWFjYC4gSSBrbm93IGl0J3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIHNvIEkgbmVlZCB0byBjaGVjayBmb3IgdGhhdC4gQWgsIFFFTVUgaGFzIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIHdoaWNoIGlzIGEgZHdtYWMsIGJ1dCB0aGF0IGlzIGEgcGxhdGZvcm0gZGV2aWNlLiBJIHJhcGlkbHkgY3ljbGUgdGhyb3VnaCBvdGhlcnMsIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgYHhnbWFjYCwgYWxsIHBsYXRmb3JtIGRldmljZXMuIEFoISBCdXQgYHN0bW1hY2AgaXMgdXNlZCBhcyBhIHBsYXRmb3JtIGRldmljZSBmb3IgbWFueSBTb0NzLCAqYW5kKiBpdCBoYXMgYSBQQ0kgd3JhcHBlciwgYHN0bW1hY19wY2kuY2AuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5Ob3csIGhvdyBjYW4gSSBwcm9iZSBgc3RtbWFjX3BjaWAgaW4gUUVNVT8gSSB0aGluayBvZiBgcGNpLXN0dWJgIG9yIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLiBTeXprYWxsZXIncyBgc3l6X3BjaV9zZXR1cGAgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgYnV0IGlzIGl0IGp1c3QgZnV6emluZyB0aGUgUENJIGNvbmZpZyBzcGFjZT8gUmlnaHQsIGl0IG1vc3RseSBwcm9iZXMsIHVubGVzcyB0aGVyZSdzIGFuIGV4aXN0aW5nIFFFTVUgZGV2aWNlLiBJZiBETUEgYW5kIGludGVycnVwdHMgYXJlIHVzZWQsIGl0IG5lZWRzIGEgcmVhbCBkZXZpY2Ugb3IgZnVsbCBRRU1VIGVtdWxhdGlvbi5cblxuU28gZG9lcyBRRU1VIGVtdWxhdGUgYHN0bW1hY2A/IExldCBtZSBsb29rIGZvciBgZHdtYWNgIG9yIGBzdG1tYWNgIGluIFFFTVUncyBjb2RlLi4uIEl0IHNlZW1zIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggaXMgdGhlIERlc2lnbldhcmUgTUFDISBUaGlzIGlzIGdvb2QgbmV3cywgcmlnaHQ/IFdoaWxlIEkgZG9uJ3QgaGF2ZSB0aGUgc291cmNlIGhhbmR5LCBJIG5lZWQgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGNvbW1vbmx5IGZ1enplZCBieSBzeXprYWxsZXIuXG5cbkFoYSEgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiEgVGhhdCBzdWdnZXN0cyBzeXprYWxsZXIgZm91bmQgYSBidWcgaW4gYHN0bW1hY2Agb3IgaXMgdGVzdGluZyBhIHBhdGNoIGZvciBpdC4gVGhhdCBtZWFucyBpdCBpcyByZWFjaGFibGUhIFdhaXQsIHN5emthbGxlciBjYW4gZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIGlmIGluc3RhbnRpYXRlZC4gQWxzbywgaXNuJ3QgYHN0bW1hY2AgdXNlZCBvbiBBUk0gYm9hcmRzLCBhbmQgbWlnaHQgc3l6a2FsbGVyIGJlIHJ1bm5pbmcgb24gQVJNNjQgUUVNVT8gVGhlIGB2aXJ0YCBtYWNoaW5lPyBSaWdodCwgaXQgdXNlcyBgdmlydGlvLW5ldC1wY2lgLiBIbW0sIHNvIG1heWJlIHN5emthbGxlciB1c2VzIGEgc3BlY2lmaWMgUUVNVSBtYWNoaW5lLCBvciBhIFVTQiBnYWRnZXQuLi4gYnV0IGBzdG1tYWNgIGlzIG5vdCBhIFVTQiBnYWRnZXQuXG5cbk9rYXksIGxldCdzIHNlZSBpZiBgc3RtbWFjYCBpcyBhY3R1YWxseSByZWFjaGFibGUuIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYHN0bW1hY19yeF9vZmZzZXRgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gaW4gdGhlIGRyaXZlci4gSWYgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyB0b3VjaGVkIGJ5IHN5emthbGxlciB0aGVuIHRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlLiBJcyBpdCB3b3J0aCBmdXp6aW5nPyBZZXMhIE9mIGNvdXJzZSEgTGV0J3MgY2hlY2sgYHN0bW1hY19yeF9vZmZzZXRgJ3MgdXNhZ2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTYxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM1OjI1LjExMzExOTkxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc4ODQ5MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yeF9vZmZzZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19kaXNwbGF5X3JpbmdzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTUyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE1Mjc6c3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE1Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjM5PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcnhfYnVmZmVycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTQtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjU1OlxcdFxcdGJ1Zi1cXHUwMDNlcGFnZV9vZmZzZXQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMjc9c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjQxOlxcdGRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSArIGRtYV9jb25mLVxcdTAwM2VkbWFfYnVmX3N6ICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDItXFx0XFx0XFx0IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTQtXFx0cHBfcGFyYW1zLmRtYV9kaXIgPSB4ZHBfcHJvZyA/IERNQV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI1NTpcXHRwcF9wYXJhbXMub2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTYtXFx0cHBfcGFyYW1zLm1heF9sZW4gPSBkbWFfY29uZi1cXHUwMDNlZG1hX2J1Zl9zejtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI1OS1cXHRcXHRwcF9wYXJhbXMub2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyNjA6XFx0XFx0cHBfcGFyYW1zLm1heF9sZW4gKz0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNjEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNToyNy4zOTE5Nzg5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0MDYzODg1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb250ZXh0IG9mIGEgUG90ZW50aWFsIFN5emthbGxlciBJbnRlcmFjdGlvbiB3aXRoIHRoZSBTVE1NQUMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBgc3RtbWFjX3J4X29mZnNldGAsIGFuZCBpdCdzIGJlaW5nIHVzZWQgZHVyaW5nIFJYIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWdlIHBvb2wgc2V0dXAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgd2h5IGlzIHRoaXMgYmVpbmcgZmxhZ2dlZD8gSXMgdGhlIGRyaXZlciBldmVuIHJlYWNoYWJsZSBpbiB0aGUgY3VycmVudCB0ZXN0aW5nIHNldHVwPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBpcyBpbnZvbHZlZCBzdWdnZXN0cyBlaXRoZXIgYSBjcmFzaCBoYXMgYmVlbiB0cmlnZ2VyZWQsIG9yIHNvbWVvbmUncyBpbnRlbnRpb25hbGx5IHVzaW5nIGl0IHRvIHRlc3QgdGhpcyBwYXRjaC5cblxuTXkgZmlyc3QgdGhvdWdodCB3YXMsIFwiV2FpdCwgaXNuJ3Qgc3l6a2FsbGVyJ3MgbmV0d29yayBpbmplY3Rpb24gbW9yZSB2aXJ0dWFsLCB0aHJvdWdoIGB0dW4vdGFwYCBvciBgdmV0aGA/XCIgQnV0IHRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlci4gVGhlbiBJIHJlbWVtYmVyIHN5emthbGxlciAqY2FuKiBmdXp6IGhhcmR3YXJlIGRyaXZlcnMsIEkga25vdyBpdCBjYW4gZG8gVVNCIHZpYSBgZHVtbXlfaGNkL3Jhdy1nYWRnZXRgLCBhbmQgUENJIGRyaXZlcnMgd2l0aCBzb21lIGxpbWl0YXRpb25zLCBhbmQgcGxhdGZvcm0gZHJpdmVycyBpZiB0aGV5IGFyZSBsb2FkZWQuXG5cblRoZW4gYSBsaWdodGJ1bGIgZ29lcyBvZmYhIERvZXNuJ3QgUUVNVSBoYXZlIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggZW11bGF0ZXMgdGhlIERlc2lnbldhcmUgTUFDPyBDb3VsZCB0aGlzIGJlIHRoZSBjb25uZWN0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaWYgYENPTkZJR19TVE1NQUNfRVRIYCBpcyBlbmFibGVkIGluIHR5cGljYWwgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLCBvciBpZiBpdCdzIGEgUENJIGRldmljZSBkcml2ZXIuIEJpbmdvLCBgc3RtbWFjX3BjaWAgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlci5cblxuUUVNVSBtaWdodCBub3QgZGlyZWN0bHkgZW11bGF0ZSBgc3RtbWFjX3BjaWAsIGJ1dCB3YWl0LCB0aGVyZSdzIHRoYXQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgZXZlbiBpZiB0aGUgcHJvYmUgc3VjY2VlZHMsIHRvIGFjdHVhbGx5ICpyZWNlaXZlKiBwYWNrZXRzIGFuZCBleGVjdXRlIHRoZSBSWCBwYXRoICh3aGVyZSBgc3RtbWFjX3J4X29mZnNldGAgaXMgY2FsbGVkIGR1cmluZyByaW5nIGluaXRpYWxpemF0aW9uLCB3aGljaCBoYXBwZW5zIG9uIGBuZG9fb3BlbmApLCB0aGUgZHJpdmVyIGhhcyB0byBwcm9iZSBhbmQgb3Blbi4gVGhpcyBpcyBrZXkuXG5cblNvLCBpZiBgc3RtbWFjX3BjaWAgY2FuIGJlIHByb2JlZCB1c2luZyBgc3l6X3BjaV9zZXR1cGAgYW5kIGBpcCBsaW5rIHNldCBldGhYIHVwYCBpcyBjYWxsZWQsIHRoYXQgKnNob3VsZCogdHJpZ2dlciBgc3RtbWFjX2luaXRfcnhfYnVmZmVyc2AuIEhvd2V2ZXIsIHRoZSBwcm9iZSBtaWdodCByZXF1aXJlIE1NSU8gcmVnaW9ucyB0byBiZSBtYXBwZWQgYW5kIGZ1bmN0aW9uYWwg4oCTIHRoaW5ncyBsaWtlIHJlYWRpbmcgdGhlIE1BQyBhZGRyZXNzLCByZXNldHRpbmcgdGhlIE1BQy4gSWYgdGhlIGhhcmR3YXJlIGlzbid0IHByb3Blcmx5IGVtdWxhdGVkLCB0aGUgcHJvYmUgd2lsbCBmYWlsIHJlYWRpbmcvd3JpdGluZyB0byBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIGl0J2xsIGdldCAweGZmZmZmZmZmIG9yIHRpbWVvdXRzLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gYHN0bW1hY19wY2lfcHJvYmVgIGl0c2VsZi4gVGhhdCdzIHRoZSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU1OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTo0MC43OTgzNzAzMTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1MTQzNjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE2LVxcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzU6NDMuMjQ5ODEzOTM3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEwNjMyOTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHN0bW1hY19wY2lfcHJvYmUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgb2YgdGhpcyBzdG1tYWMgZHJpdmVyIGluIGEgUENJIGNvbnRleHQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB3aGF0IGhhcHBlbnMgd2l0aGluIGBzdG1tYWNfcGNpX3Byb2JlYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGVzc2VudGlhbCBvcGVyYXRpb25zIHBlcmZvcm1lZCBkdXJpbmcgZGV2aWNlIGF0dGFjaG1lbnQuIEknbSB0aGlua2luZyBhYm91dCB0aGUgcmVnaXN0ZXIgbWFwcGluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiAoaW50ZXJydXB0cywgbWVtb3J5IHJlZ2lvbnMpLCB0aGUgY2hlY2tzLCBhbnkgcG9zc2libGUgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIHRoYXQgZ2V0IGludm9rZWQsIGFuZCB3aGF0IGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBwb3B1bGF0ZWQgdG8gcmVwcmVzZW50IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGUgY29kZSBmb3IgYW55IHBvdGVudGlhbCBnb3RjaGFzIGxpa2UgaW5jb3JyZWN0IHJlc291cmNlIHJlcXVlc3RzLCBvdmVybG9va2VkIGVycm9yIGhhbmRsaW5nLCBvciwgb2YgY291cnNlLCBhbnkgcXVpcmt5IHNpbGljb24tc3BlY2lmaWMgd29ya2Fyb3VuZHMuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBQQ0kgZGV2aWNlIHByb2JlIHNlcXVlbmNlIGJ1dCBJIHdpbGwgcXVpY2tseSBiZSBsb29raW5nIGZvciB0aGUgc3RtbWFjLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gSSdsbCBiZSBrZWVwaW5nIGEgbG9va291dCBmb3IgYW55IHVudXN1YWwgcmVnaXN0ZXIgc2V0dGluZ3Mgb3IgY2xvY2sgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgZG9uZSBhdCB0aGlzIHN0YWdlIGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoZSBQQ0kgZGV2aWNlIGFuZCBpZiBpdCBpbnRlcmFjdHMgY2xlYW5seSB3aXRoIHRoZSBicm9hZGVyIHN0bW1hYyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDAwLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzU6NDguMzU2MTQ1NTc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTE4OlxcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gMTE5OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIDEyMDpcXHR7XFxuIDEyMTpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDEyMjpcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuIDEyMzpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcXG4gMTI0OlxcdFxcdGludCByZXQ7XFxuIDEyNTpcXHRcXHRpbnQgaTtcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0cGxhdCA9IHN0bW1hY19wbGF0X2RhdF9hbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTI4OlxcdFxcdGlmICghcGxhdClcXG4gMTI5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzMjpcXHRcXHRcXHRcXHRcXHRcXHQgICBzaXplb2YoKnBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpLFxcbiAxMzM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuIDEzNDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpXFxuIDEzNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTM2OlxcdFxcbiAxMzc6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHNpemVvZigqcGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcXG4gMTM5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCk7XFxuIDE0MDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZylcXG4gMTQxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxNDI6XFx0XFxuIDE0MzpcXHRcXHQvKiBFbmFibGUgcGNpIGRldmljZSAqL1xcbiAxNDQ6XFx0XFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbiAxNDU6XFx0XFx0aWYgKHJldCkge1xcbiAxNDY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiJXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcXFxuXFxcIixcXG4gMTQ3OlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4gMTQ4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE0OTpcXHRcXHR9XFxuIDE1MDpcXHRcXG4gMTUxOlxcdFxcdC8qIEdldCB0aGUgYmFzZSBhZGRyZXNzIG9mIGRldmljZSAqL1xcbiAxNTI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkrKykge1xcbiAxNTM6XFx0XFx0XFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkgPT0gMClcXG4gMTU0OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAxNTU6XFx0XFx0XFx0cmVzLmFkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCBpLCBTVE1NQUNfUkVTT1VSQ0VfTkFNRSk7XFxuIDE1NjpcXHRcXHRcXHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcXG4gMTU3OlxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHJlcy5hZGRyKTtcXG4gMTU4OlxcdFxcdFxcdGJyZWFrO1xcbiAxNTk6XFx0XFx0fVxcbiAxNjA6XFx0XFxuIDE2MTpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0cmV0ID0gaW5mby1cXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XFxuIDE2NDpcXHRcXHRpZiAocmV0KVxcbiAxNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0cmVzLndvbF9pcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE2ODpcXHRcXHRyZXMuaXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXRzb2VlID0gMTtcXG4gMTcxOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4cGVlID0gMTtcXG4gMTcyOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbWVzdGVlID0gMTtcXG4gMTczOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4ZWUgPSAxO1xcbiAxNzQ6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtdHhlZSA9IDE7XFxuIDE3NTpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZWVwc2kgPSAxO1xcbiAxNzY6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VlZHBwID0gMTtcXG4gMTc3OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlcHJ0eWVuID0gMTtcXG4gMTc4OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNldG1vdXRlbiA9IDE7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG4gMTgxOlxcdFxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbiAxODQ6XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHQvKipcXG4gMTg3OlxcdCAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuIDE4ODpcXHQgKlxcbiAxODk6XFx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXFxuIDE5MDpcXHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxcbiAxOTE6XFx0ICovXFxuIDE5MjpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTkzOlxcdHtcXG4gMTk0OlxcdFxcdHN0bW1hY19kdnJfcmVtb3ZlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTU6XFx0fVxcbiAxOTY6XFx0XFxuIDE5NzpcXHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xcbiAxOTg6XFx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1xcdFxcdDB4MDcwMFxcbiAxOTk6XFx0XFxuIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM1OjQ4LjM1NjIyMTkyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE1NTUzMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBQcm9iZSoqXG5cbk9rYXksIHNvIGBzdG1tYWNfcGNpX3Byb2JlYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBQQ0kgdmVyc2lvbiBvZiB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIGl0J3MgY2FsbGluZyBgc3RtbWFjX2R2cl9wcm9iZWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSDigJMgdGhlIFBDSS1zcGVjaWZpYyBwcm9iZSBsaWtlbHkgc2V0cyB1cCB0aGUgUENJIHJlc291cmNlcyBhbmQgdGhlbiBoYW5kcyBvZmYgdGhlIG1lYXQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHRvIGEgbW9yZSBnZW5lcmljIGRldmljZSBkcml2ZXIgcHJvYmUuIExldCdzIHNlZSB3aGF0IGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBkb2luZy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgdGhlcmUgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgc2V0dGluZyB1cCB0aGUgc2hhcmVkIGFuZCBkZXZpY2Utc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzLCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCBhbmQgbGlrZWx5IHJlZ2lzdGVyaW5nIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0J3MgaGFuZGxpbmcgdGhlIERNQSBkZXNjcmlwdG9ycyBhbmQgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTgwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTo1Mi44NzE3Nzg0NThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODM1MjQwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2R2cl9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzNDE6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTYyOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01OTk9c3RhdGljIGludCBtZWRpYXRla19kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NDI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo0NjQ6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNTM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01ODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjAyOlxcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cXHQgKiBuZWVkIHRvIGVuc3VyZSB0aGUgTUFDIHJlc3VtZSBiYWNrIGJlZm9yZSBvdGhlciBvcGVyYXRpb25zIHN1Y2hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cXHQvKiBUaGUgbXV4IG11c3QgYmUgcmVnaXN0ZXJlZCBhZnRlciBwYXJlbnQgTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcXHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMTAtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6Mzc2OlxcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTIwNT1zdGF0aWMgaW50IHZpc2NvbnRpX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMzc6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTM9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQxNDppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDE1LVxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5MT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3OTM6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5NC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5NjogKiBzdG1tYWNfZHZyX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk3LSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTA1OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDYtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExNjpcXHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTctXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwbGF0X2RhdC1cXHUwMDNlZXhpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTIyOkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ4PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTc6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTo1NS4xNTUzMDY2ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA5MzQ5NjY0NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzdG1tYWNfZHZyX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZhY3QgdGhhdCBzeXprYWxsZXIgaXMgZXZlbiB0b3VjaGluZyBpdCBtZWFucyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCB3aGljaCBpcyBnb29kLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBpdCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFN5emthbGxlcidzIHByZXR0eSBjbGV2ZXIsIGl0IGNhbiB0ZXN0IFBDSSBkcml2ZXJzIGlmIHRoZXkgZG9uJ3QgZGVwZW5kIG9uIGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MsIG9yIGlmIFFFTVUgZW11bGF0ZXMgdGhlIGhhcmR3YXJlLiBBbmQgdGhpbmtpbmcgYWJvdXQgaXQsIHllYWgsIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggaXMgdGhlIERlc2lnbldhcmUgTUFDLlxuXG5JIGNhbid0IGluc3RhbnRseSB2ZXJpZnkgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkga25vdyBgZGVzaWdud2FyZWAgaXMgYSBjb21tb24gSVAgYmxvY2sgYW5kIFFFTVUgZW11bGF0ZXMgaXQgZm9yIHNvbWUgQVJNIGJvYXJkcywgbGlrZSB0aGUgYWxsd2lubmVyIGFuZCBpTVggb25lczsgZXZlbiBYaWxpbnggdXNlcyBpdCEgUUVNVSAqZGVmaW5pdGVseSogaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCBmb3IgYHN0bW1hY2AuIEFuZCwgd2FpdCwgd2UndmUgZ290IGBzeXpfcGNpX3NldHVwYCwgc28gd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcy5cblxuQnV0IHRoZSBhY3R1YWwgcGF0Y2ggaXMgYWJvdXQgYHN0bW1hY19yeF9vZmZzZXRgLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgY29kZTpcblxuYGBgY1xuc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbntcblx0aWYgKHN0bW1hY194ZHBfaXNfZW5hYmxlZChwcml2KSlcblx0XHRyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTtcblxuXHRyZXR1cm4gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XG59XG5gYGBcblxuT2theSwgc28gaXQgYWRkcyBgTkVUX0lQX0FMSUdOYCB0byB0aGUgUlggb2Zmc2V0LiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIGl0IGFmZmVjdHMgaG93IFNLQnMgYXJlIGFsbG9jYXRlZCBhbmQgYWxpZ25lZCBpbiBtZW1vcnkuIElzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gQ2hhbmdlcyB0byBSWCBwYWNrZXQgbWVtb3J5IGxheW91dCBjYW4gaGF2ZSBhIHJpcHBsZSBlZmZlY3Qgb24gWERQLCBTS0IgcGFyc2luZyBhbmQgRE1BLiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbWlzaW50ZXJwcmV0YXRpb24gYnVncy5cblxuV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIHRvIHJlcHJvZHVjZSB0aGlzPyBJIHRoaW5rIHdlJ2xsIG5lZWQgYENPTkZJR19TVE1NQUNfRVRIYCBhbmQgdGhlbiBlaXRoZXIgYENPTkZJR19TVE1NQUNfUENJYCBvciBgQ09ORklHX1NUTU1BQ19QTEFURk9STWAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNDEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzY6MTYuMDkwMjc3NjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjk2NzAzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjoxOC4zMTk5NTM2NjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NjY4NTg4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUNfRVRIIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIEtjb25maWcgZm9yIGBTVE1NQUNfRVRIYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBGaXJzdCwgSSdsbCBzY2FuIHRoZSBmaWxlIGZvciB0aGUgbWFpbiBgY29uZmlnYCBzeW1ib2wuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBkZWZpbml0aW9uIG9mIGBTVE1NQUNfRVRIYCBpdHNlbGYg4oCTIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gVGhlbiwgSSdsbCBiZSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgaXQncyBicm9rZW4gZG93bjsgYXJlIHRoZXJlIHN1Yi1vcHRpb25zIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgTUFDIHZhcmlhbnQsIFBIWSBpbnRlcmZhY2UsIG9yIERNQSBlbmdpbmU/XG5cbkknbGwgYmUgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzOiBXaGF0IG90aGVyIGZlYXR1cmVzIG9yIGRyaXZlcnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgU1RNTUFDX0VUSGAgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZD8gYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgYXJlIGtleSBoZXJlLiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHNldD8gVGhhdCB0ZWxscyBtZSB3aGF0IHRoZSBjb21tb24gb3IgYmFzZSBjb25maWd1cmF0aW9uIGlzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYHNlbGVjdGAgc3RhdGVtZW50cyB0b286IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGltcGxpY2l0bHkgZW5hYmxlZCB3aGVuIGBTVE1NQUNfRVRIYCBpcyBzZWxlY3RlZD8gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGVzc2VudGlhbC5cblxuTmV4dCwgSSdsbCBjaGVjayBmb3IgYW55IHRyaXN0YXRlIG9yIGJvb2xlYW4gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSBjaGFuZ2UgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgZHJpdmVyLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24gYXZhaWxhYmxlIGluIHRoZSBLY29uZmlnLCBlc3BlY2lhbGx5IHRoZSBkZWZhdWx0IHNldHRpbmdzLlxuXG5GaW5hbGx5LCBJJ2xsIGNyb3NzLXJlZmVyZW5jZSB0aGlzIEtjb25maWcgd2l0aCB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlIGl0c2VsZi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgYCNpZmRlZmAgb3Igc2ltaWxhciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgb3B0aW9ucyBJJ20gc2VlaW5nIGluIHRoZSBLY29uZmlnLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBhY3R1YWwgZHJpdmVyJ3MgYmVoYXZpb3IuIFRoaXMgaXMgYWxsIHBhcnQgb2YgaG93IEkgYXBwcm9hY2ggS2NvbmZpZywgaXQgaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGRyaXZlciBpcyBkZXBsb3llZC4gVGhpcyBpcyBob3cgSSdsbCBleHRyYWN0IGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGBTVE1NQUNfRVRIYCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDE5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzY6NDYuNzg2ODE2MDM1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzQyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM2OjQ2Ljc4OTA2MDgwNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg5MTIwMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYFNUTU1BQ19QQ0lgKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gYFNUTU1BQ19QQ0lgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0sIHByZXN1bWFibHkgY29uY2VybmluZyBQQ0ktYmFzZWQgY29ubmVjdGlvbnMuIEknbGwgbmVlZCB0byByZWNhbGwgdGhlIHJlbGV2YW50IFBDSSBidXMgYXJjaGl0ZWN0dXJlIGRldGFpbHMgYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgbG9naWMuIFdoYXQncyB0aGUgc3BlY2lmaWMgdGFyZ2V0IGhlcmU/IEFyZSB3ZSBsb29raW5nIGF0IGRyaXZlciBpbXBsZW1lbnRhdGlvbiwgaGFyZHdhcmUgcmVnaXN0ZXJzLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgd2lsbCBpbmZvcm0gdGhlIHNwZWNpZmljcyBJIGxvb2sgYXQuIEl04oCZcyBsaWtlbHkgYSBkcml2ZXIgbW9kdWxlLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHNjb3BlIHRvIGVuc3VyZSBJIGRvbuKAmXQgd2FzdGUgdGltZS4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBrZXJuZWwgc291cmNlIGZvciB0aGUgYFNUTU1BQ19QQ0lgIGRyaXZlciBpZiB0aGVyZSBpcyBvbmUsIGFuZCBwZXJoYXBzIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRhdGEgc2hlZXRzIHRvIHNlZSB0aGUgZXhwZWN0ZWQgZGV2aWNlIGJlaGF2aW91ciBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwuIEkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIGludGVycnVwdHMgYW5kIERNQSBjb25maWd1cmF0aW9ucywgYXMgdGhlc2UgYXJlIG9mdGVuIGJvdHRsZW5lY2tzIG9yIHBvaW50cyBvZiBpbnRlcmVzdCBmb3IgdHVuaW5nLiBUaGUgZ29hbCBpcyB0byByZWZyZXNoIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTY2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjo1MC42NzgxODU0NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODMwMDU5MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzY6NTMuMDYxMTk3NDYxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDA1NjY1MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgU1RNTUFDX1BDSWAgRGVwZW5kZW5jeSBDaGFpbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBsaW5lYWdlIGFuZCBzZWUgaG93IHRoaXMgc3BlY2lmaWMgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBQQ0kgYnVzLiBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgY29tcG9uZW50cywgcG90ZW50aWFsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgYW5kIGFueSBuZWNlc3Nhcnkgc2hhcmVkIGxpYnJhcmllcyBvciBrZXJuZWwgbW9kdWxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBzdWJzeXN0ZW1zIHJlbHkgb24gdGhpcyBzcGVjaWZpYyBkcml2ZXIgdG8gZ2V0IGEgaG9saXN0aWMgdmlldy4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIGFuZCBvdGhlciBrZXkgYXNwZWN0cy4gSSBhbSBnb2luZyB0byBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIGJ1cyBpdHNlbGYuIEknbGwgd2FudCB0byBzZWUgaG93IGludGVycnVwdHMgYXJlIGhhbmRsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdywgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHNoYXJlZCBtZW1vcnkgcmVnaW9ucyB3aWxsIGJlIGtleS4gVGltZSB0byBnZXQgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjo1Ni45MDE3Njc4NTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDA3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDIwOlxcdGVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjo1Ni45MDE4OTY3MzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMzE4OTA5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBSZWNlaXZlIE9mZnNldCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgU1RNTUFDIGRyaXZlciBjb25maWd1cmF0aW9uLiBJIHNlZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGJ1dCBub3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYHN0bW1hY19yeF9vZmZzZXRgLiBJdCBsb29rcyBsaWtlIHRoYXQgZnVuY3Rpb24gaXMgdHVja2VkIGF3YXkgaW4gYHN0bW1hY19tYWluLmNgLiBNeSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBvZmZzZXQgaXMgY2FsY3VsYXRlZCBvciB1c2VkLlxuXG5TaW5jZSBJIGFtIG1vc3QgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLCBJIG5lZWQgYSBnb29kIGZvY3VzIHN5bWJvbC4gYHN0bW1hY19yeF9vZmZzZXRgIGl0c2VsZiBpc24ndCBhIGdyZWF0IGNob2ljZSwgdGhvdWdoLCBiZWNhdXNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBsaW1pdGVkIGluIHNjb3BlIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBwaWVjZXMgb2YgdGhlIGNvZGUgZGVwZW5kIG9uIGl0LiBMZXQncyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICpjYWxsaW5nKiBgc3RtbWFjX3J4X29mZnNldGAuIE9rYXksIGl0J3MgY2FsbGVkIGJ5IGBzdG1tYWNfaW5pdF9yeF9idWZmZXJzYCBhbmQgYF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gTm93IEknbSBjaGVja2luZyB0byBzZWUgaWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHN0YXRpYywgd2hpY2ggd291bGQgZnVydGhlciBjb25zdHJhaW4gbXkgYWJpbGl0eSB0byB1bmRlcnN0YW5kIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQyNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM5OjA3LjIyMDgwODc1NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NzU3NzUwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfaW5pdF9yeF9idWZmZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTYxMj1zdGF0aWMgdm9pZCBzdG1tYWNfY2xlYXJfZGVzY3JpcHRvcnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjI4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTYyOTogKiBzdG1tYWNfaW5pdF9yeF9idWZmZXJzIC0gaW5pdCB0aGUgUlggZGVzY3JpcHRvciBidWZmZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjMwLSAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTYzOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE2Mzk6c3RhdGljIGludCBzdG1tYWNfaW5pdF9yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NDAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTc2ND1zdGF0aWMgaW50IHN0bW1hY19hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3Nzc6XFx0XFx0cmV0ID0gc3RtbWFjX2luaXRfcnhfYnVmZmVycyhwcml2LCBkbWFfY29uZiwgcCwgaSwgZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzc4LVxcdFxcdFxcdFxcdFxcdCAgICAgcXVldWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozOTowOC43OTgzOTIyNjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2NDU3MDczMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkNvbnNpZGVyaW5nIFJlc291cmNlIEFsbG9jYXRpb24gaW4gdGhlIFNUTU1BQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYHN0bW1hY19hbGxvY19yeF9idWZmZXJzYCBmdW5jdGlvbiwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBgc3RhdGljYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgbWFrZXMgbWUgdGhpbmsgYWJvdXQgaXRzIHNjb3BlIHdpdGhpbiB0aGUgZHJpdmVyLiBJdCdzIHByb2JhYmx5IG9ubHkgY2FsbGVkIGludGVybmFsbHksIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBhbiBhbGxvY2F0aW9uIGZ1bmN0aW9uLiBCdXQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciByZXNvdXJjZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucy5cblxuU3BlY2lmaWNhbGx5LCB3aGF0J3MgdGhlIGRlYWwgd2l0aCBgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXNgPyBJcyBpdCBhbHNvIHN0YXRpYz8gSXMgaXQgc2ltaWxhcmx5IHNjb3BlZD8gQXJlIHRoZXkgY2FsbGVkIGluIGEgY29vcmRpbmF0ZWQgbWFubmVyPyBBcmUgdGhlcmUgYW55IHJlc291cmNlLXNoYXJpbmcgaW1wbGljYXRpb25zIG9yIHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3VlcyBpZiB0aGVzZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBoYXZlIG92ZXJsYXBwaW5nIHB1cnBvc2VzLCBvciBhcmUgaW52b2x2ZWQgaW4gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBvdmVyYWxsIFJYIGRlc2NyaXB0b3Igc2V0dXA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZXNvdXJjZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyByZWxhdGUgdG8gZWFjaCBvdGhlciwgc28gSSBjYW4gZW5zdXJlIHRoZSBzdG1tYWMgZHJpdmVyIGlzIGVmZmljaWVudCBhbmQgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyNzksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MDoxNS40NDQxMDE3MDZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDQxOTA0OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMjA2PXN0YXRpYyB2b2lkIGZyZWVfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMTg6ICogX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBhbGxvYyBSWCByZXNvdXJjZXMgKHBlciBxdWV1ZSkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjE5LSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjI2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIyNzpzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMjgtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMzAxPXN0YXRpYyBpbnQgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMwOS1cXHRmb3IgKHF1ZXVlID0gMDsgcXVldWUgXFx1MDAzYyByeF9jb3VudDsgcXVldWUrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMxMDpcXHRcXHRyZXQgPSBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMxMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDA1PXZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMTI6XFx0cmV0ID0gX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDEzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6MTYuOTg4Mjk3NjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMDk3OTA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUlggUXVldWUgRW5hYmxlbWVudCBpbiBzdG1tYWMqKlxuXG5IbW0sIHNvIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCBpc24ndCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgYSBiaXQgdW5leHBlY3RlZC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IG1pZ2h0IGJlIGEgbW9kdWxlLWludGVybmFsIGhlbHBlci4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCAqaXMqIGJlaW5nIGNhbGxlZC4gU2luY2UgaXQncyBub3Qgc3RhdGljLCB0aGF0IG1lYW5zIGl0J3MgbGlrZWx5IHBhcnQgb2YgdGhlIGV4dGVybmFsIGludGVyZmFjZSwgb3IgYXQgbGVhc3QgY2FsbGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIuIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIHV0aWxpemVkLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaXMgcHJvYmFibHkgd2l0aGluIHRoZSBgc3RtbWFjX29wZW5gIGZ1bmN0aW9uLCBvciBwb3RlbnRpYWxseSBvdGhlciBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBicmluZ3VwIGxpa2UgdGhlIHByb2JlLiBJdCB3b3VsZCBiZSBhdCB0aGlzIHBvaW50IHRoYXQgdGhlIGhhcmR3YXJlIHdvdWxkIGJlIGVuYWJsZWQsIG9yIG5vdCwgaW4gcmVsYXRpb24gdG8gdGhlIHJ4IHF1ZXVlIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxOTgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MDoyMS42ODkyODAxNzJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjIzNTExNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX29wZW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDUwPXN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMTUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTE2OiAqICBfX3N0bW1hY19vcGVuIC0gb3BlbiBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTE3LSAqICBAZGV2IDogcG9pbnRlciB0byB0aGUgZGV2aWNlIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyNC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjU6c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI2LVxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxODM6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjExOlxcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjEyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDE9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzc6XFx0XFx0cmV0ID0gX19zdG1tYWNfb3BlbihkZXYsIGRtYV9jb25mKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzA4OlxcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMwOS1cXHQubmRvX3N0YXJ0X3htaXQgPSBzdG1tYWNfeG1pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzU5ND1pbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTMtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MTQ6XFx0XFx0cmV0ID0gc3RtbWFjX29wZW4oZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2MTk9aW50IHN0bW1hY19yZWluaXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeF9zaXplLCB1MzIgdHhfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMC1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYzMTpcXHRcXHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6MjMuMjUxNjM2MDk4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4ODAxNzg3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIFBhdGggb2YgYHN0bW1hY19yeF9vZmZzZXRgKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGBzdG1tYWNgIGRyaXZlciBjb2RlLiBSaWdodCwgYHN0bW1hY19vcGVuYC4uLiB0aGF0J3MgdGhlIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHdoaWNoIG1ha2VzIHNlbnNlLiBIbW0sIGJ1dCBpdCdzICpzdGF0aWMqLiBUaGF04oCZcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSSBuZWVkIHRvIGZpbmQgdGhlIGRhdGEgcGF0aCB0aGF0IHJlYWNoZXMgYHN0bW1hY19yeF9vZmZzZXRgLiAgSWYgYHN0bW1hY19vcGVuYCBpcyBzdGF0aWMsIHRoZW4gd2hvIGlzIHVzaW5nIHRoaXMgdGhpbmc/IEkgbmVlZCB0byBmaW5kIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IGNhbGxzIG9yIGlzIHJlbGF0ZWQgdG8gYHN0bW1hY19yeF9vZmZzZXRgLiBcblxuQWghIEhlcmUgd2UgZ28sIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCBpcyAqbm90KiBzdGF0aWMuIEdvb2QhIFRoYXQncyBhIHBvdGVudGlhbCBlbnRyeSBwb2ludC4gTm93LCBsZXQncyBjaGVjayBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgYW5kIHNlZSBpZiB0aGlzIHByb3ZpZGVzIHRoZSBsaW5rIEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1ODIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MDoyOC4xMzE4MTcyNDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODAzOTkwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2VuYWJsZV9yeF9xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00Mjk9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDMwOnZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDMxLXZvaWQgc3RtbWFjX2Rpc2FibGVfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTkyPXZvaWQgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDA1OnZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00NS1cXHRpZiAobmVlZF91cGRhdGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6NDY6XFx0XFx0c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTQ3LVxcdFxcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTU4PXN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtODUtXFx0aWYgKG5lZWRfdXBkYXRlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjg2OlxcdFxcdHN0bW1hY19lbmFibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy04Ny1cXHRcXHRzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6MjkuNzEyMjI1NDAxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4MTQ2NDA5NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhvc2UgZnVuY3Rpb24gbmFtZXMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRnVuY3Rpb24gUHJvYmUgQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGBzdG1tYWNfeGRwX3NldHVwX3Bvb2xgIOKAkyB0aGF0J3Mgc3RyYWlnaHRmb3J3YXJkOyBpdCdzIGdvdCBcIlhEUFwiIHJpZ2h0IHRoZXJlIGluIHRoZSBuYW1lLiBJdCdzIGNsZWFybHkgZGVhbGluZyB3aXRoIFhEUCBzZXR1cCwgcHJvYmFibHkgbWVtb3J5IHBvb2xzIG9yIHJpbmcgYnVmZmVycy4gTm93LCBgc3RtbWFjX2R2cl9wcm9iZWAuLi4gdGhhdCdzIHRoZSBkcml2ZXIgcHJvYmUsIGFuZCBzaW5jZSBpdCdzICpub3QqIHN0YXRpYywgaXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlci4gSXQncyB0aGUgYmlnIG9uZS4gVGhlbiB3ZSBoYXZlIGBzdG1tYWNfcGNpX3Byb2JlYCwgd2hpY2ggKmlzKiBzdGF0aWM7IHNvLCB0aGF0J3MgbGlrZWx5IGEgcHJvYmUgc3BlY2lmaWNhbGx5IGZvciBQQ0kgZGV2aWNlcywgYW5kIHByb2JhYmx5IGNhbGxlZCBmcm9tIGBzdG1tYWNfZHZyX3Byb2JlYC4gRmluYWxseSwgYHN0bW1hY19wbHRmcl9wcm9iZWAgaXMgYWxzbyBub24tc3RhdGljOyBcInBsdGZyXCIgcHJvYmFibHkgbWVhbnMgcGxhdGZvcm0uIFNpbmNlIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBub24tc3RhdGljLCBsZXQncyBkaWcgaW50byBgc3RtbWFjX3BsdGZyX3Byb2JlYCBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU4MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQwOjM4LjUyNjg2OTA4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY2NjY0MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wbHRmcl9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9OTM9c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTY6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTI5PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjY0OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTE5PXN0YXRpYyBpbnQgZHdtYWNfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo0OTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjkzPXN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzU0OlxcdHJldCA9IHN0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM1NS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyMTU6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTIxNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjA0OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIwNS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9ODI9c3RhdGljIGludCBudnRfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTExNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6MTE1OlxcdHJldHVybiBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTE2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Nzk3OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxOTc6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE1Njg9c3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjEzOlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYxNC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xNDQ9c3RhdGljIGludCBzMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMTM6XFx0cmV0dXJuIHN0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY1NTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjU2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI0OT1zdGF0aWMgaW50IHN0aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI4OTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTA1PXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMzg6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTk1OlxcdHJldCA9IHN0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz05OT1zdGF0aWMgaW50IHN1bjdpX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTQ3OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTQ4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjY0OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODMzPXN0YXRpYyBpbnQgc3RtbWFjX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODQxOiAqIHN0bW1hY19wbHRmcl9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0Mi0gKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NDg6aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0OS1cXHRcXHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTk6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsdGZyX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODYxPXN0YXRpYyB2b2lkIGRldm1fc3RtbWFjX3BsdGZyX3JlbW92ZSh2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODY4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg2OTogKiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg3MC0gKiBAcGRldjogcG9pbnRlciB0byB0aGUgcGxhdGZvcm0gZGV2aWNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzItICogQHJlczogc3RtbWFjIHJlc291cmNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg3MzogKiBEZXNjcmlwdGlvbjogRGV2cmVzIHZhcmlhbnQgb2Ygc3RtbWFjX3BsdGZyX3Byb2JlKCkuIEFsbG93cyB1c2VycyB0byBza2lwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc0LSAqIGNhbGxpbmcgc3RtbWFjX3BsdGZyX3JlbW92ZSgpIG9uIGRyaXZlciBkZXRhY2guXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg3NjppbnQgZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzctXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4ODI6XFx0cmV0ID0gc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXQsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04ODgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChkZXZtX3N0bW1hY19wbHRmcl9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODkzLSAqIEBwZGV2OiBwb2ludGVyIHRvIHRoZSBwbGF0Zm9ybSBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4OTQ6ICogRGVzY3JpcHRpb246IFRoaXMgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIHN0bW1hY19wbHRmcl9wcm9iZSgpIGJ5IHJlbW92aW5nIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg5NS0gKiBkcml2ZXIgYW5kIGNhbGxpbmcgdGhlIHBsYXRmb3JtJ3MgZXhpdCgpIGNhbGxiYWNrLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MjA9aW50IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMzppbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjQtXFx0XFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yNS1cXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg6MjY6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjctXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6NDAuMDkzNTM4NTM1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxMDgxOTk3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBgc3RtbWFjYCBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGFuZCBJIHNlZSB0aGF0IGJvdGggYHN0bW1hY19wbHRmcl9wcm9iZWAgYW5kIGBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZWAgYXJlIGV4cG9ydGVkLCBhbG9uZyB3aXRoIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhvc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIGZvY3VzaW5nIG9uIHRob3NlIHN5bWJvbHMgYXMgdGhleSBsb29rIGxpa2Uga2V5IGVudHJ5IHBvaW50cy5cblxuQnV0IGhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHN0bW1hY19yeF9vZmZzZXRgIGdldHMgY2FsbGVkIHdpdGhpbiBgc3RtbWFjX29wZW5gLiBBbmQgYHN0bW1hY19vcGVuYCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYG5kb19vcGVuYCBjYWxsYmFjay4gTm93LCBteSBtaW5kIGlzIHJhY2luZzsgYXJlIHRoZXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGludm9rZWQgKmR1cmluZyogdGhlIGV4ZWN1dGlvbiBvZiBgbmRvX29wZW5gPyBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBpbmZvcm1hdGlvbi5cblxuVGhpbmtpbmcgYSBiaXQgbW9yZSwgYHN0bW1hY19yZWluaXRfcXVldWVzYCBhbmQgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYCBib3RoIGFsc28gY2FsbCBgc3RtbWFjX29wZW5gLiBBbHJpZ2h0LCBJIHRoaW5rIEknbGwgZGl2ZSBhIGxpdHRsZSBkZWVwZXIgaW50byBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgIHRvIHNlZSB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwNzUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6NDkuMjAxNzQxNDIxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE2NTM2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZWluaXRfcXVldWVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxND1pbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTYtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTc6aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTgtaW50IHN0bW1hY19yZWluaXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeF9zaXplLCB1MzIgdHhfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTk4OT1zdGF0aWMgaW50IHN0bW1hY19zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtOTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6OTk5OlxcdHJldHVybiBzdG1tYWNfcmVpbml0X3F1ZXVlcyhkZXYsIGNoYW4tXFx1MDAzZXJ4X2NvdW50LCBjaGFuLVxcdTAwM2V0eF9jb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0xMDAwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzU3Mz1zdGF0aWMgdm9pZCBzdG1tYWNfbmFwaV9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzU5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc1OTQ6aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzU5NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQwOjUwLjcxODI4MTcyNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDc5MDQ5OTg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZW50cnkgcG9pbnRzIGFuZCBmdW5jdGlvbnMgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyIGZvciBmdXp6aW5nLiBJdCBsb29rcyBsaWtlIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgaXMgdHJpZ2dlcmVkIGJ5IGBldGh0b29sIHNldF9jaGFubmVsc2AsIGFuZCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gIGlzIHRpZWQgdG8gYGV0aHRvb2wgc2V0X3JpbmdwYXJhbWAuIFRoZXNlIGFyZSBib3RoIGV4Y2VsbGVudCB0YXJnZXRzIGJlY2F1c2UgdGhleSByZXByZXNlbnQgd2F5cyB0byBkeW5hbWljYWxseSByZWNvbmZpZ3VyZSB0aGUgZHJpdmVyIGFmdGVyIGluaXRpYWwgc2V0dXAsIHdoaWNoIG9mdGVuIGV4cG9zZXMgbW9yZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgaXMgYWxzbyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgY2FsbGVkIGZyb20gWERQIHNldHVwLCBtZWFuaW5nIHRoaXMgc2hvdWxkIGJlIGEgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBpcyBvZnRlbiB0ZXN0ZWQuXG5cbkkndmUgYWxyZWFkeSBpZGVudGlmaWVkIHRoZXNlIGFzIHNpZ25pZmljYW50IGNhbGwgdGFyZ2V0czpcbiogICBgc3RtbWFjX2R2cl9wcm9iZWBcbiogICBgc3RtbWFjX3BsdGZyX3Byb2JlYFxuKiAgIGBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZWBcbiogICBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgXG4qICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYFxuKiAgIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYFxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQuIGBzdG1tYWNfcnhfb2Zmc2V0YCBnZXRzIGNhbGxlZCBmcm9tIGBzdG1tYWNfaW5pdF9yeF9idWZmZXJzYCwgd2hpY2ggY2FzY2FkZXMgZG93biB0aHJvdWdoIGBzdG1tYWNfYWxsb2NfcnhfYnVmZmVyc2AsIGBhbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBhbmQgZmluYWxseSBgX19zdG1tYWNfb3BlbmAuIEFuZCBgX19zdG1tYWNfb3BlbmAgaXMsIGluIGZhY3QsIHN0YXRpYywgYW5kIGBzdG1tYWNfb3BlbmAgaXMgdG9vLCBhbHRob3VnaCBpdCBpcyBhc3NpZ25lZCB0byBgbmRvX29wZW5gLiBTbywgYHN0bW1hY19kdnJfcHJvYmVgIGlzIGNsZWFybHkgdGhlIG1haW4gcHJvYmUgZW50cnkgcG9pbnQuXG5cblRoZXJlZm9yZSwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLCBJIHNob3VsZCBmb2N1cyBvbiBgc3RtbWFjX2R2cl9wcm9iZWAgYXMgYSBwcmltYXJ5IGVudHJ5IHBvaW50LCBhbG9uZyB3aXRoIHRoZSBldGh0b29sIGFuZCBYRFAgcGF0aHMgdGhhdCByZS1pbml0aWFsaXplIHRoZSByaW5ncy4gTXkgcmVmaW5lZCBmb2N1cyBzeW1ib2xzIHdpbGwgYmU6XG4qICAgYHN0bW1hY19kdnJfcHJvYmVgXG4qICAgYHN0bW1hY19yZWluaXRfcXVldWVzYFxuKiAgIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWBcbiogICBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWBcblxuVG8gYnVpbGQgdGhlIGVudmlyb25tZW50IEknbGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOlxuKiAgIGBTVE1NQUNfRVRIYFxuKiAgIGBTVE1NQUNfUENJYFxuKiAgIGBTVE1NQUNfUExBVEZPUk1gXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGBTVE1NQUNfUENJYCBpcyBzdWZmaWNpZW50IHRvIGNvbXBpbGUgYHN0bW1hY19wY2kuY2AsIGJ1dCBpdCBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDY1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjA1LjUwODc4NDM2OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyODQ0NzE4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjowNy44MzcyNDAyMDVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzODY1NDQxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGxpbmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgbGluZTogYHN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub2AuIFJpZ2h0IGF3YXksIG15IGJyYWluIGZsYWdzIHRoaXMgYXMgYSBidWlsZCBzeXN0ZW0gZGlyZWN0aXZlLCBwcm9iYWJseSBmcm9tIGEgYE1ha2VmaWxlYCBvciBzaW1pbGFyLiBUaGUgZm9ybWF0IGlzIHR5cGljYWw6IHNldHRpbmcgYSB2YXJpYWJsZSwgYHN0bW1hYy1wY2ktb2Jqc2AsIHRvIGEgc3BlY2lmaWMgb2JqZWN0IGZpbGUsIGBzdG1tYWNfcGNpLm9gLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIGJ1aWxkaW5nIGEgbW9kdWxlIG9yIGEgY29tcG9uZW50IHJlbGF0ZWQgdG8gYW4gU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgdmFyaWFudCwgaWYgSSdtIGludGVycHJldGluZyBcIlBDSVwiIGNvcnJlY3RseS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogV2hhdCBpcyB0aGUgY29udGV4dD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjLXBjaS1vYmpzYCBtZWFucyBpbiB0aGUgbGFyZ2VyIHNjaGVtZSBvZiB0aGluZ3MuIEl0J3MgbGlrZWx5IGRlZmluaW5nIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgdGhhdCwgd2hlbiBsaW5rZWQgdG9nZXRoZXIsIHdpbGwgcHJvZHVjZSBzb21lIG91dHB1dCBmaWxlIOKAkyBtYXliZSBhIGAua29gIGtlcm5lbCBtb2R1bGUsIGEgc3RhdGljYWxseSBsaW5rZWQgbGlicmFyeSwgb3IgcGFydCBvZiBhIGxhcmdlciBiaW5hcnkuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAuIEkgd2FudCB0byBrbm93IGhvdyBgU1RNTUFDX1BDSWAgZmFjdG9ycyBpbnRvIGFsbCBvZiB0aGlzLiBJcyBpdCBhIGNvbmRpdGlvbmFsIHZhcmlhYmxlPyBEb2VzIGl0IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiBgc3RtbWFjX3BjaS5vYCBpbiB0aGUgYnVpbGQgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBzb21lIG90aGVyIGRlcGVuZGVuY3kgb3IgZmVhdHVyZT8gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgdXNhZ2Ugb2YgYFNUTU1BQ19QQ0lgIGluIHRoZSBgTWFrZWZpbGVgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGlzIGNvdWxkIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCB0aGUgdXNlciBzZXRzLCBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIFBDSSBzdXBwb3J0IGluIHRoZSBkcml2ZXIgYnVpbGQuIExldCdzIHNlZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxODEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjoxMi4wNzU4OTc3MjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDI1NjM1MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1NUTU1BQ19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD05OD1UaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBgQ09ORklHX1NUTU1BQ19FVEhgYDpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTk5LSAtIGBgQ09ORklHX1NUTU1BQ19QTEFURk9STWBgOiBpcyB0byBlbmFibGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjEwMDogLSBgYENPTkZJR19TVE1NQUNfUENJYGA6IGlzIHRvIGVuYWJsZSB0aGUgcGNpIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjEzLjUxODQ2NTYwN1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU0NTIzMzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgU1RNTUFDIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQncyBjbGVhciB0aGF0IGBDT05GSUdfU1RNTUFDX1BDSWAgaXMgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIGBzdG1tYWMtcGNpLm9gLCB3aGljaCBpbiB0dXJuIGluY2x1ZGVzIGBzdG1tYWNfcGNpLm9gLiBJJ20gdHJhY2tpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlaW5nIGhvdyB0aGUgbW9kdWxlcyBhcmUgc3RydWN0dXJlZC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgdGhpbmdzIG1vZHVsYXIgYW5kIG9yZ2FuaXplZC4gSSBzZWUgbm93IHRoYXQgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAsIGFuZCBgU1RNTUFDX1BMQVRGT1JNYCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBhcmUgdXNpbmcuXG5cbkp1c3Qgd2FudCB0byBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0aG91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgaW4gdGhpcyBzcGFjZT8gVGltZSB0byBzY2FuIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIGBEV01BQ19HRU5FUklDYC4uLiBsZXQncyBzZWUgd2hlcmUgdGhhdCBmaXRzIGluLiBOZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIGFsbCBwb3NzaWJsZSBjb25maWdzIGZvciB0aGUgU1RNTUFDIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NzksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjoxNy4yNzI5OTE1OThaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDg2ODE3OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0dFTkVSSUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00ND1jb25maWcgRFdNQUNfRFdDX1FPU19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1Mjpjb25maWcgRFdNQUNfR0VORVJJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDI6MTguODIxNjc5MDYzWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDA0MTE5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIEkgdGhpbmsgSSd2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiBpdHMgaW1wbGljYXRpb25zLiBJbmNsdWRpbmcgYERXTUFDX0dFTkVSSUNgIGxvb2tzIGxpa2UgYSBzbWFydCBtb3ZlIOKAkyBpdCBzaG91bGQgYnJvYWRlbiB0aGUgcG90ZW50aWFsIGZvciBnZW5lcmljIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nLCB3aGljaCBpcyBhbHdheXMgdXNlZnVsLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGNoYW5nZSBpcyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBzdG1tYWNfcnhfb2Zmc2V0YC4gIEFkZGluZyBgTkVUX0lQX0FMSUdOYCB0byB0aGUgUlggb2Zmc2V0IGlzIHNpZ25pZmljYW50LiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBtZW1vcnkgbGF5b3V0IG9mIHJlY2VpdmVkIHBhY2tldHMuIFNwZWNpZmljYWxseSwgdGhpcyBhZGp1c3RtZW50IGluZmx1ZW5jZXMgdGhlIGBkbWFfYnVmX3N6X3BhZGAgY2FsY3VsYXRpb246XG5cbmBgYGNcblx0ZG1hX2J1Zl9zel9wYWQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpICsgZG1hX2NvbmYtXHUwMDNlZG1hX2J1Zl9zeiArXG5cdFx0XHQgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTtcbmBgYFxuXG5UaGlzICp3aWxsKiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgRE1BIGJ1ZmZlci4gVGhlIGluaXRpYWwgcmVhY3Rpb24gSSBoYWQsIGFuZCBzdGlsbCBoYXZlLCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIHNlcmlvdXMgYXR0ZW50aW9uIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBjb3VsZCBpbnRyb2R1Y2UgdW5hbGlnbmVkIElQIGhlYWRlciBhY2Nlc3NlcywgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGJ1ZmZlciBvdmVyZmxvd3MgaWYgdGhlIGJ1ZmZlciBzaXplIHdhc24ndCBwcm9wZXJseSByZS1zaXplZCBpbiBhbGwgcGFydHMgb2YgdGhlIGNvZGUuXG5cbkdpdmVuIHRoaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYFRydWVgLiAgV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgY292ZXJpbmcgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9ucy4gSSdsbCBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIHRoZXNlIHN5bWJvbHM6XG5cbiogICBgc3RtbWFjX2R2cl9wcm9iZWBcbiogICBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgXG4qICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYFxuKiAgIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYFxuXG5XZSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgdGhlIGZ1enppbmcgaXMgY29tcHJlaGVuc2l2ZS4gSSdtIHRoaW5raW5nOlxuXG4qICAgYFNUTU1BQ19FVEhgXG4qICAgYFNUTU1BQ19QQ0lgXG4qICAgYFNUTU1BQ19QTEFURk9STWBcbiogICBgRFdNQUNfR0VORVJJQ2BcblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIGRpcmVjdGx5IHRvdWNoZXMgaG93IHRoZSBkcml2ZXIgY2FsY3VsYXRlcyBidWZmZXIgc2l6ZXMgZm9yIHJlY2VpdmluZyBwYWNrZXRzLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgdmlhIHRoZSBQQ0kgYW5kIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIHBhdGhzICh0aGF0J3Mgd2hlcmUgb3VyIGBEV01BQ19HRU5FUklDYCBpbmNsdXNpb24gaGVscHMpLiBJdCBhbHNvIGFmZmVjdHMgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uIFdlIG5lZWQgdG8gZXhwbG9yZSB0aGVzZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIHdpdGggdGhlIGVuaGFuY2VkIGJ1ZmZlciBjYWxjdWxhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzAxLCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjoyNy44MjIwOTM3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ4MDk5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIixcbiAgICBcInN0bW1hY19yZWluaXRfcXVldWVzXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3JpbmdwYXJhbVwiLFxuICAgIFwic3RtbWFjX2VuYWJsZV9yeF9xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCB0byBpbmNsdWRlIGBORVRfSVBfQUxJR05gIGluIHRoZSBSWCBidWZmZXIgb2Zmc2V0IGNhbGN1bGF0aW9uLiBUaGlzIGFsdGVycyB0aGUgbWVtb3J5IGxheW91dCBhbmQgYWxsb2NhdGlvbiBzaXplIGZvciByZWNlaXZlZCBwYWNrZXRzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBETUEgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHBhY2tldCBwYXJzaW5nLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFBDSSBvciBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZyBhbmQgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiU1RNTUFDX1BMQVRGT1JNXCIsXG4gICAgXCJEV01BQ19HRU5FUklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY19yZWluaXRfcmluZ3BhcmFtXCIsXG4gICAgXCJzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0bW1hY19yeF9vZmZzZXRgIHRvIGluY2x1ZGUgYE5FVF9JUF9BTElHTmAgaW4gdGhlIFJYIGJ1ZmZlciBvZmZzZXQgY2FsY3VsYXRpb24uIFRoaXMgYWx0ZXJzIHRoZSBtZW1vcnkgbGF5b3V0IGFuZCBhbGxvY2F0aW9uIHNpemUgZm9yIHJlY2VpdmVkIHBhY2tldHMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIERNQSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgcGFja2V0IHBhcnNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgUENJIG9yIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIGFuZCBuZXR3b3JrIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDI6MjcuODk2OTExMjY5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODcwMDMyNjk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjI3Ljg5NzUwMDcwOVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozODY5OTczMjg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MzQ6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xNTI5LDcgKzE1MjksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0aWYgKHN0bW1hY194ZHBfaXNfZW5hYmxlZChwcml2KSlcbiBcdFx0cmV0dXJuIFhEUF9QQUNLRVRfSEVBRFJPT007XG4gXG4tXHRyZXR1cm4gTkVUX1NLQl9QQUQ7XG4rXHRyZXR1cm4gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9iZnNpemUoaW50IG10dSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjI3Ljg5NzUwMTU2OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE1MjgxNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgc3RtbWFjIFJlY2VpdmUgQnVmZmVyIE9mZnNldCBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgc3RtbWFjX3J4X29mZnNldGAgd2l0aGluIGBzdG1tYWNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHR3ZWFraW5nIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZS4gSXQncyBtb3ZpbmcgZnJvbSBqdXN0IHJldHVybmluZyBgTkVUX1NLQl9QQURgIHRvIGBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTmAuIFNvLCB0aGUgaW1wYWN0IGlzIG9uIHRoZSByZWNlaXZlIGJ1ZmZlciBvZmZzZXQuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSBhbnkgY2hhbmdlIHRvIHRoZSBidWZmZXIgb2Zmc2V0IGNhbiBoYXZlIHJhbWlmaWNhdGlvbnMgZm9yIGFsaWdubWVudCBhbmQgcGVyZm9ybWFuY2UsIGFuZCBpbiB0aGUgd29yc3QgY2FzZSwgcGFja2V0IHBhcnNpbmcsIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIG9mZi1ieS1vbmUgZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHNoaWZ0IGlzIGhhcHBlbmluZy4gV2hhdCdzIHRoZSByYXRpb25hbGU/IEkga25vdyBgTkVUX0lQX0FMSUdOYCBpcyB0aGUgbmF0dXJhbCBhbGlnbm1lbnQgYm91bmRhcnkgZm9yIElQIGhlYWRlcnMsIHNvIGlzIHRoaXMgYWJvdXQgaW1wcm92aW5nIElQIGhlYWRlciBwcm9jZXNzaW5nPyBPciBhcmUgdGhleSB0cnlpbmcgdG8gZml4IHNvbWUgYWxpZ25tZW50IHByb2JsZW0gd2l0aCB0aGUgTUFDIGl0c2VsZiBvciBwZXJoYXBzIHRoZSBETUEgZW5naW5lPyBUbyB0cnVseSBncmFzcCB0aGUgc2lnbmlmaWNhbmNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgY29udGV4dC4gVGltZSB0byB6b29tIG91dCBhbmQgZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiB0aGF0IGZ1bmN0aW9uIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgcmVzdCBvZiB0aGUgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBkZXBlbmRlbnQgc3Vic3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDI6MzMuMDEyNzg2Nzg3WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTE1MTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcnhfb2Zmc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19kaXNwbGF5X3JpbmdzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTUyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE1Mjc6c3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE1Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjM5PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcnhfYnVmZmVycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTQtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjU1OlxcdFxcdGJ1Zi1cXHUwMDNlcGFnZV9vZmZzZXQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMjc9c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjQxOlxcdGRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSArIGRtYV9jb25mLVxcdTAwM2VkbWFfYnVmX3N6ICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDItXFx0XFx0XFx0IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTQtXFx0cHBfcGFyYW1zLmRtYV9kaXIgPSB4ZHBfcHJvZyA/IERNQV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI1NTpcXHRwcF9wYXJhbXMub2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTYtXFx0cHBfcGFyYW1zLm1heF9sZW4gPSBkbWFfY29uZi1cXHUwMDNlZG1hX2J1Zl9zejtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI1OS1cXHRcXHRwcF9wYXJhbXMub2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyNjA6XFx0XFx0cHBfcGFyYW1zLm1heF9sZW4gKz0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNjEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjozMy4wOTc5NDc2MzZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTkyNjEyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJYIEJ1ZmZlciBPZmZzZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIHRoZSByZWNlaXZlIGJ1ZmZlciBvZmZzZXQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodHMgZ28gdG8gbWVtb3J5IGxheW91dCwgYnVmZmVyIHNpemluZywgYW5kIGFsaWdubWVudC4gVGhlIGNvcmUgaXNzdWUgaGVyZSBpcyBsaWtlbHkgcmVsYXRlZCB0byBhbGlnbmluZyB0aGUgSVAgaGVhZGVyIHdpdGhpbiB0aGUgcmVjZWl2ZWQgcGFja2V0IGRhdGEuIFdlJ3JlIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHByb3RvY29scywgc28gcHJvcGVyIGFsaWdubWVudCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIHByZXZlbnRpbmcgYWxsIHNvcnRzIG9mIGFsaWdubWVudCBmYXVsdHMuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgTkVUX0lQX0FMSUdOYCBpcyBiZWluZyBhZGRlZCB0byB0aGUgb2Zmc2V0LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgYE5FVF9JUF9BTElHTmAgaXMgdXN1YWxseSAyIGJ5dGVzLiBBZGRpbmcgdGhpcyB0byB0aGUgZXhpc3RpbmcgYE5FVF9TS0JfUEFEYCBtZWFucyB0aGUgcGFja2V0IGRhdGEgd2lsbCBlZmZlY3RpdmVseSBzdGFydCAyIGJ5dGVzIGxhdGVyIHdpdGhpbiB0aGUgYnVmZmVyLiBUaGlzIGlzIGEgY29tbW9uIHByYWN0aWNlIGluIG5ldHdvcmtpbmcgdG8gZW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgNC1ieXRlIGFsaWduZWQuIEdpdmVuIHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgMTQgYnl0ZXMsIHRoaXMgYnJpbmdzIHRoZSB0b3RhbCB0byAxNiwgYSBjbGVhbiBtdWx0aXBsZS5cblxuTXkgaW5pdGlhbCBjb25jZXJuLCBhcyBhbHdheXMgd2hlbiB0b3VjaGluZyBtZW1vcnkgb2Zmc2V0cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgb3IgZXhwb3NlcyBhbnkgcmlza3Mgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gS01TQU4sIG9mIGNvdXJzZSwgaXMgbXkgZ28tdG8gdG9vbCBmb3IgZGV0ZWN0aW5nIHRob3NlIHNvcnRzIG9mIGlzc3Vlcy4gSG93ZXZlciwgYWZ0ZXIgdGhpbmtpbmcgaXQgdGhyb3VnaCwgSSBkb24ndCBzZWUgaG93IHRoaXMgcGF0Y2ggaXRzZWxmICppbnRyb2R1Y2VzKiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQWxsIGl0J3MgZG9pbmcgaXMgc2hpZnRpbmcgd2hlcmUgdGhlIERNQSB3cml0ZXMgdGhlIHBhY2tldCBkYXRhLiBJZiBhbnl0aGluZywgaXQgc2VlbXMgbW9yZSBsaWtlbHkgdG8gKmZpeCogcG90ZW50aWFsIHVuYWxpZ25lZCBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBwcm9ibGVtcyB0aGF0IG1pZ2h0IGhhdmUgZXhpc3RlZCBwcmV2aW91c2x5LlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIExvb2tpbmcgYXQgdGhlIGNvZGU6XG5gYGBjXG5zdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxue1xuXHRpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKVxuXHRcdHJldHVybiBYRFBfUEFDS0VUX0hFQURST09NO1xuXG5cdHJldHVybiBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTjtcbn1cbmBgYFxuXG5ZZXAsIGl0J3MganVzdCBhZGRpbmcgYE5FVF9JUF9BTElHTmAgdG8gdGhlIG9mZnNldC4gRXh0cmVtZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBkb2Vzbid0IG1vZGlmeSBkYXRhLCBpdCBqdXN0IGRlZmluZXMgd2hlcmUgdGhlIGRhdGEgYmVnaW5zLCBzbywgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbXMgaGVyZS4gSXQncyBzb2xlbHkgcmVsYXRlZCB0byBhbGlnbm1lbnQsIHNvLCBmb3IgbXkgcmVjb3JkcywgSSdtIG1hcmtpbmcgdGhpcyBhcyBgTmVlZHNLTVNBTj1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDAsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQzOjA2LjU5NzIxMTI4M1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcmVjZWl2ZSBidWZmZXIgb2Zmc2V0IGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IGFkZGluZyBORVRfSVBfQUxJR04gdG8gTkVUX1NLQl9QQUQuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIGFkanVzdG1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIElQIGhlYWRlciBpcyBhbGlnbmVkIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IChzaW5jZSB0aGUgRXRoZXJuZXQgaGVhZGVyIGlzIDE0IGJ5dGVzLCBhZGRpbmcgMiBieXRlcyBvZiBwYWRkaW5nIGFsaWducyB0aGUgc3Vic2VxdWVudCBJUCBoZWFkZXIpLiBUaGlzIGNoYW5nZSBhZmZlY3RzIG1lbW9yeSBsYXlvdXQgYW5kIERNQSBidWZmZXIgb2Zmc2V0cywgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBub3IgZG9lcyBpdCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 10:40:53 +0000 UTC FinishedAt: 2026-08-13 11:43:08 +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": "2bb155e92167cd5ad6aae312e83291da2454f8b0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2bb155e92167cd5ad6aae312e83291da2454f8b0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "866b46d4-aa4a-406c-b02b-a5aaf5efe98b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_dvr_probe", "stmmac_reinit_queues", "stmmac_reinit_ringparam", "stmmac_enable_rx_queue" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0mIzM0OywKICAgICYjMzQ7c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByZWNlaXZlIGJ1ZmZlciBvZmZzZXQgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYnkgYWRkaW5nIE5FVF9JUF9BTElHTiB0byBORVRfU0tCX1BBRC4gVGhpcyBpcyBhIHN0YW5kYXJkIG5ldHdvcmtpbmcgYWRqdXN0bWVudCB0byBlbnN1cmUgdGhhdCB0aGUgSVAgaGVhZGVyIGlzIGFsaWduZWQgdG8gYSA0LWJ5dGUgYm91bmRhcnkgKHNpbmNlIHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgMTQgYnl0ZXMsIGFkZGluZyAyIGJ5dGVzIG9mIHBhZGRpbmcgYWxpZ25zIHRoZSBzdWJzZXF1ZW50IElQIGhlYWRlcikuIFRoaXMgY2hhbmdlIGFmZmVjdHMgbWVtb3J5IGxheW91dCBhbmQgRE1BIGJ1ZmZlciBvZmZzZXRzLCBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vciBkb2VzIGl0IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgbGlrZWx5IGJlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCB0byBpbmNsdWRlIGBORVRfSVBfQUxJR05gIGluIHRoZSBSWCBidWZmZXIgb2Zmc2V0IGNhbGN1bGF0aW9uLiBUaGlzIGFsdGVycyB0aGUgbWVtb3J5IGxheW91dCBhbmQgYWxsb2NhdGlvbiBzaXplIGZvciByZWNlaXZlZCBwYWNrZXRzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBETUEgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHBhY2tldCBwYXJzaW5nLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFBDSSBvciBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZyBhbmQgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MzQ6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjJhNTc0MTViZTI1Y2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMTUyOSw3ICYjNDM7MTUyOSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3RtbWFjX3J4X29mZnNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKVxuIFx0XHRyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTtcbiBcbi1cdHJldHVybiBORVRfU0tCX1BBRDtcbiYjNDM7XHRyZXR1cm4gTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOO1xuIH1cbiBcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBtdHUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0mIzM0OywKICAgICYjMzQ7c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3J4X29mZnNldGAgdG8gaW5jbHVkZSBgTkVUX0lQX0FMSUdOYCBpbiB0aGUgUlggYnVmZmVyIG9mZnNldCBjYWxjdWxhdGlvbi4gVGhpcyBhbHRlcnMgdGhlIG1lbW9yeSBsYXlvdXQgYW5kIGFsbG9jYXRpb24gc2l6ZSBmb3IgcmVjZWl2ZWQgcGFja2V0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcGFyc2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgYW5kIG5ldHdvcmsgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzRhNTQ5MjUwMGRhMmQ0OGVkYTk4NDljMTQ2YjBlNTZhNDlmMTMzNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDExOjM0OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0xNTI5LDcgJiM0MzsxNTI5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAlpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQogCQlyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTsKIAotCXJldHVybiBORVRfU0tCX1BBRDsKJiM0MzsJcmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTjsKIH0KIAogc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDMwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFNUTU1BQyBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3J4X29mZnNldGAgaW4gYHN0bW1hY19tYWluLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZXkmIzM5O3ZlIGFkZGVkIGBORVRfSVBfQUxJR05gIHRvIHRoZSByZXR1cm4gdmFsdWUsIHdoaWNoIHN1Z2dlc3RzIGFuIGFsaWdubWVudCBhZGp1c3RtZW50IHJlbGF0ZWQgdG8gSVAgaGVhZGVycy4gSXQgc2VlbXMgbGlrZSBhIHN0YW5kYXJkIGZpeCwgYnV0IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHdpdGhpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgKmNhbiogSSByZXByb2R1Y2Ugb3IgdGVzdCB0aGlzIGNoYW5nZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIG5lZWQgdG8ga25vdyBpZiB0aGUgc3RtbWFjIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgY29udHJvbGxlciwgaXMgZXZlbiAqcHJlc2VudCogaW4gc29tZXRoaW5nIGxpa2UgUUVNVS4gSXQmIzM5O3MgY29tbW9uIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBlbXVsYXRpb24gc3VwcG9ydCBpcyB3aGF0IG1hdHRlcnMgaGVyZS4KCkxldCYjMzk7cyBzZWUuLi4gUUVNVSwgaW4gZ2VuZXJhbCwgaGFzIGVtdWxhdGlvbiBzdXBwb3J0IGZvciBhIHJhbmdlIG9mIG5ldHdvcmsgY29udHJvbGxlcnMuIEkgc3RhcnQgbWVudGFsbHkgbGlzdGluZyB0aGVtOiBgaW14X2ZlY2AsIGBjYWRlbmNlX2dlbWAsIGBmdGdtYWMxMDBgLCBldGMuIFRoZW4sIEkgcmVtZW1iZXIgdGhhdCBgc3RtbWFjYCBzcGVjaWZpY2FsbHkgcmVmZXJzIHRvIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpIGNvbnRyb2xsZXIsIGFuZCB0aGF0JiMzOTtzIHRoZSBvbmUgSSBuZWVkIHRvIGxvb2sgZm9yLiBJcyAqdGhhdCogZW11bGF0ZWQ/CgpUbyBjb25maXJtLCBJIG5lZWQgdG8gY2hlY2sgaG93IHN0bW1hYyBpcyBpbnN0YW50aWF0ZWQuIElzIGl0IHByb2JlZCB2aWEgUENJLCBvciBpcyBpdCBwdXJlbHkgYSBwbGF0Zm9ybSBkZXZpY2U/IEkmIzM5O2xsIHNlYXJjaCBmb3Igc29tZXRoaW5nIGxpa2UgYHN0bW1hY19wY2lgIGluIHRoZSBjb2RlYmFzZSB0byBmaWd1cmUgdGhhdCBvdXQuIEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gdGVzdCB0aGlzIGNoYW5nZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MTA3PXN5bnRheCAoZS5nLiBmb3IgUENJIG1vZHVsZSk6OlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0xMDgtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjEwOTogICAgbW9kcHJvYmUgc3RtbWFjX3BjaSBbXHUwMDNjb3B0aW9uXHUwMDNlPVx1MDAzY1ZBTDFcdTAwM2UsXHUwMDNjVkFMMlx1MDAzZSwuLi5dXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTExMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTI1PXN0cnVjdCBpbnRlbF9wcml2X2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQwOnN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQxLVx0dW5zaWduZWQgaW50IGZ1bmM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDU6c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDctXHRzaXplX3QgbmZ1bmNzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MS1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkxPXN0YXRpYyBjb25zdCBpbnQgYWRsbl90c25fbGFuZV9yZWdzW10gPSB7Nn07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MzpzdGF0aWMgaW50IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTQtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9saXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk3Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgKmRtaV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OC1cdGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfaWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODY9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODA2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNy1cdC5zZXR1cCA9IGVobF9zZ21paV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3JnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgyMTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjItXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0MT1zdGF0aWMgaW50IGVobF9wc2UwX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODQ4OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ5LVx0LnNldHVwID0gZWhsX3BzZTBfcmdtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODUyPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NzA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NzEtXHQuc2V0dXAgPSBlaGxfcHNlMF9zZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTA9c3RhdGljIGludCBlaGxfcHNlMV9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg5NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5OC1cdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkwMT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTE5OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIwLVx0LnNldHVwID0gZWhsX3BzZTFfc2dtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTQ0PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTUzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTU0LVx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk1Nz1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2NjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkxX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Ny1cdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NzA9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTgwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4MS1cdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTg0PXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk5NDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTUtXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTFfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjM9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsbl9zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0My1cdC5zZXR1cCA9IGFkbG5fc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ3LVx0e1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgZ2FsaWxlb19zdG1tYWNfZG1pX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTQtXHQuZnVuYyA9IGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1OS1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNjk6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGlvdDIwNDBfc3RtbWFjX2RtaV9kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDcwLVx0LmZ1bmMgPSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTA5PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTExOS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTIwOlx0cmV0ID0gc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHBkZXYsIHF1YXJrX3BjaV9kbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTIxLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBxdWFya19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ2LVx0LnNldHVwID0gcXVhcmtfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI2NjpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY3LVx0c3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTc2PXN0cnVjdCBsb29uZ3Nvbl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo4MjpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODMtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xMzI9c3RhdGljIGludCBsb29uZ3Nvbl9nbWFjX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDMtXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbWFjX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xNjU9c3RhdGljIGludCBsb29uZ3Nvbl9nbmV0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE3NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbmV0X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzgtXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbmV0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAxLVx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUwMjpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMy1cdHN0cnVjdCBsb29uZ3Nvbl9kYXRhICpsZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUzNy1cdHBsYXQtXHUwMDNlZml4X3NvY19yZXNldCA9IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM4Olx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzOTpcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQwLVx0bGQtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU0MzpcdGluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDQtXHRyZXQgPSBpbmZvLVx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTE4OD1zdGF0aWMgaW50IG1vdG9yY29tbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxOTM6XHRyZXQgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKGRldiwgYnNwX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTk0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDg9bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0OC1cdHBsYXQtXHUwMDNlY29yZV90eXBlXHRcdD0gRFdNQUNfQ09SRV9HTUFDNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI0OTpcdHBsYXQtXHUwMDNlc3VzcGVuZFx0XHQ9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUwLVx0cGxhdC1cdTAwM2VyZXN1bWVcdFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoxMjppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyNjpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6Mjg6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzo0NDpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDo5OmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDoxMDppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC0xMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTA3OiAqIHN0bW1hY19wY2lfcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMjE6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjItXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODA6XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODE6XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTg3OiAqIHN0bW1hY19wY2lfcmVtb3ZlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTI6c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNTpcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE2Olx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNy1cdC5kcml2ZXIgICAgICAgICA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTYxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogOTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIGFuZCBGdXp6aW5nIGBzdG1tYWNgIGluIFFFTVU6IEEgVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIGBzdG1tYWNfcGNpYCBleGlzdHMgYXMgYSBQQ0kgZGV2aWNlLCBidXQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCBpdCBpbiBRRU1VPyBUaGUgcHJvbXB0IHBvaW50cyBvdXQgcG90ZW50aWFsIHJvYWRibG9ja3MgZm9yIGVtdWxhdGVkIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgaGlnaGxpZ2h0aW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBkcml2ZXJzIGFuZCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGFuZCBzbyBvbi4gQnV0IGBzdG1tYWNgIHNlZW1zIGxpa2UgYSBkaWZmZXJlbnQgYmVhc3QuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgUUVNVSBldmVuICpoYXMqIGFuIGVtdWxhdGVkIGBzdG1tYWNgLiBJIGtub3cgaXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIHNvIEkgbmVlZCB0byBjaGVjayBmb3IgdGhhdC4gQWgsIFFFTVUgaGFzIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIHdoaWNoIGlzIGEgZHdtYWMsIGJ1dCB0aGF0IGlzIGEgcGxhdGZvcm0gZGV2aWNlLiBJIHJhcGlkbHkgY3ljbGUgdGhyb3VnaCBvdGhlcnMsIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgYHhnbWFjYCwgYWxsIHBsYXRmb3JtIGRldmljZXMuIEFoISBCdXQgYHN0bW1hY2AgaXMgdXNlZCBhcyBhIHBsYXRmb3JtIGRldmljZSBmb3IgbWFueSBTb0NzLCAqYW5kKiBpdCBoYXMgYSBQQ0kgd3JhcHBlciwgYHN0bW1hY19wY2kuY2AuIFRoaXMgaXMgcHJvbWlzaW5nLgoKTm93LCBob3cgY2FuIEkgcHJvYmUgYHN0bW1hY19wY2lgIGluIFFFTVU/IEkgdGhpbmsgb2YgYHBjaS1zdHViYCBvciBpZiBzeXprYWxsZXIgY2FuIGluamVjdCBQQ0kgZGV2aWNlcy4gU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX3NldHVwYCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCBidXQgaXMgaXQganVzdCBmdXp6aW5nIHRoZSBQQ0kgY29uZmlnIHNwYWNlPyBSaWdodCwgaXQgbW9zdGx5IHByb2JlcywgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIFFFTVUgZGV2aWNlLiBJZiBETUEgYW5kIGludGVycnVwdHMgYXJlIHVzZWQsIGl0IG5lZWRzIGEgcmVhbCBkZXZpY2Ugb3IgZnVsbCBRRU1VIGVtdWxhdGlvbi4KClNvIGRvZXMgUUVNVSBlbXVsYXRlIGBzdG1tYWNgPyBMZXQgbWUgbG9vayBmb3IgYGR3bWFjYCBvciBgc3RtbWFjYCBpbiBRRU1VJiMzOTtzIGNvZGUuLi4gSXQgc2VlbXMgUUVNVSBoYXMgYGh3L25ldC9kZXNpZ253YXJlLmNgLCB3aGljaCBpcyB0aGUgRGVzaWduV2FyZSBNQUMhIFRoaXMgaXMgZ29vZCBuZXdzLCByaWdodD8gV2hpbGUgSSBkb24mIzM5O3QgaGF2ZSB0aGUgc291cmNlIGhhbmR5LCBJIG5lZWQgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGNvbW1vbmx5IGZ1enplZCBieSBzeXprYWxsZXIuCgpBaGEhICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDshIFRoYXQgc3VnZ2VzdHMgc3l6a2FsbGVyIGZvdW5kIGEgYnVnIGluIGBzdG1tYWNgIG9yIGlzIHRlc3RpbmcgYSBwYXRjaCBmb3IgaXQuIFRoYXQgbWVhbnMgaXQgaXMgcmVhY2hhYmxlISBXYWl0LCBzeXprYWxsZXIgY2FuIGZ1enogcGxhdGZvcm0gZGV2aWNlcyBpZiBpbnN0YW50aWF0ZWQuIEFsc28sIGlzbiYjMzk7dCBgc3RtbWFjYCB1c2VkIG9uIEFSTSBib2FyZHMsIGFuZCBtaWdodCBzeXprYWxsZXIgYmUgcnVubmluZyBvbiBBUk02NCBRRU1VPyBUaGUgYHZpcnRgIG1hY2hpbmU/IFJpZ2h0LCBpdCB1c2VzIGB2aXJ0aW8tbmV0LXBjaWAuIEhtbSwgc28gbWF5YmUgc3l6a2FsbGVyIHVzZXMgYSBzcGVjaWZpYyBRRU1VIG1hY2hpbmUsIG9yIGEgVVNCIGdhZGdldC4uLiBidXQgYHN0bW1hY2AgaXMgbm90IGEgVVNCIGdhZGdldC4KCk9rYXksIGxldCYjMzk7cyBzZWUgaWYgYHN0bW1hY2AgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGluIHRoZSBkcml2ZXIuIElmIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdG91Y2hlZCBieSBzeXprYWxsZXIgdGhlbiB0aGUgZHJpdmVyIGlzIHJlYWNoYWJsZS4gSXMgaXQgd29ydGggZnV6emluZz8gWWVzISBPZiBjb3Vyc2UhIExldCYjMzk7cyBjaGVjayBgc3RtbWFjX3J4X29mZnNldGAmIzM5O3MgdXNhZ2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3J4X29mZnNldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTE1MTc9c3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BsYXlfcmluZ3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTUyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTUyNzpzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTE2Mzk9c3RhdGljIGludCBzdG1tYWNfaW5pdF9yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTQtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE2NTU6XHRcdGJ1Zi1cdTAwM2VwYWdlX29mZnNldCA9IHN0bW1hY19yeF9vZmZzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMjI3PXN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI0MTpcdGRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSAmIzQzOyBkbWFfY29uZi1cdTAwM2VkbWFfYnVmX3N6ICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDItXHRcdFx0IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjU0LVx0cHBfcGFyYW1zLmRtYV9kaXIgPSB4ZHBfcHJvZyA/IERNQV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjU1Olx0cHBfcGFyYW1zLm9mZnNldCA9IHN0bW1hY19yeF9vZmZzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTYtXHRwcF9wYXJhbXMubWF4X2xlbiA9IGRtYV9jb25mLVx1MDAzZWRtYV9idWZfc3o7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjU5LVx0XHRwcF9wYXJhbXMub2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI2MDpcdFx0cHBfcGFyYW1zLm1heF9sZW4gJiM0Mzs9IHN0bW1hY19yeF9vZmZzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNjEtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NTgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb250ZXh0IG9mIGEgUG90ZW50aWFsIFN5emthbGxlciBJbnRlcmFjdGlvbiB3aXRoIHRoZSBTVE1NQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uIGBzdG1tYWNfcnhfb2Zmc2V0YCwgYW5kIGl0JiMzOTtzIGJlaW5nIHVzZWQgZHVyaW5nIFJYIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWdlIHBvb2wgc2V0dXAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgd2h5IGlzIHRoaXMgYmVpbmcgZmxhZ2dlZD8gSXMgdGhlIGRyaXZlciBldmVuIHJlYWNoYWJsZSBpbiB0aGUgY3VycmVudCB0ZXN0aW5nIHNldHVwPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBpcyBpbnZvbHZlZCBzdWdnZXN0cyBlaXRoZXIgYSBjcmFzaCBoYXMgYmVlbiB0cmlnZ2VyZWQsIG9yIHNvbWVvbmUmIzM5O3MgaW50ZW50aW9uYWxseSB1c2luZyBpdCB0byB0ZXN0IHRoaXMgcGF0Y2guCgpNeSBmaXJzdCB0aG91Z2h0IHdhcywgJiMzNDtXYWl0LCBpc24mIzM5O3Qgc3l6a2FsbGVyJiMzOTtzIG5ldHdvcmsgaW5qZWN0aW9uIG1vcmUgdmlydHVhbCwgdGhyb3VnaCBgdHVuL3RhcGAgb3IgYHZldGhgPyYjMzQ7IEJ1dCB0aGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIuIFRoZW4gSSByZW1lbWJlciBzeXprYWxsZXIgKmNhbiogZnV6eiBoYXJkd2FyZSBkcml2ZXJzLCBJIGtub3cgaXQgY2FuIGRvIFVTQiB2aWEgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YCwgYW5kIFBDSSBkcml2ZXJzIHdpdGggc29tZSBsaW1pdGF0aW9ucywgYW5kIHBsYXRmb3JtIGRyaXZlcnMgaWYgdGhleSBhcmUgbG9hZGVkLgoKVGhlbiBhIGxpZ2h0YnVsYiBnb2VzIG9mZiEgRG9lc24mIzM5O3QgUUVNVSBoYXZlIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggZW11bGF0ZXMgdGhlIERlc2lnbldhcmUgTUFDPyBDb3VsZCB0aGlzIGJlIHRoZSBjb25uZWN0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaWYgYENPTkZJR19TVE1NQUNfRVRIYCBpcyBlbmFibGVkIGluIHR5cGljYWwgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLCBvciBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UgZHJpdmVyLiBCaW5nbywgYHN0bW1hY19wY2lgIGlzIGEgUENJIGRldmljZSBkcml2ZXIuCgpRRU1VIG1pZ2h0IG5vdCBkaXJlY3RseSBlbXVsYXRlIGBzdG1tYWNfcGNpYCwgYnV0IHdhaXQsIHRoZXJlJiMzOTtzIHRoYXQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgZXZlbiBpZiB0aGUgcHJvYmUgc3VjY2VlZHMsIHRvIGFjdHVhbGx5ICpyZWNlaXZlKiBwYWNrZXRzIGFuZCBleGVjdXRlIHRoZSBSWCBwYXRoICh3aGVyZSBgc3RtbWFjX3J4X29mZnNldGAgaXMgY2FsbGVkIGR1cmluZyByaW5nIGluaXRpYWxpemF0aW9uLCB3aGljaCBoYXBwZW5zIG9uIGBuZG9fb3BlbmApLCB0aGUgZHJpdmVyIGhhcyB0byBwcm9iZSBhbmQgb3Blbi4gVGhpcyBpcyBrZXkuCgpTbywgaWYgYHN0bW1hY19wY2lgIGNhbiBiZSBwcm9iZWQgdXNpbmcgYHN5el9wY2lfc2V0dXBgIGFuZCBgaXAgbGluayBzZXQgZXRoWCB1cGAgaXMgY2FsbGVkLCB0aGF0ICpzaG91bGQqIHRyaWdnZXIgYHN0bW1hY19pbml0X3J4X2J1ZmZlcnNgLiBIb3dldmVyLCB0aGUgcHJvYmUgbWlnaHQgcmVxdWlyZSBNTUlPIHJlZ2lvbnMgdG8gYmUgbWFwcGVkIGFuZCBmdW5jdGlvbmFsIOKAkyB0aGluZ3MgbGlrZSByZWFkaW5nIHRoZSBNQUMgYWRkcmVzcywgcmVzZXR0aW5nIHRoZSBNQUMuIElmIHRoZSBoYXJkd2FyZSBpc24mIzM5O3QgcHJvcGVybHkgZW11bGF0ZWQsIHRoZSBwcm9iZSB3aWxsIGZhaWwgcmVhZGluZy93cml0aW5nIHRvIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgaXQmIzM5O2xsIGdldCAweGZmZmZmZmZmIG9yIHRpbWVvdXRzLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIGBzdG1tYWNfcGNpX3Byb2JlYCBpdHNlbGYuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3BjaV9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNTpcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE2LVx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDAwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHN0bW1hY19wY2lfcHJvYmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGlzIHN0bW1hYyBkcml2ZXIgaW4gYSBQQ0kgY29udGV4dC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHdoYXQgaGFwcGVucyB3aXRoaW4gYHN0bW1hY19wY2lfcHJvYmVgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0cmFjZSB0aGUgZXNzZW50aWFsIG9wZXJhdGlvbnMgcGVyZm9ybWVkIGR1cmluZyBkZXZpY2UgYXR0YWNobWVudC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcmVnaXN0ZXIgbWFwcGluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiAoaW50ZXJydXB0cywgbWVtb3J5IHJlZ2lvbnMpLCB0aGUgY2hlY2tzLCBhbnkgcG9zc2libGUgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIHRoYXQgZ2V0IGludm9rZWQsIGFuZCB3aGF0IGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBwb3B1bGF0ZWQgdG8gcmVwcmVzZW50IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGNvZGUgZm9yIGFueSBwb3RlbnRpYWwgZ290Y2hhcyBsaWtlIGluY29ycmVjdCByZXNvdXJjZSByZXF1ZXN0cywgb3Zlcmxvb2tlZCBlcnJvciBoYW5kbGluZywgb3IsIG9mIGNvdXJzZSwgYW55IHF1aXJreSBzaWxpY29uLXNwZWNpZmljIHdvcmthcm91bmRzLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIFBDSSBkZXZpY2UgcHJvYmUgc2VxdWVuY2UgYnV0IEkgd2lsbCBxdWlja2x5IGJlIGxvb2tpbmcgZm9yIHRoZSBzdG1tYWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBJJiMzOTtsbCBiZSBrZWVwaW5nIGEgbG9va291dCBmb3IgYW55IHVudXN1YWwgcmVnaXN0ZXIgc2V0dGluZ3Mgb3IgY2xvY2sgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgZG9uZSBhdCB0aGlzIHN0YWdlIGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSB0aGUgUENJIGRldmljZSBhbmQgaWYgaXQgaW50ZXJhY3RzIGNsZWFubHkgd2l0aCB0aGUgYnJvYWRlciBzdG1tYWMgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExODpcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMTk6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEyMDpcdHtcbiAxMjE6XHRcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuIDEyMjpcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuIDEyMzpcdFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XG4gMTI0Olx0XHRpbnQgcmV0O1xuIDEyNTpcdFx0aW50IGk7XG4gMTI2Olx0XG4gMTI3Olx0XHRwbGF0ID0gc3RtbWFjX3BsYXRfZGF0X2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAxMjg6XHRcdGlmICghcGxhdClcbiAxMjk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTMwOlx0XG4gMTMxOlx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMTMyOlx0XHRcdFx0XHRcdCAgIHNpemVvZigqcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhKSxcbiAxMzM6XHRcdFx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4gMTM0Olx0XHRpZiAoIXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YSlcbiAxMzU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTM2Olx0XG4gMTM3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAxMzg6XHRcdFx0XHRcdFx0ICAgICBzaXplb2YoKnBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcbiAxMzk6XHRcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbiAxNDA6XHRcdGlmICghcGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmcpXG4gMTQxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDE0MjpcdFxuIDE0MzpcdFx0LyogRW5hYmxlIHBjaSBkZXZpY2UgKi9cbiAxNDQ6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAxNDU6XHRcdGlmIChyZXQpIHtcbiAxNDY6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcblwmIzM0OyxcbiAxNDc6XHRcdFx0XHRfX2Z1bmNfXyk7XG4gMTQ4Olx0XHRcdHJldHVybiByZXQ7XG4gMTQ5Olx0XHR9XG4gMTUwOlx0XG4gMTUxOlx0XHQvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkZXZpY2UgKi9cbiAxNTI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkmIzQzOyYjNDM7KSB7XG4gMTUzOlx0XHRcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIGkpID09IDApXG4gMTU0Olx0XHRcdFx0Y29udGludWU7XG4gMTU1Olx0XHRcdHJlcy5hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgaSwgU1RNTUFDX1JFU09VUkNFX05BTUUpO1xuIDE1NjpcdFx0XHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcbiAxNTc6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihyZXMuYWRkcik7XG4gMTU4Olx0XHRcdGJyZWFrO1xuIDE1OTpcdFx0fVxuIDE2MDpcdFxuIDE2MTpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMTYyOlx0XG4gMTYzOlx0XHRyZXQgPSBpbmZvLVx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xuIDE2NDpcdFx0aWYgKHJldClcbiAxNjU6XHRcdFx0cmV0dXJuIHJldDtcbiAxNjY6XHRcbiAxNjc6XHRcdHJlcy53b2xfaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY4Olx0XHRyZXMuaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY5Olx0XG4gMTcwOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2V0c29lZSA9IDE7XG4gMTcxOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhwZWUgPSAxO1xuIDE3MjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbWVzdGVlID0gMTtcbiAxNzM6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1yeGVlID0gMTtcbiAxNzQ6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW10eGVlID0gMTtcbiAxNzU6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVwc2kgPSAxO1xuIDE3NjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlZWRwcCA9IDE7XG4gMTc3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VwcnR5ZW4gPSAxO1xuIDE3ODpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldG1vdXRlbiA9IDE7XG4gMTc5Olx0XG4gMTgwOlx0XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbiAxODE6XHRcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbiAxODI6XHRcbiAxODM6XHRcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuIDE4NDpcdH1cbiAxODU6XHRcbiAxODY6XHQvKipcbiAxODc6XHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxuIDE4ODpcdCAqXG4gMTg5Olx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4gMTkwOlx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cbiAxOTE6XHQgKi9cbiAxOTI6XHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAxOTM6XHR7XG4gMTk0Olx0XHRzdG1tYWNfZHZyX3JlbW92ZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXG4gMTk4Olx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1x0XHQweDA3MDBcbiAxOTk6XHRcbiAyMDA6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbiAyMDE6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1lOT1BTWVNfR01BQzVfSURcdFx0MHg3MTAyXG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuIDIwNDpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuIDIwNzpcdFx0e31cbiAyMDg6XHR9O1xuIDIwOTpcdFxuIDIxMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbiAyMTM6XHRcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4gMjE0Olx0XHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG4gMjE1Olx0XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuIDIxNjpcdFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuIDIxNzpcdFx0LmRyaXZlciAgICAgICAgID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk4MAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBQcm9iZSoqCgpPa2F5LCBzbyBgc3RtbWFjX3BjaV9wcm9iZWAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgUENJIHZlcnNpb24gb2YgdGhlIFNUTU1BQyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjYWxsaW5nIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSDigJMgdGhlIFBDSS1zcGVjaWZpYyBwcm9iZSBsaWtlbHkgc2V0cyB1cCB0aGUgUENJIHJlc291cmNlcyBhbmQgdGhlbiBoYW5kcyBvZmYgdGhlIG1lYXQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHRvIGEgbW9yZSBnZW5lcmljIGRldmljZSBkcml2ZXIgcHJvYmUuIExldCYjMzk7cyBzZWUgd2hhdCBgc3RtbWFjX2R2cl9wcm9iZWAgaXMgZG9pbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyB0aGVyZSB0byBnZXQgdGhlIGJpZyBwaWN0dXJlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgc2V0dGluZyB1cCB0aGUgc2hhcmVkIGFuZCBkZXZpY2Utc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzLCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCBhbmQgbGlrZWx5IHJlZ2lzdGVyaW5nIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCYjMzk7cyBoYW5kbGluZyB0aGUgRE1BIGRlc2NyaXB0b3JzIGFuZCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTM9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDE0OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNS1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5MT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NzkzOnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5NC1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5NjogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTctICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMDU6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTA2LVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTE2Olx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTctXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjI6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0OD1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM0MQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQ2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjX2R2cl9wcm9iZWAgZnVuY3Rpb24uIFRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyIGlzIGV2ZW4gdG91Y2hpbmcgaXQgbWVhbnMgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIGl0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gU3l6a2FsbGVyJiMzOTtzIHByZXR0eSBjbGV2ZXIsIGl0IGNhbiB0ZXN0IFBDSSBkcml2ZXJzIGlmIHRoZXkgZG9uJiMzOTt0IGRlcGVuZCBvbiBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzLCBvciBpZiBRRU1VIGVtdWxhdGVzIHRoZSBoYXJkd2FyZS4gQW5kIHRoaW5raW5nIGFib3V0IGl0LCB5ZWFoLCBRRU1VIGhhcyBgaHcvbmV0L2Rlc2lnbndhcmUuY2AsIHdoaWNoIGlzIHRoZSBEZXNpZ25XYXJlIE1BQy4KCkkgY2FuJiMzOTt0IGluc3RhbnRseSB2ZXJpZnkgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkga25vdyBgZGVzaWdud2FyZWAgaXMgYSBjb21tb24gSVAgYmxvY2sgYW5kIFFFTVUgZW11bGF0ZXMgaXQgZm9yIHNvbWUgQVJNIGJvYXJkcywgbGlrZSB0aGUgYWxsd2lubmVyIGFuZCBpTVggb25lczsgZXZlbiBYaWxpbnggdXNlcyBpdCEgUUVNVSAqZGVmaW5pdGVseSogaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCBmb3IgYHN0bW1hY2AuIEFuZCwgd2FpdCwgd2UmIzM5O3ZlIGdvdCBgc3l6X3BjaV9zZXR1cGAsIHNvIHdlIGNhbiBpbmplY3QgUENJIGRldmljZXMuCgpCdXQgdGhlIGFjdHVhbCBwYXRjaCBpcyBhYm91dCBgc3RtbWFjX3J4X29mZnNldGAuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBjb2RlOgoKYGBgYwpzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQp7CglpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQoJCXJldHVybiBYRFBfUEFDS0VUX0hFQURST09NOwoKCXJldHVybiBORVRfU0tCX1BBRCAmIzQzOyBORVRfSVBfQUxJR047Cn0KYGBgCgpPa2F5LCBzbyBpdCBhZGRzIGBORVRfSVBfQUxJR05gIHRvIHRoZSBSWCBvZmZzZXQuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgaXQgYWZmZWN0cyBob3cgU0tCcyBhcmUgYWxsb2NhdGVkIGFuZCBhbGlnbmVkIGluIG1lbW9yeS4gSXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBDaGFuZ2VzIHRvIFJYIHBhY2tldCBtZW1vcnkgbGF5b3V0IGNhbiBoYXZlIGEgcmlwcGxlIGVmZmVjdCBvbiBYRFAsIFNLQiBwYXJzaW5nIGFuZCBETUEuIEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbWlzaW50ZXJwcmV0YXRpb24gYnVncy4KCldoYXQgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCB0byByZXByb2R1Y2UgdGhpcz8gSSB0aGluayB3ZSYjMzk7bGwgbmVlZCBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCB0aGVuIGVpdGhlciBgQ09ORklHX1NUTU1BQ19QQ0lgIG9yIGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQxOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBLY29uZmlnIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBTVE1NQUNfRVRIIEtjb25maWcqKgoKT2theSwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZvciBgU1RNTUFDX0VUSGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gRmlyc3QsIEkmIzM5O2xsIHNjYW4gdGhlIGZpbGUgZm9yIHRoZSBtYWluIGBjb25maWdgIHN5bWJvbC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBkZWZpbml0aW9uIG9mIGBTVE1NQUNfRVRIYCBpdHNlbGYg4oCTIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gVGhlbiwgSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCB0byBzZWUgaG93IGl0JiMzOTtzIGJyb2tlbiBkb3duOyBhcmUgdGhlcmUgc3ViLW9wdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBNQUMgdmFyaWFudCwgUEhZIGludGVyZmFjZSwgb3IgRE1BIGVuZ2luZT8KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llczogV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgYFNUTU1BQ19FVEhgIGNhbiBldmVuIGJlIGNvbnNpZGVyZWQ/IGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGFyZSBrZXkgaGVyZS4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyBzZXQ/IFRoYXQgdGVsbHMgbWUgd2hhdCB0aGUgY29tbW9uIG9yIGJhc2UgY29uZmlndXJhdGlvbiBpcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgc2VsZWN0YCBzdGF0ZW1lbnRzIHRvbzogV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgaW1wbGljaXRseSBlbmFibGVkIHdoZW4gYFNUTU1BQ19FVEhgIGlzIHNlbGVjdGVkPyBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgZXNzZW50aWFsLgoKTmV4dCwgSSYjMzk7bGwgY2hlY2sgZm9yIGFueSB0cmlzdGF0ZSBvciBib29sZWFuIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IGNoYW5nZSB0aGUgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBkcml2ZXIuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbiBhdmFpbGFibGUgaW4gdGhlIEtjb25maWcsIGVzcGVjaWFsbHkgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCgpGaW5hbGx5LCBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhpcyBLY29uZmlnIHdpdGggdGhlIGRyaXZlciBzb3VyY2UgY29kZSBpdHNlbGYuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgI2lmZGVmYCBvciBzaW1pbGFyIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBvcHRpb25zIEkmIzM5O20gc2VlaW5nIGluIHRoZSBLY29uZmlnLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBhY3R1YWwgZHJpdmVyJiMzOTtzIGJlaGF2aW9yLiBUaGlzIGlzIGFsbCBwYXJ0IG9mIGhvdyBJIGFwcHJvYWNoIEtjb25maWcsIGl0IGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgYSBkcml2ZXIgaXMgZGVwbG95ZWQuIFRoaXMgaXMgaG93IEkmIzM5O2xsIGV4dHJhY3QgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYFNUTU1BQ19FVEhgIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBTVE1NQUNfUENJYCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbSwgcHJlc3VtYWJseSBjb25jZXJuaW5nIFBDSS1iYXNlZCBjb25uZWN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byByZWNhbGwgdGhlIHJlbGV2YW50IFBDSSBidXMgYXJjaGl0ZWN0dXJlIGRldGFpbHMgYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgbG9naWMuIFdoYXQmIzM5O3MgdGhlIHNwZWNpZmljIHRhcmdldCBoZXJlPyBBcmUgd2UgbG9va2luZyBhdCBkcml2ZXIgaW1wbGVtZW50YXRpb24sIGhhcmR3YXJlIHJlZ2lzdGVycywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpbGwgaW5mb3JtIHRoZSBzcGVjaWZpY3MgSSBsb29rIGF0LiBJdOKAmXMgbGlrZWx5IGEgZHJpdmVyIG1vZHVsZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSB0byBlbnN1cmUgSSBkb27igJl0IHdhc3RlIHRpbWUuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggdGhlIGtlcm5lbCBzb3VyY2UgZm9yIHRoZSBgU1RNTUFDX1BDSWAgZHJpdmVyIGlmIHRoZXJlIGlzIG9uZSwgYW5kIHBlcmhhcHMgbG9vayBhdCB0aGUgcmVsZXZhbnQgZGF0YSBzaGVldHMgdG8gc2VlIHRoZSBleHBlY3RlZCBkZXZpY2UgYmVoYXZpb3VyIGF0IHRoZSBoYXJkd2FyZSBsZXZlbC4gSSB3aWxsIHBheSBhdHRlbnRpb24gdG8gaW50ZXJydXB0cyBhbmQgRE1BIGNvbmZpZ3VyYXRpb25zLCBhcyB0aGVzZSBhcmUgb2Z0ZW4gYm90dGxlbmVja3Mgb3IgcG9pbnRzIG9mIGludGVyZXN0IGZvciB0dW5pbmcuIFRoZSBnb2FsIGlzIHRvIHJlZnJlc2ggdGhlIGFyY2hpdGVjdHVyZSBhbmQgdW5kZXJzdGFuZCB0aGUgY3JpdGljYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjk0OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgU1RNTUFDX1BDSWAgRGVwZW5kZW5jeSBDaGFpbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGxpbmVhZ2UgYW5kIHNlZSBob3cgdGhpcyBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlciBpbnRlcmZhY2VzIHdpdGggdGhlIFBDSSBidXMuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgY29tcG9uZW50cywgcG90ZW50aWFsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgYW5kIGFueSBuZWNlc3Nhcnkgc2hhcmVkIGxpYnJhcmllcyBvciBrZXJuZWwgbW9kdWxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBzdWJzeXN0ZW1zIHJlbHkgb24gdGhpcyBzcGVjaWZpYyBkcml2ZXIgdG8gZ2V0IGEgaG9saXN0aWMgdmlldy4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIGFuZCBvdGhlciBrZXkgYXNwZWN0cy4gSSBhbSBnb2luZyB0byBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIGJ1cyBpdHNlbGYuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyBpbnRlcnJ1cHRzIGFyZSBoYW5kbGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3csIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBzaGFyZWQgbWVtb3J5IHJlZ2lvbnMgd2lsbCBiZSBrZXkuIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDQyMDpcdGVuZGlmICMgU1RNTUFDX0VUSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQyNgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIFJlY2VpdmUgT2Zmc2V0KioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIFNUTU1BQyBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSBzZWUgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb25zLCBidXQgbm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIGBzdG1tYWNfcnhfb2Zmc2V0YC4gSXQgbG9va3MgbGlrZSB0aGF0IGZ1bmN0aW9uIGlzIHR1Y2tlZCBhd2F5IGluIGBzdG1tYWNfbWFpbi5jYC4gTXkgZ29hbCBpcyB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgb3IgdXNlZC4KClNpbmNlIEkgYW0gbW9zdCBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIsIEkgbmVlZCBhIGdvb2QgZm9jdXMgc3ltYm9sLiBgc3RtbWFjX3J4X29mZnNldGAgaXRzZWxmIGlzbiYjMzk7dCBhIGdyZWF0IGNob2ljZSwgdGhvdWdoLCBiZWNhdXNlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpbWl0ZWQgaW4gc2NvcGUgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHBpZWNlcyBvZiB0aGUgY29kZSBkZXBlbmQgb24gaXQuIExldCYjMzk7cyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICpjYWxsaW5nKiBgc3RtbWFjX3J4X29mZnNldGAuIE9rYXksIGl0JiMzOTtzIGNhbGxlZCBieSBgc3RtbWFjX2luaXRfcnhfYnVmZmVyc2AgYW5kIGBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AuIE5vdyBJJiMzOTttIGNoZWNraW5nIHRvIHNlZSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGFsc28gc3RhdGljLCB3aGljaCB3b3VsZCBmdXJ0aGVyIGNvbnN0cmFpbiBteSBhYmlsaXR5IHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19pbml0X3J4X2J1ZmZlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjEyPXN0YXRpYyB2b2lkIHN0bW1hY19jbGVhcl9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjI4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjI5OiAqIHN0bW1hY19pbml0X3J4X2J1ZmZlcnMgLSBpbml0IHRoZSBSWCBkZXNjcmlwdG9yIGJ1ZmZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTYzMC0gKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjM4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjM5OnN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcnhfYnVmZmVycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NDAtXHRcdFx0XHQgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTc2ND1zdGF0aWMgaW50IHN0bW1hY19hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3Nzc6XHRcdHJldCA9IHN0bW1hY19pbml0X3J4X2J1ZmZlcnMocHJpdiwgZG1hX2NvbmYsIHAsIGksIGZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzc4LVx0XHRcdFx0XHQgICAgIHF1ZXVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyNzkKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDb25zaWRlcmluZyBSZXNvdXJjZSBBbGxvY2F0aW9uIGluIHRoZSBTVE1NQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHN0bW1hY19hbGxvY19yeF9idWZmZXJzYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBtYWtlcyBtZSB0aGluayBhYm91dCBpdHMgc2NvcGUgd2l0aGluIHRoZSBkcml2ZXIuIEl0JiMzOTtzIHByb2JhYmx5IG9ubHkgY2FsbGVkIGludGVybmFsbHksIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBhbiBhbGxvY2F0aW9uIGZ1bmN0aW9uLiBCdXQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciByZXNvdXJjZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4KClNwZWNpZmljYWxseSwgd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlc2A/IElzIGl0IGFsc28gc3RhdGljPyBJcyBpdCBzaW1pbGFybHkgc2NvcGVkPyBBcmUgdGhleSBjYWxsZWQgaW4gYSBjb29yZGluYXRlZCBtYW5uZXI/IEFyZSB0aGVyZSBhbnkgcmVzb3VyY2Utc2hhcmluZyBpbXBsaWNhdGlvbnMgb3IgcG90ZW50aWFsIGNvbnRlbnRpb24gaXNzdWVzIGlmIHRoZXNlIGFsbG9jYXRpb24gZnVuY3Rpb25zIGhhdmUgb3ZlcmxhcHBpbmcgcHVycG9zZXMsIG9yIGFyZSBpbnZvbHZlZCBpbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIG92ZXJhbGwgUlggZGVzY3JpcHRvciBzZXR1cD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJlc291cmNlIGFsbG9jYXRpb24gZnVuY3Rpb25zIHJlbGF0ZSB0byBlYWNoIG90aGVyLCBzbyBJIGNhbiBlbnN1cmUgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZWZmaWNpZW50IGFuZCBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMDY9c3RhdGljIHZvaWQgZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxNy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIxODogKiBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyAtIGFsbG9jIFJYIHJlc291cmNlcyAocGVyIHF1ZXVlKS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxOS0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMjYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMjc6c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMjgtXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIzMDE9c3RhdGljIGludCBhbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMwOS1cdGZvciAocXVldWUgPSAwOyBxdWV1ZSBcdTAwM2MgcnhfY291bnQ7IHF1ZXVlJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzEwOlx0XHRyZXQgPSBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzExLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzAwNT12b2lkIHN0bW1hY19lbmFibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDEyOlx0cmV0ID0gX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDEzLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE5OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFJYIFF1ZXVlIEVuYWJsZW1lbnQgaW4gc3RtbWFjKioKCkhtbSwgc28gYHN0bW1hY19lbmFibGVfcnhfcXVldWVgIGlzbiYjMzk7dCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgYSBiaXQgdW5leHBlY3RlZC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IG1pZ2h0IGJlIGEgbW9kdWxlLWludGVybmFsIGhlbHBlci4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCAqaXMqIGJlaW5nIGNhbGxlZC4gU2luY2UgaXQmIzM5O3Mgbm90IHN0YXRpYywgdGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgcGFydCBvZiB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLCBvciBhdCBsZWFzdCBjYWxsZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRyaXZlci4gTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdXRpbGl6ZWQuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpcyBwcm9iYWJseSB3aXRoaW4gdGhlIGBzdG1tYWNfb3BlbmAgZnVuY3Rpb24sIG9yIHBvdGVudGlhbGx5IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGJyaW5ndXAgbGlrZSB0aGUgcHJvYmUuIEl0IHdvdWxkIGJlIGF0IHRoaXMgcG9pbnQgdGhhdCB0aGUgaGFyZHdhcmUgd291bGQgYmUgZW5hYmxlZCwgb3Igbm90LCBpbiByZWxhdGlvbiB0byB0aGUgcnggcXVldWUgZnVuY3Rpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfb3BlbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNTA9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMTY6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDExNy0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTI1OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI2LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxODM6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMTE6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDE9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzc6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMwODpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzA5LVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTk0PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTMtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjE0Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYxOT1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMC1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MzE6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTgyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIERhdGEgUGF0aCBvZiBgc3RtbWFjX3J4X29mZnNldGAqKgoKQWxyaWdodCwgSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBgc3RtbWFjYCBkcml2ZXIgY29kZS4gUmlnaHQsIGBzdG1tYWNfb3BlbmAuLi4gdGhhdCYjMzk7cyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjaywgd2hpY2ggbWFrZXMgc2Vuc2UuIEhtbSwgYnV0IGl0JiMzOTtzICpzdGF0aWMqLiBUaGF04oCZcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSSBuZWVkIHRvIGZpbmQgdGhlIGRhdGEgcGF0aCB0aGF0IHJlYWNoZXMgYHN0bW1hY19yeF9vZmZzZXRgLiAgSWYgYHN0bW1hY19vcGVuYCBpcyBzdGF0aWMsIHRoZW4gd2hvIGlzIHVzaW5nIHRoaXMgdGhpbmc/IEkgbmVlZCB0byBmaW5kIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IGNhbGxzIG9yIGlzIHJlbGF0ZWQgdG8gYHN0bW1hY19yeF9vZmZzZXRgLiAKCkFoISBIZXJlIHdlIGdvLCBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgaXMgKm5vdCogc3RhdGljLiBHb29kISBUaGF0JiMzOTtzIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50LiBOb3csIGxldCYjMzk7cyBjaGVjayBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgYW5kIHNlZSBpZiB0aGlzIHByb3ZpZGVzIHRoZSBsaW5rIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00Mjk9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MzA6dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQzMS12b2lkIHN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5OTI9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMDU6dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDA2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM9OT1zdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00NS1cdGlmIChuZWVkX3VwZGF0ZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjQ2Olx0XHRzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00Ny1cdFx0c3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTU4PXN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTg1LVx0aWYgKG5lZWRfdXBkYXRlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6ODY6XHRcdHN0bW1hY19lbmFibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTg3LVx0XHRzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1ODAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhvc2UgZnVuY3Rpb24gbmFtZXMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkZ1bmN0aW9uIFByb2JlIEFuYWx5c2lzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGBzdG1tYWNfeGRwX3NldHVwX3Bvb2xgIOKAkyB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZDsgaXQmIzM5O3MgZ290ICYjMzQ7WERQJiMzNDsgcmlnaHQgdGhlcmUgaW4gdGhlIG5hbWUuIEl0JiMzOTtzIGNsZWFybHkgZGVhbGluZyB3aXRoIFhEUCBzZXR1cCwgcHJvYmFibHkgbWVtb3J5IHBvb2xzIG9yIHJpbmcgYnVmZmVycy4gTm93LCBgc3RtbWFjX2R2cl9wcm9iZWAuLi4gdGhhdCYjMzk7cyB0aGUgZHJpdmVyIHByb2JlLCBhbmQgc2luY2UgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBpdCYjMzk7cyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlci4gSXQmIzM5O3MgdGhlIGJpZyBvbmUuIFRoZW4gd2UgaGF2ZSBgc3RtbWFjX3BjaV9wcm9iZWAsIHdoaWNoICppcyogc3RhdGljOyBzbywgdGhhdCYjMzk7cyBsaWtlbHkgYSBwcm9iZSBzcGVjaWZpY2FsbHkgZm9yIFBDSSBkZXZpY2VzLCBhbmQgcHJvYmFibHkgY2FsbGVkIGZyb20gYHN0bW1hY19kdnJfcHJvYmVgLiBGaW5hbGx5LCBgc3RtbWFjX3BsdGZyX3Byb2JlYCBpcyBhbHNvIG5vbi1zdGF0aWM7ICYjMzQ7cGx0ZnImIzM0OyBwcm9iYWJseSBtZWFucyBwbGF0Zm9ybS4gU2luY2UgYHN0bW1hY19kdnJfcHJvYmVgIGlzIG5vbi1zdGF0aWMsIGxldCYjMzk7cyBkaWcgaW50byBgc3RtbWFjX3BsdGZyX3Byb2JlYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3BsdGZyX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjExNjpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTI5PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjY0Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz0xOT1zdGF0aWMgaW50IGR3bWFjX2dlbmVyaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NDk6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0yOTM9c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNTQ6XHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzU1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MTU0PXN0YXRpYyBpbnQgaW5nZW5pY19tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjIxNTpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjA0Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIwNS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTgyPXN0YXRpYyBpbnQgbnZ0X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjExNTpcdHJldHVybiBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTExNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02ODQ9c3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3OTc6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03OTgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxOTc6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNTY4PXN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYxMzpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIxMzpcdHJldHVybiBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxNC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY1NTpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjU2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYz0yNDk9c3RhdGljIGludCBzdGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzoyODk6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xMDU9c3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjEzODpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTk1Olx0cmV0ID0gc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz05OT1zdGF0aWMgaW50IHN1bjdpX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTQ3Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTQ4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jPTIxNj1zdGF0aWMgaW50IHRoZWFkX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjI2NDpcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04MzM9c3RhdGljIGludCBzdG1tYWNfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NDE6ICogc3RtbWFjX3BsdGZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDItICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODQ3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODQ4OmludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0OS1cdFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU5OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbHRmcl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04NjE9c3RhdGljIHZvaWQgZGV2bV9zdG1tYWNfcGx0ZnJfcmVtb3ZlKHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODY5OiAqIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzAtICogQHBkZXY6IHBvaW50ZXIgdG8gdGhlIHBsYXRmb3JtIGRldmljZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg3Mi0gKiBAcmVzOiBzdG1tYWMgcmVzb3VyY2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzM6ICogRGVzY3JpcHRpb246IERldnJlcyB2YXJpYW50IG9mIHN0bW1hY19wbHRmcl9wcm9iZSgpLiBBbGxvd3MgdXNlcnMgdG8gc2tpcFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc0LSAqIGNhbGxpbmcgc3RtbWFjX3BsdGZyX3JlbW92ZSgpIG9uIGRyaXZlciBkZXRhY2guXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzY6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzctXHRcdFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04ODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4ODI6XHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg4My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODg4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChkZXZtX3N0bW1hY19wbHRmcl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04OTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODkzLSAqIEBwZGV2OiBwb2ludGVyIHRvIHRoZSBwbGF0Zm9ybSBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg5NDogKiBEZXNjcmlwdGlvbjogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2Ygc3RtbWFjX3BsdGZyX3Byb2JlKCkgYnkgcmVtb3ZpbmcgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04OTUtICogZHJpdmVyIGFuZCBjYWxsaW5nIHRoZSBwbGF0Zm9ybSYjMzk7cyBleGl0KCkgY2FsbGJhY2suXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MjA9aW50IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMzppbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yNC1cdFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI1LVx0XHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyNjppbnQgZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI3LVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDc1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYHN0bW1hY2AgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGFuZCBJIHNlZSB0aGF0IGJvdGggYHN0bW1hY19wbHRmcl9wcm9iZWAgYW5kIGBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZWAgYXJlIGV4cG9ydGVkLCBhbG9uZyB3aXRoIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhvc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhvc2Ugc3ltYm9scyBhcyB0aGV5IGxvb2sgbGlrZSBrZXkgZW50cnkgcG9pbnRzLgoKQnV0IGhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHN0bW1hY19yeF9vZmZzZXRgIGdldHMgY2FsbGVkIHdpdGhpbiBgc3RtbWFjX29wZW5gLiBBbmQgYHN0bW1hY19vcGVuYCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYG5kb19vcGVuYCBjYWxsYmFjay4gTm93LCBteSBtaW5kIGlzIHJhY2luZzsgYXJlIHRoZXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGludm9rZWQgKmR1cmluZyogdGhlIGV4ZWN1dGlvbiBvZiBgbmRvX29wZW5gPyBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBpbmZvcm1hdGlvbi4KClRoaW5raW5nIGEgYml0IG1vcmUsIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgYm90aCBhbHNvIGNhbGwgYHN0bW1hY19vcGVuYC4gQWxyaWdodCwgSSB0aGluayBJJiMzOTtsbCBkaXZlIGEgbGl0dGxlIGRlZXBlciBpbnRvIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgdG8gc2VlIHdoZXJlIGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcmVpbml0X3F1ZXVlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTQ9aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNi1cdFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQxNzppbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDE4LWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9OTg5PXN0YXRpYyBpbnQgc3RtbWFjX3NldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtOTk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzo5OTk6XHRyZXR1cm4gc3RtbWFjX3JlaW5pdF9xdWV1ZXMoZGV2LCBjaGFuLVx1MDAzZXJ4X2NvdW50LCBjaGFuLVx1MDAzZXR4X2NvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMTAwMC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTczPXN0YXRpYyB2b2lkIHN0bW1hY19uYXBpX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzU5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzU5NDppbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1OTUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzA2NQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBtb3N0IHByb21pc2luZyBlbnRyeSBwb2ludHMgYW5kIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIgZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgYHN0bW1hY19yZWluaXRfcXVldWVzYCBpcyB0cmlnZ2VyZWQgYnkgYGV0aHRvb2wgc2V0X2NoYW5uZWxzYCwgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgaXMgdGllZCB0byBgZXRodG9vbCBzZXRfcmluZ3BhcmFtYC4gVGhlc2UgYXJlIGJvdGggZXhjZWxsZW50IHRhcmdldHMgYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB3YXlzIHRvIGR5bmFtaWNhbGx5IHJlY29uZmlndXJlIHRoZSBkcml2ZXIgYWZ0ZXIgaW5pdGlhbCBzZXR1cCwgd2hpY2ggb2Z0ZW4gZXhwb3NlcyBtb3JlIGludGVyZXN0aW5nIGNvZGUgcGF0aHMuIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCBpcyBhbHNvIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gWERQIHNldHVwLCBtZWFuaW5nIHRoaXMgc2hvdWxkIGJlIGEgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBpcyBvZnRlbiB0ZXN0ZWQuCgpJJiMzOTt2ZSBhbHJlYWR5IGlkZW50aWZpZWQgdGhlc2UgYXMgc2lnbmlmaWNhbnQgY2FsbCB0YXJnZXRzOgoqICAgYHN0bW1hY19kdnJfcHJvYmVgCiogICBgc3RtbWFjX3BsdGZyX3Byb2JlYAoqICAgYGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlYAoqICAgYHN0bW1hY19yZWluaXRfcXVldWVzYAoqICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYAoqICAgYHN0bW1hY19lbmFibGVfcnhfcXVldWVgCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgYnJvYWRlciBjb250ZXh0LiBgc3RtbWFjX3J4X29mZnNldGAgZ2V0cyBjYWxsZWQgZnJvbSBgc3RtbWFjX2luaXRfcnhfYnVmZmVyc2AsIHdoaWNoIGNhc2NhZGVzIGRvd24gdGhyb3VnaCBgc3RtbWFjX2FsbG9jX3J4X2J1ZmZlcnNgLCBgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYW5kIGZpbmFsbHkgYF9fc3RtbWFjX29wZW5gLiBBbmQgYF9fc3RtbWFjX29wZW5gIGlzLCBpbiBmYWN0LCBzdGF0aWMsIGFuZCBgc3RtbWFjX29wZW5gIGlzIHRvbywgYWx0aG91Z2ggaXQgaXMgYXNzaWduZWQgdG8gYG5kb19vcGVuYC4gU28sIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBtYWluIHByb2JlIGVudHJ5IHBvaW50LgoKVGhlcmVmb3JlLCBmb3IgZWZmZWN0aXZlIGZ1enppbmcsIEkgc2hvdWxkIGZvY3VzIG9uIGBzdG1tYWNfZHZyX3Byb2JlYCBhcyBhIHByaW1hcnkgZW50cnkgcG9pbnQsIGFsb25nIHdpdGggdGhlIGV0aHRvb2wgYW5kIFhEUCBwYXRocyB0aGF0IHJlLWluaXRpYWxpemUgdGhlIHJpbmdzLiBNeSByZWZpbmVkIGZvY3VzIHN5bWJvbHMgd2lsbCBiZToKKiAgIGBzdG1tYWNfZHZyX3Byb2JlYAoqICAgYHN0bW1hY19yZWluaXRfcXVldWVzYAoqICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYAoqICAgYHN0bW1hY19lbmFibGVfcnhfcXVldWVgCgpUbyBidWlsZCB0aGUgZW52aXJvbm1lbnQgSSYjMzk7bGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOgoqICAgYFNUTU1BQ19FVEhgCiogICBgU1RNTUFDX1BDSWAKKiAgIGBTVE1NQUNfUExBVEZPUk1gCgpJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBgU1RNTUFDX1BDSWAgaXMgc3VmZmljaWVudCB0byBjb21waWxlIGBzdG1tYWNfcGNpLmNgLCBidXQgaXQgc2hvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcdCYjNDM7PSBkd21hYy1tb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTgxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgbGluZToKCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIGxpbmU6IGBzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9gLiBSaWdodCBhd2F5LCBteSBicmFpbiBmbGFncyB0aGlzIGFzIGEgYnVpbGQgc3lzdGVtIGRpcmVjdGl2ZSwgcHJvYmFibHkgZnJvbSBhIGBNYWtlZmlsZWAgb3Igc2ltaWxhci4gVGhlIGZvcm1hdCBpcyB0eXBpY2FsOiBzZXR0aW5nIGEgdmFyaWFibGUsIGBzdG1tYWMtcGNpLW9ianNgLCB0byBhIHNwZWNpZmljIG9iamVjdCBmaWxlLCBgc3RtbWFjX3BjaS5vYC4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgYnVpbGRpbmcgYSBtb2R1bGUgb3IgYSBjb21wb25lbnQgcmVsYXRlZCB0byBhbiBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFBDSSB2YXJpYW50LCBpZiBJJiMzOTttIGludGVycHJldGluZyAmIzM0O1BDSSYjMzQ7IGNvcnJlY3RseS4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IFdoYXQgaXMgdGhlIGNvbnRleHQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0bW1hYy1wY2ktb2Jqc2AgbWVhbnMgaW4gdGhlIGxhcmdlciBzY2hlbWUgb2YgdGhpbmdzLiBJdCYjMzk7cyBsaWtlbHkgZGVmaW5pbmcgYSBsaXN0IG9mIG9iamVjdCBmaWxlcyB0aGF0LCB3aGVuIGxpbmtlZCB0b2dldGhlciwgd2lsbCBwcm9kdWNlIHNvbWUgb3V0cHV0IGZpbGUg4oCTIG1heWJlIGEgYC5rb2Aga2VybmVsIG1vZHVsZSwgYSBzdGF0aWNhbGx5IGxpbmtlZCBsaWJyYXJ5LCBvciBwYXJ0IG9mIGEgbGFyZ2VyIGJpbmFyeS4KClNvLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAuIEkgd2FudCB0byBrbm93IGhvdyBgU1RNTUFDX1BDSWAgZmFjdG9ycyBpbnRvIGFsbCBvZiB0aGlzLiBJcyBpdCBhIGNvbmRpdGlvbmFsIHZhcmlhYmxlPyBEb2VzIGl0IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiBgc3RtbWFjX3BjaS5vYCBpbiB0aGUgYnVpbGQgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBzb21lIG90aGVyIGRlcGVuZGVuY3kgb3IgZmVhdHVyZT8gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgdXNhZ2Ugb2YgYFNUTU1BQ19QQ0lgIGluIHRoZSBgTWFrZWZpbGVgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGlzIGNvdWxkIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCB0aGUgdXNlciBzZXRzLCBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIFBDSSBzdXBwb3J0IGluIHRoZSBkcml2ZXIgYnVpbGQuIExldCYjMzk7cyBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19TVE1NQUNfUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9OTg9VGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgYENPTkZJR19TVE1NQUNfRVRIYGA6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTk5LSAtIGBgQ09ORklHX1NUTU1BQ19QTEFURk9STWBgOiBpcyB0byBlbmFibGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTAwOiAtIGBgQ09ORklHX1NUTU1BQ19QQ0lgYDogaXMgdG8gZW5hYmxlIHRoZSBwY2kgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0xMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXHQmIzQzOz0gc3RtbWFjX2xpYnBjaS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0ODc5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBTVE1NQUMgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgY2xlYXIgdGhhdCBgQ09ORklHX1NUTU1BQ19QQ0lgIGlzIHJlc3BvbnNpYmxlIGZvciBidWlsZGluZyBgc3RtbWFjLXBjaS5vYCwgd2hpY2ggaW4gdHVybiBpbmNsdWRlcyBgc3RtbWFjX3BjaS5vYC4gSSYjMzk7bSB0cmFja2luZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWVpbmcgaG93IHRoZSBtb2R1bGVzIGFyZSBzdHJ1Y3R1cmVkLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwcyB0aGluZ3MgbW9kdWxhciBhbmQgb3JnYW5pemVkLiBJIHNlZSBub3cgdGhhdCBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBTVE1NQUNfUExBVEZPUk1gIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHdlIGFyZSB1c2luZy4KCkp1c3Qgd2FudCB0byBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0aG91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgaW4gdGhpcyBzcGFjZT8gVGltZSB0byBzY2FuIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIGBEV01BQ19HRU5FUklDYC4uLiBsZXQmIzM5O3Mgc2VlIHdoZXJlIHRoYXQgZml0cyBpbi4gTmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBhbGwgcG9zc2libGUgY29uZmlncyBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19HRU5FUklDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTI6Y29uZmlnIERXTUFDX0dFTkVSSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMDEKCQkJCQkJCW91dHB1dDogMTg0CgkJCQkJCQl0aG91Z2h0czogNDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgZ29vZCBoYW5kbGUgb24gaXRzIGltcGxpY2F0aW9ucy4gSW5jbHVkaW5nIGBEV01BQ19HRU5FUklDYCBsb29rcyBsaWtlIGEgc21hcnQgbW92ZSDigJMgaXQgc2hvdWxkIGJyb2FkZW4gdGhlIHBvdGVudGlhbCBmb3IgZ2VuZXJpYyBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZywgd2hpY2ggaXMgYWx3YXlzIHVzZWZ1bC4KCk5vdywgZm9jdXNpbmcgb24gdGhlIGNvcmUgb2YgdGhlIHBhdGNoLCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY2hhbmdlIGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYHN0bW1hY19yeF9vZmZzZXRgLiAgQWRkaW5nIGBORVRfSVBfQUxJR05gIHRvIHRoZSBSWCBvZmZzZXQgaXMgc2lnbmlmaWNhbnQuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIG1lbW9yeSBsYXlvdXQgb2YgcmVjZWl2ZWQgcGFja2V0cy4gU3BlY2lmaWNhbGx5LCB0aGlzIGFkanVzdG1lbnQgaW5mbHVlbmNlcyB0aGUgYGRtYV9idWZfc3pfcGFkYCBjYWxjdWxhdGlvbjoKCmBgYGMKCWRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSAmIzQzOyBkbWFfY29uZi0mZ3Q7ZG1hX2J1Zl9zeiAmIzQzOwoJCQkgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTsKYGBgCgpUaGlzICp3aWxsKiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgRE1BIGJ1ZmZlci4gVGhlIGluaXRpYWwgcmVhY3Rpb24gSSBoYWQsIGFuZCBzdGlsbCBoYXZlLCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIHNlcmlvdXMgYXR0ZW50aW9uIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBjb3VsZCBpbnRyb2R1Y2UgdW5hbGlnbmVkIElQIGhlYWRlciBhY2Nlc3NlcywgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGJ1ZmZlciBvdmVyZmxvd3MgaWYgdGhlIGJ1ZmZlciBzaXplIHdhc24mIzM5O3QgcHJvcGVybHkgcmUtc2l6ZWQgaW4gYWxsIHBhcnRzIG9mIHRoZSBjb2RlLgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYFRydWVgLiAgV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIGNvdmVyaW5nIHRoZSBjcnVjaWFsIGVudHJ5IHBvaW50cyBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMuIEkmIzM5O2xsIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gdGhlc2Ugc3ltYm9sczoKCiogICBgc3RtbWFjX2R2cl9wcm9iZWAKKiAgIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AKKiAgIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAKKiAgIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYAoKV2UmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zIHRvIGVuc3VyZSB0aGUgZnV6emluZyBpcyBjb21wcmVoZW5zaXZlLiBJJiMzOTttIHRoaW5raW5nOgoKKiAgIGBTVE1NQUNfRVRIYAoqICAgYFNUTU1BQ19QQ0lgCiogICBgU1RNTUFDX1BMQVRGT1JNYAoqICAgYERXTUFDX0dFTkVSSUNgCgpUaGUgcmVhc29uaW5nIGhlcmUgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggZGlyZWN0bHkgdG91Y2hlcyBob3cgdGhlIGRyaXZlciBjYWxjdWxhdGVzIGJ1ZmZlciBzaXplcyBmb3IgcmVjZWl2aW5nIHBhY2tldHMuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFBDSSBhbmQgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgcGF0aHMgKHRoYXQmIzM5O3Mgd2hlcmUgb3VyIGBEV01BQ19HRU5FUklDYCBpbmNsdXNpb24gaGVscHMpLiBJdCBhbHNvIGFmZmVjdHMgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uIFdlIG5lZWQgdG8gZXhwbG9yZSB0aGVzZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIHdpdGggdGhlIGVuaGFuY2VkIGJ1ZmZlciBjYWxjdWxhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgICAmIzM0O3N0bW1hY19yZWluaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O3N0bW1hY19yZWluaXRfcmluZ3BhcmFtJiMzNDssCiAgICAmIzM0O3N0bW1hY19lbmFibGVfcnhfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0bW1hY19yeF9vZmZzZXRgIHRvIGluY2x1ZGUgYE5FVF9JUF9BTElHTmAgaW4gdGhlIFJYIGJ1ZmZlciBvZmZzZXQgY2FsY3VsYXRpb24uIFRoaXMgYWx0ZXJzIHRoZSBtZW1vcnkgbGF5b3V0IGFuZCBhbGxvY2F0aW9uIHNpemUgZm9yIHJlY2VpdmVkIHBhY2tldHMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIERNQSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgcGFja2V0IHBhcnNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgUENJIG9yIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIGFuZCBuZXR3b3JrIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtEV01BQ19HRU5FUklDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVpbml0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVpbml0X3JpbmdwYXJhbSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCB0byBpbmNsdWRlIGBORVRfSVBfQUxJR05gIGluIHRoZSBSWCBidWZmZXIgb2Zmc2V0IGNhbGN1bGF0aW9uLiBUaGlzIGFsdGVycyB0aGUgbWVtb3J5IGxheW91dCBhbmQgYWxsb2NhdGlvbiBzaXplIGZvciByZWNlaXZlZCBwYWNrZXRzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBETUEgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHBhY2tldCBwYXJzaW5nLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFBDSSBvciBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZyBhbmQgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzRhNTQ5MjUwMGRhMmQ0OGVkYTk4NDljMTQ2YjBlNTZhNDlmMTMzNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDExOjM0OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0xNTI5LDcgJiM0MzsxNTI5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAlpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQogCQlyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTsKIAotCXJldHVybiBORVRfU0tCX1BBRDsKJiM0MzsJcmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTjsKIH0KIAogc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyNwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgc3RtbWFjIFJlY2VpdmUgQnVmZmVyIE9mZnNldCBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHN0bW1hY19yeF9vZmZzZXRgIHdpdGhpbiBgc3RtbWFjX21haW4uY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdHdlYWtpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHJldHVybiB2YWx1ZS4gSXQmIzM5O3MgbW92aW5nIGZyb20ganVzdCByZXR1cm5pbmcgYE5FVF9TS0JfUEFEYCB0byBgTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOYC4gU28sIHRoZSBpbXBhY3QgaXMgb24gdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSBhbnkgY2hhbmdlIHRvIHRoZSBidWZmZXIgb2Zmc2V0IGNhbiBoYXZlIHJhbWlmaWNhdGlvbnMgZm9yIGFsaWdubWVudCBhbmQgcGVyZm9ybWFuY2UsIGFuZCBpbiB0aGUgd29yc3QgY2FzZSwgcGFja2V0IHBhcnNpbmcsIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIG9mZi1ieS1vbmUgZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHNoaWZ0IGlzIGhhcHBlbmluZy4gV2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlPyBJIGtub3cgYE5FVF9JUF9BTElHTmAgaXMgdGhlIG5hdHVyYWwgYWxpZ25tZW50IGJvdW5kYXJ5IGZvciBJUCBoZWFkZXJzLCBzbyBpcyB0aGlzIGFib3V0IGltcHJvdmluZyBJUCBoZWFkZXIgcHJvY2Vzc2luZz8gT3IgYXJlIHRoZXkgdHJ5aW5nIHRvIGZpeCBzb21lIGFsaWdubWVudCBwcm9ibGVtIHdpdGggdGhlIE1BQyBpdHNlbGYgb3IgcGVyaGFwcyB0aGUgRE1BIGVuZ2luZT8gVG8gdHJ1bHkgZ3Jhc3AgdGhlIHNpZ25pZmljYW5jZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIFRpbWUgdG8gem9vbSBvdXQgYW5kIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmdW5jdGlvbiBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIHJlc3Qgb2YgdGhlIHJlY2VpdmUgcGF0aC4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgZGVwZW5kZW50IHN1YnN5c3RlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yeF9vZmZzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTUxNz1zdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGxheV9yaW5ncyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNTI3OnN0YXRpYyB1bnNpZ25lZCBpbnQgc3RtbWFjX3J4X29mZnNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE1Mjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTYzOT1zdGF0aWMgaW50IHN0bW1hY19pbml0X3J4X2J1ZmZlcnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1NC1cdFx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTY1NTpcdFx0YnVmLVx1MDAzZXBhZ2Vfb2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMjc9c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjQxOlx0ZG1hX2J1Zl9zel9wYWQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpICYjNDM7IGRtYV9jb25mLVx1MDAzZWRtYV9idWZfc3ogJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI0Mi1cdFx0XHQgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTQtXHRwcF9wYXJhbXMuZG1hX2RpciA9IHhkcF9wcm9nID8gRE1BX0JJRElSRUNUSU9OQUwgOiBETUFfRlJPTV9ERVZJQ0U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyNTU6XHRwcF9wYXJhbXMub2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI1Ni1cdHBwX3BhcmFtcy5tYXhfbGVuID0gZG1hX2NvbmYtXHUwMDNlZG1hX2J1Zl9zejtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTktXHRcdHBwX3BhcmFtcy5vZmZzZXQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjYwOlx0XHRwcF9wYXJhbXMubWF4X2xlbiAmIzQzOz0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI2MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMAoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiAzNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFJYIEJ1ZmZlciBPZmZzZXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0d2Vha2luZyB0aGUgcmVjZWl2ZSBidWZmZXIgb2Zmc2V0LCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHRzIGdvIHRvIG1lbW9yeSBsYXlvdXQsIGJ1ZmZlciBzaXppbmcsIGFuZCBhbGlnbm1lbnQuIFRoZSBjb3JlIGlzc3VlIGhlcmUgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gYWxpZ25pbmcgdGhlIElQIGhlYWRlciB3aXRoaW4gdGhlIHJlY2VpdmVkIHBhY2tldCBkYXRhLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgcHJvdG9jb2xzLCBzbyBwcm9wZXIgYWxpZ25tZW50IGlzIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZSBhbmQgcHJldmVudGluZyBhbGwgc29ydHMgb2YgYWxpZ25tZW50IGZhdWx0cy4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgTkVUX0lQX0FMSUdOYCBpcyBiZWluZyBhZGRlZCB0byB0aGUgb2Zmc2V0LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgYE5FVF9JUF9BTElHTmAgaXMgdXN1YWxseSAyIGJ5dGVzLiBBZGRpbmcgdGhpcyB0byB0aGUgZXhpc3RpbmcgYE5FVF9TS0JfUEFEYCBtZWFucyB0aGUgcGFja2V0IGRhdGEgd2lsbCBlZmZlY3RpdmVseSBzdGFydCAyIGJ5dGVzIGxhdGVyIHdpdGhpbiB0aGUgYnVmZmVyLiBUaGlzIGlzIGEgY29tbW9uIHByYWN0aWNlIGluIG5ldHdvcmtpbmcgdG8gZW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgNC1ieXRlIGFsaWduZWQuIEdpdmVuIHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgMTQgYnl0ZXMsIHRoaXMgYnJpbmdzIHRoZSB0b3RhbCB0byAxNiwgYSBjbGVhbiBtdWx0aXBsZS4KCk15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzIHdoZW4gdG91Y2hpbmcgbWVtb3J5IG9mZnNldHMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIG9yIGV4cG9zZXMgYW55IHJpc2tzIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOLCBvZiBjb3Vyc2UsIGlzIG15IGdvLXRvIHRvb2wgZm9yIGRldGVjdGluZyB0aG9zZSBzb3J0cyBvZiBpc3N1ZXMuIEhvd2V2ZXIsIGFmdGVyIHRoaW5raW5nIGl0IHRocm91Z2gsIEkgZG9uJiMzOTt0IHNlZSBob3cgdGhpcyBwYXRjaCBpdHNlbGYgKmludHJvZHVjZXMqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBBbGwgaXQmIzM5O3MgZG9pbmcgaXMgc2hpZnRpbmcgd2hlcmUgdGhlIERNQSB3cml0ZXMgdGhlIHBhY2tldCBkYXRhLiBJZiBhbnl0aGluZywgaXQgc2VlbXMgbW9yZSBsaWtlbHkgdG8gKmZpeCogcG90ZW50aWFsIHVuYWxpZ25lZCBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBwcm9ibGVtcyB0aGF0IG1pZ2h0IGhhdmUgZXhpc3RlZCBwcmV2aW91c2x5LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBhdCB0aGUgY29kZToKYGBgYwpzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQp7CglpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKQoJCXJldHVybiBYRFBfUEFDS0VUX0hFQURST09NOwoKCXJldHVybiBORVRfU0tCX1BBRCAmIzQzOyBORVRfSVBfQUxJR047Cn0KYGBgCgpZZXAsIGl0JiMzOTtzIGp1c3QgYWRkaW5nIGBORVRfSVBfQUxJR05gIHRvIHRoZSBvZmZzZXQuIEV4dHJlbWVseSBzdHJhaWdodGZvcndhcmQuIFRoaXMgZG9lc24mIzM5O3QgbW9kaWZ5IGRhdGEsIGl0IGp1c3QgZGVmaW5lcyB3aGVyZSB0aGUgZGF0YSBiZWdpbnMsIHNvLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtcyBoZXJlLiBJdCYjMzk7cyBzb2xlbHkgcmVsYXRlZCB0byBhbGlnbm1lbnQsIHNvLCBmb3IgbXkgcmVjb3JkcywgSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcmVjZWl2ZSBidWZmZXIgb2Zmc2V0IGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IGFkZGluZyBORVRfSVBfQUxJR04gdG8gTkVUX1NLQl9QQUQuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIGFkanVzdG1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIElQIGhlYWRlciBpcyBhbGlnbmVkIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IChzaW5jZSB0aGUgRXRoZXJuZXQgaGVhZGVyIGlzIDE0IGJ5dGVzLCBhZGRpbmcgMiBieXRlcyBvZiBwYWRkaW5nIGFsaWducyB0aGUgc3Vic2VxdWVudCBJUCBoZWFkZXIpLiBUaGlzIGNoYW5nZSBhZmZlY3RzIG1lbW9yeSBsYXlvdXQgYW5kIERNQSBidWZmZXIgb2Zmc2V0cywgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBub3IgZG9lcyBpdCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzQ6NTUuNTIwMjU5NDk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxMDc2OTg3OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIixcbiAgICBcInN0bW1hY19yZWluaXRfcXVldWVzXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3JpbmdwYXJhbVwiLFxuICAgIFwic3RtbWFjX2VuYWJsZV9yeF9xdWV1ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3J4X29mZnNldGAgdG8gaW5jbHVkZSBgTkVUX0lQX0FMSUdOYCBpbiB0aGUgUlggYnVmZmVyIG9mZnNldCBjYWxjdWxhdGlvbi4gVGhpcyBhbHRlcnMgdGhlIG1lbW9yeSBsYXlvdXQgYW5kIGFsbG9jYXRpb24gc2l6ZSBmb3IgcmVjZWl2ZWQgcGFja2V0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcGFyc2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgYW5kIG5ldHdvcmsgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNDo1NS41MjAyNjc0MjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTA1MTQ3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjM0OjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0xNTI5LDcgKzE1MjksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHRpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKVxcbiBcXHRcXHRyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTtcXG4gXFxuLVxcdHJldHVybiBORVRfU0tCX1BBRDtcXG4rXFx0cmV0dXJuIE5FVF9TS0JfUEFEICsgTkVUX0lQX0FMSUdOO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBtdHUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM0OjU2LjkzMTM5Mjc4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1MDk2NTUxMzU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIkRXTUFDX0dFTkVSSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3F1ZXVlc1wiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1cIixcbiAgICBcInN0bW1hY19lbmFibGVfcnhfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3J4X29mZnNldGAgdG8gaW5jbHVkZSBgTkVUX0lQX0FMSUdOYCBpbiB0aGUgUlggYnVmZmVyIG9mZnNldCBjYWxjdWxhdGlvbi4gVGhpcyBhbHRlcnMgdGhlIG1lbW9yeSBsYXlvdXQgYW5kIGFsbG9jYXRpb24gc2l6ZSBmb3IgcmVjZWl2ZWQgcGFja2V0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWNrZXQgcGFyc2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgYW5kIG5ldHdvcmsgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MzQ6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xNTI5LDcgKzE1MjksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0aWYgKHN0bW1hY194ZHBfaXNfZW5hYmxlZChwcml2KSlcbiBcdFx0cmV0dXJuIFhEUF9QQUNLRVRfSEVBRFJPT007XG4gXG4tXHRyZXR1cm4gTkVUX1NLQl9QQUQ7XG4rXHRyZXR1cm4gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9iZnNpemUoaW50IG10dSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM0OjU2LjkzMTM5Mzk4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NTc1MTg5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU1RNTUFDIERyaXZlciBQYXRjaCBpbiBhIFZpcnR1YWxpemVkIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3J4X29mZnNldGAgaW4gYHN0bW1hY19tYWluLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZXkndmUgYWRkZWQgYE5FVF9JUF9BTElHTmAgdG8gdGhlIHJldHVybiB2YWx1ZSwgd2hpY2ggc3VnZ2VzdHMgYW4gYWxpZ25tZW50IGFkanVzdG1lbnQgcmVsYXRlZCB0byBJUCBoZWFkZXJzLiBJdCBzZWVtcyBsaWtlIGEgc3RhbmRhcmQgZml4LCBidXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgd2l0aGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsICpjYW4qIEkgcmVwcm9kdWNlIG9yIHRlc3QgdGhpcyBjaGFuZ2UgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGtub3cgaWYgdGhlIHN0bW1hYyBkcml2ZXIsIHdoaWNoIEkga25vdyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXIsIGlzIGV2ZW4gKnByZXNlbnQqIGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIEl0J3MgY29tbW9uIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBlbXVsYXRpb24gc3VwcG9ydCBpcyB3aGF0IG1hdHRlcnMgaGVyZS5cblxuTGV0J3Mgc2VlLi4uIFFFTVUsIGluIGdlbmVyYWwsIGhhcyBlbXVsYXRpb24gc3VwcG9ydCBmb3IgYSByYW5nZSBvZiBuZXR3b3JrIGNvbnRyb2xsZXJzLiBJIHN0YXJ0IG1lbnRhbGx5IGxpc3RpbmcgdGhlbTogYGlteF9mZWNgLCBgY2FkZW5jZV9nZW1gLCBgZnRnbWFjMTAwYCwgZXRjLiBUaGVuLCBJIHJlbWVtYmVyIHRoYXQgYHN0bW1hY2Agc3BlY2lmaWNhbGx5IHJlZmVycyB0byB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKSBjb250cm9sbGVyLCBhbmQgdGhhdCdzIHRoZSBvbmUgSSBuZWVkIHRvIGxvb2sgZm9yLiBJcyAqdGhhdCogZW11bGF0ZWQ/XG5cblRvIGNvbmZpcm0sIEkgbmVlZCB0byBjaGVjayBob3cgc3RtbWFjIGlzIGluc3RhbnRpYXRlZC4gSXMgaXQgcHJvYmVkIHZpYSBQQ0ksIG9yIGlzIGl0IHB1cmVseSBhIHBsYXRmb3JtIGRldmljZT8gSSdsbCBzZWFyY2ggZm9yIHNvbWV0aGluZyBsaWtlIGBzdG1tYWNfcGNpYCBpbiB0aGUgY29kZWJhc2UgdG8gZmlndXJlIHRoYXQgb3V0LiBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIG1lIGRldGVybWluZSB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHRlc3QgdGhpcyBjaGFuZ2Ugd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTowMy41ODg5MTU4NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1OTM3NjAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MTA3PXN5bnRheCAoZS5nLiBmb3IgUENJIG1vZHVsZSk6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTA4LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcXHUwMDNjb3B0aW9uXFx1MDAzZT1cXHUwMDNjVkFMMVxcdTAwM2UsXFx1MDAzY1ZBTDJcXHUwMDNlLC4uLl1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTExMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXFx0Kz0gZHdtYWMtbW90b3Jjb21tLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQxLVxcdHVuc2lnbmVkIGludCBmdW5jO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ1OnN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ3LVxcdHNpemVfdCBuZnVuY3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MS1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkxPXN0YXRpYyBjb25zdCBpbnQgYWRsbl90c25fbGFuZV9yZWdzW10gPSB7Nn07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkzOnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTQtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfbGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuY19kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTc6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgKmRtaV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgtXFx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9Nzg2PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgwNjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA3LVxcdC5zZXR1cCA9IGVobF9zZ21paV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MTA9c3RhdGljIGludCBlaGxfcmdtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODIxOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9yZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjItXFx0LnNldHVwID0gZWhsX3JnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0MT1zdGF0aWMgaW50IGVobF9wc2UwX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODQ4OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0OS1cXHQuc2V0dXAgPSBlaGxfcHNlMF9yZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1Mj1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODcwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3NnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg3MS1cXHQuc2V0dXAgPSBlaGxfcHNlMF9zZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg5MD1zdGF0aWMgaW50IGVobF9wc2UxX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODk3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5OC1cXHQuc2V0dXAgPSBlaGxfcHNlMV9yZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkwMT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTE5OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3NnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMC1cXHQuc2V0dXAgPSBlaGxfcHNlMV9zZ21paTFnX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk0ND1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk1MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTQtXFx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTU3PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTFfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Ny1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NzA9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTgwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05ODEtXFx0LnNldHVwID0gYWRsc19zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk4ND1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTFfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5NS1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTFfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMz1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxuX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0My1cXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDY6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgZ2FsaWxlb19zdG1tYWNfZG1pX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU0LVxcdC5mdW5jID0gZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1ODpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1OS1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDY5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBpb3QyMDQwX3N0bW1hY19kbWlfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNzAtXFx0LmZ1bmMgPSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExMDk9c3RhdGljIGludCBxdWFya19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTktXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTIwOlxcdHJldCA9IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihwZGV2LCBxdWFya19wY2lfZG1pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMjEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNDU6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gcXVhcmtfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDYtXFx0LnNldHVwID0gcXVhcmtfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY2OlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjctXFx0c3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NzY9c3RydWN0IGxvb25nc29uX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjgyOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODMtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xMzI9c3RhdGljIGludCBsb29uZ3Nvbl9nbWFjX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQzLVxcdC5zZXR1cCA9IGxvb25nc29uX2dtYWNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTY1PXN0YXRpYyBpbnQgbG9vbmdzb25fZ25ldF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNzc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ25ldF9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3OC1cXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbmV0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMS1cXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUwMjpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAzLVxcdHN0cnVjdCBsb29uZ3Nvbl9kYXRhICpsZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM3LVxcdHBsYXQtXFx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzg6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM5OlxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDAtXFx0bGQtXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU0MzpcXHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDQtXFx0cmV0ID0gaW5mby1cXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0xODg9c3RhdGljIGludCBtb3RvcmNvbW1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkzOlxcdHJldCA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoZGV2LCBic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTk0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDg9bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjQ4LVxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZVxcdFxcdD0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDk6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZFxcdFxcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUwLVxcdHBsYXQtXFx1MDAzZXJlc3VtZVxcdFxcdD0gbW90b3Jjb21tX3Jlc3VtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MTI6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI2OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI4OmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00My19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjQ0OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDo5OmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6MTA6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTA3OiAqIHN0bW1hY19wY2lfcHJvYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MDpcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MTpcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODc6ICogc3RtbWFjX3BjaV9yZW1vdmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTI6c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVxcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNC1cXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNTpcXHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTY6XFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTctXFx0LmRyaXZlciAgICAgICAgID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTowNS44NDgyOTYyNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjY0ODIwNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIGFuZCBGdXp6aW5nIGBzdG1tYWNgIGluIFFFTVU6IEEgVGhvdWdodCBQcm9jZXNzKipcblxuT2theSwgc28gYHN0bW1hY19wY2lgIGV4aXN0cyBhcyBhIFBDSSBkZXZpY2UsIGJ1dCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIGl0IGluIFFFTVU/IFRoZSBwcm9tcHQgcG9pbnRzIG91dCBwb3RlbnRpYWwgcm9hZGJsb2NrcyBmb3IgZW11bGF0ZWQgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBoaWdobGlnaHRpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMgYW5kIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgYW5kIHNvIG9uLiBCdXQgYHN0bW1hY2Agc2VlbXMgbGlrZSBhIGRpZmZlcmVudCBiZWFzdC5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIFFFTVUgZXZlbiAqaGFzKiBhbiBlbXVsYXRlZCBgc3RtbWFjYC4gSSBrbm93IGl0J3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIHNvIEkgbmVlZCB0byBjaGVjayBmb3IgdGhhdC4gQWgsIFFFTVUgaGFzIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIHdoaWNoIGlzIGEgZHdtYWMsIGJ1dCB0aGF0IGlzIGEgcGxhdGZvcm0gZGV2aWNlLiBJIHJhcGlkbHkgY3ljbGUgdGhyb3VnaCBvdGhlcnMsIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgYHhnbWFjYCwgYWxsIHBsYXRmb3JtIGRldmljZXMuIEFoISBCdXQgYHN0bW1hY2AgaXMgdXNlZCBhcyBhIHBsYXRmb3JtIGRldmljZSBmb3IgbWFueSBTb0NzLCAqYW5kKiBpdCBoYXMgYSBQQ0kgd3JhcHBlciwgYHN0bW1hY19wY2kuY2AuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5Ob3csIGhvdyBjYW4gSSBwcm9iZSBgc3RtbWFjX3BjaWAgaW4gUUVNVT8gSSB0aGluayBvZiBgcGNpLXN0dWJgIG9yIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLiBTeXprYWxsZXIncyBgc3l6X3BjaV9zZXR1cGAgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgYnV0IGlzIGl0IGp1c3QgZnV6emluZyB0aGUgUENJIGNvbmZpZyBzcGFjZT8gUmlnaHQsIGl0IG1vc3RseSBwcm9iZXMsIHVubGVzcyB0aGVyZSdzIGFuIGV4aXN0aW5nIFFFTVUgZGV2aWNlLiBJZiBETUEgYW5kIGludGVycnVwdHMgYXJlIHVzZWQsIGl0IG5lZWRzIGEgcmVhbCBkZXZpY2Ugb3IgZnVsbCBRRU1VIGVtdWxhdGlvbi5cblxuU28gZG9lcyBRRU1VIGVtdWxhdGUgYHN0bW1hY2A/IExldCBtZSBsb29rIGZvciBgZHdtYWNgIG9yIGBzdG1tYWNgIGluIFFFTVUncyBjb2RlLi4uIEl0IHNlZW1zIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggaXMgdGhlIERlc2lnbldhcmUgTUFDISBUaGlzIGlzIGdvb2QgbmV3cywgcmlnaHQ/IFdoaWxlIEkgZG9uJ3QgaGF2ZSB0aGUgc291cmNlIGhhbmR5LCBJIG5lZWQgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGNvbW1vbmx5IGZ1enplZCBieSBzeXprYWxsZXIuXG5cbkFoYSEgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiEgVGhhdCBzdWdnZXN0cyBzeXprYWxsZXIgZm91bmQgYSBidWcgaW4gYHN0bW1hY2Agb3IgaXMgdGVzdGluZyBhIHBhdGNoIGZvciBpdC4gVGhhdCBtZWFucyBpdCBpcyByZWFjaGFibGUhIFdhaXQsIHN5emthbGxlciBjYW4gZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIGlmIGluc3RhbnRpYXRlZC4gQWxzbywgaXNuJ3QgYHN0bW1hY2AgdXNlZCBvbiBBUk0gYm9hcmRzLCBhbmQgbWlnaHQgc3l6a2FsbGVyIGJlIHJ1bm5pbmcgb24gQVJNNjQgUUVNVT8gVGhlIGB2aXJ0YCBtYWNoaW5lPyBSaWdodCwgaXQgdXNlcyBgdmlydGlvLW5ldC1wY2lgLiBIbW0sIHNvIG1heWJlIHN5emthbGxlciB1c2VzIGEgc3BlY2lmaWMgUUVNVSBtYWNoaW5lLCBvciBhIFVTQiBnYWRnZXQuLi4gYnV0IGBzdG1tYWNgIGlzIG5vdCBhIFVTQiBnYWRnZXQuXG5cbk9rYXksIGxldCdzIHNlZSBpZiBgc3RtbWFjYCBpcyBhY3R1YWxseSByZWFjaGFibGUuIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYHN0bW1hY19yeF9vZmZzZXRgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gaW4gdGhlIGRyaXZlci4gSWYgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyB0b3VjaGVkIGJ5IHN5emthbGxlciB0aGVuIHRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlLiBJcyBpdCB3b3J0aCBmdXp6aW5nPyBZZXMhIE9mIGNvdXJzZSEgTGV0J3MgY2hlY2sgYHN0bW1hY19yeF9vZmZzZXRgJ3MgdXNhZ2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTYxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM1OjI1LjExMzExOTkxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc4ODQ5MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yeF9vZmZzZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19kaXNwbGF5X3JpbmdzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTUyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE1Mjc6c3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE1Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjM5PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcnhfYnVmZmVycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTQtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjU1OlxcdFxcdGJ1Zi1cXHUwMDNlcGFnZV9vZmZzZXQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMjc9c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjQxOlxcdGRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSArIGRtYV9jb25mLVxcdTAwM2VkbWFfYnVmX3N6ICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDItXFx0XFx0XFx0IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTQtXFx0cHBfcGFyYW1zLmRtYV9kaXIgPSB4ZHBfcHJvZyA/IERNQV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI1NTpcXHRwcF9wYXJhbXMub2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTYtXFx0cHBfcGFyYW1zLm1heF9sZW4gPSBkbWFfY29uZi1cXHUwMDNlZG1hX2J1Zl9zejtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI1OS1cXHRcXHRwcF9wYXJhbXMub2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyNjA6XFx0XFx0cHBfcGFyYW1zLm1heF9sZW4gKz0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNjEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNToyNy4zOTE5Nzg5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0MDYzODg1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb250ZXh0IG9mIGEgUG90ZW50aWFsIFN5emthbGxlciBJbnRlcmFjdGlvbiB3aXRoIHRoZSBTVE1NQUMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBgc3RtbWFjX3J4X29mZnNldGAsIGFuZCBpdCdzIGJlaW5nIHVzZWQgZHVyaW5nIFJYIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBwYWdlIHBvb2wgc2V0dXAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgd2h5IGlzIHRoaXMgYmVpbmcgZmxhZ2dlZD8gSXMgdGhlIGRyaXZlciBldmVuIHJlYWNoYWJsZSBpbiB0aGUgY3VycmVudCB0ZXN0aW5nIHNldHVwPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBpcyBpbnZvbHZlZCBzdWdnZXN0cyBlaXRoZXIgYSBjcmFzaCBoYXMgYmVlbiB0cmlnZ2VyZWQsIG9yIHNvbWVvbmUncyBpbnRlbnRpb25hbGx5IHVzaW5nIGl0IHRvIHRlc3QgdGhpcyBwYXRjaC5cblxuTXkgZmlyc3QgdGhvdWdodCB3YXMsIFwiV2FpdCwgaXNuJ3Qgc3l6a2FsbGVyJ3MgbmV0d29yayBpbmplY3Rpb24gbW9yZSB2aXJ0dWFsLCB0aHJvdWdoIGB0dW4vdGFwYCBvciBgdmV0aGA/XCIgQnV0IHRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlci4gVGhlbiBJIHJlbWVtYmVyIHN5emthbGxlciAqY2FuKiBmdXp6IGhhcmR3YXJlIGRyaXZlcnMsIEkga25vdyBpdCBjYW4gZG8gVVNCIHZpYSBgZHVtbXlfaGNkL3Jhdy1nYWRnZXRgLCBhbmQgUENJIGRyaXZlcnMgd2l0aCBzb21lIGxpbWl0YXRpb25zLCBhbmQgcGxhdGZvcm0gZHJpdmVycyBpZiB0aGV5IGFyZSBsb2FkZWQuXG5cblRoZW4gYSBsaWdodGJ1bGIgZ29lcyBvZmYhIERvZXNuJ3QgUUVNVSBoYXZlIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggZW11bGF0ZXMgdGhlIERlc2lnbldhcmUgTUFDPyBDb3VsZCB0aGlzIGJlIHRoZSBjb25uZWN0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaWYgYENPTkZJR19TVE1NQUNfRVRIYCBpcyBlbmFibGVkIGluIHR5cGljYWwgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLCBvciBpZiBpdCdzIGEgUENJIGRldmljZSBkcml2ZXIuIEJpbmdvLCBgc3RtbWFjX3BjaWAgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlci5cblxuUUVNVSBtaWdodCBub3QgZGlyZWN0bHkgZW11bGF0ZSBgc3RtbWFjX3BjaWAsIGJ1dCB3YWl0LCB0aGVyZSdzIHRoYXQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgZXZlbiBpZiB0aGUgcHJvYmUgc3VjY2VlZHMsIHRvIGFjdHVhbGx5ICpyZWNlaXZlKiBwYWNrZXRzIGFuZCBleGVjdXRlIHRoZSBSWCBwYXRoICh3aGVyZSBgc3RtbWFjX3J4X29mZnNldGAgaXMgY2FsbGVkIGR1cmluZyByaW5nIGluaXRpYWxpemF0aW9uLCB3aGljaCBoYXBwZW5zIG9uIGBuZG9fb3BlbmApLCB0aGUgZHJpdmVyIGhhcyB0byBwcm9iZSBhbmQgb3Blbi4gVGhpcyBpcyBrZXkuXG5cblNvLCBpZiBgc3RtbWFjX3BjaWAgY2FuIGJlIHByb2JlZCB1c2luZyBgc3l6X3BjaV9zZXR1cGAgYW5kIGBpcCBsaW5rIHNldCBldGhYIHVwYCBpcyBjYWxsZWQsIHRoYXQgKnNob3VsZCogdHJpZ2dlciBgc3RtbWFjX2luaXRfcnhfYnVmZmVyc2AuIEhvd2V2ZXIsIHRoZSBwcm9iZSBtaWdodCByZXF1aXJlIE1NSU8gcmVnaW9ucyB0byBiZSBtYXBwZWQgYW5kIGZ1bmN0aW9uYWwg4oCTIHRoaW5ncyBsaWtlIHJlYWRpbmcgdGhlIE1BQyBhZGRyZXNzLCByZXNldHRpbmcgdGhlIE1BQy4gSWYgdGhlIGhhcmR3YXJlIGlzbid0IHByb3Blcmx5IGVtdWxhdGVkLCB0aGUgcHJvYmUgd2lsbCBmYWlsIHJlYWRpbmcvd3JpdGluZyB0byBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIGl0J2xsIGdldCAweGZmZmZmZmZmIG9yIHRpbWVvdXRzLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gYHN0bW1hY19wY2lfcHJvYmVgIGl0c2VsZi4gVGhhdCdzIHRoZSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU1OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTo0MC43OTgzNzAzMTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1MTQzNjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE2LVxcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzU6NDMuMjQ5ODEzOTM3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEwNjMyOTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHN0bW1hY19wY2lfcHJvYmUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgb2YgdGhpcyBzdG1tYWMgZHJpdmVyIGluIGEgUENJIGNvbnRleHQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB3aGF0IGhhcHBlbnMgd2l0aGluIGBzdG1tYWNfcGNpX3Byb2JlYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGVzc2VudGlhbCBvcGVyYXRpb25zIHBlcmZvcm1lZCBkdXJpbmcgZGV2aWNlIGF0dGFjaG1lbnQuIEknbSB0aGlua2luZyBhYm91dCB0aGUgcmVnaXN0ZXIgbWFwcGluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiAoaW50ZXJydXB0cywgbWVtb3J5IHJlZ2lvbnMpLCB0aGUgY2hlY2tzLCBhbnkgcG9zc2libGUgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIHRoYXQgZ2V0IGludm9rZWQsIGFuZCB3aGF0IGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBwb3B1bGF0ZWQgdG8gcmVwcmVzZW50IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGUgY29kZSBmb3IgYW55IHBvdGVudGlhbCBnb3RjaGFzIGxpa2UgaW5jb3JyZWN0IHJlc291cmNlIHJlcXVlc3RzLCBvdmVybG9va2VkIGVycm9yIGhhbmRsaW5nLCBvciwgb2YgY291cnNlLCBhbnkgcXVpcmt5IHNpbGljb24tc3BlY2lmaWMgd29ya2Fyb3VuZHMuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBQQ0kgZGV2aWNlIHByb2JlIHNlcXVlbmNlIGJ1dCBJIHdpbGwgcXVpY2tseSBiZSBsb29raW5nIGZvciB0aGUgc3RtbWFjLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gSSdsbCBiZSBrZWVwaW5nIGEgbG9va291dCBmb3IgYW55IHVudXN1YWwgcmVnaXN0ZXIgc2V0dGluZ3Mgb3IgY2xvY2sgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgZG9uZSBhdCB0aGlzIHN0YWdlIGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5LiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoZSBQQ0kgZGV2aWNlIGFuZCBpZiBpdCBpbnRlcmFjdHMgY2xlYW5seSB3aXRoIHRoZSBicm9hZGVyIHN0bW1hYyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDAwLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzU6NDguMzU2MTQ1NTc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTE4OlxcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gMTE5OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIDEyMDpcXHR7XFxuIDEyMTpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDEyMjpcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuIDEyMzpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcXG4gMTI0OlxcdFxcdGludCByZXQ7XFxuIDEyNTpcXHRcXHRpbnQgaTtcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0cGxhdCA9IHN0bW1hY19wbGF0X2RhdF9hbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTI4OlxcdFxcdGlmICghcGxhdClcXG4gMTI5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzMjpcXHRcXHRcXHRcXHRcXHRcXHQgICBzaXplb2YoKnBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpLFxcbiAxMzM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuIDEzNDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpXFxuIDEzNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTM2OlxcdFxcbiAxMzc6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHNpemVvZigqcGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcXG4gMTM5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCk7XFxuIDE0MDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZylcXG4gMTQxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxNDI6XFx0XFxuIDE0MzpcXHRcXHQvKiBFbmFibGUgcGNpIGRldmljZSAqL1xcbiAxNDQ6XFx0XFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbiAxNDU6XFx0XFx0aWYgKHJldCkge1xcbiAxNDY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiJXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcXFxuXFxcIixcXG4gMTQ3OlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4gMTQ4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE0OTpcXHRcXHR9XFxuIDE1MDpcXHRcXG4gMTUxOlxcdFxcdC8qIEdldCB0aGUgYmFzZSBhZGRyZXNzIG9mIGRldmljZSAqL1xcbiAxNTI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkrKykge1xcbiAxNTM6XFx0XFx0XFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkgPT0gMClcXG4gMTU0OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAxNTU6XFx0XFx0XFx0cmVzLmFkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCBpLCBTVE1NQUNfUkVTT1VSQ0VfTkFNRSk7XFxuIDE1NjpcXHRcXHRcXHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcXG4gMTU3OlxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHJlcy5hZGRyKTtcXG4gMTU4OlxcdFxcdFxcdGJyZWFrO1xcbiAxNTk6XFx0XFx0fVxcbiAxNjA6XFx0XFxuIDE2MTpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0cmV0ID0gaW5mby1cXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XFxuIDE2NDpcXHRcXHRpZiAocmV0KVxcbiAxNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0cmVzLndvbF9pcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE2ODpcXHRcXHRyZXMuaXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXRzb2VlID0gMTtcXG4gMTcxOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4cGVlID0gMTtcXG4gMTcyOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbWVzdGVlID0gMTtcXG4gMTczOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4ZWUgPSAxO1xcbiAxNzQ6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtdHhlZSA9IDE7XFxuIDE3NTpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZWVwc2kgPSAxO1xcbiAxNzY6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VlZHBwID0gMTtcXG4gMTc3OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlcHJ0eWVuID0gMTtcXG4gMTc4OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNldG1vdXRlbiA9IDE7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG4gMTgxOlxcdFxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbiAxODQ6XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHQvKipcXG4gMTg3OlxcdCAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuIDE4ODpcXHQgKlxcbiAxODk6XFx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXFxuIDE5MDpcXHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxcbiAxOTE6XFx0ICovXFxuIDE5MjpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTkzOlxcdHtcXG4gMTk0OlxcdFxcdHN0bW1hY19kdnJfcmVtb3ZlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTU6XFx0fVxcbiAxOTY6XFx0XFxuIDE5NzpcXHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xcbiAxOTg6XFx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1xcdFxcdDB4MDcwMFxcbiAxOTk6XFx0XFxuIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM1OjQ4LjM1NjIyMTkyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE1NTUzMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBQcm9iZSoqXG5cbk9rYXksIHNvIGBzdG1tYWNfcGNpX3Byb2JlYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBQQ0kgdmVyc2lvbiBvZiB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIGl0J3MgY2FsbGluZyBgc3RtbWFjX2R2cl9wcm9iZWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSDigJMgdGhlIFBDSS1zcGVjaWZpYyBwcm9iZSBsaWtlbHkgc2V0cyB1cCB0aGUgUENJIHJlc291cmNlcyBhbmQgdGhlbiBoYW5kcyBvZmYgdGhlIG1lYXQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHRvIGEgbW9yZSBnZW5lcmljIGRldmljZSBkcml2ZXIgcHJvYmUuIExldCdzIHNlZSB3aGF0IGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBkb2luZy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgdGhlcmUgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgc2V0dGluZyB1cCB0aGUgc2hhcmVkIGFuZCBkZXZpY2Utc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzLCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCBhbmQgbGlrZWx5IHJlZ2lzdGVyaW5nIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0J3MgaGFuZGxpbmcgdGhlIERNQSBkZXNjcmlwdG9ycyBhbmQgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTgwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTo1Mi44NzE3Nzg0NThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODM1MjQwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2R2cl9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzNDE6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTYyOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01OTk9c3RhdGljIGludCBtZWRpYXRla19kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NDI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo0NjQ6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNTM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01ODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjAyOlxcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cXHQgKiBuZWVkIHRvIGVuc3VyZSB0aGUgTUFDIHJlc3VtZSBiYWNrIGJlZm9yZSBvdGhlciBvcGVyYXRpb25zIHN1Y2hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cXHQvKiBUaGUgbXV4IG11c3QgYmUgcmVnaXN0ZXJlZCBhZnRlciBwYXJlbnQgTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcXHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMTAtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6Mzc2OlxcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTIwNT1zdGF0aWMgaW50IHZpc2NvbnRpX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMzc6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTM9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQxNDppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDE1LVxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5MT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3OTM6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5NC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5NjogKiBzdG1tYWNfZHZyX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk3LSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTA1OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDYtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExNjpcXHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTctXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwbGF0X2RhdC1cXHUwMDNlZXhpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTIyOkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ4PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTc6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNTo1NS4xNTUzMDY2ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA5MzQ5NjY0NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzdG1tYWNfZHZyX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZhY3QgdGhhdCBzeXprYWxsZXIgaXMgZXZlbiB0b3VjaGluZyBpdCBtZWFucyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCB3aGljaCBpcyBnb29kLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBpdCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFN5emthbGxlcidzIHByZXR0eSBjbGV2ZXIsIGl0IGNhbiB0ZXN0IFBDSSBkcml2ZXJzIGlmIHRoZXkgZG9uJ3QgZGVwZW5kIG9uIGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MsIG9yIGlmIFFFTVUgZW11bGF0ZXMgdGhlIGhhcmR3YXJlLiBBbmQgdGhpbmtpbmcgYWJvdXQgaXQsIHllYWgsIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCwgd2hpY2ggaXMgdGhlIERlc2lnbldhcmUgTUFDLlxuXG5JIGNhbid0IGluc3RhbnRseSB2ZXJpZnkgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkga25vdyBgZGVzaWdud2FyZWAgaXMgYSBjb21tb24gSVAgYmxvY2sgYW5kIFFFTVUgZW11bGF0ZXMgaXQgZm9yIHNvbWUgQVJNIGJvYXJkcywgbGlrZSB0aGUgYWxsd2lubmVyIGFuZCBpTVggb25lczsgZXZlbiBYaWxpbnggdXNlcyBpdCEgUUVNVSAqZGVmaW5pdGVseSogaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYCBmb3IgYHN0bW1hY2AuIEFuZCwgd2FpdCwgd2UndmUgZ290IGBzeXpfcGNpX3NldHVwYCwgc28gd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcy5cblxuQnV0IHRoZSBhY3R1YWwgcGF0Y2ggaXMgYWJvdXQgYHN0bW1hY19yeF9vZmZzZXRgLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgY29kZTpcblxuYGBgY1xuc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbntcblx0aWYgKHN0bW1hY194ZHBfaXNfZW5hYmxlZChwcml2KSlcblx0XHRyZXR1cm4gWERQX1BBQ0tFVF9IRUFEUk9PTTtcblxuXHRyZXR1cm4gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XG59XG5gYGBcblxuT2theSwgc28gaXQgYWRkcyBgTkVUX0lQX0FMSUdOYCB0byB0aGUgUlggb2Zmc2V0LiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIGl0IGFmZmVjdHMgaG93IFNLQnMgYXJlIGFsbG9jYXRlZCBhbmQgYWxpZ25lZCBpbiBtZW1vcnkuIElzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gQ2hhbmdlcyB0byBSWCBwYWNrZXQgbWVtb3J5IGxheW91dCBjYW4gaGF2ZSBhIHJpcHBsZSBlZmZlY3Qgb24gWERQLCBTS0IgcGFyc2luZyBhbmQgRE1BLiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbWlzaW50ZXJwcmV0YXRpb24gYnVncy5cblxuV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIHRvIHJlcHJvZHVjZSB0aGlzPyBJIHRoaW5rIHdlJ2xsIG5lZWQgYENPTkZJR19TVE1NQUNfRVRIYCBhbmQgdGhlbiBlaXRoZXIgYENPTkZJR19TVE1NQUNfUENJYCBvciBgQ09ORklHX1NUTU1BQ19QTEFURk9STWAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNDEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzY6MTYuMDkwMjc3NjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjk2NzAzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjoxOC4zMTk5NTM2NjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NjY4NTg4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUNfRVRIIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIEtjb25maWcgZm9yIGBTVE1NQUNfRVRIYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBGaXJzdCwgSSdsbCBzY2FuIHRoZSBmaWxlIGZvciB0aGUgbWFpbiBgY29uZmlnYCBzeW1ib2wuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBkZWZpbml0aW9uIG9mIGBTVE1NQUNfRVRIYCBpdHNlbGYg4oCTIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gVGhlbiwgSSdsbCBiZSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgaXQncyBicm9rZW4gZG93bjsgYXJlIHRoZXJlIHN1Yi1vcHRpb25zIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgTUFDIHZhcmlhbnQsIFBIWSBpbnRlcmZhY2UsIG9yIERNQSBlbmdpbmU/XG5cbkknbGwgYmUgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzOiBXaGF0IG90aGVyIGZlYXR1cmVzIG9yIGRyaXZlcnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgU1RNTUFDX0VUSGAgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZD8gYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgYXJlIGtleSBoZXJlLiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHNldD8gVGhhdCB0ZWxscyBtZSB3aGF0IHRoZSBjb21tb24gb3IgYmFzZSBjb25maWd1cmF0aW9uIGlzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYHNlbGVjdGAgc3RhdGVtZW50cyB0b286IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGltcGxpY2l0bHkgZW5hYmxlZCB3aGVuIGBTVE1NQUNfRVRIYCBpcyBzZWxlY3RlZD8gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGVzc2VudGlhbC5cblxuTmV4dCwgSSdsbCBjaGVjayBmb3IgYW55IHRyaXN0YXRlIG9yIGJvb2xlYW4gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSBjaGFuZ2UgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgZHJpdmVyLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24gYXZhaWxhYmxlIGluIHRoZSBLY29uZmlnLCBlc3BlY2lhbGx5IHRoZSBkZWZhdWx0IHNldHRpbmdzLlxuXG5GaW5hbGx5LCBJJ2xsIGNyb3NzLXJlZmVyZW5jZSB0aGlzIEtjb25maWcgd2l0aCB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlIGl0c2VsZi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgYCNpZmRlZmAgb3Igc2ltaWxhciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgb3B0aW9ucyBJJ20gc2VlaW5nIGluIHRoZSBLY29uZmlnLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBhY3R1YWwgZHJpdmVyJ3MgYmVoYXZpb3IuIFRoaXMgaXMgYWxsIHBhcnQgb2YgaG93IEkgYXBwcm9hY2ggS2NvbmZpZywgaXQgaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGRyaXZlciBpcyBkZXBsb3llZC4gVGhpcyBpcyBob3cgSSdsbCBleHRyYWN0IGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGBTVE1NQUNfRVRIYCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDE5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzY6NDYuNzg2ODE2MDM1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzQyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM2OjQ2Ljc4OTA2MDgwNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg5MTIwMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYFNUTU1BQ19QQ0lgKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gYFNUTU1BQ19QQ0lgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0sIHByZXN1bWFibHkgY29uY2VybmluZyBQQ0ktYmFzZWQgY29ubmVjdGlvbnMuIEknbGwgbmVlZCB0byByZWNhbGwgdGhlIHJlbGV2YW50IFBDSSBidXMgYXJjaGl0ZWN0dXJlIGRldGFpbHMgYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgbG9naWMuIFdoYXQncyB0aGUgc3BlY2lmaWMgdGFyZ2V0IGhlcmU/IEFyZSB3ZSBsb29raW5nIGF0IGRyaXZlciBpbXBsZW1lbnRhdGlvbiwgaGFyZHdhcmUgcmVnaXN0ZXJzLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgd2lsbCBpbmZvcm0gdGhlIHNwZWNpZmljcyBJIGxvb2sgYXQuIEl04oCZcyBsaWtlbHkgYSBkcml2ZXIgbW9kdWxlLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHNjb3BlIHRvIGVuc3VyZSBJIGRvbuKAmXQgd2FzdGUgdGltZS4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBrZXJuZWwgc291cmNlIGZvciB0aGUgYFNUTU1BQ19QQ0lgIGRyaXZlciBpZiB0aGVyZSBpcyBvbmUsIGFuZCBwZXJoYXBzIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRhdGEgc2hlZXRzIHRvIHNlZSB0aGUgZXhwZWN0ZWQgZGV2aWNlIGJlaGF2aW91ciBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwuIEkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIGludGVycnVwdHMgYW5kIERNQSBjb25maWd1cmF0aW9ucywgYXMgdGhlc2UgYXJlIG9mdGVuIGJvdHRsZW5lY2tzIG9yIHBvaW50cyBvZiBpbnRlcmVzdCBmb3IgdHVuaW5nLiBUaGUgZ29hbCBpcyB0byByZWZyZXNoIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTY2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjo1MC42NzgxODU0NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODMwMDU5MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MzY6NTMuMDYxMTk3NDYxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDA1NjY1MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgU1RNTUFDX1BDSWAgRGVwZW5kZW5jeSBDaGFpbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBsaW5lYWdlIGFuZCBzZWUgaG93IHRoaXMgc3BlY2lmaWMgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBQQ0kgYnVzLiBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgY29tcG9uZW50cywgcG90ZW50aWFsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgYW5kIGFueSBuZWNlc3Nhcnkgc2hhcmVkIGxpYnJhcmllcyBvciBrZXJuZWwgbW9kdWxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBzdWJzeXN0ZW1zIHJlbHkgb24gdGhpcyBzcGVjaWZpYyBkcml2ZXIgdG8gZ2V0IGEgaG9saXN0aWMgdmlldy4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIGFuZCBvdGhlciBrZXkgYXNwZWN0cy4gSSBhbSBnb2luZyB0byBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIGJ1cyBpdHNlbGYuIEknbGwgd2FudCB0byBzZWUgaG93IGludGVycnVwdHMgYXJlIGhhbmRsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdywgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHNoYXJlZCBtZW1vcnkgcmVnaW9ucyB3aWxsIGJlIGtleS4gVGltZSB0byBnZXQgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjo1Ni45MDE3Njc4NTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDA3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDIwOlxcdGVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozNjo1Ni45MDE4OTY3MzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMzE4OTA5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBSZWNlaXZlIE9mZnNldCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgU1RNTUFDIGRyaXZlciBjb25maWd1cmF0aW9uLiBJIHNlZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGJ1dCBub3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYHN0bW1hY19yeF9vZmZzZXRgLiBJdCBsb29rcyBsaWtlIHRoYXQgZnVuY3Rpb24gaXMgdHVja2VkIGF3YXkgaW4gYHN0bW1hY19tYWluLmNgLiBNeSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBvZmZzZXQgaXMgY2FsY3VsYXRlZCBvciB1c2VkLlxuXG5TaW5jZSBJIGFtIG1vc3QgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLCBJIG5lZWQgYSBnb29kIGZvY3VzIHN5bWJvbC4gYHN0bW1hY19yeF9vZmZzZXRgIGl0c2VsZiBpc24ndCBhIGdyZWF0IGNob2ljZSwgdGhvdWdoLCBiZWNhdXNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBsaW1pdGVkIGluIHNjb3BlIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBwaWVjZXMgb2YgdGhlIGNvZGUgZGVwZW5kIG9uIGl0LiBMZXQncyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICpjYWxsaW5nKiBgc3RtbWFjX3J4X29mZnNldGAuIE9rYXksIGl0J3MgY2FsbGVkIGJ5IGBzdG1tYWNfaW5pdF9yeF9idWZmZXJzYCBhbmQgYF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gTm93IEknbSBjaGVja2luZyB0byBzZWUgaWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHN0YXRpYywgd2hpY2ggd291bGQgZnVydGhlciBjb25zdHJhaW4gbXkgYWJpbGl0eSB0byB1bmRlcnN0YW5kIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQyNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjM5OjA3LjIyMDgwODc1NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NzU3NzUwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfaW5pdF9yeF9idWZmZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTYxMj1zdGF0aWMgdm9pZCBzdG1tYWNfY2xlYXJfZGVzY3JpcHRvcnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjI4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTYyOTogKiBzdG1tYWNfaW5pdF9yeF9idWZmZXJzIC0gaW5pdCB0aGUgUlggZGVzY3JpcHRvciBidWZmZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjMwLSAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTYzOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE2Mzk6c3RhdGljIGludCBzdG1tYWNfaW5pdF9yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NDAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTc2ND1zdGF0aWMgaW50IHN0bW1hY19hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3Nzc6XFx0XFx0cmV0ID0gc3RtbWFjX2luaXRfcnhfYnVmZmVycyhwcml2LCBkbWFfY29uZiwgcCwgaSwgZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzc4LVxcdFxcdFxcdFxcdFxcdCAgICAgcXVldWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTozOTowOC43OTgzOTIyNjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2NDU3MDczMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkNvbnNpZGVyaW5nIFJlc291cmNlIEFsbG9jYXRpb24gaW4gdGhlIFNUTU1BQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYHN0bW1hY19hbGxvY19yeF9idWZmZXJzYCBmdW5jdGlvbiwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBgc3RhdGljYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgbWFrZXMgbWUgdGhpbmsgYWJvdXQgaXRzIHNjb3BlIHdpdGhpbiB0aGUgZHJpdmVyLiBJdCdzIHByb2JhYmx5IG9ubHkgY2FsbGVkIGludGVybmFsbHksIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBhbiBhbGxvY2F0aW9uIGZ1bmN0aW9uLiBCdXQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciByZXNvdXJjZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucy5cblxuU3BlY2lmaWNhbGx5LCB3aGF0J3MgdGhlIGRlYWwgd2l0aCBgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXNgPyBJcyBpdCBhbHNvIHN0YXRpYz8gSXMgaXQgc2ltaWxhcmx5IHNjb3BlZD8gQXJlIHRoZXkgY2FsbGVkIGluIGEgY29vcmRpbmF0ZWQgbWFubmVyPyBBcmUgdGhlcmUgYW55IHJlc291cmNlLXNoYXJpbmcgaW1wbGljYXRpb25zIG9yIHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3VlcyBpZiB0aGVzZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBoYXZlIG92ZXJsYXBwaW5nIHB1cnBvc2VzLCBvciBhcmUgaW52b2x2ZWQgaW4gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBvdmVyYWxsIFJYIGRlc2NyaXB0b3Igc2V0dXA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZXNvdXJjZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyByZWxhdGUgdG8gZWFjaCBvdGhlciwgc28gSSBjYW4gZW5zdXJlIHRoZSBzdG1tYWMgZHJpdmVyIGlzIGVmZmljaWVudCBhbmQgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyNzksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MDoxNS40NDQxMDE3MDZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDQxOTA0OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMjA2PXN0YXRpYyB2b2lkIGZyZWVfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMTg6ICogX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBhbGxvYyBSWCByZXNvdXJjZXMgKHBlciBxdWV1ZSkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjE5LSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjI2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIyNzpzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMjgtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMzAxPXN0YXRpYyBpbnQgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMwOS1cXHRmb3IgKHF1ZXVlID0gMDsgcXVldWUgXFx1MDAzYyByeF9jb3VudDsgcXVldWUrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMxMDpcXHRcXHRyZXQgPSBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMxMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDA1PXZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMTI6XFx0cmV0ID0gX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDEzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6MTYuOTg4Mjk3NjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMDk3OTA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUlggUXVldWUgRW5hYmxlbWVudCBpbiBzdG1tYWMqKlxuXG5IbW0sIHNvIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCBpc24ndCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgYSBiaXQgdW5leHBlY3RlZC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IG1pZ2h0IGJlIGEgbW9kdWxlLWludGVybmFsIGhlbHBlci4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCAqaXMqIGJlaW5nIGNhbGxlZC4gU2luY2UgaXQncyBub3Qgc3RhdGljLCB0aGF0IG1lYW5zIGl0J3MgbGlrZWx5IHBhcnQgb2YgdGhlIGV4dGVybmFsIGludGVyZmFjZSwgb3IgYXQgbGVhc3QgY2FsbGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIuIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIHV0aWxpemVkLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaXMgcHJvYmFibHkgd2l0aGluIHRoZSBgc3RtbWFjX29wZW5gIGZ1bmN0aW9uLCBvciBwb3RlbnRpYWxseSBvdGhlciBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBicmluZ3VwIGxpa2UgdGhlIHByb2JlLiBJdCB3b3VsZCBiZSBhdCB0aGlzIHBvaW50IHRoYXQgdGhlIGhhcmR3YXJlIHdvdWxkIGJlIGVuYWJsZWQsIG9yIG5vdCwgaW4gcmVsYXRpb24gdG8gdGhlIHJ4IHF1ZXVlIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxOTgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MDoyMS42ODkyODAxNzJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjIzNTExNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX29wZW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDUwPXN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMTUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTE2OiAqICBfX3N0bW1hY19vcGVuIC0gb3BlbiBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTE3LSAqICBAZGV2IDogcG9pbnRlciB0byB0aGUgZGV2aWNlIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyNC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjU6c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI2LVxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxODM6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjExOlxcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjEyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDE9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzc6XFx0XFx0cmV0ID0gX19zdG1tYWNfb3BlbihkZXYsIGRtYV9jb25mKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzA4OlxcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMwOS1cXHQubmRvX3N0YXJ0X3htaXQgPSBzdG1tYWNfeG1pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzU5ND1pbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTMtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MTQ6XFx0XFx0cmV0ID0gc3RtbWFjX29wZW4oZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2MTk9aW50IHN0bW1hY19yZWluaXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeF9zaXplLCB1MzIgdHhfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMC1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYzMTpcXHRcXHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6MjMuMjUxNjM2MDk4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4ODAxNzg3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIFBhdGggb2YgYHN0bW1hY19yeF9vZmZzZXRgKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGBzdG1tYWNgIGRyaXZlciBjb2RlLiBSaWdodCwgYHN0bW1hY19vcGVuYC4uLiB0aGF0J3MgdGhlIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHdoaWNoIG1ha2VzIHNlbnNlLiBIbW0sIGJ1dCBpdCdzICpzdGF0aWMqLiBUaGF04oCZcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSSBuZWVkIHRvIGZpbmQgdGhlIGRhdGEgcGF0aCB0aGF0IHJlYWNoZXMgYHN0bW1hY19yeF9vZmZzZXRgLiAgSWYgYHN0bW1hY19vcGVuYCBpcyBzdGF0aWMsIHRoZW4gd2hvIGlzIHVzaW5nIHRoaXMgdGhpbmc/IEkgbmVlZCB0byBmaW5kIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IGNhbGxzIG9yIGlzIHJlbGF0ZWQgdG8gYHN0bW1hY19yeF9vZmZzZXRgLiBcblxuQWghIEhlcmUgd2UgZ28sIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCBpcyAqbm90KiBzdGF0aWMuIEdvb2QhIFRoYXQncyBhIHBvdGVudGlhbCBlbnRyeSBwb2ludC4gTm93LCBsZXQncyBjaGVjayBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgYW5kIHNlZSBpZiB0aGlzIHByb3ZpZGVzIHRoZSBsaW5rIEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1ODIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MDoyOC4xMzE4MTcyNDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODAzOTkwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2VuYWJsZV9yeF9xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00Mjk9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDMwOnZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDMxLXZvaWQgc3RtbWFjX2Rpc2FibGVfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTkyPXZvaWQgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDA1OnZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00NS1cXHRpZiAobmVlZF91cGRhdGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6NDY6XFx0XFx0c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTQ3LVxcdFxcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTU4PXN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtODUtXFx0aWYgKG5lZWRfdXBkYXRlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjg2OlxcdFxcdHN0bW1hY19lbmFibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy04Ny1cXHRcXHRzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6MjkuNzEyMjI1NDAxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4MTQ2NDA5NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhvc2UgZnVuY3Rpb24gbmFtZXMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRnVuY3Rpb24gUHJvYmUgQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGBzdG1tYWNfeGRwX3NldHVwX3Bvb2xgIOKAkyB0aGF0J3Mgc3RyYWlnaHRmb3J3YXJkOyBpdCdzIGdvdCBcIlhEUFwiIHJpZ2h0IHRoZXJlIGluIHRoZSBuYW1lLiBJdCdzIGNsZWFybHkgZGVhbGluZyB3aXRoIFhEUCBzZXR1cCwgcHJvYmFibHkgbWVtb3J5IHBvb2xzIG9yIHJpbmcgYnVmZmVycy4gTm93LCBgc3RtbWFjX2R2cl9wcm9iZWAuLi4gdGhhdCdzIHRoZSBkcml2ZXIgcHJvYmUsIGFuZCBzaW5jZSBpdCdzICpub3QqIHN0YXRpYywgaXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlci4gSXQncyB0aGUgYmlnIG9uZS4gVGhlbiB3ZSBoYXZlIGBzdG1tYWNfcGNpX3Byb2JlYCwgd2hpY2ggKmlzKiBzdGF0aWM7IHNvLCB0aGF0J3MgbGlrZWx5IGEgcHJvYmUgc3BlY2lmaWNhbGx5IGZvciBQQ0kgZGV2aWNlcywgYW5kIHByb2JhYmx5IGNhbGxlZCBmcm9tIGBzdG1tYWNfZHZyX3Byb2JlYC4gRmluYWxseSwgYHN0bW1hY19wbHRmcl9wcm9iZWAgaXMgYWxzbyBub24tc3RhdGljOyBcInBsdGZyXCIgcHJvYmFibHkgbWVhbnMgcGxhdGZvcm0uIFNpbmNlIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBub24tc3RhdGljLCBsZXQncyBkaWcgaW50byBgc3RtbWFjX3BsdGZyX3Byb2JlYCBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU4MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQwOjM4LjUyNjg2OTA4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY2NjY0MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wbHRmcl9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9OTM9c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTY6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTI5PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjY0OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTE5PXN0YXRpYyBpbnQgZHdtYWNfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo0OTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjkzPXN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzU0OlxcdHJldCA9IHN0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM1NS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyMTU6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTIxNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjA0OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIwNS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9ODI9c3RhdGljIGludCBudnRfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTExNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6MTE1OlxcdHJldHVybiBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTE2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Nzk3OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxOTc6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE1Njg9c3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjEzOlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYxNC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xNDQ9c3RhdGljIGludCBzMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMTM6XFx0cmV0dXJuIHN0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY1NTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjU2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI0OT1zdGF0aWMgaW50IHN0aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI4OTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTA1PXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMzg6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTk1OlxcdHJldCA9IHN0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz05OT1zdGF0aWMgaW50IHN1bjdpX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTQ3OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTQ4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjY0OlxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODMzPXN0YXRpYyBpbnQgc3RtbWFjX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODQxOiAqIHN0bW1hY19wbHRmcl9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0Mi0gKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NDg6aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg0OS1cXHRcXHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTk6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsdGZyX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODYxPXN0YXRpYyB2b2lkIGRldm1fc3RtbWFjX3BsdGZyX3JlbW92ZSh2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODY4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg2OTogKiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg3MC0gKiBAcGRldjogcG9pbnRlciB0byB0aGUgcGxhdGZvcm0gZGV2aWNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzItICogQHJlczogc3RtbWFjIHJlc291cmNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg3MzogKiBEZXNjcmlwdGlvbjogRGV2cmVzIHZhcmlhbnQgb2Ygc3RtbWFjX3BsdGZyX3Byb2JlKCkuIEFsbG93cyB1c2VycyB0byBza2lwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc0LSAqIGNhbGxpbmcgc3RtbWFjX3BsdGZyX3JlbW92ZSgpIG9uIGRyaXZlciBkZXRhY2guXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg3NjppbnQgZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzctXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4ODI6XFx0cmV0ID0gc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXQsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04ODgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChkZXZtX3N0bW1hY19wbHRmcl9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODkzLSAqIEBwZGV2OiBwb2ludGVyIHRvIHRoZSBwbGF0Zm9ybSBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4OTQ6ICogRGVzY3JpcHRpb246IFRoaXMgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIHN0bW1hY19wbHRmcl9wcm9iZSgpIGJ5IHJlbW92aW5nIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg5NS0gKiBkcml2ZXIgYW5kIGNhbGxpbmcgdGhlIHBsYXRmb3JtJ3MgZXhpdCgpIGNhbGxiYWNrLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MjA9aW50IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMzppbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjQtXFx0XFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yNS1cXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg6MjY6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjctXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6NDAuMDkzNTM4NTM1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxMDgxOTk3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBgc3RtbWFjYCBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGFuZCBJIHNlZSB0aGF0IGJvdGggYHN0bW1hY19wbHRmcl9wcm9iZWAgYW5kIGBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZWAgYXJlIGV4cG9ydGVkLCBhbG9uZyB3aXRoIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhvc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIGZvY3VzaW5nIG9uIHRob3NlIHN5bWJvbHMgYXMgdGhleSBsb29rIGxpa2Uga2V5IGVudHJ5IHBvaW50cy5cblxuQnV0IGhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHN0bW1hY19yeF9vZmZzZXRgIGdldHMgY2FsbGVkIHdpdGhpbiBgc3RtbWFjX29wZW5gLiBBbmQgYHN0bW1hY19vcGVuYCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYG5kb19vcGVuYCBjYWxsYmFjay4gTm93LCBteSBtaW5kIGlzIHJhY2luZzsgYXJlIHRoZXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGludm9rZWQgKmR1cmluZyogdGhlIGV4ZWN1dGlvbiBvZiBgbmRvX29wZW5gPyBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBpbmZvcm1hdGlvbi5cblxuVGhpbmtpbmcgYSBiaXQgbW9yZSwgYHN0bW1hY19yZWluaXRfcXVldWVzYCBhbmQgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYCBib3RoIGFsc28gY2FsbCBgc3RtbWFjX29wZW5gLiBBbHJpZ2h0LCBJIHRoaW5rIEknbGwgZGl2ZSBhIGxpdHRsZSBkZWVwZXIgaW50byBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgIHRvIHNlZSB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwNzUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDA6NDkuMjAxNzQxNDIxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE2NTM2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZWluaXRfcXVldWVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxND1pbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTYtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTc6aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTgtaW50IHN0bW1hY19yZWluaXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeF9zaXplLCB1MzIgdHhfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTk4OT1zdGF0aWMgaW50IHN0bW1hY19zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtOTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6OTk5OlxcdHJldHVybiBzdG1tYWNfcmVpbml0X3F1ZXVlcyhkZXYsIGNoYW4tXFx1MDAzZXJ4X2NvdW50LCBjaGFuLVxcdTAwM2V0eF9jb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0xMDAwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzU3Mz1zdGF0aWMgdm9pZCBzdG1tYWNfbmFwaV9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzU5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc1OTQ6aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzU5NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQwOjUwLjcxODI4MTcyNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDc5MDQ5OTg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZW50cnkgcG9pbnRzIGFuZCBmdW5jdGlvbnMgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyIGZvciBmdXp6aW5nLiBJdCBsb29rcyBsaWtlIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgaXMgdHJpZ2dlcmVkIGJ5IGBldGh0b29sIHNldF9jaGFubmVsc2AsIGFuZCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gIGlzIHRpZWQgdG8gYGV0aHRvb2wgc2V0X3JpbmdwYXJhbWAuIFRoZXNlIGFyZSBib3RoIGV4Y2VsbGVudCB0YXJnZXRzIGJlY2F1c2UgdGhleSByZXByZXNlbnQgd2F5cyB0byBkeW5hbWljYWxseSByZWNvbmZpZ3VyZSB0aGUgZHJpdmVyIGFmdGVyIGluaXRpYWwgc2V0dXAsIHdoaWNoIG9mdGVuIGV4cG9zZXMgbW9yZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAgaXMgYWxzbyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgY2FsbGVkIGZyb20gWERQIHNldHVwLCBtZWFuaW5nIHRoaXMgc2hvdWxkIGJlIGEgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBpcyBvZnRlbiB0ZXN0ZWQuXG5cbkkndmUgYWxyZWFkeSBpZGVudGlmaWVkIHRoZXNlIGFzIHNpZ25pZmljYW50IGNhbGwgdGFyZ2V0czpcbiogICBgc3RtbWFjX2R2cl9wcm9iZWBcbiogICBgc3RtbWFjX3BsdGZyX3Byb2JlYFxuKiAgIGBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZWBcbiogICBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgXG4qICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYFxuKiAgIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYFxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQuIGBzdG1tYWNfcnhfb2Zmc2V0YCBnZXRzIGNhbGxlZCBmcm9tIGBzdG1tYWNfaW5pdF9yeF9idWZmZXJzYCwgd2hpY2ggY2FzY2FkZXMgZG93biB0aHJvdWdoIGBzdG1tYWNfYWxsb2NfcnhfYnVmZmVyc2AsIGBhbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBhbmQgZmluYWxseSBgX19zdG1tYWNfb3BlbmAuIEFuZCBgX19zdG1tYWNfb3BlbmAgaXMsIGluIGZhY3QsIHN0YXRpYywgYW5kIGBzdG1tYWNfb3BlbmAgaXMgdG9vLCBhbHRob3VnaCBpdCBpcyBhc3NpZ25lZCB0byBgbmRvX29wZW5gLiBTbywgYHN0bW1hY19kdnJfcHJvYmVgIGlzIGNsZWFybHkgdGhlIG1haW4gcHJvYmUgZW50cnkgcG9pbnQuXG5cblRoZXJlZm9yZSwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLCBJIHNob3VsZCBmb2N1cyBvbiBgc3RtbWFjX2R2cl9wcm9iZWAgYXMgYSBwcmltYXJ5IGVudHJ5IHBvaW50LCBhbG9uZyB3aXRoIHRoZSBldGh0b29sIGFuZCBYRFAgcGF0aHMgdGhhdCByZS1pbml0aWFsaXplIHRoZSByaW5ncy4gTXkgcmVmaW5lZCBmb2N1cyBzeW1ib2xzIHdpbGwgYmU6XG4qICAgYHN0bW1hY19kdnJfcHJvYmVgXG4qICAgYHN0bW1hY19yZWluaXRfcXVldWVzYFxuKiAgIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWBcbiogICBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWBcblxuVG8gYnVpbGQgdGhlIGVudmlyb25tZW50IEknbGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOlxuKiAgIGBTVE1NQUNfRVRIYFxuKiAgIGBTVE1NQUNfUENJYFxuKiAgIGBTVE1NQUNfUExBVEZPUk1gXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGBTVE1NQUNfUENJYCBpcyBzdWZmaWNpZW50IHRvIGNvbXBpbGUgYHN0bW1hY19wY2kuY2AsIGJ1dCBpdCBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDY1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjA1LjUwODc4NDM2OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyODQ0NzE4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjowNy44MzcyNDAyMDVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzODY1NDQxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGxpbmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgbGluZTogYHN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub2AuIFJpZ2h0IGF3YXksIG15IGJyYWluIGZsYWdzIHRoaXMgYXMgYSBidWlsZCBzeXN0ZW0gZGlyZWN0aXZlLCBwcm9iYWJseSBmcm9tIGEgYE1ha2VmaWxlYCBvciBzaW1pbGFyLiBUaGUgZm9ybWF0IGlzIHR5cGljYWw6IHNldHRpbmcgYSB2YXJpYWJsZSwgYHN0bW1hYy1wY2ktb2Jqc2AsIHRvIGEgc3BlY2lmaWMgb2JqZWN0IGZpbGUsIGBzdG1tYWNfcGNpLm9gLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIGJ1aWxkaW5nIGEgbW9kdWxlIG9yIGEgY29tcG9uZW50IHJlbGF0ZWQgdG8gYW4gU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgdmFyaWFudCwgaWYgSSdtIGludGVycHJldGluZyBcIlBDSVwiIGNvcnJlY3RseS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogV2hhdCBpcyB0aGUgY29udGV4dD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjLXBjaS1vYmpzYCBtZWFucyBpbiB0aGUgbGFyZ2VyIHNjaGVtZSBvZiB0aGluZ3MuIEl0J3MgbGlrZWx5IGRlZmluaW5nIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgdGhhdCwgd2hlbiBsaW5rZWQgdG9nZXRoZXIsIHdpbGwgcHJvZHVjZSBzb21lIG91dHB1dCBmaWxlIOKAkyBtYXliZSBhIGAua29gIGtlcm5lbCBtb2R1bGUsIGEgc3RhdGljYWxseSBsaW5rZWQgbGlicmFyeSwgb3IgcGFydCBvZiBhIGxhcmdlciBiaW5hcnkuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAuIEkgd2FudCB0byBrbm93IGhvdyBgU1RNTUFDX1BDSWAgZmFjdG9ycyBpbnRvIGFsbCBvZiB0aGlzLiBJcyBpdCBhIGNvbmRpdGlvbmFsIHZhcmlhYmxlPyBEb2VzIGl0IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiBgc3RtbWFjX3BjaS5vYCBpbiB0aGUgYnVpbGQgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBzb21lIG90aGVyIGRlcGVuZGVuY3kgb3IgZmVhdHVyZT8gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgdXNhZ2Ugb2YgYFNUTU1BQ19QQ0lgIGluIHRoZSBgTWFrZWZpbGVgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGlzIGNvdWxkIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCB0aGUgdXNlciBzZXRzLCBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIFBDSSBzdXBwb3J0IGluIHRoZSBkcml2ZXIgYnVpbGQuIExldCdzIHNlZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxODEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjoxMi4wNzU4OTc3MjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDI1NjM1MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1NUTU1BQ19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD05OD1UaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBgQ09ORklHX1NUTU1BQ19FVEhgYDpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTk5LSAtIGBgQ09ORklHX1NUTU1BQ19QTEFURk9STWBgOiBpcyB0byBlbmFibGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjEwMDogLSBgYENPTkZJR19TVE1NQUNfUENJYGA6IGlzIHRvIGVuYWJsZSB0aGUgcGNpIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjEzLjUxODQ2NTYwN1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU0NTIzMzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgU1RNTUFDIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQncyBjbGVhciB0aGF0IGBDT05GSUdfU1RNTUFDX1BDSWAgaXMgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIGBzdG1tYWMtcGNpLm9gLCB3aGljaCBpbiB0dXJuIGluY2x1ZGVzIGBzdG1tYWNfcGNpLm9gLiBJJ20gdHJhY2tpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlaW5nIGhvdyB0aGUgbW9kdWxlcyBhcmUgc3RydWN0dXJlZC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgdGhpbmdzIG1vZHVsYXIgYW5kIG9yZ2FuaXplZC4gSSBzZWUgbm93IHRoYXQgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAsIGFuZCBgU1RNTUFDX1BMQVRGT1JNYCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBhcmUgdXNpbmcuXG5cbkp1c3Qgd2FudCB0byBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0aG91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgaW4gdGhpcyBzcGFjZT8gVGltZSB0byBzY2FuIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIGBEV01BQ19HRU5FUklDYC4uLiBsZXQncyBzZWUgd2hlcmUgdGhhdCBmaXRzIGluLiBOZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIGFsbCBwb3NzaWJsZSBjb25maWdzIGZvciB0aGUgU1RNTUFDIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NzksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjoxNy4yNzI5OTE1OThaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDg2ODE3OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0dFTkVSSUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00ND1jb25maWcgRFdNQUNfRFdDX1FPU19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1Mjpjb25maWcgRFdNQUNfR0VORVJJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDI6MTguODIxNjc5MDYzWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDA0MTE5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIEkgdGhpbmsgSSd2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiBpdHMgaW1wbGljYXRpb25zLiBJbmNsdWRpbmcgYERXTUFDX0dFTkVSSUNgIGxvb2tzIGxpa2UgYSBzbWFydCBtb3ZlIOKAkyBpdCBzaG91bGQgYnJvYWRlbiB0aGUgcG90ZW50aWFsIGZvciBnZW5lcmljIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nLCB3aGljaCBpcyBhbHdheXMgdXNlZnVsLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGNoYW5nZSBpcyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBzdG1tYWNfcnhfb2Zmc2V0YC4gIEFkZGluZyBgTkVUX0lQX0FMSUdOYCB0byB0aGUgUlggb2Zmc2V0IGlzIHNpZ25pZmljYW50LiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBtZW1vcnkgbGF5b3V0IG9mIHJlY2VpdmVkIHBhY2tldHMuIFNwZWNpZmljYWxseSwgdGhpcyBhZGp1c3RtZW50IGluZmx1ZW5jZXMgdGhlIGBkbWFfYnVmX3N6X3BhZGAgY2FsY3VsYXRpb246XG5cbmBgYGNcblx0ZG1hX2J1Zl9zel9wYWQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpICsgZG1hX2NvbmYtXHUwMDNlZG1hX2J1Zl9zeiArXG5cdFx0XHQgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTtcbmBgYFxuXG5UaGlzICp3aWxsKiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgRE1BIGJ1ZmZlci4gVGhlIGluaXRpYWwgcmVhY3Rpb24gSSBoYWQsIGFuZCBzdGlsbCBoYXZlLCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIHNlcmlvdXMgYXR0ZW50aW9uIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBjb3VsZCBpbnRyb2R1Y2UgdW5hbGlnbmVkIElQIGhlYWRlciBhY2Nlc3NlcywgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGJ1ZmZlciBvdmVyZmxvd3MgaWYgdGhlIGJ1ZmZlciBzaXplIHdhc24ndCBwcm9wZXJseSByZS1zaXplZCBpbiBhbGwgcGFydHMgb2YgdGhlIGNvZGUuXG5cbkdpdmVuIHRoaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYFRydWVgLiAgV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgY292ZXJpbmcgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9ucy4gSSdsbCBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIHRoZXNlIHN5bWJvbHM6XG5cbiogICBgc3RtbWFjX2R2cl9wcm9iZWBcbiogICBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgXG4qICAgYHN0bW1hY19yZWluaXRfcmluZ3BhcmFtYFxuKiAgIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYFxuXG5XZSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgdGhlIGZ1enppbmcgaXMgY29tcHJlaGVuc2l2ZS4gSSdtIHRoaW5raW5nOlxuXG4qICAgYFNUTU1BQ19FVEhgXG4qICAgYFNUTU1BQ19QQ0lgXG4qICAgYFNUTU1BQ19QTEFURk9STWBcbiogICBgRFdNQUNfR0VORVJJQ2BcblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIGRpcmVjdGx5IHRvdWNoZXMgaG93IHRoZSBkcml2ZXIgY2FsY3VsYXRlcyBidWZmZXIgc2l6ZXMgZm9yIHJlY2VpdmluZyBwYWNrZXRzLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgdmlhIHRoZSBQQ0kgYW5kIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIHBhdGhzICh0aGF0J3Mgd2hlcmUgb3VyIGBEV01BQ19HRU5FUklDYCBpbmNsdXNpb24gaGVscHMpLiBJdCBhbHNvIGFmZmVjdHMgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uIFdlIG5lZWQgdG8gZXhwbG9yZSB0aGVzZSBkaWZmZXJlbnQgZW50cnkgcG9pbnRzIHdpdGggdGhlIGVuaGFuY2VkIGJ1ZmZlciBjYWxjdWxhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzAxLCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjoyNy44MjIwOTM3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ4MDk5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIixcbiAgICBcInN0bW1hY19yZWluaXRfcXVldWVzXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3JpbmdwYXJhbVwiLFxuICAgIFwic3RtbWFjX2VuYWJsZV9yeF9xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdG1tYWNfcnhfb2Zmc2V0YCB0byBpbmNsdWRlIGBORVRfSVBfQUxJR05gIGluIHRoZSBSWCBidWZmZXIgb2Zmc2V0IGNhbGN1bGF0aW9uLiBUaGlzIGFsdGVycyB0aGUgbWVtb3J5IGxheW91dCBhbmQgYWxsb2NhdGlvbiBzaXplIGZvciByZWNlaXZlZCBwYWNrZXRzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBETUEgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHBhY2tldCBwYXJzaW5nLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFBDSSBvciBwbGF0Zm9ybSBkZXZpY2UgcHJvYmluZyBhbmQgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiU1RNTUFDX1BMQVRGT1JNXCIsXG4gICAgXCJEV01BQ19HRU5FUklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY19yZWluaXRfcmluZ3BhcmFtXCIsXG4gICAgXCJzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0bW1hY19yeF9vZmZzZXRgIHRvIGluY2x1ZGUgYE5FVF9JUF9BTElHTmAgaW4gdGhlIFJYIGJ1ZmZlciBvZmZzZXQgY2FsY3VsYXRpb24uIFRoaXMgYWx0ZXJzIHRoZSBtZW1vcnkgbGF5b3V0IGFuZCBhbGxvY2F0aW9uIHNpemUgZm9yIHJlY2VpdmVkIHBhY2tldHMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIERNQSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgcGFja2V0IHBhcnNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgUENJIG9yIHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIGFuZCBuZXR3b3JrIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDI6MjcuODk2OTExMjY5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODcwMDMyNjk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjI3Ljg5NzUwMDcwOVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozODY5OTczMjg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNGE1NDkyNTAwZGEyZDQ4ZWRhOTg0OWMxNDZiMGU1NmE0OWYxMzM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MzQ6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uMmE1NzQxNWJlMjVjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xNTI5LDcgKzE1MjksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0aWYgKHN0bW1hY194ZHBfaXNfZW5hYmxlZChwcml2KSlcbiBcdFx0cmV0dXJuIFhEUF9QQUNLRVRfSEVBRFJPT007XG4gXG4tXHRyZXR1cm4gTkVUX1NLQl9QQUQ7XG4rXHRyZXR1cm4gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9iZnNpemUoaW50IG10dSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQyOjI3Ljg5NzUwMTU2OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE1MjgxNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgc3RtbWFjIFJlY2VpdmUgQnVmZmVyIE9mZnNldCBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgc3RtbWFjX3J4X29mZnNldGAgd2l0aGluIGBzdG1tYWNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHR3ZWFraW5nIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZS4gSXQncyBtb3ZpbmcgZnJvbSBqdXN0IHJldHVybmluZyBgTkVUX1NLQl9QQURgIHRvIGBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTmAuIFNvLCB0aGUgaW1wYWN0IGlzIG9uIHRoZSByZWNlaXZlIGJ1ZmZlciBvZmZzZXQuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSBhbnkgY2hhbmdlIHRvIHRoZSBidWZmZXIgb2Zmc2V0IGNhbiBoYXZlIHJhbWlmaWNhdGlvbnMgZm9yIGFsaWdubWVudCBhbmQgcGVyZm9ybWFuY2UsIGFuZCBpbiB0aGUgd29yc3QgY2FzZSwgcGFja2V0IHBhcnNpbmcsIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIG9mZi1ieS1vbmUgZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHNoaWZ0IGlzIGhhcHBlbmluZy4gV2hhdCdzIHRoZSByYXRpb25hbGU/IEkga25vdyBgTkVUX0lQX0FMSUdOYCBpcyB0aGUgbmF0dXJhbCBhbGlnbm1lbnQgYm91bmRhcnkgZm9yIElQIGhlYWRlcnMsIHNvIGlzIHRoaXMgYWJvdXQgaW1wcm92aW5nIElQIGhlYWRlciBwcm9jZXNzaW5nPyBPciBhcmUgdGhleSB0cnlpbmcgdG8gZml4IHNvbWUgYWxpZ25tZW50IHByb2JsZW0gd2l0aCB0aGUgTUFDIGl0c2VsZiBvciBwZXJoYXBzIHRoZSBETUEgZW5naW5lPyBUbyB0cnVseSBncmFzcCB0aGUgc2lnbmlmaWNhbmNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgY29udGV4dC4gVGltZSB0byB6b29tIG91dCBhbmQgZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiB0aGF0IGZ1bmN0aW9uIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgcmVzdCBvZiB0aGUgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBkZXBlbmRlbnQgc3Vic3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6NDI6MzMuMDEyNzg2Nzg3WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTE1MTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcnhfb2Zmc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19kaXNwbGF5X3JpbmdzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTUyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE1Mjc6c3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE1Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjM5PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcnhfYnVmZmVycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2NTQtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNjU1OlxcdFxcdGJ1Zi1cXHUwMDNlcGFnZV9vZmZzZXQgPSBzdG1tYWNfcnhfb2Zmc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTY1Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIyMjc9c3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjQxOlxcdGRtYV9idWZfc3pfcGFkID0gc3RtbWFjX3J4X29mZnNldChwcml2KSArIGRtYV9jb25mLVxcdTAwM2VkbWFfYnVmX3N6ICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNDItXFx0XFx0XFx0IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTQtXFx0cHBfcGFyYW1zLmRtYV9kaXIgPSB4ZHBfcHJvZyA/IERNQV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjI1NTpcXHRwcF9wYXJhbXMub2Zmc2V0ID0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNTYtXFx0cHBfcGFyYW1zLm1heF9sZW4gPSBkbWFfY29uZi1cXHUwMDNlZG1hX2J1Zl9zejtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjI1OS1cXHRcXHRwcF9wYXJhbXMub2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyNjA6XFx0XFx0cHBfcGFyYW1zLm1heF9sZW4gKz0gc3RtbWFjX3J4X29mZnNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyNjEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMTo0MjozMy4wOTc5NDc2MzZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTkyNjEyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJYIEJ1ZmZlciBPZmZzZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIHRoZSByZWNlaXZlIGJ1ZmZlciBvZmZzZXQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodHMgZ28gdG8gbWVtb3J5IGxheW91dCwgYnVmZmVyIHNpemluZywgYW5kIGFsaWdubWVudC4gVGhlIGNvcmUgaXNzdWUgaGVyZSBpcyBsaWtlbHkgcmVsYXRlZCB0byBhbGlnbmluZyB0aGUgSVAgaGVhZGVyIHdpdGhpbiB0aGUgcmVjZWl2ZWQgcGFja2V0IGRhdGEuIFdlJ3JlIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHByb3RvY29scywgc28gcHJvcGVyIGFsaWdubWVudCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIHByZXZlbnRpbmcgYWxsIHNvcnRzIG9mIGFsaWdubWVudCBmYXVsdHMuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgTkVUX0lQX0FMSUdOYCBpcyBiZWluZyBhZGRlZCB0byB0aGUgb2Zmc2V0LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgYE5FVF9JUF9BTElHTmAgaXMgdXN1YWxseSAyIGJ5dGVzLiBBZGRpbmcgdGhpcyB0byB0aGUgZXhpc3RpbmcgYE5FVF9TS0JfUEFEYCBtZWFucyB0aGUgcGFja2V0IGRhdGEgd2lsbCBlZmZlY3RpdmVseSBzdGFydCAyIGJ5dGVzIGxhdGVyIHdpdGhpbiB0aGUgYnVmZmVyLiBUaGlzIGlzIGEgY29tbW9uIHByYWN0aWNlIGluIG5ldHdvcmtpbmcgdG8gZW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgNC1ieXRlIGFsaWduZWQuIEdpdmVuIHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgMTQgYnl0ZXMsIHRoaXMgYnJpbmdzIHRoZSB0b3RhbCB0byAxNiwgYSBjbGVhbiBtdWx0aXBsZS5cblxuTXkgaW5pdGlhbCBjb25jZXJuLCBhcyBhbHdheXMgd2hlbiB0b3VjaGluZyBtZW1vcnkgb2Zmc2V0cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgb3IgZXhwb3NlcyBhbnkgcmlza3Mgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gS01TQU4sIG9mIGNvdXJzZSwgaXMgbXkgZ28tdG8gdG9vbCBmb3IgZGV0ZWN0aW5nIHRob3NlIHNvcnRzIG9mIGlzc3Vlcy4gSG93ZXZlciwgYWZ0ZXIgdGhpbmtpbmcgaXQgdGhyb3VnaCwgSSBkb24ndCBzZWUgaG93IHRoaXMgcGF0Y2ggaXRzZWxmICppbnRyb2R1Y2VzKiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQWxsIGl0J3MgZG9pbmcgaXMgc2hpZnRpbmcgd2hlcmUgdGhlIERNQSB3cml0ZXMgdGhlIHBhY2tldCBkYXRhLiBJZiBhbnl0aGluZywgaXQgc2VlbXMgbW9yZSBsaWtlbHkgdG8gKmZpeCogcG90ZW50aWFsIHVuYWxpZ25lZCBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBwcm9ibGVtcyB0aGF0IG1pZ2h0IGhhdmUgZXhpc3RlZCBwcmV2aW91c2x5LlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIExvb2tpbmcgYXQgdGhlIGNvZGU6XG5gYGBjXG5zdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxue1xuXHRpZiAoc3RtbWFjX3hkcF9pc19lbmFibGVkKHByaXYpKVxuXHRcdHJldHVybiBYRFBfUEFDS0VUX0hFQURST09NO1xuXG5cdHJldHVybiBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTjtcbn1cbmBgYFxuXG5ZZXAsIGl0J3MganVzdCBhZGRpbmcgYE5FVF9JUF9BTElHTmAgdG8gdGhlIG9mZnNldC4gRXh0cmVtZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBkb2Vzbid0IG1vZGlmeSBkYXRhLCBpdCBqdXN0IGRlZmluZXMgd2hlcmUgdGhlIGRhdGEgYmVnaW5zLCBzbywgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbXMgaGVyZS4gSXQncyBzb2xlbHkgcmVsYXRlZCB0byBhbGlnbm1lbnQsIHNvLCBmb3IgbXkgcmVjb3JkcywgSSdtIG1hcmtpbmcgdGhpcyBhcyBgTmVlZHNLTVNBTj1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDAsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjQzOjA2LjU5NzIxMTI4M1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJlY2VpdmUgYnVmZmVyIG9mZnNldCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBhZGRpbmcgTkVUX0lQX0FMSUdOIHRvIE5FVF9TS0JfUEFELiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBhZGp1c3RtZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBJUCBoZWFkZXIgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeSAoc2luY2UgdGhlIEV0aGVybmV0IGhlYWRlciBpcyAxNCBieXRlcywgYWRkaW5nIDIgYnl0ZXMgb2YgcGFkZGluZyBhbGlnbnMgdGhlIHN1YnNlcXVlbnQgSVAgaGVhZGVyKS4gVGhpcyBjaGFuZ2UgYWZmZWN0cyBtZW1vcnkgbGF5b3V0IGFuZCBETUEgYnVmZmVyIG9mZnNldHMsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgbm9yIGRvZXMgaXQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcmVjZWl2ZSBidWZmZXIgb2Zmc2V0IGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IGFkZGluZyBORVRfSVBfQUxJR04gdG8gTkVUX1NLQl9QQUQuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIGFkanVzdG1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIElQIGhlYWRlciBpcyBhbGlnbmVkIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IChzaW5jZSB0aGUgRXRoZXJuZXQgaGVhZGVyIGlzIDE0IGJ5dGVzLCBhZGRpbmcgMiBieXRlcyBvZiBwYWRkaW5nIGFsaWducyB0aGUgc3Vic2VxdWVudCBJUCBoZWFkZXIpLiBUaGlzIGNoYW5nZSBhZmZlY3RzIG1lbW9yeSBsYXlvdXQgYW5kIERNQSBidWZmZXIgb2Zmc2V0cywgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBub3IgZG9lcyBpdCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[1] Phase: Succeeded StartedAt: 2026-08-13 11:43:18 +0000 UTC FinishedAt: 2026-08-13 11:43:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 11:43:18 +0000 UTC FinishedAt: 2026-08-13 11:43:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2] Phase: Succeeded StartedAt: 2026-08-13 11:43:18 +0000 UTC FinishedAt: 2026-08-13 12:24:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 11:43:18 +0000 UTC FinishedAt: 2026-08-13 12:24:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 11:43:18 +0000 UTC FinishedAt: 2026-08-13 11:43:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 11:43:18 +0000 UTC FinishedAt: 2026-08-13 11:43:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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-workflow78xjq/series-workflow78xjq-convert-artifact-2484790065/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 11:43:28 +0000 UTC FinishedAt: 2026-08-13 12:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 11:43:28 +0000 UTC FinishedAt: 2026-08-13 12:00:46 +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:*1f2585db-62de-418e-ae9c-43842d122f6f,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-workflow78xjq/series-workflow78xjq-convert-artifact-2484790065/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": "482b4133-f806-414d-8116-76809a5e1ada", "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-workflow78xjq/series-workflow78xjq-build-action-2752479583/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 11:43:28 +0000 UTC FinishedAt: 2026-08-13 12:00:36 +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:*1f2585db-62de-418e-ae9c-43842d122f6f,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-workflow78xjq/series-workflow78xjq-convert-artifact-2484790065/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": "482b4133-f806-414d-8116-76809a5e1ada", "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-workflow78xjq/series-workflow78xjq-build-action-2752479583/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:00:46 +0000 UTC FinishedAt: 2026-08-13 12:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:00:46 +0000 UTC FinishedAt: 2026-08-13 12:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:00:46 +0000 UTC FinishedAt: 2026-08-13 12:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:00:46 +0000 UTC FinishedAt: 2026-08-13 12:00:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-workflow78xjq/series-workflow78xjq-convert-artifact-3399806084/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:00:56 +0000 UTC FinishedAt: 2026-08-13 12:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:00:56 +0000 UTC FinishedAt: 2026-08-13 12:02:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*482b4133-f806-414d-8116-76809a5e1ada,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-workflow78xjq/series-workflow78xjq-build-action-2752479583/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-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:02:57 +0000 UTC FinishedAt: 2026-08-13 12:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:02:57 +0000 UTC FinishedAt: 2026-08-13 12:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:02:57 +0000 UTC FinishedAt: 2026-08-13 12:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:02:57 +0000 UTC FinishedAt: 2026-08-13 12:19:15 +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:*1f2585db-62de-418e-ae9c-43842d122f6f,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-workflow78xjq/series-workflow78xjq-convert-artifact-3399806084/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": "61f380b5-643a-4be5-a43d-b9a3f2668f72", "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-workflow78xjq/series-workflow78xjq-build-action-2885346960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:02:57 +0000 UTC FinishedAt: 2026-08-13 12:19:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1f2585db-62de-418e-ae9c-43842d122f6f,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-workflow78xjq/series-workflow78xjq-convert-artifact-3399806084/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": "61f380b5-643a-4be5-a43d-b9a3f2668f72", "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-workflow78xjq/series-workflow78xjq-build-action-2885346960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:19:15 +0000 UTC FinishedAt: 2026-08-13 12:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:19:15 +0000 UTC FinishedAt: 2026-08-13 12:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:19:15 +0000 UTC FinishedAt: 2026-08-13 12:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:19:15 +0000 UTC FinishedAt: 2026-08-13 12:21:09 +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:*61f380b5-643a-4be5-a43d-b9a3f2668f72,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-workflow78xjq/series-workflow78xjq-build-action-2885346960/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-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:24:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:24:17 +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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"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:*482b4133-f806-414d-8116-76809a5e1ada,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*61f380b5-643a-4be5-a43d-b9a3f2668f72,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-workflow78xjq/series-workflow78xjq-build-action-2752479583/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-workflow78xjq/series-workflow78xjq-build-action-2885346960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:21:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:21:25 +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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"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-workflow78xjq/series-workflow78xjq-convert-artifact-210210701/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:19 +0000 UTC FinishedAt: 2026-08-13 12:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:30 +0000 UTC FinishedAt: 2026-08-13 12:24:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78xjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"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":["stmmac_dvr_probe","stmmac_reinit_queues","stmmac_reinit_ringparam","stmmac_enable_rx_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2bb155e92167cd5ad6aae312e83291da2454f8b0","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"866b46d4-aa4a-406c-b02b-a5aaf5efe98b","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-13 12:21:30 +0000 UTC FinishedAt: 2026-08-13 12:23:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*482b4133-f806-414d-8116-76809a5e1ada,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*61f380b5-643a-4be5-a43d-b9a3f2668f72,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-workflow78xjq/series-workflow78xjq-build-action-2752479583/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-workflow78xjq/series-workflow78xjq-build-action-2885346960/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-workflow78xjq/series-workflow78xjq-convert-artifact-210210701/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,}